Создание Проводника в Зов Припяти
Описание:
В этом уроке я хочу рассказать, как сделать НПС-проводников в ЗП. Тут ничего сложного нет. Я делал с помощью скриптов. Скриптер из меня никакой, но этот метод работает 100%. Я делал на Кордоне, по аналогии вы сможете сделать на своей локации. Начнём!
Я не буду заново рассказывать о создании НПС. Думаю все уже умеют это делать.
Напишем диалог для нашего проводника.
Лезем в gamedata/gameplay/dialogs_zaton.xml - как пример.
Код
<dialog id="esc_travel_dialog">
<precondition>dialogs_zaton.is_has_money_to_travel</precondition> - проверка на наличие минимальной суммы у ГГ.
<phrase_list>
<phrase id="3">
<text>esc_travel_dialog_3</text>
<action>dialogs_zaton.travel_to_atp</action> - функция телепорта.
<action>dialogs_zaton.travel_to_atp_money</action> - забираем у ГГ деньги за услуги проводника.
<action>dialogs.break_dialog</action> - завершение диалога
</phrase>
<phrase id="2">
<text>esc_travel_dialog_2</text>
<action>dialogs_zaton.travel_to_vagon</action>
<action>dialogs_zaton.travel_to_vagon_money</action>
<action>dialogs.break_dialog</action>
</phrase>
<phrase id="0">
<text>esc_travel_dialog_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>esc_travel_dialog_1</text>
<next>2</next>
<next>3</next>
<next>4</next>
</phrase>
<phrase id="4">
<text>esc_travel_dialog_4</text>
</phrase>
</phrase_list>
</dialog>
Теперь сделаем наш диалог понятным для игрока. Идём в gamedata/configs/text/rus/st_dialogs_zaton.xml
Внизу пишем следующее:
Код
<string id="esc_travel_dialog_0">
<text>Куда ты можешь меня провести?</text>
</string>
<string id="esc_travel_dialog_1">
<text>Есть несколько мест, выбирай:\n- Кордон. Вагончик у дороги. 200 рублей\n- Кордон. АТП. 250 рублей</text>
</string>
<string id="esc_travel_dialog_2">
<text>Веди к вагончику.</text>
</string>
<string id="esc_travel_dialog_3">
<text>Пошли на АТП</text>
</string>
<string id="esc_travel_dialog_4">
<text>Я передумал.</text>
</string>
С диалогами всё. Теперь скрипты.
В gamedata/scripts/dialogs_zaton.script в самом низу пишем:
Код
function is_has_money_to_travel(first_speaker, second_speaker)
return db.actor:money() >= 200 - если у ГГ есть 200 руб, то быть диалогу
end
function travel_to_vagon(first_speaker, second_speaker)
level.add_pp_effector ("fade_in.ppe", 333, false) - эффект перехода
db.actor:set_actor_position(vector():set(x,y,z),level_vertex_id,game_vertex_id) - куда "летим"
end
function travel_to_vagon_money(first_speaker, second_speaker)
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 200) - забираем деньги у ГГ
end
function travel_to_atp(first_speaker, second_speaker)
level.add_pp_effector ("fade_in.ppe", 333, false)
db.actor:set_actor_position(vector():set(x,y,z),level_vertex_id,game_vertex_id)
end
function travel_to_atp_money(first_speaker, second_speaker)
dialogs.relocate_money_from_actor(first_speaker, second_speaker, 250)
end
Вот и всё! Запускаем, проверяем.