Добавление сообщения к запертой двери (HPL2)
В этом уроке описано как добавить сообщение к закрытой двери. Когда игрок попытается открыть запертую дверь, появится сообщение о том, что она закрыта, или подсказка о том, где можно найти ключ.
Сообщение
Откройте файл 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 - это имя сообщения, которое мы установили ранее, помните?
Теперь сообщение будет отображаться, когда игрок попытается открыть дверь.