Добавление сообщения к запертой двери (HPL2): различия между версиями
Slux (обсуждение | вклад) (Новая страница: «В этом уроке описано как добавить сообщение к закрытой двери. Когда игрок попытается отк…») |
Slux (обсуждение | вклад) м |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:HPL2_Engine]] | ||
В этом уроке описано как добавить сообщение к закрытой двери. Когда игрок попытается открыть запертую дверь, появится сообщение о том, что она закрыта, или подсказка о том, где можно найти ключ. | В этом уроке описано как добавить сообщение к закрытой двери. Когда игрок попытается открыть запертую дверь, появится сообщение о том, что она закрыта, или подсказка о том, где можно найти ключ. | ||
Строка 25: | Строка 26: | ||
На вкладке General задайте двери имя, например ''door_1''. | На вкладке General задайте двери имя, например ''door_1''. | ||
− | [[Файл:Screenshot 2018-12-13 20-41-18.png| | + | [[Файл:Screenshot 2018-12-13 20-41-18.png|500px]] |
+ | |||
+ | ==Скрипт== | ||
+ | |||
+ | Откройте файл mapname.hps, который находится в папке Amnesia/custom_stories/yourstory/maps в любом текстовом редакторе и напишите под последним символом '''"}"''' следующий код: | ||
+ | |||
+ | <source> | ||
+ | void DoorLockedPlayer(string &in entity) | ||
+ | |||
+ | { | ||
+ | if(GetSwingDoorLocked("door_1") == true) | ||
+ | { | ||
+ | |||
+ | SetMessage("Messages", "msgname", 0); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | '''void DoorLockedPlayer''' - это функция, которая вызывается, когда игрок взаимодействует с дверью. | ||
+ | |||
+ | '''GetSwingDoorLocked''' - проверка, закрыта дверь или нет. Если дверь открыта, то мы не получим сообщение о закрытой двери. | ||
+ | '''door_1''' - имя двери. | ||
+ | |||
+ | '''Messages''' - это имя <CATEGORY> из файла '''extra_english.lang''', оно должно совпадать! | ||
+ | |||
+ | '''msgname''' - это имя сообщения, которое мы установили ранее, помните? | ||
+ | |||
+ | Теперь сообщение будет отображаться, когда игрок попытается открыть дверь. |
Текущая версия на 16:19, 13 декабря 2018
В этом уроке описано как добавить сообщение к закрытой двери. Когда игрок попытается открыть запертую дверь, появится сообщение о том, что она закрыта, или подсказка о том, где можно найти ключ.
Сообщение
Откройте файл extra_english.lang и добавьте в него следующее
<CATEGORY Name=“Messages”>
<Entry Name =“msgname”>ВАШ ТЕКСТ</Entry>
</CATEGORY>
msgname - имя, сообщения, которое будет вызываться через скрипт и отображать на экране сообщение Door is Locked.
ВАШ ТЕКСТ - текст, который будет показан игроку. Это может быть что угодно, например: дверь заперта, а ключ находится за шкафом. Текст должен быть на английском языке, а перевод на русский язык можно разместить в файле extra_russian.lang с помощью HplLangTool.
Дверь
Откройте свою карту с помощью редактора уровней и добавьте дверь в нужном месте.
Выберите дверь с помощью Select tool и перейдите на вкладку Entity. Установите флажок Locked, чтобы заблокировать дверь, и в PlayerInteractCallback напишите любое имя функции, которое хотите. Например DoorLockedPlayer.
Если хотите, чтобы сообщение отображалось только один раз, установите флажок PlayerInteractCallbackAutoRemove.
На вкладке General задайте двери имя, например door_1.
Скрипт
Откройте файл mapname.hps, который находится в папке Amnesia/custom_stories/yourstory/maps в любом текстовом редакторе и напишите под последним символом "}" следующий код:
void DoorLockedPlayer(string &in entity)
{
if(GetSwingDoorLocked("door_1") == true)
{
SetMessage("Messages", "msgname", 0);
}
}
void DoorLockedPlayer - это функция, которая вызывается, когда игрок взаимодействует с дверью.
GetSwingDoorLocked - проверка, закрыта дверь или нет. Если дверь открыта, то мы не получим сообщение о закрытой двери. door_1 - имя двери.
Messages - это имя <CATEGORY> из файла extra_english.lang, оно должно совпадать!
msgname - это имя сообщения, которое мы установили ранее, помните?
Теперь сообщение будет отображаться, когда игрок попытается открыть дверь.