Палуба  Кубрик Кают-компания Казна Гаупт-Вахта Камбуз Крюйт-камера Трюм   Якоря

  Ещё немного о диалогах
Все нижеизложенное понадобиться, если вы вдруг пожелаете написать для игрового персонажа новый диалог (или захотите поправить уже существующий).

Первое, что надо знать: диалоги хранятся сразу по двум адресам: в папке Корсары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 Я не могу с тобой разговаривать.>

Вот собственно и все. Именно на основе таких команд и строится любой диалог в игре. Как видите, не так уж и сложно. :-))