Все нижеизложенное понадобиться, если вы вдруг пожелаете написать для игрового персонажа
новый диалог (или захотите поправить уже существующий).
Первое, что надо знать: диалоги хранятся сразу по двум адресам: в папке
КорсарыResourseDialogs и в папке КорсарыResourseIniDialogs . Если вы исправите диалог
в одной директории, но не исправите в другой - то, с вероятностью в 99 процентов, у вас
ничего не выйдет и изменений в игре видно не будет.
Далее. Любой персонаж игры имеет как минимум одну, а чаще несколько диалоговых веток ,
которые могут меняться по мере необходимости. Например: в официальной версии игры, при первом
разговоре с вами Альбрехт Цальпфер (ходит у ворот Хайрока), использует диалог albrecht
zalpfer_meeting . Если в ходе этого диалога удастся уговорить его присоединиться к вам,
специальная команда заставит его поменять диалог на albrecht zalpfer_hired . Если же вы его
разозлите, Цальпфер переключиться на albrecht zalpfer_refused и начнет посылать вас куда
подальше. Надеюсь принцип ясен - перед тем, как править диалоги персонажа, надо проверить:
сколько их, в каком порядке идут и что заставляет их меняться? Иначе можно запутаться и
достичь совсем не тех результатов.
Что же представляет собой диалог? Это текстовый файл с расширением d . Начинается он всегда
с имени того персонажа, который его использует. То есть, например, диалоги для Адама Муллена
всегда будут начинаться с adam mullen_ . Открыть файл диалога можно при помощи простейшего
виндусовского редактора Notepad. Далее буду пояснять на примере.
Откроем диалог abelard chalon_common из папки КорсарыResourseDialogs или
КорсарыResourseIniDialogs . Внутри мы находим следующее:
<N node_1>
<T Ох-хо! Я так рад видеть вас! Я не слышал звука человеческого голоса уже... не помню.
Наверное, несколько месяцев!>
<L link_1,1,1,node_2>
<T А что здесь случилось? Почему город пуст?>
<N node_2>
<T А! Бедный, бедный остров. Как Содом и Гоморра, наказан он за грехи. Сначала истощились
золотые копи. Очень многие уплыли отсюда, милорд. Потом, мор пришел на эту землю. Одного меня
пощадил господь. Но капитаны боятся приплывать сюда с тех пор.>
<L link_2,1,1,node_3>
<T И что вы собираетесь делать?>
<N node_3>
<T Не знаю... Я уже как-то привык. Я, должно быть, останусь здесь. Господь дал мне
испытание, и я несу свою ношу... Я живу чистой жизнью, вдали от людей. Хотя иногда мне жаль,
что люди покинули эту прекрасную землю. Быть может, когда-нибудь они вернутся сюда?>
<L link_3,1,1,exit>
<T Что ж, если я смогу сделать так, чтобы они вернулись, я сделаю это. Прощайте.>
Давайте разбираться. Как видите, диалог состоит из вполне нормального текста и неких
загадочных команд, вроде <N node_1>. Вот с нее и начнем.
Скобки < и > открывают и закрывают все команды и текст. Забудете поставить открывающую или
закрывающую скобку - и игра игнорирует текст или команду между ними. N - означает, что
говорит NPC, в нашем случае это некий Абелар Шалон. node_1 - условное обозначение, вроде как
номер этой фразы Абелара. А все вместе обозначает, что сейчас пойдет фраза номер один, причем
произносит ее Абелар Шалон. Далее, опять же в скобках, идет сам текст - что собственно он
говорит. Причем, чтобы игра поняла , что это уже не скрытая команда, а текст, который надо
показывать, в начале стоит латинское T.
После текста, который произносит NPC, идут ответы (или вопросы) игрока, т. е. Николаса
Шарпа. Команда, запускающая ответ Николаса после первой фразы Абелара в данном случае
выглядит, как: <L link_1,1,1,node_2>. Большое L означает, что это ссылка - т. е. выбрав этот
вариант ответа, игрок перейдет к соответствующему продолжению диалога. Ну а node_2 - это
идентификатор фразы, которая прозвучит в ответ на реплику Шарпа. В данном случае, имеется
ввиду, что кликнув на текст после этой команды, игрок увидит фразу, помеченную, как node_2.
Если же в конце этой команды вместо node_ поставить exit, то выбрав такой вариант ответа,
Николас закончит разговор.
Еще не запутались? Хорошо, давайте попробуем вместе. Допустим мы хотим создать следующий
диалог - пират приветствует Николаса, Николас спрашивает, сколько времени, пират ему
отвечает, Николас благодарит и на этом диалог заканчивается. Начали.
NPC всегда говорят первыми. Значит мы сразу пишем: <N node_1>. Теперь напишем в скобках и с
большой латинской Т впереди, текст - что именно скажет пират: <T Привет, Николас!>. Теперь
следует вопрос Николаса. Значит сразу пишем команду <L link_1,1,1,node_TIME>. (То есть, мы
пометили, что эта ссылка ведет к фразе, обозначенной как node_TIME). Николас у нас говорит:
<T Сколько время?>. Теперь снова говорит пират. Пишем <N node_TIME> и добавляем текст <T
Ровно полдень.> Снова отвечает Николас, и, поскольку на этом диалог заканчивается, в конце
команды пишем exit: <L lihk_2,1,1,exit>. Теперь текст Николаса: <T Спасибо!>. Готовый диалог
у нас выглядит так:
<N node_1>
<T Привет, Николас!>
<L link_1,1,1,node_TIME>
<T Сколько время?>
<N node_TIME>
<T Ровно полдень.>
<L lihk_2,1,1,exit>
<T Спасибо!>
Если вы хотите, чтобы Николас не отвечал столь односложно, можете добавлять разные варианты
ответов, адресуя их к разным фразам NPC. Например:
<N node_PRIVET>
<T Привет, Николас!>
<L link_1,1,1,node_TIME>
<T Сколько время?>
<L link_1,1,1,node_WHAT>
<T Что? Ты кто такой?>
<L link_1,1,1,exit>
<T Я не могу с тобой разговаривать.>
Вот собственно и все. Именно на основе таких команд и строится любой диалог в игре. Как
видите, не так уж и сложно. :-))
|
|