Регистрация ·
Имя: Пароль:  
· Забыли пароль?
 



Как создать новый диалог в сталкере

Ответить на тему
 
Автор Сообщение

Alex39 ®

Стаж: 11 лет

Сообщений: 415

Откуда: Украина, Одесса

Пост 07-Июл-2013 22:16

[Цитировать]

Как создать новый диалог в сталкере

Создание новых веток диалогов

Создание новых веток диалогов
1) В файле gamedata/config/gameplay/character_desc_escape.xml в конце списка веток для trader припишем свою ветку с произвольным названием. Это будет, например, <actor_dialog>escape_trader_letat_gusi</actor_dialog>.
Т.е у нас получится так:
<specific_character id="escape_trader" no_random = "1">
...
<start_dialog>escape_trader_start_dialog</start_dialog>
<actor_dialog>escape_trader_talk_info</actor_dialog>
<actor_dialog>escape_trader_jobs</actor_dialog>
<actor_dialog>tm_trader_dialog</actor_dialog>
<actor_dialog>tm_trader_reward</actor_dialog>
<actor_dialog>escape_trader_done_blockpost_box</actor_dialog>
<actor_dialog>escape_trader_letat_gusi</actor_dialog>
</specific_character>

Записываем изменения, с этим файлом пока всё.
2) Теперь берем файл gamedata/config/gameplay/dialogs_escape.xml
Диалогу:
Меченый: Сидрыч а почему это у тебя зеленые человечки, что по столу бегают, такие худые?
Сидорович: Чего?!!
Меченый: Ты их совсем, совсем не кормишь?
Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то
мало что таким перегаром дышишь, уже до зеленых человечков долечился... Шутник.
Будет соответствовать такая структура:
<phrase id="0">
<text>escape_trader_letat_gusi_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>escape_trader_letat_gusi_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text> escape_trader_letat_gusi_2</text>
<next>3</next>
</phrase>
<phrase id="3">
<text> escape_trader_letat_gusi_3</text>
</phrase>
Условия наличия ветки в диалоге можно взять из ветки <dialog id="escape_trader_talk_info">.
Т.е берем условия <precondition>escape_dialog.trader_has_talk_info_wr</precondition> и <has_info>tutorial_end</has_info>. Можно было, конечно, прописать в скрипте еще одно условие для ветки, чтобы она появилась только один раз, а потом больше не возникала. Но об этом как-нибудь позже.
В итоге у нас получилась такая структура:
<dialog id="escape_trader_letat_gusi">
<precondition>escape_dialog.trader_has_talk_info_wr</precondition>
<has_info>tutorial_end</has_info>
<phrase_list>
<phrase id="0">
<text>escape_trader_letat_gusi_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>escape_trader_letat_gusi_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text> escape_trader_letat_gusi_2</text>
<next>3</next>
</phrase>
<phrase id="3">
<text> escape_trader_letat_gusi_3</text>
</phrase>
</phrase_list>
</dialog>
Её нужно вставить в любом месте между dialog id'ами других веток в файле dialogs_escape.xml. Главное - не промахнутся и засунуть именно между, а не внутрь одного из dialog id.
После сохранения внесенных изменений с файлом dialogs_escape.xml все.
3) Теперь вбиваем сами текстовички в файле gamedata/config/text/rus/stable_dialogs_escape.xml
Т.е нам надо в файле stable_dialogs_escape.xml вставить такую конструкцию:
<string id="escape_trader_letat_gusi_0">
<text>Сидрыч, а чего это у тебя зеленые человечки, что по столу бегают, такие худые?</text>
</string>
<string id="escape_trader_letat_gusi_1">
<text>Чего?!</text>
</string>
<string id="escape_trader_letat_gusi_2">
<text>Ты их совсем, совсем не кормишь?</text>
</string>
<string id="escape_trader_letat_gusi_3">
<text>В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше
антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился...
Шутник.</text>
</string>
В любом месте между уже существующими string id. После сохранения изменений, у нас все готово. Можно загружать игру и смотреть что получилось.
Дополнительно
Внимание! После патча 1.002 данный урок перестал работать. Причина - со вторым патчем несовместимо это условие:
<precondition>escape_dialog.trader_has_talk_info_wr</precondition>
Дело в том, что во втором патче из файла escape_dialog.script была удалена функция:
function trader_has_talk_info_wr( trader, actor )
return true
end
Можно либо записать эту функцию обратно в escape_dialog.script, либо использовать другие более-менее подходящие условия, например:
<precondition>escape_dialog.trader_alredy_give_job</precondition>
Всё. Мы научились писать простые диалоги.
На форуме
[Профиль] [ЛС]
Показать сообщения:    
Ответить на тему

Текущее время: Сегодня 12:19

Часовой пояс: GMT + 2



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы