Спойлер
Я попытаюсь доступно рассказать как устроены диалоги в Морровинде и как правильно создавать свои. Если что-то покажется вам сложным или же просто загрузитесь, не дочитав до конца - сделайте перерыв, продолжите позже - у большинства людей на освоение этой темы уходят месяцы, однако, надеюсь, что с этим мануалом вы освоитесь намного быстрее. Итак, загрузите ваш КС. На панели инструментов выберите комиксное облачко.
Подождите немного времени и перед вами появится диалогове окно с текстами всех игровых разговоров.
Слева в верхней части окна диалогов находятся закладки, показывающие их структуру:
Topic - темы для бесед. В игре они подсвечиваются в разговоре синим цветом,
и располагаются в правой части разговорного окна нпц/кричера.
В правой части окна редактора, в секции Info/Responce содержатся списки текстов для данной темы. Топики, как и другие диалоги, нельзя упорядочить по алфавиту или как-либо еще. Однако, можно заметить, что топики в общем расположены, хоть и в кривом, но все же, в подобии алфавита, отчего найти нужный нам становится не так сложно. Для того, чтобы создать новый топик, кликаем в левой колонке пкм -> new и пишем название. Заметьте, как только вы его обозначите, он автоматом улетит куда-то в спиcке остальных топиков. Не пугайтесь - так и должно быть. Если, после создания топика, вы видете, что рядом с ним находится другой с таким же названием, то удаляйте ваш и переходите к уже сущестующему, иначе могут возникнуть ошибки в игре, вплоть до того, что ваш и/или оригинальный топик не будут работать. Пока что - это всего лишь тема для разговора, но для того, чтобы она работала, нужно в правой части (Info/responce) создать новый текст.
И вот тут внимание - стоит четко уяснить, что будет сказана первая фраза, которая будет удовлетворять условиям при движении сверху вниз. Т.е., если вы разместите ваш топик в самом верху, не указав никаких условий, то все персонажи, имеющие эту тему и не имеющие специальных условий, будут говорить одно и то же, и никогда других текстов в этом же топике. Если же нужно, чтобы нпц/кричер говорил данный текст в определенные моменты, то располагаем такой диалог в самом низу. Стоит добавить, что развитие диалогов идет снизу вверх. Например, мы через топик хотим дать игроку квест. Так вот, диалог, стартующий квест, должен быть самым нижним. В теории, гиперссылки на топики в текстах должны проставляться редактором автоматически. И ногда так оно и происходит, но, как правило, все же, даже если мы укажем теги ссылок вручную, то они все равно не будут работать. И для этого нам понадобится маленькая утилитка - [url="http://"http://files.filefront.com/Morrowind+Plugin+Utils+1Crar/;9407608;/fileinfo.html""]morrowind plugin utils[/url], которая работая через командную строку, позволяет избавиться от этого недостатка. Например, мы имеем текст "Будь осторожнее. Она вооружена и опасна!" и нам нужен топик "вооружена и опасна" со ссылкой на него. Для этого в новых диалогах все слова и/или фразы, которые должны послужить нам ссылкой на топики, заключаем в скобки { }. После чего наш диалог должен выглядеть как "Будь осторожнее. Она {вооружена и опасна}!". Когда наш плагин будет закончен, кладем его в одну папку с fixplugin4game.exe (желательно, чтобы путь до них был как можно короче - в идеале сразу на локальном диске) и запускаем командную строку. Там набираем команду вида
Если по какой-то причине, вы не хотите добавлять ссылку на топик через текст диалога, но хотите, чтобы он тем-не менее присутствовал, то можете создать простенький скрипт вида:
После этого ваш плагин готов к чистке в ТЕSAME. Обрачу внимание, что любое последующее редактирование плагина может привести к потери гиперссылок, потому пропускать его через фиксплагин стоит когда вы его закончите. Чистка плагина с диалогами в тесами сильно актуальна. Дело в том, что, если плагин не очистить от измененных обьектов, это может привести к конфликтам с другими плагинами, использующими те же обьекты, к их раздвоению, некорректной работе, исчезновению, что особо часто происходит при отключении/подключении плагинов и загрузке разных сейвов, но что не так катастрофично для самой игры, в большинстве случаев, то пересечения измененных диалогов может привести к потери ссылок и/или условий в них, отчего, например, исчезнет возможность взять/продолжить квест, выполнение которого, к тому же, может повлиять на возможность взять последующие квесты во фракции или продолжить сюжетную линию. В любом случае, по-хорошему, плагин надо всегда чистить, незивисимо от того, есть там диалоги или нет. О том, как использовать тесами смотрите 2-ой урок.
Ещё одна особенность добавления фразы в старый топик – это согласование ID топиков: При загрузке плагина у вас может выскочить предупреждение типа Previous string different topic Greeting1" info 32281390961219948-"Кто здесь?". Если такое случилось, то вам надо минимально изменить (поставить и убрать любой символ) топик, о котором говорится в предупреждении. Обычно он соседствует с вашим новым. Дело в том, что, как мы уже могли заметить, при создании своего диалога, не нужно указывать его ID - он генерируется автоматически, опираясь на связь с ближайшим диалогом, который сразу помечается измененным - звездочкой. Если такой диалог содержал ссылки, то в нем надо тоже проставить скобки { } и такой диалог не удалять в тесами. Такова сложная работа диалоговых связок в КС. Эти записи представлены связанным списком, что означает, что каждая запись содержит (невидимую) информацию о том, какая запись стоит перед ним, и какая после. (Это приводит к обычному сообщению об ошибке, когда в диалоге удаляли записи или перемещали их, например, при чистке мода в TESAME или, загружая несколько модов, которые изменяют одну и ту же тему. Игра более не уверена, какая запись идет после какой. Иногда это не важно, но иногда означает, что некоторые отклики будут вырезаны, потому что порядок изменился — это зависит от условий).
Стоит обратить внимание, что описанный выше способ указания ссылок на топики работает только если название топика полностью совпадает со словом с тексте до последней буквы и заключено в символы { }. Например, если есть топик "вооружена и опасна" то он будет открываться только при аналогичном тексте в разговоре. Если же словосочетание/слово будет хоть немножко перефразировано, но таким образом, что не совпадает с топиком, например "вооружен и опасен", то для этого нам понадобится создавать новый топик, иначе он просто-напросто не будет иметь ссылки. Можно попробовать изловчится и если мы станем использовать топик типа "воин", а в диалоге у нас слово "воины" или "воинственный", то ссылка будет работать, но слова будут выглядеть как "@воин#ы" и "@воин#ственный". Не совсем правильно, но зато исправно работает.
В русской версии Морровинда одно и то же слово/фраза, на которую есть топик может иметь разные рода/числа/склонения. Для этого используется файл с расширением .top. Для того, чтобы прикрепить к своему плагину такой файл, создайте простой текстовый файл с именем «название файла плагина». Внутри просто пишите «текст ссылки»-> tab-> «топик». Ссылка и топик обязательно должны быть разделены табулой. На одной строчке пишется только одна пара. Это будет выглядеть приблизительно так:
Просто добавляйте это файл в архив с плагином. Если его не будет - top-файл будет проигнорирован и сложные ссылки работать не будут.
Есть еще один способ, но более жесткий - конвертировать ваш плагин в мастер-файл. Если речь не идет о чем-то глобальном со множеством сложных диалогов с большим числом гиперссылок, то не стоит так делать. От этого больше неудобств, чем преимуществ, тем более, что такой плагин нельзя будет редактировать. Если вы все же решились на это, то кроме файла *.top необходимо создать и файл *.cel с тем же названием (абсолютно пустой), иначе игра даже не запустится. Можно добавить еще и пустой файлик *.mrk с тем же названием, но и без него все будет хорошо работать. Понятное дело, что в этом случае, необходимость в Angel.ini отпадает. Для этих целей можно использовать нехитрую утилитку [url="http://"http://files.filefront.com/Mod+Preparerar/;9407610;/fileinfo.html""]Mod Prepare[/url].
Это относится ко всем диалогам, а не только к топикам.
Теперь вернемся к закладкам диалоговых групп. И следующая после топиков - Voice. Здесь содержатся фразы, которые npc с озвучкой произносят вне диалогового окна. В левой части перечислены события:
Alarm – обнаружение
Attack – npc кричит фразу, когда начинает нападение
Flee – npc кричит, когда «сдаtтся» и пытается убежать
Hello – npc говорит, когда рядом проходит игрок. Вероятность, что npc что-то скажет задаeтся параметром Hello в настройках AI. Расстояние, на котором нпц может обратиться к плееру задается константой "iGreetDistanceMultiplier". Значение (если файл справки CS говорит правду) умножается на значение hello, чтобы получить дистанцию, на которой они начинают говорить. Опция доступна в Gameplay->Settings->Gameplay, но помните, что ее изменение каснется всех нпц.
Hit – нпц кричит при получении удара.
Idle – npc говорит просто так. Как бы обращаясь к самому себе или другому нпц.
Intruder – реакция на вторжение.
Thief – реакция на замеченное воровство.
В правой части, в info/responce содержатся тексты субтитров. В правом нижнем углу доступна кнопка Sound Filename, где вы можете присвоить звуковой файл для конкретной фразы.
Специфичность движка Морровинда такова, что далеко не каждый файл станет проигрываться в игре, даже, если он проигрывается в редакторе при клике на текст, к которому он присвоин. Файл должен лежать в подпапке Sound папки Data Files директории игры и обязательно иметь следующие аттрибуты:
Расширение файла - mp3.
Звук должен быть одноканальным - mono.
Резолюция - 16 бит.
Частота дискретизации - 44 кГц.
Битрэйт - 64 кБит/Сек.
Битрэйт должен быть постоянным - CBR.
Отсутствие числа контроля целостности информации - без(!) CRC.
Это классический вариант. Но есть возможность использовать звуки более высокого качества с иными частотой и битрэйтом, но обязательно без crc. Для этого, вместе с *.mp3 создаем *.wav с тем же именем и помещаем их в одну папку. В войсе выбираем wav-файл, а не мп3. Но так, как у вас будут отображаться только mp3, то просто в строке "Имя файла" набираем часть имени вашего файла и во всплывшей подсказке появится *.wav, его и назначаем. Если мы будем использовать только *.wav, то он будет проигрываться в игре, но будет появляться и окно с сообщением, что не найден *.mp3. Это всего лишь техническая особенность войсов, изначально предназначенных только для работы с мп3, потому кидаем ваш *.mp3 с тем же названием в папку с *.wav и проверяем в игре. Все должно работать.
Как вы можете теперь судить, кнопка Sound filename, с помощью которой вы можете установить звуковой файл, соответствующий реплике - достаточно полезная вкладка, т.к. есть большое количество фраз, для произнесения которых установлены слишком жесткие условия и вы их могли никогда и не услышать в оригинальной игре. Их можно использовать для придания большей индивидуальности вашим npc. Оригинальные файлы голосов находятся в Data FilesSoundVo. Там вы найдете папки, состоящие из одной буквы, которая соотвествует английскому названию рас. Очень распространенный недостаток большинства плагинов, добавляющих новые расы - отсутствие войсов, отчего они выглядят абсолютно немыми, молча стоят, молча сражаются и т.д.
Подождите немного времени и перед вами появится диалогове окно с текстами всех игровых разговоров.
Слева в верхней части окна диалогов находятся закладки, показывающие их структуру:
Topic - темы для бесед. В игре они подсвечиваются в разговоре синим цветом,
и располагаются в правой части разговорного окна нпц/кричера.
В правой части окна редактора, в секции Info/Responce содержатся списки текстов для данной темы. Топики, как и другие диалоги, нельзя упорядочить по алфавиту или как-либо еще. Однако, можно заметить, что топики в общем расположены, хоть и в кривом, но все же, в подобии алфавита, отчего найти нужный нам становится не так сложно. Для того, чтобы создать новый топик, кликаем в левой колонке пкм -> new и пишем название. Заметьте, как только вы его обозначите, он автоматом улетит куда-то в спиcке остальных топиков. Не пугайтесь - так и должно быть. Если, после создания топика, вы видете, что рядом с ним находится другой с таким же названием, то удаляйте ваш и переходите к уже сущестующему, иначе могут возникнуть ошибки в игре, вплоть до того, что ваш и/или оригинальный топик не будут работать. Пока что - это всего лишь тема для разговора, но для того, чтобы она работала, нужно в правой части (Info/responce) создать новый текст.
И вот тут внимание - стоит четко уяснить, что будет сказана первая фраза, которая будет удовлетворять условиям при движении сверху вниз. Т.е., если вы разместите ваш топик в самом верху, не указав никаких условий, то все персонажи, имеющие эту тему и не имеющие специальных условий, будут говорить одно и то же, и никогда других текстов в этом же топике. Если же нужно, чтобы нпц/кричер говорил данный текст в определенные моменты, то располагаем такой диалог в самом низу. Стоит добавить, что развитие диалогов идет снизу вверх. Например, мы через топик хотим дать игроку квест. Так вот, диалог, стартующий квест, должен быть самым нижним. В теории, гиперссылки на топики в текстах должны проставляться редактором автоматически. И ногда так оно и происходит, но, как правило, все же, даже если мы укажем теги ссылок вручную, то они все равно не будут работать. И для этого нам понадобится маленькая утилитка - [url="http://"http://files.filefront.com/Morrowind+Plugin+Utils+1Crar/;9407608;/fileinfo.html""]morrowind plugin utils[/url], которая работая через командную строку, позволяет избавиться от этого недостатка. Например, мы имеем текст "Будь осторожнее. Она вооружена и опасна!" и нам нужен топик "вооружена и опасна" со ссылкой на него. Для этого в новых диалогах все слова и/или фразы, которые должны послужить нам ссылкой на топики, заключаем в скобки { }. После чего наш диалог должен выглядеть как "Будь осторожнее. Она {вооружена и опасна}!". Когда наш плагин будет закончен, кладем его в одну папку с fixplugin4game.exe (желательно, чтобы путь до них был как можно короче - в идеале сразу на локальном диске) и запускаем командную строку. Там набираем команду вида
C:fixplugin4game.exe "изначальный плагин.esp" "конечный плагин.esp", где указываем, путь до ваших файлов, имя вашего плагина и любое название для вашего плагина после. Программка сгенерирует копию вашего плагина, заменив все символы { } на @ #, которые будут работать в русской версии игры.
Если по какой-то причине, вы не хотите добавлять ссылку на топик через текст диалога, но хотите, чтобы он тем-не менее присутствовал, то можете создать простенький скрипт вида:
Begin название_скрипта AddTopic, "название_топика" EndИ повесив этот скрипт на вашего нпц/кричера, у него будет доступна эта тема для разговора уже при первом же диалоге в игре, независимо от того, присутсвует ли ссылка в тексте других диалогов.
После этого ваш плагин готов к чистке в ТЕSAME. Обрачу внимание, что любое последующее редактирование плагина может привести к потери гиперссылок, потому пропускать его через фиксплагин стоит когда вы его закончите. Чистка плагина с диалогами в тесами сильно актуальна. Дело в том, что, если плагин не очистить от измененных обьектов, это может привести к конфликтам с другими плагинами, использующими те же обьекты, к их раздвоению, некорректной работе, исчезновению, что особо часто происходит при отключении/подключении плагинов и загрузке разных сейвов, но что не так катастрофично для самой игры, в большинстве случаев, то пересечения измененных диалогов может привести к потери ссылок и/или условий в них, отчего, например, исчезнет возможность взять/продолжить квест, выполнение которого, к тому же, может повлиять на возможность взять последующие квесты во фракции или продолжить сюжетную линию. В любом случае, по-хорошему, плагин надо всегда чистить, незивисимо от того, есть там диалоги или нет. О том, как использовать тесами смотрите 2-ой урок.
Ещё одна особенность добавления фразы в старый топик – это согласование ID топиков: При загрузке плагина у вас может выскочить предупреждение типа Previous string different topic Greeting1" info 32281390961219948-"Кто здесь?". Если такое случилось, то вам надо минимально изменить (поставить и убрать любой символ) топик, о котором говорится в предупреждении. Обычно он соседствует с вашим новым. Дело в том, что, как мы уже могли заметить, при создании своего диалога, не нужно указывать его ID - он генерируется автоматически, опираясь на связь с ближайшим диалогом, который сразу помечается измененным - звездочкой. Если такой диалог содержал ссылки, то в нем надо тоже проставить скобки { } и такой диалог не удалять в тесами. Такова сложная работа диалоговых связок в КС. Эти записи представлены связанным списком, что означает, что каждая запись содержит (невидимую) информацию о том, какая запись стоит перед ним, и какая после. (Это приводит к обычному сообщению об ошибке, когда в диалоге удаляли записи или перемещали их, например, при чистке мода в TESAME или, загружая несколько модов, которые изменяют одну и ту же тему. Игра более не уверена, какая запись идет после какой. Иногда это не важно, но иногда означает, что некоторые отклики будут вырезаны, потому что порядок изменился — это зависит от условий).
Стоит обратить внимание, что описанный выше способ указания ссылок на топики работает только если название топика полностью совпадает со словом с тексте до последней буквы и заключено в символы { }. Например, если есть топик "вооружена и опасна" то он будет открываться только при аналогичном тексте в разговоре. Если же словосочетание/слово будет хоть немножко перефразировано, но таким образом, что не совпадает с топиком, например "вооружен и опасен", то для этого нам понадобится создавать новый топик, иначе он просто-напросто не будет иметь ссылки. Можно попробовать изловчится и если мы станем использовать топик типа "воин", а в диалоге у нас слово "воины" или "воинственный", то ссылка будет работать, но слова будут выглядеть как "@воин#ы" и "@воин#ственный". Не совсем правильно, но зато исправно работает.
В русской версии Морровинда одно и то же слово/фраза, на которую есть топик может иметь разные рода/числа/склонения. Для этого используется файл с расширением .top. Для того, чтобы прикрепить к своему плагину такой файл, создайте простой текстовый файл с именем «название файла плагина». Внутри просто пишите «текст ссылки»-> tab-> «топик». Ссылка и топик обязательно должны быть разделены табулой. На одной строчке пишется только одна пара. Это будет выглядеть приблизительно так:
книгу книга книга книга книгой книгаЗакончив, переименуйте этот текстовой документ файловым менеджером в .top. Как вариант, можете скопировать уже имеющийся файл, например, morrowind.top и изменив название на название вашего плагина, удалить все содержимое и заполнить вашими ссылками и топиками. Для того чтобы файл заработал, надо в корень игры, рядом с Morrowind.exe положить файл Angel.ini - он есть при установленном Бладмуне. Он содержит всего-навсего одну секцию, в которой, напротив ключей должны стоять значения такого вида:
[General] ProcessPriority=0 LoadTopdataForPlugins=1 LoadMarkTopicForPlugins=1 LoadCellsForPlugins=1 EnableConsole=1 EnglishInput=1
Просто добавляйте это файл в архив с плагином. Если его не будет - top-файл будет проигнорирован и сложные ссылки работать не будут.
Есть еще один способ, но более жесткий - конвертировать ваш плагин в мастер-файл. Если речь не идет о чем-то глобальном со множеством сложных диалогов с большим числом гиперссылок, то не стоит так делать. От этого больше неудобств, чем преимуществ, тем более, что такой плагин нельзя будет редактировать. Если вы все же решились на это, то кроме файла *.top необходимо создать и файл *.cel с тем же названием (абсолютно пустой), иначе игра даже не запустится. Можно добавить еще и пустой файлик *.mrk с тем же названием, но и без него все будет хорошо работать. Понятное дело, что в этом случае, необходимость в Angel.ini отпадает. Для этих целей можно использовать нехитрую утилитку [url="http://"http://files.filefront.com/Mod+Preparerar/;9407610;/fileinfo.html""]Mod Prepare[/url].
Это относится ко всем диалогам, а не только к топикам.
Теперь вернемся к закладкам диалоговых групп. И следующая после топиков - Voice. Здесь содержатся фразы, которые npc с озвучкой произносят вне диалогового окна. В левой части перечислены события:
Alarm – обнаружение
Attack – npc кричит фразу, когда начинает нападение
Flee – npc кричит, когда «сдаtтся» и пытается убежать
Hello – npc говорит, когда рядом проходит игрок. Вероятность, что npc что-то скажет задаeтся параметром Hello в настройках AI. Расстояние, на котором нпц может обратиться к плееру задается константой "iGreetDistanceMultiplier". Значение (если файл справки CS говорит правду) умножается на значение hello, чтобы получить дистанцию, на которой они начинают говорить. Опция доступна в Gameplay->Settings->Gameplay, но помните, что ее изменение каснется всех нпц.
Hit – нпц кричит при получении удара.
Idle – npc говорит просто так. Как бы обращаясь к самому себе или другому нпц.
Intruder – реакция на вторжение.
Thief – реакция на замеченное воровство.
В правой части, в info/responce содержатся тексты субтитров. В правом нижнем углу доступна кнопка Sound Filename, где вы можете присвоить звуковой файл для конкретной фразы.
Специфичность движка Морровинда такова, что далеко не каждый файл станет проигрываться в игре, даже, если он проигрывается в редакторе при клике на текст, к которому он присвоин. Файл должен лежать в подпапке Sound папки Data Files директории игры и обязательно иметь следующие аттрибуты:
Расширение файла - mp3.
Звук должен быть одноканальным - mono.
Резолюция - 16 бит.
Частота дискретизации - 44 кГц.
Битрэйт - 64 кБит/Сек.
Битрэйт должен быть постоянным - CBR.
Отсутствие числа контроля целостности информации - без(!) CRC.
Это классический вариант. Но есть возможность использовать звуки более высокого качества с иными частотой и битрэйтом, но обязательно без crc. Для этого, вместе с *.mp3 создаем *.wav с тем же именем и помещаем их в одну папку. В войсе выбираем wav-файл, а не мп3. Но так, как у вас будут отображаться только mp3, то просто в строке "Имя файла" набираем часть имени вашего файла и во всплывшей подсказке появится *.wav, его и назначаем. Если мы будем использовать только *.wav, то он будет проигрываться в игре, но будет появляться и окно с сообщением, что не найден *.mp3. Это всего лишь техническая особенность войсов, изначально предназначенных только для работы с мп3, потому кидаем ваш *.mp3 с тем же названием в папку с *.wav и проверяем в игре. Все должно работать.
Как вы можете теперь судить, кнопка Sound filename, с помощью которой вы можете установить звуковой файл, соответствующий реплике - достаточно полезная вкладка, т.к. есть большое количество фраз, для произнесения которых установлены слишком жесткие условия и вы их могли никогда и не услышать в оригинальной игре. Их можно использовать для придания большей индивидуальности вашим npc. Оригинальные файлы голосов находятся в Data FilesSoundVo. Там вы найдете папки, состоящие из одной буквы, которая соотвествует английскому названию рас. Очень распространенный недостаток большинства плагинов, добавляющих новые расы - отсутствие войсов, отчего они выглядят абсолютно немыми, молча стоят, молча сражаются и т.д.