Краткий курс написания диалогов для TES3:Morrowind от zOmb'a

Первое, что надо знать о диалогах в русском Морровинде - это то, что в нем ссылки не обрабатываются. По этому вам необходима очень маленькая и простая прога, которую можно скачать отсель.

Если вы хотите работать с уже готовым плагином, в котором есть диалоги, то вам надо его прогнать его через fixplugin4editor.exe. Эта программа работает только в командной строке. Для выполнения требуемой операции строка должна иметь вид « fixplugin4editor.exe начальный_файл.esp конечный_файл.esp ». После этого все ссылки, которые, в оригинале, обозначаются символами @ и # переводятся в символы { }. Это необходимо потому, что при сохранении в русской версии редактор проглатывает символы @ и #. Но подробней об этом в соответствующем разделе.
Итак, приступим:
Для того, чтобы открыть редактор диалогов надо щелкнуть по кнопке в виде «комиксового текстового облачка» на верхней панели. Или открыть свойства НПС и там щелкнуть по кнопке «диалоги». В этом случае вы сразу увидите фразы, которые может сказать этот НПС.

Вот перед вами окно редактора диалогов. В нём несколько отделений. Расскажем о них по порядку.

Слева вы видите список топиков - это те темы, которые отображаются в правой части окна диалога в игре и выделяются, как ссылки, в тексте. Под ним вы видите список выбора НПС. Если там кто-то выбран, то выше будут показаны только те темы, на которые он может говорить. Если там пусто, то будут показаны все топики, существующие в игре. В редакторе они не упорядочены, что заметно затрудняет поиск тем, хотя они всё же лежат небольшими группами слов, начинающихся на одну букву.
Все новые или изменённые топики помечены звездочками. В CS вообще всё, что изменено, помечается звёздочками.

Эта часть экрана имеет 5 закладок. Сейчас мы находимся на закладке «topic» и о ней сказано выше. Следом идёт закладка «voice». В ней собраны крики, которые издают НПС в различных ситуациях (атака, кража, бегство…). Нас это сейчас не интересует.

Следующая закладка называется «greeting». Тут указаны фразы, которые НПС произносит при обращении к нему. Т.е. это фраза, которая выскакивает первой. Именно с помощью гритингов вводятся новые топики, ибо плеер сможет говорить на тему, только если он увидит на неё ссылку!

Далее идёт закладка “persuasion”. Тут описаны фразы, которые НПС говорит после попыток применить «убеждение». Здесь ответы на любые действия (подкуп, лесть…) и с любым исходом (провал, успех).

Последняя вкладка- это журнал. Здесь хранятся все записи, которые могут попасть в журнал игрока. Каждый топик – это фразы на отдельный квест.

Сверху справа вы видите окно, в котором отображаются фразы, которые может сказать НПС при выборе данного топика. Стоит чётко уяснить, что будет сказана первая фраза, которая будет удовлетворять условиям при движении сверху вниз. В этом окне каждая строка разделена на несколько столбцов. В 1-м написано начало фразы. Во 2-м указан info ID, но это нам совершенно бесполезно. Далее указываются условия, которые были установлены в нижней части экрана. В 3-м столбце указано отношение НПС к плееру, при котором будет сказана фраза. Если мы работаем на вкладке журнала, то это число указывает индекс надписи. Благодаря этим индексам прослеживают стадии выполнения квестов. Далее идёт ID НПС. Только этот НПС сможет сказать эту фразу. Далее идут фракция, ячейка и функции. О них расскажем позже.

Ниже вы видите поле непосредственного ввода фразы. Тут всё понятно. Стоит заострить внимание только на ссылках. Они должны строго соответствовать топику. До последней буквы! И должны быть заключены в символы {}. Можно попробовать изловчится, например, у меня есть топик «опомел». Везде я пишу …{опохмел}, но в одном месте мне надо написать «опохмелиться». Тут я пишу «{опохмел}иться » и всё работает. В игре мы видим такое слово со ссылкой: опохмелиться. Не совсем правильно, но сойдёт.
Сохранившись и запустив игру с этим плагином мы не увидим ссылки потому что это не морровиндская ссылка. Перед запуском вы должны пропустить плагин через прогу fixplugin4game.exe с командной строкой « fixplugin4game.exe начальный_файл.esp конечный_файл.esp ». После этого вы получите полноценный рабочий плагин ( конечно, если вы всё в нём доделали ;-) ). После тестинга не надо повторять процедуру конвертирования – просто продолжайте редактировать начальный_файл.esp

Ниже идут настройки условий.

Слева стоят настройки НПС:

1-е – это ID НПС. Только НПС с таким ID сможет сказать такую фразу.

2-е – раса. Только НПС такой рассы смогут сказать такую фразу.

класс. Аналогично

фракция (гильдия \ дом). Аналогично

ранг во фракции. Аналогично

Ячейка. Только НПС, находящиеся в этой ячейке смогут сказать эту фразу.

Следующие 2 строки – это ограничения плеера:

PC faction . Будет сказано, только если плеер состоит в организации.

PC rank . Будет сказано, только если плеер такого ранга

правая сторона

Sex – фраза будет сказана, только если НПС такого пола

Disp – фраза будет сказана только. если отношение НПС к игроку не ниже указанного

далее идут функции. Каждое окошко может занимать любая из нижеследующих функций

Function – в окошке чуть правее вы должны выбрать какая именно функция будет работать. Их там много, но наиболее используемая – это choice. Благодаря ей производится обработка вопросов к игроку. Правее мы выставляем значение, которому должен соответствовать ответ. Как задать вопрос, я расскажу позже.

Global – здесь указывается значение глобальных переменных. Наиболее интересными из стандартных здесь являются random100. Этой функцией можно генерировать случайные числа от 0 до 99, благодаря чему можно сделать случайную выдачу фраз. Другие, которые можно как-нибудь использовать – это day, month, year…

local – здесь можно выбрать переменную из локального скрипта

Journal – выбирается топик журнала и нужное значение \ диапазон индексов строк. Для корректной работы этой функции необходимо нумеровать строки на вкладке журнала сверху вниз

item - здесь можно установить проверку, есть ли у игрока какой-то предмет и в каком количестве. Если надо проверить, есть ли у игрока хоть сколько-нибудь такого объекта, то ставят проверку >0.

Dead – срабатывает, соответственно, 1-если NPC с таким ID мёртв.

Остальные Not ID, Not faction, Not class, Not race, Not cell и Not local работают с точностью да наоборот, относительно соответствующих условий.

Для журнала есть ещё некоторые особенности (только для Трибунала \ БлудМуна).

Галочка Quest Name обозначает, что строка, которой она отмечена, является названием задания, которое отобразится в журнале игрока в соответствующем режиме. Эти фразы необходимо ставить самыми верхними в списке фраз. Она должна быть одна на один топик и не иметь индекса.

Finished означает, что при получении этой записи в журнал, квест будет снят из списка активных.

Restart означает, что при получении этой записи журнала, квест снова (если был удалён) появится в списке активных.


Самое нижнее окно носит название results. В нём пишутся минискрипты, которые будут выполнены после произнесения фразы.

  • Наиболее распространёнными является команда выбора. Она выглядит так:
  • choice “Вариант1” 1 “Вариант2” 2

    В результате этого, после фразы появится менюшка

    ……

    Вариант1 Вариант2

    Для обработки ответов, в соответствующих выбору фразах, надо поставить функцию choice = 1 (для ответа на первый вариант). Стоит учитывать, что эта фраза будет произнесена, только если будет задан вопрос и если на него будет получен именно такой ответ. У одного вопроса может быть много вариантов ответа, а в одном топике может быть много вопросов. Главное - не запутайтесь в них.

  • Часто применяется команда дать \ забрать предмет. Она выглядит так:
    player->additem “ID предмета” “его количество” – это для выдачи
    player->removeitem “IDпредмета” “его количество” – для изъятия
    Можно, также забрать предмет у кого-нибудь другого, у НПС, например, или из сундука. Для этого вместо player надо вписать ID пациента.
  • Полезная штука- изменение отношения. Оно прописывается так:
    ModDisposition “изменение”. Изменение может быть как положительным, так и отрицательным.
  • Добавление записи в журнал.
    journal “топик” “индекс”
  • Можно использовать здесь почти все скриптовые команды, но это уже обучение скриптописанию, а не диалогам.

    Есть ещё несколько важных деталей: из-за того, что в режиме выбора НПС в списке фраз присутствуют только фразы, которые может сказать ЭТОТ НПС, а в топике присутствуют и другие фразы, то при попытке вставить фразу между, как казалось, соседними фразами, фраза убегает чёрти куда после перезагрузки топика (щёлкни по другому, а потом опять по этому). Во избежание этого необходимо либо с самого начала строить расположение фраз самой первой и прибавлять сверху к ней последующую фразу, либо редактировать топик в общем режиме (не выбран НПС), когда отображаются все фразы, которые есть в топике. Это актуально, если об этом топике говорят несколько НПС разные фразы.


    Выше мы разобрали окно редактора, но как же всё-таки создать диалог? Вот инструкция для начинающих:

    Для начала откройте редактор диалогов и выберите вашего «говоруна». Если вам нужно добавить новую реплику в стандартный топик (например, новую сплетню или высказывание о Нерварине), то найдите этот топик и добавьте фразу, щелкнув RMB и выбрав пункт new. Как уже было сказано, место вставки очень важно. Если вы хотите, чтобы NPC говорил только эту фразу, то поставьте её самой верхней и без условий (или с условие, что ё будут говорить этот/эти NPC). Ежели вам надо сделать так, что бы NPC говорил фразу в определённой ситуации, то воспользуйтесь установкой условий, описанной выше.

    Стоит заметить, что если вы изменили какую-либо стандартную фразу, она приравнивается к новой и теряет свои ссылки. По-этому вы должны заменить её @ и # на { }.

    Ещё одна особенность добавления фразы в старый топик – это согласование ID топиков: При загрузке плагина у вас может выскочить предупреждение типа Previous string different topic Greeting1" info 32281390961219948-"Кто здесь?". Если такое случилось, то вам надо минимально изменить (пробел поставить и убрать) топик, о котором говорится в предупреждении. Обычно он соседствует с вашим новым. Если вы хотите создать новый топик (тему для разговора) то вам следует перейти в общий режим отображения топиков, RMB->new. Вам следует создать хотя бы одну пустую фразу в вашем топике, иначе в режиме выбора вы не увидите этого топика. Далее создаёте фразы в топике. Здесь нет ограничений. Но, как говорилось выше, для того, чтобы плеер смог говорить на эту тему, он должен хоть раз увидеть ссылку на неё. Для этого используют либо скриптовую команду AddTopic “IDtopic”, либо гритинги (приветственные слова, которые находятся на одноимённой вкладке). Первый способ не слишком красив, но действенен. Он, в основном, применяется в скриптах (например, на вас напали и в диалоге появляется тема «нападение ассасинов»). Также этот способ можно использовать и в диалоге, если вы не хотите использовать гритинг. Просто пропишите в окне result эту команду. Второй способ более реалистичен – вы услышали что-то и захотели расспросить поподробнее об этом. Итак, переходим на закладку greeting . В левой части вы можете видеть несколько топиков “ greeting 0-9”. Будет произнесена первая фраза, которая будет подходить по условиям в 0-м топике. Если там не будет подходяще – будет произнесена первая подходящая из 1-го топика и т.д. В принципе, не слишком важно, где вы вставите своё приветствие, лишь бы выше 6-го топика (там начинаются стандартные обращения), до него, кажется, идут только квестовые приветствия. Итак, вставьте своё новое приветствие где-нибудь сверху. Оно обязательно должно содержать фразу с новым топиком. Учтите, что проблема с согласованием топиков может возникнуть и в этом случае. Также обрате внимание, что вы не можете ставить свой новый гритинг выше, чем фраза «ты нарушил клятву молчания» в 1-м топике и ниже, чем фраза «Вы мне всё ещё не нравитесь», в 9-м. Причину этого я не знаю, но так разрабы написали в комментарии к этим фразам ;-). Теперь пропускаем плаг через fixplugin4game.exe и тестируем. Вы ведь не забыли все ссылки выделить символами { и }? Для начала этой информации должно быть достаточно. Тонкости организации длинных топиков с кучей условий придут только с опытом. Дерзайте!


    О *.top файлах.

    Если вы используете локализованную версию игры, то, наверно, замечали файлы morrowind.top, tribunal.top и т.д. В них содержатся сопоставление ссылок топикам, которые не идентичны написанию топика. Т.е. если наш топик зовётся «опохмел», то можно сделать ссылку на этот топик словом «опохмелиться», «полечиться» или любым другим сочетанием букв.
    Для того, чтобы прикрепить к своему плагину такой файл, создайте простой текстовый файл с именем «название файла плагина».top. Внутри просто пишите
    «текст ссылки» tab «топик»
    Ссылка и топик обязательно должны быть разделены табулятором. На одной строчке пишется только одна пара. Если что-то непонятно, просто посмотрите на morrowind.top.
    Для того чтобы файл заработал, надо в корень игры, рядом с Morrowind.exe положить файл angel.ini. Это простой текстовый файл, содержащий следующий текст

    [General]
    ProcessPriority=0
    LoadTopdataForPlugins=1
    LoadMarkTopicForPlugins=1
    LoadCellsForPlugins=1
    EnableConsole=1
    EnglishInput=1

    Но помните, что такой файл должен лежать на каждой машине, где пытаются запустить плагин с *.top файлом. Если его не будет - *.top файл будет проигнорирован. Просто добавляйте это файл в архив с плагином.