В этом уроке я хочу рассказать, как сделать НПС-проводников в ЗП. Тут ничего сложного нет. Я делал с помощью скриптов. Скриптер из меня никакой, но этот метод работает 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>
В character_desc_zaton.xml в диалоги нашему НПС пишем:
Код
<actor_dialog>esc_travel_dialog</actor_dialog>
С диалогами всё. Теперь скрипты.
Скрипты
В 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