Итак, новый персонаж в игре есть, теперь надо бы поговорить с ним о чем-нибудь. И желательно о чем-то своем.
Для этого добавим диалог в игру. Небольшое отступление - в ресурсах игры просмотрите файлы dialogs_***.xml (где *** - название локации), character_desc_***.xml (*** - аналогично) - лежат в gamedata\config\gameplay и файлы stable_dialogs_***.xml - в gamedata\config\text\rus
и может раздумаете читать эту статью.
Если же не раздумали, то начнем:
диалоги в игре есть двух типов <actor_dialog> и <start_dialog>. Как следует из названия, <старт_дайлог> - это приветственный диалог НПЦ (первая фраза НПЦ), а <актор_дайлог> - первая фраза принадлежит ГГ.
Итак, будем делать наш диалог.
Говорить будем с Ингви-сталкером, которого создали в этой теме.
У него присутствует <start_dialog>hello_dialog</start_dialog> (как дела, что нового и т.п.), поговорим с ним вот о чем:
ГГ: - Ингви-сталкер, у тебя и автомат есть, и пистолет... Дай мне что-нибудь. А то с оружием напряг.
И-С: - А куда свое дел?
ГГ: - Да вот бармену на пузырь променял...
И-С: - Ну и сам дурак. Ничего тебе не дам.
ГГ: - Злой ты, Ингви... ладно, может кто другой поможет. Пока.
1. Скелет диалога.
Дабы не засорять лишний раз файлы игры, создаем в папке gamedata\config\gameplay свой файл, например dialogs_pereiro.xml (называйте как угодно).
В нем пишем:
Code
<game_dialogs>
<dialog id="ingvi_give_me_a_gun">
[color=blue]Примечание:
здесь должна идти секция условий, разрешающих диалог
<precondition></precondition> - использует как условие функцию какого-нибудь скрипта
<has_info></has_info> - диалог появится при наличии инфопоршена
<dont_has_info></dont_has_info> - диалог появится при отсутствии инфопоршена
если ничего нет - диалог будет возникать вседа.
[/color]
<phrase_list>
<phrase id="0">
<text>ingvi_give_me_a_gun_0</text>
<next>1</next>
</phrase>
[color=blue]Примечание:
1. начинается диалог всегда с нулевой фразы.
2. после тега <phrase id=""> может следовать секция условий, разрешающая данную фразу
3. в теге <text></text> может быть как теносредственно фраза, так и ссылка на нужную строку (как у нас)
4. <next></next> может быть несколько - это позволяет ветсить диалог [/color]
<phrase id="1">
<text>ingvi_give_me_a_gun_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>ingvi_give_me_a_gun_2</text>
<next>3</next>
</phrase>
<phrase id="3">
<text>ingvi_give_me_a_gun_3</text>
<next>4</next>
</phrase>
<phrase id="4">
<text>ingvi_give_me_a_gun_4</text>
<action>dialogs.break_dialog</action>
</phrase>
[color=blue]Примечание:
В последней фразе появляется тег <action></action> - позволяет совершать действия передавать предметы, менять отношение собеседника и т.п. вызовом функции скрипта. В нашем случае вызывается ф-я break_dialog из файла dialogs.script (лежит в gamedata\scripts).
Такая конструкция может быть в любой фразе диалога. Так же может иметь место тег <give_info></give_info> - выдача инфопоршена в этой фразе.[/color]
</phrase_list>
</dialog>
</game_dialogs>
Не забываем правильно закрывать теги. И, естественно, примечания в файл не пишем :) 2. Текст диалога.
Я уже говорил, что сами фразы можно писать непосредственно в теге <text></text>, но у нас там стоит ссылка на строку. Поделаем эти строки.
в папке gamedata\config\text\rus создадим файл например stable_dialogs_pereiro.xml (называйте как хотите).
там пишем:
Code
<string_table>
<string id="ingvi_give_me_a_gun_0">
<text>Ингви-сталкер, у тебя и автомат есть, и пистолет... Дай мне что-нибудь. А то с оружием напряг.</text>
</string>
<string id="ingvi_give_me_a_gun_1">
<text>А куда свое дел?</text>
</string>
<string id="ingvi_give_me_a_gun_2">
<text>Да вот бармену на пузырь променял...</text>
</string>
<string id="ingvi_give_me_a_gun_3">
<text>Ну и сам дурак. Ничего тебе не дам.</text>
</string>
<string id="ingvi_give_me_a_gun_4">
<text>Злой ты, Ингви... ладно, может кто другой поможет. Пока.</text>
</string>
</string_table>
Здесь вроде все ясно. 3. Добавим диалог НПЦ.
Итак, у нас есть скелет диалога, и есть его фразы. Добавим его кому-нибудь. Так как говорим с Ингви-сталкером, то ему и добавляем.
Открываем файл с его описанием (смотри п.1 этой темы)и там, где видим <start_dialog>hello_dialog</start_dialog> ниже пишем <actor_dialog>ingvi_give_me_a_gun</actor_dialog>.
4. Как сделать, чтобы всё заработало.
В папке gamedata\config\ есть файлы system.ltx и localization.ltx
4.1. Сначала систем:
описание Ингви-сталкера у нас уже добавлено (тема про уникальных НПЦ, на которую я ссылался раньше).
Ищем там секцию [dialogs] - там названия файлов, содержащих диалоги, и после запятой дописываем dialogs_pereiro.
4.2. Теперь локализация:
после запятой вписываем имя нашего файла stable_dialogs_pereiro.
Если же разместить этот файл не в папке gamedata\config\text\rus, а просто в gamedata\config\text, то локализацию трогать не надо.
Всё. Вроде ничего не забыл. Если захотите добавить свой диалог какому-то существующему НПЦ (торговцу или ещё кому), то ищите его профиль в соответствующем character_desc_***.xml.
А у нас при разговоре с Ингви-сталкером будет появляться ветка диалога, где мы выпрашиваем у него оружие.