НАВИГАЦИЯ ИГРЫ

Как создать подключаемый к игре файл карты .vdpack

Чтобы подключить карту к игре, из нее нужно сделать мод следующим образом:
  1. Создать где-нибудь (только НЕ в Documents\My Games\Disciples Reincarnation\) отдельную папку для карт. Пусть она называется Maps\, к примеру.
  2. Создать в этой папке папку конкретной карты, к примеру,
Код:
  • Maps\MapCreation\

  1. Создать в ней папку для ресурсов resources
Код:
  • \Maps\MapCreation\resources\

  1. Создать в папке для карты файл с ее описанием
Код:
  • \Maps\MapCreation\russian.txt

(Для английских описаний нужно делать english.txt)



  1. В папке \Maps\MapCreation\resources\ и должен лежать сам файл карты, к примеру
Код:
  • \Maps\MapCreation\resources\testt.scene

  1. В папках
Код:
  • \Maps\MapCreation\resources\Briefing\
  • \Maps\MapCreation\resources\Dialogs\
  • \Maps\MapCreation\resources\Languages\Russian\Texts\
  • \Maps\MapCreation\resources\Missions\Minimaps\

должны лежать соответственно брифинг, диалоги, тексты и миникарта.



  1. Когда карта и вышеперечисленные файлы будут готовы, нужно зайти в меню редактора Tools - Create mod... и в открывшемся окне выбрать папку карты (в которой лежит папка resources), в данном примере это \Maps\MapCreation\
  2. Нажать в открывшемся сером окне кнопку Map (правая) и Create (внизу). Если все сделано правильно, карта готова. Это файл, который лежит в папке Maps\, с расширением .vdpack и названием, как у папки карты. В данном примере это будет
Код:
  • \Maps\MapCreation.vdpack

  1. Теперь этот один получившийся файл нужно положить в свою пользовательскую папку, в
Код:
  • ...\Documents\My  Games\Disciples Reincarnation\Maps\

В данном примере так:
  • Documents\My Games\Disciples Reincarnation\Maps\MapCreation.vdpack

  1. Запустить игру, зайти в меню Настройки - Дополнения. Там будет список всех карт, лежащих в Documents\My Games\Disciples Reincarnation\Maps, для каждой из которых будет выводиться то описание, которые мы делали на 4 шаге. Необходимо подключить нужные карты (и моды), игра перезапустится. Готово.

Как создать мод к игре

Как распаковать ресурсы игры


Ресурсы игры лежат в файлах

Код:
  • steamsteamappscommondisciples iii rebirthresources0.vdpack
  • steamsteamappscommondisciples iii rebirthresources1.vdpack
  • steamsteamappscommondisciples iii rebirthresources2.vdpack
  • steamsteamappscommondisciples iii rebirthrussian.vdpack
  • steamsteamappscommondisciples iii rebirthsystem.vdpack


измененные патчами файлы (=патчи) лежат в

Код:
  • steamsteamappscommondisciples iii rebirthresources01.vdpatch
  • steamsteamappscommondisciples iii rebirthresources02.vdpatch
  • steamsteamappscommondisciples iii rebirthsystem01.vdpatch
  • steamsteamappscommondisciples iii rebirthsystem02.vdpatch


Распаковываются файлы .vdpack. Чтобы распаковать файл .vdpatch, нужно скопировать его куда-нибудь и переименовать в .vdpack

Распаковка:
  1. Нужно создать где-нибудь специальную папку для распаковки ресурсов. Например, папку ...source
  2. Зайти в меню редактора Tools - Export Mod... и в открывшемся окне выбрать файл ресурсов .vdpack, который нужно распаковать. В появившемся окне можно посмотреть часть файлов, которые лежат в этом архиве, и выбрать файлы и папки для распаковки.
  3. Нажать кнопку "..." внизу справа, выбрать там папку, которая создана на 1 этапе, ...source в этом примере.
  4. Нажать кнопку Export. В папке для распаковки появятся те файлы и папки, которые были выбраны в пункте 2.




Как создать мод к игре


Файлы в игре делятся на две группы: влияющие на геймплей (и индексируемые) и не влияющие (неиндексируемые). Индексируемые файлы (профили юнитов, статы и прочее) проверяются на целостность и неизменность. Неиндексируемые, соответственно, не проверяются.

Поэтому мод, не влияющий на геймплей (например, чисто графический или звуковой), создается так же, как и в Ордах нежити или Реннесансе - нужно положить в папку

Код:
  • ...steamsteamappscommondisciples iii  rebirthresources


изменённые файлы на те же места, где они лежат в архивах .vdpack, например,

Код:
  • ...steamsteamappscommondisciples  iii rebirthresourcesCursorscursor.t

При запуске игра будет использовать файлы в первую очередь из этой папки, а уже потом из архивов .vdpack и .vdpatch

Мод, влияющий на геймплей, делается практически так же, как и карта. Отличия только в использумых папках и типах файлов. В моде не должно быть файлов брифингов, диалогов, самих карт (...resources*.scene). Соответственно, в карте не должно быть ничего, кроме того, что указано в инструкции номер один.



Чтобы создать подключаемый к игре мод, нужно:
  1. Создать где-нибудь (только НЕ в ...DocumentsMy GamesDisciples Reincarnation) отдельную папку для сборки модов. Пусть она называется Mods, к примеру.
  2. Создать в этой папке папку конкретного мода, к примеру,

Код:
  • Modstestmod
  1. Создать в ней папку для ресурсов resources
Код:
  • Modstestmodresources

и другие системные папки при необходимости.

  1. Создать в папке для мода файл с его описанием
Код:
  • Modstestmodrussian.txt

(Для английских описаний нужно делать english.txt)
  1. Положить в папку мода сами модифицированные файлы, которые должны быть названы так же, как и в оригинальных ресурсах игры, и лежать в тех же папках. К примеру,
Код:
  • ModstestmodresourcesProfilesskillsstory_druid.grid
  1. Когда вышеперечисленные файлы будут готовы, зайти в меню редактора Tools - Create mod... и в открывшемся окне выбрать папку мода (в которой лежит папка resources), в данном примере это Modstestmod
  1. Нажать в открывшемся сером окне кнопку Mod (левая) и Create (внизу). Если все сделано правильно, мод готов. Это файл, который лежит в папке Mods, с расширением .vdpack и названием, как у папки мода. В данном примере это будет

Код:
  • Modstestmod.vdpack
  1. Теперь этот один получившийся файл нужно положить в свою пользовательскую папку, в

Код:
  • ...DocumentsMy  GamesDisciples ReincarnationMods

В данном примере так:

Код:
  • DocumentsMy GamesDisciples ReincarnationModstestmod.vdpack
  1. Запустить игру, зайти в меню Настройки - Дополнения. Там будет список всех модов, лежащих в DocumentsMy GamesDisciples ReincarnationMods, для каждого из которых будет выводиться то описание, которое сделано на 3 шаге. Нужно подключить нужные карты и моды, игра перезапустится. Готово.

Полезная информация от разработчиков

Статы
В профилях, будь то профиль юнита, эффекта или предмета, везде используются одинаковые, перечисленные ниже, тэги. Эти же теги используются в текстовых описаниях (aka $(имя)).
Базовые статы
  • str - сила
  • spd - скорость
  • dex - сноровка
  • agi - ловкость
  • vit - жизнь
  • def - броня (защита от оружия)
  • res - защита от магии

Производные статы

В профилях (в т.ч. и профилях юнитов) указанные тэги задают значение добавляемое к значению вычисленному из базовых статов.
  • hp - здоровье
  • dmg - сила атаки/лечения
  • crit - шанс крита
  • flee - шанс уворота
  • ini - очки инициативы
  • mov - очки хода по арене
  • movwm - очки хода по глобальной карте
  • ap - очки действия на арене
  • cover - очки перехвата
  • leadership - лидерство
  • viewradius - радиус обзора
  • reserve - ячеек резерва
  • vampire - сила вампиризма
  • dueling - шанс вызова на дуэль
  • stealing - шанс успешной кражи
  • recovery - автоматическое восстановление здоровья (в %% от максимального HP) каждый ход на глобальной карте
  • discount - снижение цен в магазинах (в %%)
  • bonusexp - дополнительный опыт за бой (в %% от начисленного при дележе опыта между юнитами)
  • res_earth - защита от магии земли
  • res_air - защита от магии воздуха
  • res_water - защита от магии воды
  • res_fire - защита от магии огня
  • res_death - защита от магии смерти
  • res_mind - защита от магии разума
  • res_divine - защита от божественной магии
  • res_slash - защита от рубящего оружия
  • res_pierce - защита от колящего оружия
  • res_blunt - защита от дробящего оружия


Модификаторы статов

Модификаторы используются при расчёте основного значения производных статов из базовых. Модификаторы так же как и статы могут меняться эффектами скилами и предметами. В профилях, модификаторы задаются в процентах, целыми числами: 1 это 1% и соответствует 0.01, 100 это 100% и соответствует 1.
  • dmg_str_mod
  • dmg_agi_mod
  • crit_dex_mod
  • crit_vit_mod
  • flee_agi_mod
  • flee_spd_mod
  • hp_vit_mod
  • hp_str_mod
  • ini_spd_mod
  • ini_dex_mod
  • mov_mod
  • movwm_mod
  • cover_mod
  • viewradius_mod
  • recovery_mod
  • discount_mod
  • bonusexp_mod


Вычисление статов

Результирующее значение статов юнита вычисляется из его базовых статов (b), статов надетых на него предметов (i), его активированных скилов (s) и навешанных на него эффектов (e).
Вычисление базовых статов

Базовые статы просто складываются:
  • X = Xb + Xi1 + ... + XiN + Xs1 + ... + XsN + Xe1 + ... + XeN


Вычисление множителей

Результирующее значение каждого множителя вычисляется по формуле (начиная с r3250):
  • M = Mb + Mi1 + ... + MiN + Ms1 + ... + MsN + Me1 + ... + MeN


Вычисление производных статов

Для каждого производного стата своя формула отличающаяся набором базовых статов. В формулах используется результирующее значение базовых статов и множителей.
  • Y = F(X..,M..) + Yb + Yi1 + ... + YiN + Ys1 + ... + YsN + Ye1 + ... + YeN

F(X..,M..) это функция базовых статов и множителей, и для каждого стата она своя. Остальное - прямые добавки к стату.
  • dmg - str*dmg_str_mod + agi*dmg_agi_mod
  • crit - dex*crit_dex_mod + vit*crit_vit_mod
  • flee - agi*flee_agi_mod + spd*flee_spd_mod
  • hp - vit*hp_vit_mod + str*hp_dtr_mod
  • ini - spd*ini_spd_mod + dex*ini_dex_mod + 8
  • mov - (str + dex) * mov_mod
  • movwm - (spd + dex) * movwm_mod
  • cover - (agi + vit) * cover_mod
  • viewradius - (agi + str) * viewradius_mod
  • recovery - (vit + spd) * recovery_mod
  • discount - (str + spd) * discount_mod
  • bonusexp - (dex + agi) * bonusexp_mod

Для остальных производных статов F() тождественно равна 0, и их значение определяется только добавкой.
Вычисление резистов

Резисты к магии вычисляются из суммы res и res_стихия. Для брони, по аналогии, def и res_урон. Исключение: divine для неё не учитывается базовый res, только res_divine.

Эффекты
Эффект это некое действие осуществляемое над юнитом как результат работы скилла, спелла или используемого (но не надеваемого) предмета (зелья или руны). Таким действием может быть изменение статов или какое то специальное действие типа телепортации или воскрешения. Эффект может быть кратковременным (мгновенным), или продолжительным (в т.ч. вечным), в этом случае он после применения остаётся "висеть" на юните до окончания срока действия. Длительными может быть только изменение статов, регенерация (regen) и отравление (curse). Один эффект может производить сразу несколько различных действий, например, менять сразу несколько статов, или вылечить юнита перед телепортацией и т. п. Однако не всякая комбинация действий будет работать
Действия

В профилях эфектов могут присутствовать все те же тэги, что указаны в Статы, в этом случае эффект будет менять значение стата(ов) (пока он висит на юните). Кроме этого эффект может выполнять дополнительные действия:
  • towndef N - увеличение def цели на N, но не более чем до 90
  • heal N - изменение hp на N
  • heal_per P - изменение hp на P*hp/100
  • regen N - изменение hp на N каждый ход
  • regen_pow P - изменение hp на P*dmg/100 каждый ход
  • damage N - нанесение урона на N
  • damage_per N - нанесение урона на N% от максимального здоровья жертвы
  • attack_pow P - нанесение урона на P*dmg/100
  • curse N - нанесение урона на N каждый ход
  • curse_pow P - нанесение урона на P*dmg/100 каждый ход
  • resurrect N - воскрешение юнита с N hp
  • exp N - добавить N опыта
  • openfog N - открыть туман в радиусе N
  • retreat - побег
  • morph - превращение
  • teleport - телепортация себя
  • teleport_target - телепортация другого юнита
  • summon S - призыв указанного существа
  • resource_gold N - дать золота
  • resource_stone N - дать камня
  • getskills - дать очки для изучения скилов
  • c_cover N - изменить текущее кол-во очков прикрытия
  • c_mov N - изменить текущее кол-во очков хода на арене
  • c_movwm N - изменить текущее кол-во очков хода на карте
  • c_ini N - изменить текущее кол-во очков инициативы
  • c_ap N - изменить текущее кол-во очков действия
  • def_per P - изменить def на P*def/100
  • dmg_per P - изменить dmg на P*dmg/100
  • shadowstep -
  • immune_phys_damage - иммунитет к физическому урону
  • ignore_def - отключает def (весь) у цели
  • ignore_res - отключает res (весь) у цели
  • paralize - парализует цель
  • dispell - снимает эффекты
  • dispell_buffs - снимает положительные эффекты
  • dispell_debuffs - снимает отрицательные эффекты
  • push - толкнуть врага
  • delete_wall - удаление стены
  • doppel - превращение в другое существо по выбору
  • steal - кража
  • duel - дуэль
  • resurrect_mode
  • resource_item
  • morphed
  • stop
  • battleout
Все эти действия, кроме curse* и regen*, являются мгновенными (срабатывают один раз при применении эффекта), даже если duration эффекта не равен 0.
Длительность эффекта

Длительность действия эффекта задаётся одним из тэгов:
  • duration_turns N - эффект действует N ходов на арене.
  • duration_days N - эффект действует N ходов на глобальной карте.
  • remove_immediately - эффект снимается сразу в конце хода юнита на арене.
Вместо N можно указать слово permanent (или -1), означающее что эффект должен длится неограниченное число ходов.
Если задан duration_days, то эффект может накладываться как на глобальной карте так и на арене. Если эффект не мгновенный, то будучи наложенным на юнита, на арене он будет длится весь бой. При выходе с арены он не снимается, и будет висеть на юните оставшееся кол-во ходов. Если задан permanent, то это вечный эффект, который может быть снять только disspel'ом.
Если задан duration_turns, то эффект должен накладываться только на арене. Если указано permanent, то эффект будет действовать до конца боя. Зелья с эффектом duration_turns 0, являются мгновенными, как и duration_days 0, но использоваться могут только на арене. Все эффекты с duration_turns снимаются в конце боя.
Если ни какой duration_* не задан, то это эквивалентно duration_days 0
Stackable

По умолчанию, эффект может висеть на юните только в одном экземпляре. При попытке повесить ещё один такой же эффект, старый экземпляр удаляется. Для того чтобы указать, что эффект можно вешать на юнита неограниченное кол-во раз нужно в его профиле написать:
  • stackable 1;

Невидимые эффекты

Если на юнита повесить эффект у которого не задана иконка, то он не будет отображаться в инфе о юните и не будут показываться значки баффа/дебаффа.

Don't Dispell

Флаг dontdispell в профиле эффекта указывает на то, что данный эффект не будет сниматься при применении эффектов dispell.
Добавление скилов

Накладываемый эффект может добавлять юниту скилл, для чего предназначен тэг:
  • add_skill "имя скила"

Скилл будет у юнита всё время пока на нём висит эффект добавивший скилл (поэтому делать у такого эффекта duration 0 бессмысленно).
Для добавляемого скила можно задавать кол-во зарядов (использований) тэгом:
  • add_skill_uses N
По умолчанию, кол-во использований бесконечно. Добавленный эффектом скилл, если эффект длиться больше одного боя, перезаряжается в начале боя как и "врождённый" скилл.
Таким образом можно делать банки добавляющие скилы и даже скилы добавляющие скилы (себе или другому юниту). Так же можно делать надеваемые предметы которые добавляют скилл, но это делается уже через профиль предмета, а не эффекта.

Предметы
Предметы делятся на три типа: надеваемые (одежда, оружие, модные стильные аксессуары), используемые (зелья и руны) и бесполезные (драгоценности).

Действие используемого предмета осуществляется через эффект который указывается тэгом game_effect. Использовать предмет можно на любом юните в отряде.

Действием надеваемого предмета может быть изменение статов, добавление скила или установка флага на арене. Изменяемые статы указываются непосредственно в профиле предмета тэгами аналогичными для статов. Действие надеваемого предмета заканчивается как только предмет снимается. Действие надеваемых предметов, в общем, ни как не привязано к классу, за исключением banner'ов которые всегда ставят флаги/тотемы на арене. Надевать предметы может только лидер.

Тэги

Профили предметов лежат в папке Resources/Profiles/items.
  • id - Уникальный идентификатор.
  • nameid strid - названия
  • effectdescid strid - описания действия и параметров. Если не задано, описание будет сгенерёно автоматически.
  • descid strid - художественного описания (в нём НЕ описываются параметры и характеристики предмета).
  • class - Класс предмета.
  • icon - Иконка предмета для инвентаря.
  • replace - Заменяемая часть модели при надевании
  • proxy - Это волшебный proxy предмет при подборе заменяемый на случаный того же класса и уровня, что сам прокси.
  • gold_cost - Базовая стоимость предмета.
  • story - Это сюжетный предмет.
  • unic - Это уникальный предмет.
  • target - Для рун и банок указывает цель на которую предмет должен применяться.
  • level - Уровень предмета для выборки.
  • game_effect - Эффект накладываемый на цель при использовании предмета.
  • require_skill - Скилл юнита требуемый для использования.
  • banner_profile - Имя профиля флага/тотема
  • add_skill - Скилл дающийся юниту при надевании предмета.
  • add_skill_uses - Кол-во зарядов для add_skill. Если не задано, то бесконечно.
  • race - Раса. Используется только в редакторе карт для группировки предметов в списках.

Кроме того, для надеваемых предметов можно (и нужно) использовать все теги статов.



Классы

От класса зависит является ли предмет надеваемым (шмотка) или используемым (банка,руна), а так же куда именно он должен надеваться. Класс предмета задётся тэгом

class "класс"
  • weapon Оружие. Надевается.
  • head Шлем. Надевается.
  • body Доспехи. Надевается.
  • accessory Наручи вместе с перчатками. Надевается.
  • footgears Штаны и ботинки. Надевается.
  • ring Кольцо. Надевается.
  • talisman Талисман. Надевается.
  • book Книга. Надевается.
  • banner Флаг/тотем. Надевается.
  • potion Банка. Используется на глобальной карте и арене.
  • rune Руна. Используется на арене.
  • gem Драгоценность. Предмет для продажи.


Изменение модели юнита

Для указания, что и как должно меняться на модели юнита при надевании предмета предназначен тэг replace. Если надо заменить часть юнита на модель из его же сета (описанного в char-файле), синтаксис такой:

replace "" set
Если же часть юнита надо заменить на уникальную модель не записанную в сете, то запись примет вид:
replace "" scene ""
Можно задавать несколько replace в одном предмете. Параметр body_part ни как не завязан на класс предмета и может быть любым из возможных. Если на юнита надето несколько предметов меняющих один и тот же body_part, но разных сетов, то в результате будет отображаться часть от высшего сета. Если же в одном из предметов задана уникальная модель, то она будет иметь наивысший приоритет. Результат экипировки двух предметов, меняющих часть юнита на уникальную модель, не определён, так что лучше подобных предметов не делать. Ограничение использования.

Можно ограничить возможность надевать/использовать предмет только юнитами имеющими определённый скилл (скил должен быть выучен). Для указания требуемого скила существует тэг require_skill:
  • require_skill "" Добавление скилов

Надеваемый предмет может добавлять юниту скилл (при надевании), для чего предназначен тэг:

add_skill "id_скила" Скилл будет у юнита всё время пока на нём надет предмет его добавивший.
Для добавляемого скила можно задавать кол-во зарядов (использований) тэгом:

add_skill_uses N Добавленный скилл перезаряжается в начале боя как и "врождённый".
Proxy

Если в профиле предмета указан волшебный тэг proxy, и такой предмет положен в сундук, то, когда юнит откроет этот сундук, он получит вместо этого прокси некий рандомный предмет заданного в прокси класса и уровня. Proxy может использоваться не только с сундуками, но и добавлятся в профиль магазина, в этом случае превращение proxy в нормальный предмет произойдёт при старте игры.
Примеры

Описание сетов Ламберта в story_lambert.char:
  • set 1 { weapon "resourcesCharactersstorylambertweaponstory_lambert_set1_weapon.scene"; feet "resourcesCharactersstorylambertfeetstory_lambert_set1_feet.scene"; body "resourcesCharactersstorylambertbodystory_lambert_set1_body.scene"; head "resourcesCharactersstorylambertheadstory_lambert_set1_head.scene"; legs "resourcesCharactersstorylambertlegsstory_lambert_set1_legs.scene"; arms "resourcesCharactersstorylambertarmsstory_lambert_set1_arms.scene"; hands "resourcesCharactersstorylamberthandsstory_lambert_set1_hands.scene"; } set 2 { weapon "resourcesCharactersstorylambertweaponstory_lambert_set2_weapon.scene"; feet "resourcesCharactersstorylambertfeetstory_lambert_set2_feet.scene"; body "resourcesCharactersstorylambertbodystory_lambert_set2_body.scene"; head "resourcesCharactersstorylambertheadstory_lambert_set2_head.scene"; legs "resourcesCharactersstorylambertlegsstory_lambert_set2_legs.scene"; arms "resourcesCharactersstorylambertarmsstory_lambert_set2_arms.scene"; hands "resourcesCharactersstorylamberthandsstory_lambert_set2_hands.scene"; } set 3 { weapon "resourcesCharactersstorylambertweaponstory_lambert_set3_weapon.scene"; feet "resourcesCharactersstorylambertfeetstory_lambert_set3_feet.scene"; body "resourcesCharactersstorylambertbodystory_lambert_set3_body.scene"; head "resourcesCharactersstorylambertheadstory_lambert_set3_head.scene"; legs "resourcesCharactersstorylambertlegsstory_lambert_set3_legs.scene"; arms "resourcesCharactersstorylambertarmsstory_lambert_set3_arms.scene"; hands "resourcesCharactersstorylamberthandsstory_lambert_set3_hands.scene"; } Сетовое оружие:
  • id "singing_and_dansing_sword"; name "Меч Песни и Пляски"; level 1; dex 1; str 1; gold_cost 250;icon "ResourcesCharactersElvesLeader-ForestliegeWeaponelves_leader-forestliege_set2_weapon.t"; class "weapon"; replace "weapon" set 2;
При экипировке на Ламберта, модель его меча изменится на меч прописанный в его 2-ом сете. При экипировке на эльфийского Незрячего стража, аналогично, модель его лука заменится на модель лука из его 2-ого сета. Уникальный меч:
  • id "pisec_dubina"; name "Писец-Дубина"; level 1; str 1; gold_cost 250; icon "ResourcesCharactersDemonsLeader-DukeWeapondemons_leader-duke_set2_weapon.t"; class "weapon"; replace "weapon" scene "ResourcesCharactersDemonsLeader-DukeWeapondemons_Leader-Duke_set2_weapon.scene"; require_skill "n_skill_dex"
Этот предмет у любого юнита меняет модель оружия на указанную в самом предмете, а не в сете юнита. Но при этом, надевать его могут, только те у кого изучен скил n_skill_dex.

Флаги и тотемы
Флаги описываются в профиле предмета в секции banner_profile (см. профили itemsbanner_*.item).
В секции указывается сцена флага banner_scene, сцена аналогична сцене юнита, должна иметь две анимации Idle (обычное колыхание) и Attack (колыхание в момент хода флага). Анимация Attack должна иметь событие FxStrike где-то в середине-конце, по которому и будет происходить атака. С начала анимации до этого события камера показывает флаг, после события - возвращается общий вид арены. FX который должен проиграться на самом флаге во время атаки задаётся тэгом fxcast.
В секции могут быть указаны свойства флага, идентификаторы:


Также в секции могут быть указаны действия флага:


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

Цели:

После таких целей указывается имя эффекта, накладываемого на юнита, например:

  • "field_center" - центр поля 4х3,
  • "field_random" - случайные 9 гексов
После таких целей указывается имя эффекта, накладываемого на юнита, если он находится в гексе, и имя сцены спецэффекта, который проигрывается при атаке гекса. В спецэффекте должно быть событие Damage по которому и будет накладываться эффект. Например:
turn_action "field_random" "BannerCastField" "ResourcesFXArena_spellsdemonsModeusfx_demons_modeus_spell.scene"

"summon_wall" - создание стены из юнитов, после указывается имя профиля юнита и имя сцены спецэффекта, который проигрывается при создании, например:

"teleport" - телепорт всех юнитов на арене, после - имя сцены спецэффекта, который проигрывается при перемещении юнита, например:

Флаги располагаются либо в углах сетки гексов, либо в специально указанных гексах с атрибутами "player_banner" и "npc_banner" в объекте "hexinfo" (аналогично местам юнитов с атрибутами "player" и "npc").
Для подсветки гексов для "Жаровня Подземных Миров" и "Алтарь Шторма" используется объект "Banner" сцены
 
  • ResourcesFXLandFXarena_grid_cell.scene.

Немного информации о конфигурационных файлах игры

У игры есть следующие основные файлы конфигурации:

Код:
  • steam\steamapps\common\disciples iii rebirth\system\language.ini
  • steam\steamapps\common\disciples iii rebirth\system\mutable.ini
  • steam\steamapps\common\disciples iii rebirth\system\system.ini
  • steam\steamapps\common\disciples iii rebirth\system\user.ini

Users\<имя пользователя>\Documents\My Games\Disciples Reincarnation\user.ini


Файлы, лежащие в папке игры steam\steamapps\common\disciples iii rebirth\system\ , изменять вручную нельзя (игра откажется работать). Можно изменять файл в папке пользователя (Users\<имя пользователя>\Documents\My Games\Disciples Reincarnation\user.ini). Кроме того, в файле mutable.ini содержатся переменные, которым можно присвоить другие значения через файл Users\<имя пользователя>\Documents\My Games\Disciples Reincarnation\user.ini
То есть, к примеру, в файле mutable.ini есть строка

Код:
  • int GhostHasShadow = 1;

Можно взять и вписать в файл Users\<имя пользователя>\Documents\My Games\Disciples Reincarnation\user.ini строку (сохранив после этого)

Код:
  • int GhostHasShadow = 0;

Тогда у всех полупрозрачных юнитов (привидений) пропадут тени. В файле mutable.ini, кроме этого, есть масса настроек интерфейса (в том числе цвета подсветок юнитов, всплывающих текстов и прочего), графики (параметров волн на воде, пены прибоя, травы), камеры (пресеты камеры на арене) и других.

Несколько подсказок по редактору карт

Управление
  • Камера перемещается с нажатым колесом мыши;
  • Ctrl+нажатое колесо мыши - вращение камеры вокруг себя;
  • Alt+нажатое колесо мыши - вращение камеры вокруг центра экрана.
  • Ctrl+ЛКМ на объекте - вращение объекта на карте
  • Shift+ЛКМ на объекте - удаление объекта. Некоторые объекты удаляются только в режиме их рисования (дороги, трава).
  • С+ЛКМ на объекте и перетаскивание - копирование объекта
  • V+ЛКМ на объекте и перетаскивание - перемещение объекта
  • Пробел вращает объект, который выбран из окна объектов для установки на карту в данный момент
  • свойства объекта открываются двойным кликом по нему


Интерфейс

  • Чекбоксы Passability и Areas на панели с кнопками включают соответственно режимы отображения проходимых гексов и зон терраморфа от городов и точек контроля. Для зон терраморфа цвета означают ступень развития, на которой данная зона подвергнется терраморфу, столица имеет единственную ступень, стражи земель три, города - пять.
  • Выключение чекбокса Cross-test позволяет устанавливать на карту объекты с пересечениями по гексам. Со включенным чекбоксом это невозможно. Пересечения объектов могут приводить к графическим артефактам.
  • При наведении на гекс с объектом всплывает подсказка с текстом вроде
  • <Названия объектов и юнитов на гексе> h: 1233 a: 3 <тип терраморфа>
  • После h идет номер гекса, после a - угол поворота объекта на гексе, задается числами от 0 до 5 (по числу сторон шестиугольника). В таком же формате (число от 0 до 5) поворот задается в скриптах, устанавливающих объекты на карту.
  • Нажатие Alt показывает подсказки ко всем отрядам в поле зрения, принадлежность к фракциям показана цветом
  • Иконка с четырьмя точками в верхнем правом углу окон с объектами (рядом с иконками сворачивания и закрытия окон) переключает отображение списка объектов маленькими и большими иконками
  • Кнопка на панели G-camera переключает камеру в игровой режим (включая управление) и обратно. В игровом режиме камеры появляется окно, в котором можно посмотреть освещение в разные времена суток, текущие координаты камеры (центральный гекс, угол поворота, расстояние), скопировать эти координаты в системный буфер для вставки в редактор скриптов нажатием кнопки Copy to Clip, показать или скрыть положение окна диалога.


Меню
  • Для создания карт интересны меню File, Engine и опции Create Mod, Export Mod, FX viewer, Character Browser из меню Tools. Все остальные меню и опции в них нужны для целей разработки.
  • Меню File - стандартные файловые операции
  • Меню Engine позволяет запускать карту, которая в данный момент редактируется (опции Start this Scene и Start this as Hotseat), а так же произвольные карты (опции Start Scene и Start Hotseat) прямо из редактора. При этом открывается новое окно игры и редактор открывать заново не придется
  • Опции Tools - Create Mod, Tools - Export Mod описаны в предыдущих инструкциях
  • Опция Tools - FX viewer - можно посмотреть все визуальные эффекты игры, желательно запускать без открытой карты в редакторе
  • Опция Tools - Character Browser - можно посмотреть на модели и их анимации



Редактор скриптов
  • Вызывается кнопкой Quests на панели.
  • Практически в любом месте есть подсказки при вводе, при наборе открываются списки возможных вариантов (функций, параметров и остального).
  • наведение курсора мыши на события и функции показывает всплывающее окно с описаниями и списком аргументов (к сожалению, у этих описаний в редакторе сбита кодировка, файл с ними можно отдельно найти в ресурсах игры, и он приложен к статье)
  • Ctrl+Пробел открывает окно с вариантами набора в зависимости от того, где находится курсор
  • нажатие Alt включает гиперссылки (нажатие перемещает камеру на карте к гексам с таким номером, триггерам, юнитам)
  • квесты нужны только для удобства, группировки скриптов. Внутри квестов пишутся сами скрипты. Формат:

    quest QuestName
    {
    }
  • скрипты бывают двух видов, скрипты и катсцены, формат
     script  <название> on <событие> (<параметры>)       
{       
}                  
     cutscene <название> on <событие> (<параметры>)       
{       
}

Отличие скриптов от катсцен в том, что при выполнении катсцен отключаются управление и интерфейс игры, а скрипты выполняются в фоне (если функции не требуют обратного).

Пример скрипта для карты:

quest noname
{

script Begin on Turn (1)
{
AddResource("undead","death_mana", 90000);
AddResource("undead","life_mana", 90000);
AddResource("undead","grove_mana", 90000);
AddResource("undead","infernal_mana", 90000);
AddResource("undead","runstone_mana", 90000);
AddResource("undead","gold", 900000);
AddResource("undead","stone", 900000);
AddResource("elves","death_mana", 90000);
AddResource("elves","life_mana", 90000);
AddResource("elves","grove_mana", 90000);
AddResource("elves","infernal_mana", 90000);
AddResource("elves","runstone_mana", 90000);
AddResource("elves","gold", 900000);
AddResource("elves","stone", 900000);

}

script  Buff on "Enter Trigger Side"("Buff",  "undead")
{
AddEffectParty($activator, "DefUndead", true);
PlayFXOnUnit("ResourcesFXMap_SpellsMap_Fire_Wardfx_fire_ward.scene", $activator);
}
script  BuffOn on "Quest Complete"("Buff")
{
SetQuestStatus("Buff", true);
}

}



Разные замечания


  • В ресурсах две столицы Империи, одна с Мизраэлем, другая - со стражем 3 ступени. Та, что с Мизраэлем, называется соответственно

  • Отряды существ можно ставить в интерактивные и не интерактивные объекты. В неактивных объектах они просто будут видны на глобальной карте. При установке внутрь интерактивного объекта (в том числе подземелья), отряд "спрячется" внутри при запуске игры и нападет, если попытаться со зданием провзаимодействовать. Таким образом можно сделать пользовательский начальный отряд для подземелий и награду (скриптом или положив в инвентарь; надо помнить, что используемые в бою предметы ИИ может потратить в битве против вас). После уничтожения такого отряда объект начнет работать как обычно.

  • Закладка Find в окне объектов (по кнопке Objects) позволяет быстро найти объект по его имени

  • Ассортимент в магазинах (в том числе в столицах) и содержимое инвентаря отрядов задается прямо через интерфейс, в окне свойств по двойному клику

  • "-1" для количества предметов в магазине задает бесконечное их количество

  • Предметы с префиксом "proxy" превращаются в случайный предмет соответствующего уровня (в том числе в магазинах, при старте карты)

  • В ресурсах есть строения для карты, дающие бонусы всем отрядам захватившего их игрока

  • Aggro radius у отрядов работает и задает размер области, при заходе в которую отряд нападет на юнита игрока на глобальной карте

Нравится0
Комментарии (1)
B
i
u
Спойлер