Tes 3 morrowind диалоги

Обновлено: 03.07.2024

Текст и Диалог

Многие из этих функций используются не только в скриптах, но и в поле результата окна редактора диалогов. Диалоги – это само по себе искусство, которое нельзя полностью описать здесь, но я дам краткое представление об этом.

Краткое описание создания диалога

Концепция диалога в Морровинде

В Морровинде диалоги организованы в формате базы данных, которая построена следующим образом:

Верхний уровень, различные «подразделения» диалога:
Тема (Topic): непосредственно сами фразы тем, появляющиеся в окне диалога в игре.
Приветствия (Greetings): фразы, которыми приветствует NPC игрока при инициализации разговора.
Убеждение (Persuasion): ответы, получаемые игроком в результате попыток поднять отношение NPC.
Журнал (Journal): журнальные заметки игрока.
Голоса (Voices): Звуковые файлы в формате .mp3, которые NPC произносят в тех или иных ситуациях.

Каждый из этих верхних уровней имеет подуровни, которые я называю топиками – для подразделения Тем , существуют «ключевые слова», которые появятся на правой панели окна диалога в игре. Для Голосов подразделение определяется разными игровыми кондициями. Для Приветствий это просто тематические категории, определяемые например, тем, что персонаж серьёзно ранен. Для Убеждения это специальные фразы, сообщающие об отказе в услугах или успехе/неудаче подкупа.

Для каждой темы существует одна или несколько описывающих её фраз. Для Тем и Приветствий это просто ответы NPC. Для Журнала это могут быть записи, появляющиеся по мере выполнения квестов.

Каждой из этих фраз можно задать определённые условия появления в окне редактора диалогов. Вы увидите большой список кондиций, который определяет какой NPC (его ID) или группа людей (их раса, класс, отношение к игроку и т.д.) может ответить соответствующим образом. Также там есть две проверки на то, в какой гильдии и в каком ранге находится игрок. А в списке правее Вы можете задать до шести проверок, которые могут относиться как к игроку и NPC, так и к значению глобальных переменных и многому другому (смотрите ниже).

Как работает диалог

Для определения того, что тема должна отображаться во время диалога с NPC, игра проверяет следующие условия:

  1. «Знает» ли NPC тему – это определяется условиями, проставленными в поле “speaker conditions” – если NPC выполняет все условия хотя бы к одному ответу в этой теме, он «знает» её.
  2. Знает ли игровой персонаж тему. Он узнаёт её, если её название было ранее упомянуто в разговоре с NPC или было специально добавлено функцией AddTopic .
  3. Если и игрок, и NPC «знают» тему, она показывается в списке тем и подсвечивается в тексте – теперь она может быть выбрана, и на неё будет дан соответствующий ответ.
  • Он начинает просмотр сверху списка, проверяя, удовлетворяются ли условия для соответствующего ответа.
  • Если нет -> Движок переходит к следующему ответу в списке и снова проверяет условия.
  • Если да -> Эта запись используется, как ответ, – появляется в окне диалога.

Когда ответ выбран, движок:

  • Выводит текст ответа в окно диалога (или играет MP3 файл для Голосового ответа)
  • Выполняет любые скриптовые команды в поле результата, которое расположено в самом низу окна редактирования диалога. Вы можете использовать здесь любые функции, но однако большинство команд не будут иметь смысла. Впрочем, Вы всё-таки можете использовать условные конструкции, как в обычных скриптах.

Учтите, что Поле результата позволяет Вам обмениваться информацией со скриптами (например, изменяя переменные или добавляя записи в журнал игрока). К тому же, Вы можете скриптами осуществлять обратную связь, влияя на диалог, устанавливая условия, которые можно проверить (например, вы можете проверять локальную или глобальные переменные в Поле условий диалога). Простейший скрипт, оказывающий влияние на диалог – это скрипт “nolore”, который используется только для того, чтобы удержать NPC от использования стандартных веток диалога.

Несколько золотых правил

Функции, управляющие диалогом

if ( MenuMode == 1 )
return
endif

if (OnPCEquip ==1 )
MessageBox, “Меч вибрирует в Ваших руках”
Set OnPCEquip to 0
Endif

MessageBox, “Улия поднимает руки и произносит некое заклинание. Вы переноситесь в регион Шеогорад”, “Ok”

GetButtonPressed (возвращает short)

Возвращает порядковый номер кнопки, начиная с 0. Если же ничего ещё не было выбрано, то значение будет –1.

Short button ;определить как переменную – иначе будут ошибки
Short status
Short OnPCEquip

If ( status == 1 ); ждать решения игрока
Set button to GetButtonPressed
If ( button == -1 ) ;решение ещё не принято: ничего не делать
return
Elseif ( button == 0 ) ;продолжить
Set status to 0 ;сброс для следующего раза
Elseif ( button == 1 )
Player -> drop, "power_sword" ;бросить предмет
Set status to 0
Endif
Endif

MessageBox "You have %.0f дней", days_left

Символ % указывает на наличие переменной. Цифра после точки определяет количество выводимых знаков после запятой. "f" указывает, что переменная типа “float”. Файл помощи сообщает, что “D” можно использовать для переменных типа short и long, а “S” для текстовых переменных, но мне удалось удачно использовать только тип “f”. Однако %g и %G прекрасно работает и с short, и с long. Возможно также использование конструкции %.3g.

^PCNameИмя игрового персонажа. ^PCClassЕго класс. ^PCRaceЕго раса. ^PCRankЕго ранг в гильдии, в которой состоит говорящий. ^NextPCRankСледующий ранг в этой гильдии. ^CellЛокация, в которой находится игрок. ^GlobalЗначение любой глобальной переменной.

Переменные типа float выводятся в следующем формате: 1.1. Хорошим примером является ^Gamehour. Также для вывода глобальных переменных Вы можете использовать синтаксис %.1f, это будет равнозначно. Если Вы используете ^Global в книге, которая в данный момент открыта, и пытаетесь поменять или просмотреть значение этой переменной, игра «вылетит»!

^NameИмя говорящего NPC.
^RaceЕго раса.
^ClassЕго класс.
^FactionЕго гильдия. Если он не принадлежит ни к какой из гильдии, здесь будет стоять пропуск.
^RankРанг NPC.

Пример скрипта: Дурацкий пример, показывающий использование всего возможного синтаксиса:

short var_1
long var_2
float var_3
; GameHour – глобальная переменная типа float

set var_1 to 1
set var_2 to 2
set var_3 to 3

MessageBox "^PCName, у тебя %g голова, %G руки, и %.5f золотых монет. Можно сказать, что в ^cell время просто летит. Сейчас ^GameHour часов, точнее %.2f часов!", var_1, var_2, var_3, GameHour

Добавление темы диалога

;добавить возможность спросить о водопаде
AddTopic, "почему Вы не мокнете?"

Естественно, что Вам сначала необходимо создать соответствующую тему, чтобы компилятор не «ругался».

Нет возможности удалить тему с помощью скрипта, однако можно в полях условий окна диалога, прописать условие, относящееся к локальной переменной некого скрипта. Допустим, если все фразы темы могут быть показаны лишь при значении переменной A равном 1, то, если его поменять на 2, то на эту тему NPC сказать будет нечего, и она пропадёт.

Начало и конец диалога

Функция “ForceGreeting” может быть использована для инициализации обычного диалога NPC. Так что, если Вы хотите начать с некого определенного приветствия, Вам придётся использовать для этого поля условий в окне редактора диалогов. Не имеет значения, где находится NPC, диалог будет начат в любом случае. Поэтому лучше использовать эту функцию вместе с “GetDistance” и “GetPCCell”

Пример скрипта: скрипт демонстрирует прекрасную проверку перед тем, как начинать диалог.

float timer
short doOnce

if ( GetJournalIndex "DA_Mephala" Return
endif

if ( GetJournalIndex DA_Mephala >= 60 )
Return
endif

Set timer to ( timer + GetSecondsPassed )

if ( timer Return
endif

if ( doOnce == 0 )
if ( GetDistance Player if ( player->GetDistance "hlaalu_loaddoor_ 02_balyn" if ( GetLOS Player == 1 )
ForceGreeting
Journal DA_Mephala 55
set doOnce to -1
endif
endif
endif
endif

“Goodbye” означает конец диалога. После вызова этой функции (она обычно используется в поле результате в окне редактора диалогов) игрок может выбрать лишь вариант, завершающий разговор.

Choice, “выбор 1”, выбор1_числ [, "выбор 2", выбор2_числ, …]
Choice "Да", 1, "Нет!", 2

Подобные условия используются в поле результата, чтобы заставить игрока принять некоторое решение или просто разбить длинную речь на несколько кусков, соединенных вариантом «Продолжить». После того, как игрок сделал свой выбор, движок проверит тему ещё раз в поисках нужной фразы. Чтобы определить эту фразу в окне условий надо выбрать function / choice / = / выбор_числ. Насколько я знаю, в скриптах подобное не используется.

Добавление и проверка журнальных записей

Journal, "ID_записи", индекс_числ
Journal, MG_BCShroomsCombat, 10

Функция позволяет добавить журнальную запись, которая должна быть заранее создана в окне редактора диалогов. Индекс определяет, какая фраза темы добавляется. Не используйте стандартных названий для записей, иначе они могут быть показаны в обычном диалоге, если это название вдруг появится в ходе диалога. BethSoft предлагает стандарт использования двух букв и подчёркивания перед смысловой частью (смотрите пример выше).

SetJournalIndex "ID_записи" индекс_числ

Я, так же как и Bethesda, не использовал эту функцию, поэтому не уверен, отличается ли она от функции Journal . В файле помощи написано: «Устанавливает индекс журнальной записи. Может как опускать, так и поднимать его». Возможно, это значит, что Вы можете устанавливать индекс, не добавляя в журнал игрока записи. Тогда это может быть использовано, чтобы сделать квест, который будет даваться вновь и вновь (как в TES2: Daggerfall) простым сбрасыванием индекса на 0.

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

GetJournalIndex, "JournalID" (возвращает short)

if ( GetJournalIndex, MG_BCShroomsCombat == 10 )

Эта функция возвращает самое высокое (или последнее?) значение индекса журнальной записи, которое игрок получал. Это представляет собой очень удобный способ написания скриптов, выполняющих определённые действия в зависимости от продвижения игрока по квесту.

Пример скрипта: Скрипт демонстрирует работу некоторых функций:

If ( GetDeadCount "Vorar Helas" > 0 )
return
endif

if ( GetJournalIndex "MV_SlaveMule" If ( GetDistance, "Rabinna" Rabinna->AiWander 0 0 0 0 0 0 0
StartCombat, "Rabinna"
Journal "MV_SlaveMule", 102 ; добавляет запись в журнал
endif
endif

Специальные диалоговые функции

Среди функций, используемых для задания условий в окне редактора диалоге есть несколько, которые не имеют схожих себе в обычных скриптовых функциях. Используя диалог (например, используя “ForceGreeting” , голосовой диалог или специально созданных квестовых NPC) и диалоговое результирующее поле, вы все же можете использовать эти функции для целей скриптования, например, изменяя глобальную переменную в результирующем поле диалога. Примером таких функций являются:

Пол игрока - PC Sex (диалог)

Это значение равно 0 если игровой персонаж – мужчина или 1, если женщина.

Говорил с игроком - Talked to PC (диалог)

1 – если говорящий когда-либо говорил с игроком и 0 – если нет. Вы можете использовать это, чтобы кто-то сказал нечто определённое, когда Вы заговорите с ним впервые – или для наших целей скриптования, чтобы помечать этого человека, как «известного» игроку.

Похоже, что эта функция будет сбрасываться на 0, если игрок потратил больше 72 игровых часов вне локации с необходимым NPC. Этот же временной лимит относится и к “ForceGreeting” : NPC может говорить первым только в течение 72 часов. В то же время, существует возможность обойти это ограничение, используя на NPC функцию PositionCell раз в день, пересылая NPC в служебную локацию, а затем вновь возвращая его в изначальное местоположение. Тогда движок будет запутан, и ему будет непонятно, относительно какой локации делать проверку. В итоге связь с 72 часами будет нарушена.

Требования для повышения – Rank Requirement (диалог)

Проверяет, «годится» ли игрок для повышения в гильдии говорящего.
Возвращает 0, если у Вас недостаточная репутация во фракции и низкие навыки.
Возвращает 1, если у Вас достаточно развиты навыки, но низкая репутация во фракции.
Возвращает 2, если у Вас достаточная репутация во фракции, но низкие навыки.
Возвращает 3, если Вы годитесь.

Множитель одежды игрока - PC Clothing Modifier (диалог)

Это суммарная стоимость всей одежды и брони, которая надета на игроке. Полученное значение изменяет расположение персонажей к игроку в игре.

Ударил друга - Friend Hit (диалог)

Используется в диалоге, когда Вы атакуете члена своей группы (например спутника).
Возвращаемые значения:
0 – удар по нему никогда не наносился
1 – игрок ударил 1 раз
2 – игрок ударил 2 раза
3 – игрок ударил 3 раза
4 – игрок ударил 4 раза и NPC/Существо не находится в схватке с ним

А дальше что?

Проект живет и процветает, разработчики планируют развивать его ещё большими темпами. А мы пока что предлагаем вам вернуться в этот мир, только в этот раз в неплохой компании. А что может быть лучшим поводом, чем бесплатная копия Morrowind, которую может получить любой желающий в честь 25-летия серии The Elder Scrolls?

Morrowind Multiplayer

Актуальная версия проекта — 0.7-alpha, которая, по заверениям разработчиков, «очень играбельна». Если взглянуть на список изменений, который публикуется с каждой новой версией, то проект уже находится в весьма стабильной фазе. Всё ещё прослеживаются небольшие проблемы, вроде отсутствия синхронизации части скриптов, из-за которого NPC реагируют только на того игрока, на чьём клиенте запущен их AI. Также все активные эффекты персонажа сбрасываются при выходе из игры. Над исправлением подобных мелочей разработчики ведут активную работу. Большая часть игровых моментов, влияющих на комфортную игру в компании, работет стабильно.


Построить крепость из подушек, что может быть лучше?

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

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

Редактор

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

  • Слева вы видите список топиков - это те темы, которые отображаются в правой части окна диалога в игре и выделяются, как ссылки, в тексте. Под ним вы видите список выбора НПС. Если там кто-то выбран, то выше будут показаны только те темы, на которые он может говорить. Если там пусто, то будут показаны все топики, существующие в игре. В редакторе они не упорядочены, что заметно затрудняет поиск тем, хотя они всё же лежат небольшими группами слов, начинающихся на одну букву. Все новые или изменённые топики помечены звездочками. В CS вообще всё, что изменено, помечается звёздочками.
    • Эта часть экрана имеет 5 закладок. Сейчас мы находимся на закладке «topic» и о ней сказано выше. Следом идёт закладка «voice». В ней собраны крики, которые издают НПС в различных ситуациях (атака, кража, бегство…). Нас это сейчас не интересует.
    • Следующая закладка называется «greeting». Тут указаны фразы, которые НПС произносит при обращении к нему. Т.е. это фраза, которая выскакивает первой. Именно с помощью гритингов вводятся новые топики, ибо плеер сможет говорить на тему, только если он увидит на неё ссылку!
    • Далее идёт закладка “persuasion”. Тут описаны фразы, которые НПС говорит после попыток применить «убеждение». Здесь ответы на любые действия (подкуп, лесть…) и с любым исходом (провал, успех).
    • Последняя вкладка- это журнал. Здесь хранятся все записи, которые могут попасть в журнал игрока. Каждый топик – это фразы на отдельный квест.
    • Ниже идут настройки условий.
      • Слева стоят настройки НПС:
        • 1-е – это ID НПС. Только НПС с таким ID сможет сказать такую фразу.
        • 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. В нём пишутся минискрипты, которые будут выполнены после произнесения фразы.
          • Наиболее распространёнными является команда выбора. Она выглядит так:

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

          • Часто применяется команда дать \ забрать предмет. Она выглядит так:

          player->additem “ID предмета” “его количество” – это для выдачи.

          player->removeitem “IDпредмета” “его количество” – для изъятия.

          Можно, также забрать предмет у кого-нибудь другого, у НПС, например, или из сундука. Для этого вместо player надо вписать ID пациента.

          • Полезная штука- изменение отношения. Оно прописывается так:

          ModDisposition “изменение”. Изменение может быть как положительным, так и отрицательным.

          journal “топик” “индекс” Можно использовать здесь почти все скриптовые команды, но это уже обучение скриптописанию, а не диалогам.

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

          Создание диалога

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

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

          О *.top файлах.

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

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

          Изображение

          Я попытаюсь доступно рассказать как устроены диалоги в Морровинде и как правильно создавать свои. Если что-то покажется вам сложным или же просто загрузитесь, не дочитав до конца - сделайте перерыв, продолжите позже - у большинства людей на освоение этой темы уходят месяцы, однако, надеюсь, что с этим мануалом вы освоитесь намного быстрее. Итак, загрузите ваш КС. На панели инструментов выберите комиксное облачко.

          Подождите немного времени и перед вами появится диалогове окно с текстами всех игровых разговоров.

          Изображение

          Слева в верхней части окна диалогов находятся закладки, показывающие их структуру:

          Topic - темы для бесед. В игре они подсвечиваются в разговоре синим цветом,

          и располагаются в правой части разговорного окна нпц/кричера.

          В правой части окна редактора, в секции Info/Responce содержатся списки текстов для данной темы. Топики, как и другие диалоги, нельзя упорядочить по алфавиту или как-либо еще. Однако, можно заметить, что топики в общем расположены, хоть и в кривом, но все же, в подобии алфавита, отчего найти нужный нам становится не так сложно. Для того, чтобы создать новый топик, кликаем в левой колонке пкм -> new и пишем название. Заметьте, как только вы его обозначите, он автоматом улетит куда-то в спиcке остальных топиков. Не пугайтесь - так и должно быть. Если, после создания топика, вы видете, что рядом с ним находится другой с таким же названием, то удаляйте ваш и переходите к уже сущестующему, иначе могут возникнуть ошибки в игре, вплоть до того, что ваш и/или оригинальный топик не будут работать. Пока что - это всего лишь тема для разговора, но для того, чтобы она работала, нужно в правой части (Info/responce) создать новый текст.

          Если по какой-то причине, вы не хотите добавлять ссылку на топик через текст диалога, но хотите, чтобы он тем-не менее присутствовал, то можете создать простенький скрипт вида:
          И повесив этот скрипт на вашего нпц/кричера, у него будет доступна эта тема для разговора уже при первом же диалоге в игре, независимо от того, присутсвует ли ссылка в тексте других диалогов.

          После этого ваш плагин готов к чистке в ТЕSAME. Обрачу внимание, что любое последующее редактирование плагина может привести к потери гиперссылок, потому пропускать его через фиксплагин стоит когда вы его закончите. Чистка плагина с диалогами в тесами сильно актуальна. Дело в том, что, если плагин не очистить от измененных обьектов, это может привести к конфликтам с другими плагинами, использующими те же обьекты, к их раздвоению, некорректной работе, исчезновению, что особо часто происходит при отключении/подключении плагинов и загрузке разных сейвов, но что не так катастрофично для самой игры, в большинстве случаев, то пересечения измененных диалогов может привести к потери ссылок и/или условий в них, отчего, например, исчезнет возможность взять/продолжить квест, выполнение которого, к тому же, может повлиять на возможность взять последующие квесты во фракции или продолжить сюжетную линию. В любом случае, по-хорошему, плагин надо всегда чистить, незивисимо от того, есть там диалоги или нет. О том, как использовать тесами смотрите 2-ой урок.

          В русской версии Морровинда одно и то же слово/фраза, на которую есть топик может иметь разные рода/числа/склонения. Для этого используется файл с расширением .top. Для того, чтобы прикрепить к своему плагину такой файл, создайте простой текстовый файл с именем «название файла плагина». Внутри просто пишите «текст ссылки»-> tab-> «топик» . Ссылка и топик обязательно должны быть разделены табулой. На одной строчке пишется только одна пара. Это будет выглядеть приблизительно так:
          Закончив, переименуйте этот текстовой документ файловым менеджером в .top. Как вариант, можете скопировать уже имеющийся файл, например, morrowind.top и изменив название на название вашего плагина, удалить все содержимое и заполнить вашими ссылками и топиками. Для того чтобы файл заработал, надо в корень игры, рядом с Morrowind.exe положить файл Angel.ini - он есть при установленном Бладмуне. Он содержит всего-навсего одну секцию, в которой, напротив ключей должны стоять значения такого вида:

          Просто добавляйте это файл в архив с плагином. Если его не будет - 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 директории игры и обязательно иметь следующие аттрибуты:

          Как вы можете теперь судить, кнопка Sound filename, с помощью которой вы можете установить звуковой файл, соответствующий реплике - достаточно полезная вкладка, т.к. есть большое количество фраз, для произнесения которых установлены слишком жесткие условия и вы их могли никогда и не услышать в оригинальной игре. Их можно использовать для придания большей индивидуальности вашим npc. Оригинальные файлы голосов находятся в Data FilesSoundVo . Там вы найдете папки, состоящие из одной буквы, которая соотвествует английскому названию рас. Очень распространенный недостаток большинства плагинов, добавляющих новые расы - отсутствие войсов, отчего они выглядят абсолютно немыми, молча стоят, молча сражаются и т.д.

          От многой мудрости много скорби, и приумножающий знание умножает печаль.

          Don't let me fall. Just hold me tight. And tell me it will be alright. Tomorrow when I wake up. You'll be there.

          Встретить закат в Балморе, после чего побродить по кантонам Вивека, и всё это вместе с друзьями. Что может быть лучше? Данная мечта стала явью ещё в далеком 2015-м году, когда появился проект TES3MP.

          С тех пор прошло время, и редакции TGM стало интересно, как сейчас обстоят дела с амбициозным модом? Если кратко: замечательно.

          OpenMW

          В мае этого года The Elder Scrolls 3 исполнится 17 лет. Игра до сих пор живёт в сердцах фанатов, которые возвращаются на просторы Вварденфелла снова и снова. Однако технически она уже давно устарела. Да и стабильность Morrowind на новых компьютерных системах оставляет желать лучшего. И чем дальше, тем хуже. Решить проблемы со стабильностью игры проблематично ввиду закрытого исходного кода движка, поэтому появился проект OpenMW — бесплатный современный движок с открытым исходным кодом, который заново реализует и расширяет возможности Gamebryo.

          Идеи, которые раньше было очень сложно воплотить, наконец-то получили хорошую реализацию. Одной из таких идей и стал многопользовательский режим. Команды TES3MP и OpenMW тесно сотрудничали друг с другом последние годы, обмениваясь опытом и помогая в реализации сложных идей. Результатом их многолетнего сотрудничества стал недавний (февраль 2019-го года) анонс: команды объединяют свои усилия, TES3MP, все это время бывший отдельной модификацией, станет одной из основных функций нового движка OpenMW. Дата окончательного слияния пока неизвестна , но вполне вероятно, что работа над интеграцией начнется вскоре после выпуска OpenMW 1.0.0.


          Подобных героев на просторах многопользовательского Морровинда вы повстречаете не раз

          Как установить Morrowind Multiplayer

          Чтобы начать путешествие вместе с другими игроками по просторам Ввандерфелла:

            Скачайте tes3mp для нужной системы по этой ссылке и распакуйте его в любую папку.

          Если ваш список плагинов совпадает с плагинами сервера, то игра загрузится, а вам нужно будет ввести свое имя. Если ваше имя никогда не использовалось на этом сервере, вам будет предложено зарегистрировать его и ввести пароль

          Читайте также: