Сегодня мы научимся создавать диалоги в игре.
Для начала нам понадобится создать несколько файлов, которые будут нам нужны.
В папке gamedata\config\gameplay\ создаем файл my_dialogs.xml
В нем будут лежать наши конструкции с диалогами, которые можно будет усложнять, менять и т.д
В папке gamedata\config\text\rus\ создаем файл table_my_dialogs.xml
В нем будут находится непосредственно наши тексты с диалогами.
Далее открываем файл gamedata\config\localization.ltx и через запятую пишем название нашего файла, где будут лежать сами тексты диалогов (без расширения!). Получится так:
Quote
stable_game_credits, table_my_dialogs
В данном случае, stable_game_credits писать не надо! Эта строка есть, показал просто как надо дописывать свой файл.
Далее открываем файл gamedata\config\system.ltx и находим там такие строчки:
Quote
[dialogs]
files = dialogs_test, dialogs, dialogs_escape, dialogs_garbage, dialogs_agroprom, dialogs_deadcity, dialogs_darkvalley, dialogs_pripyat, dialogs_bar, dialogs_yantar, dialogs_military, dialogs_labx18, dialogs_radar, dialogs_aes
И через запятую, дописываем название нашего файл (в нашем случае это my_dialogs). Получится так:
Quote
dialogs_aes, my_dialogs
Все, с регистрацией файлов в игре мы закончили, теперь перейдем к написанию текста диалога. Для этого открываем наш созданный файл table_my_dialogs.xml и первым делом в него пишем такую конструкцию:
Code
<?xml version="1.0" encoding="windows-1251" ?>
<string_table>
............
</string_table>
Вместо точек будут наши тексты. Приступим.
При написании текста, нужно знать некоторые правила его написания. Дело не в орфографии (хотя и она не маловажна, ошибка в тегах недопустима!).
Любой текст диалога начинается со строчки
Code
<string id="my_dialogs_01">
Где фраза my_dialogs_01 заключенная в кавычки является идентификатором нашей фразы.
Далее идет наша фраза заключенная в тег
(вместо точек наш текст).
Заканчивается фраза тегом
Отсутствие этого тега, либо ошибка в других - чревата вылетами, с руганью на синтаксис файла. Так что рекомендую использовать программы с подсветкой (Notepad++ вещь незаменимая).
Напишем простой диалог из 7 фраз:
Code
<string id="my_dialogs_01">
<text>Здравствуйте профессор...Как у вас дела?</text>
</string>
<string id="my_dialogs_02">
<text>Здравствуйте Меченый. Дела у меня отлично, очень скоро наверно смогу создать артефакт в искусственных условиях...</text>
</string>
<string id="my_dialogs_03">
<text>И у меня отлично, буду ждать результатов!</text>
</string>
<string id="my_dialogs_04">
<text>Постойте Стрелок...Недавно к нам прилетал вертолет, искали вас какие то люди...</text>
</string>
<string id="my_dialogs_05">
<text>Ох профессор, они не сказали зачем я им?</text>
</string>
<string id="my_dialogs_06">
<text>Увы нет, обмолвились только, что будут ждать вас, если вы объявитесь, у входа в комплекс.</text>
</string>
<string id="my_dialogs_07">
<text>Ну что же, пойду проведаю их.</text>
</string>
Итак, текст диалога готов, осталась вторая часть. Открываем наш файл my_dialogs.xml, также пишем сначала в него такую конструкцию:
Code
<?xml version="1.0" encoding="windows-1251" ?>
<game_dialogs>
.........
</game_dialogs>
Вместо точек, будет наша конструкция - скелет диалога.
Начинаем его писать:
Code
<dialog id="my_dialog_start">
<phrase_list>
<phrase id="0">
<text>my_dialogs_01</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>my_dialogs_02</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>my_dialogs_03</text>
<next>3</next>
</phrase>
<phrase id="3">
<text>my_dialogs_04</text>
<next>4</next>
</phrase>
<phrase id="4">
<text>my_dialogs_05</text>
<next>5</next>
</phrase>
<phrase id="5">
<text>my_dialogs_06</text>
<next>6</next>
</phrase>
<phrase id="6">
<text>my_dialogs_07</text>
</phrase>
</phrase_list>
</dialog>
Разберем эту конструкцию:
my_dialog_start - это идентификатор всего диалога (не отдельных фраз). Данный идентификатор понадобится нам позже.
- подзаголовок, "голова" диалога. Грубо говоря, является гиперссылкой на следующие фразы. Всегда начинается с 0!
Code
<text>my_dialogs_01</text>
- это ссылка на нашу фразу из table_my_dialogs.xml. Т.е движок игры, прочитает текст и выдаст нам его вместо фразы my_dialogs_01.
- ссылка на следующий подзаголовок. Т.е на
который будет содержать следующую нашу фразу диалога.
- закрывающий тег
Скелет диалога готов, однако радоваться еще рано. Нужно прописать кому нибудь наше диалог - сам он там не появится.
Для этого открываем профиль какого нибудь НПС (я открою профиль Сахарова, ведь диалог будет с ним...).
Идем в файл gamedata\config\gameplay\character_desc_yantar.xml, там находим профиль Сахарова (самый первый). И прописываем ему наш диалог в формате:
Code
<actor_dialog>my_dialog_start</actor_dialog>
Где my_dialog_start это идентификатор нашего диалога.
Получится так:
Code
<start_dialog>yantar_general_ucheniy_talk_start</start_dialog>
<actor_dialog>tm_ecolog_dialog</actor_dialog>
<actor_dialog>tm_ecolog_reward</actor_dialog>
<actor_dialog>my_dialog_start</actor_dialog>
.
Все. Теперь. Как только мы увидим Сахарова, у него будет наш диалог.
P.S Наличие двух фраз
Code
<next>5</next>
<next>6</next>
в скелете диалога позволит нам создать разветвления в диалоге. Т.е например на одну и ту же фразу, можно будет ответить несколькими вариантами.