Добавление сообщения к запертой двери (HPL2)

Материал из CSM Wiki
Версия от 16:19, 13 декабря 2018; Slux (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

В этом уроке описано как добавить сообщение к закрытой двери. Когда игрок попытается открыть запертую дверь, появится сообщение о том, что она закрыта, или подсказка о том, где можно найти ключ.

Сообщение

Откройте файл 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.

Screenshot 2018-12-13 20-41-18.png

Скрипт

Откройте файл 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 - это имя сообщения, которое мы установили ранее, помните?

Теперь сообщение будет отображаться, когда игрок попытается открыть дверь.