|
Инструкции по созданию карт и модов для Disciples: Перерождение
|
|
|
Номер первый. Как создать подключаемый к игре файл карты .vdpack
Чтобы подключить карту к игре, из нее нужно сделать мод следующим образом:
- Создать где-нибудь (только НЕ в Documents\My Games\Disciples Reincarnation\) отдельную папку для карт. Пусть она называется Maps\, к примеру.
- Создать в этой папке папку конкретной карты, к примеру,
Maps\MapCreation\
- Создать в ней папку для ресурсов resources
\Maps\MapCreation\resources\
- Создать в папке для карты файл с ее описанием
\Maps\MapCreation\russian.txt (Для английских описаний нужно делать english.txt)
- В папке \Maps\MapCreation\resources\ и должен лежать сам файл карты, к примеру
\Maps\MapCreation\resources\testt.scene
- В папках
\Maps\MapCreation\resources\Briefing\ \Maps\MapCreation\resources\Dialogs\ \Maps\MapCreation\resources\Languages\Russian\Texts\ \Maps\MapCreation\resources\Missions\Minimaps\ должны лежать соответственно брифинг, диалоги, тексты и миникарта.
- Когда карта и вышеперечисленные файлы будут готовы, нужно зайти в меню редактора Tools - Create mod... и в открывшемся окне выбрать папку карты (в которой лежит папка resources), в данном примере это \Maps\MapCreation\
- Нажать в открывшемся сером окне кнопку Map (правая) и Create (внизу). Если все сделано правильно, карта готова. Это файл, который лежит в папке Maps\, с расширением .vdpack и названием, как у папки карты. В данном примере это будет
\Maps\MapCreation.vdpack
- Теперь этот один получившийся файл нужно положить в свою пользовательскую папку, в
...\Documents\My Games\Disciples Reincarnation\Maps\ В данном примере так: Documents\My Games\Disciples Reincarnation\Maps\MapCreation.vdpack
- Запустить игру, зайти в меню Настройки - Дополнения. Там будет список всех карт, лежащих в Documents\My Games\Disciples Reincarnation\Maps, для каждой из которых будет выводиться то описание, которые мы делали на 4 шаге. Необходимо подключить нужные карты (и моды), игра перезапустится. Готово.
________________________________________________________________________________________________________________________
Номер второй. Как создать мод к игре.
Номер второй - А. Как распаковать ресурсы игры.
Ресурсы игры лежат в файлах
steam\steamapps\common\disciples iii rebirth\resources0.vdpack steam\steamapps\common\disciples iii rebirth\resources1.vdpack steam\steamapps\common\disciples iii rebirth\resources2.vdpack steam\steamapps\common\disciples iii rebirth\russian.vdpack steam\steamapps\common\disciples iii rebirth\system.vdpack измененные патчами файлы (=патчи) лежат в
steam\steamapps\common\disciples iii rebirth\resources01.vdpatch steam\steamapps\common\disciples iii rebirth\resources02.vdpatch steam\steamapps\common\disciples iii rebirth\system01.vdpatch steam\steamapps\common\disciples iii rebirth\system02.vdpatch Распаковываются файлы .vdpack. Чтобы распаковать файл .vdpatch, нужно скопировать его куда-нибудь и переименовать в .vdpack
Распаковка:
- Нужно создать где-нибудь специальную папку для распаковки ресурсов. Например, папку ...\source\
- Зайти в меню редактора Tools - Export Mod... и в открывшемся окне выбрать файл ресурсов .vdpack, который нужно распаковать. В появившемся окне можно посмотреть часть файлов, которые лежат в этом архиве, и выбрать файлы и папки для распаковки.
- Нажать кнопку "..." внизу справа, выбрать там папку, которая создана на 1 этапе, ...\source\ в этом примере.
- Нажать кнопку Export. В папке для распаковки появятся те файлы и папки, которые были выбраны в пункте 2.
Номер второй - Б. Как создать мод к игре.
Файлы в игре делятся на две группы: влияющие на геймплей (и индексируемые) и не влияющие (неиндексируемые). Индексируемые файлы (профили юнитов, статы и прочее) проверяются на целостность и неизменность. Неиндексируемые, соответственно, не проверяются. Поэтому мод, не влияющий на геймплей (например, чисто графический или звуковой), создается так же, как и в Ордах нежити или Реннесансе - нужно положить в папку
...\steam\steamapps\common\disciples iii rebirth\resources\ изменённые файлы на те же места, где они лежат в архивах .vdpack, например:
...\steam\steamapps\common\disciples iii rebirth\resources\Cursors\cursor.t При запуске игра будет использовать файлы в первую очередь из этой папки, а уже потом из архивов .vdpack и .vdpatch
Мод, влияющий на геймплей, делается практически так же, как и карта. Отличия только в использумых папках и типах файлов. В моде не должно быть файлов брифингов, диалогов, самих карт (...\resources\*.scene). Соответственно, в карте не должно быть ничего, кроме того, что указано в инструкции номер один.
Чтобы создать подключаемый к игре мод, нужно:
- Создать где-нибудь (только НЕ в ...\Documents\My Games\Disciples Reincarnation\) отдельную папку для сборки модов. Пусть она называется Mods\, к примеру.
- Создать в этой папке папку конкретного мода, к примеру,
Mods\testmod\
- Создать в ней папку для ресурсов resources
Mods\testmod\resources\ и другие системные папки при необходимости.
- Создать в папке для мода файл с его описанием
Mods\testmod\russian.txt (Для английских описаний нужно делать english.txt)
- Положить в папку мода сами модифицированные файлы, которые должны быть названы так же, как и в оригинальных ресурсах игры, и лежать в тех же папках. К примеру,
Mods\testmod\resources\Profiles\skills\story_druid.grid
- Когда вышеперечисленные файлы будут готовы, зайти в меню редактора Tools - Create mod... и в открывшемся окне выбрать папку мода (в которой лежит папка resources), в данном примере это Mods\testmod\
- Нажать в открывшемся сером окне кнопку Mod (левая) и Create (внизу). Если все сделано правильно, мод готов. Это файл, который лежит в папке Mods\, с расширением .vdpack и названием, как у папки мода. В данном примере это будет
Mods\testmod.vdpack
- Теперь этот один получившийся файл нужно положить в свою пользовательскую папку, в
...\Documents\My Games\Disciples Reincarnation\Mods\ В данном примере так:
Documents\My Games\Disciples Reincarnation\Mods\testmod.vdpack
- Запустить игру, зайти в меню Настройки - Дополнения. Там будет список всех модов, лежащих в Documents\My Games\Disciples Reincarnation\Mods\, для каждого из которых будет выводиться то описание, которое сделано на 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. В секции могут быть указаны свойства флага, идентификаторы:
block_enemy_banner - блокирует вражеский флаг block_inventory - блокирует использование инвентаря для обоих игроков block_active_skills - блокирует использование активных скилов для обоих игроков block_units_voices - блокирует реплики юнитов для обоих игроков
Также в секции могут быть указаны действия флага:
start_action - действие в начала боя turn_action - действие на последующих ходах флага.
Действий на ходе может быть несколько, тогда они будут выполняться одновременно. После идентификатора действия указывается в кавычках цель и параметры действия, их кол-во и назначение зависит от цели. Цели:
"none" - нет целей (можно использовать чтобы просто показать что флаг ходит) "owner" - юниты отряда игрока, владельца флага "enemy" - юниты противника владельца флага "all" - все юниты После таких целей указывается имя эффекта, накладываемого на юнита, например: start_action "all" "BannerPlagueDefence"
"field_center" - центр поля 4х3, "field_random" - случайные 9 гексов После таких целей указывается имя эффекта, накладываемого на юнита, если он находится в гексе, и имя сцены спецэффекта, который проигрывается при атаке гекса. В спецэффекте должно быть событие Damage по которому и будет накладываться эффект. Например: turn_action "field_random" "BannerCastField" "ResourcesFXArena_spellsdemonsModeusfx_demons_modeus_spell.scene"
"summon_wall" - создание стены из юнитов, после указывается имя профиля юнита и имя сцены спецэффекта, который проигрывается при создании, например: start_action "summon_wall" "neutrals_wall" "ResourcesFXArena_FXSkillsfx_skill_stone_wall_spell.scene"
"teleport" - телепорт всех юнитов на арене, после - имя сцены спецэффекта, который проигрывается при перемещении юнита, например: turn_action "teleport" "ResourcesFXArena_FXSkillsfx_skill_tel_self_point_spell.scene"
Флаги располагаются либо в углах сетки гексов, либо в специально указанных гексах с атрибутами "player_banner" и "npc_banner" в объекте "hexinfo" (аналогично местам юнитов с атрибутами "player" и "npc"). Для подсветки гексов для "Жаровня Подземных Миров" и "Алтарь Шторма" используется объект "Banner" сцены ResourcesFXLandFXarena_grid_cell.scene.
__________________________________________________________________________________________________________________
Номер третий. Несколько подсказок по редактору карт. Управление
- камера перемещается с нажатым колесом мыши;
- Ctrl+нажатое колесо мыши - вращение камеры вокруг себя;
- Alt+нажатое колесо мыши - вращение камеры вокруг центра экрана.
- Ctrl+ЛКМ на объекте - вращение объекта на карте
- Shift+ЛКМ на объекте - удаление объекта. Некоторые объекты удаляются только в режиме их рисования (дороги, трава).
- С+ЛКМ на объекте и перетаскивание - копирование объекта
- V+ЛКМ на объекте и перетаскивание - перемещение объекта
- Пробел вращает объект, который выбран из окна объектов для установки на карту в данный момент
- свойства объекта открываются двойным кликом по нему
Интерфейс
Меню
Для создания карт интересны меню 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 <событие> (<параметры>) { } Отличие скриптов от катсцен в том, что при выполнении катсцен отключаются управление и интерфейс игры, а скрипты выполняются в фоне (если функции не требуют обратного).
- полезная информация и подробности от разработчиков, использование ссылок на аргументы события:
Скрипты
Каждая карта может содержать набор скриптов с помощью которых запускаются игровые диалоги, проигрываются cut-сцены и выполняются прочие действия над объектами или юнитами необходимые по сюжету карты. Скрипт запускается при возникновении некоторого события, такого как срабатывание триггера, смерть юнита или завершение диалога. При этом у каждого события, может быть один или несколько параметров (например, id юнита или имя триггера), и скрипт запускается только если его параметры запуска удовлетворяют параметрам события. Сам скрипт состоит из последовательности функций выполняющихся друг за другом. Параметры
В скрипте, в качестве аргументов функций, можно использовать параметры. Имя параметра пишется без кавычек и предваряется знаком $. Например:
1 // переместить юнита наступившего на триггер 2 MoveUnit($activator,123); Набор доступных параметров и их значение зависит от события по которому запускается скрипт (см. описание конкретного события). Но есть и ряд общих для всех событий параметров:
$quest_param1 значение первого параметра события при запуске скрипта $quest_param2 значение второго параметра события при запуске скрипта $quest_param3 значение третего параметра события при запуске скрипта $event_param1 значение первого параметра события при возобновлении скрипта после WaitEvent $event_param2 значение второго параметра события при возобновлении скрипта после WaitEvent $event_param3 значение третего параметра события при возобновлении скрипта после WaitEvent
- для мультиплеерных карт и хотсита работают не все функции и события:
Мультиплеер
В сетевой игре работает только ограниченное число команд:
MapComplete OpenDialog Wait WaitEvent Camera CameraShake MoveUnit PlayFX PlayFXOnUnit AddResource UnitOff OpenFog CloseFog AddEffectParty AddEffect
В сетевой игре не работают события:
Briefing Complete
Поэтому, к примеру, выдачу ресурсов на мультиплеерных картах нужно делать по Turn (1), а не по "Briefing Complete"()
- ошибки и неопределенности в редакторе подчеркиваются. Ссылки на файлы игры (эффекты, к примеру) подчеркиваются как неопределенности почти всегда
Файл с описаниями функций редактора из ресурсов игры:
me_cmd_ActiveStartBattle "Активный (на момент срабатывания скрипта) юнит атакует указанного юнита."; me_cmd_ActiveStartBattleEx "Аналогично ActiveStartBattle, но также указывается арена, на которой должен произойти бой. Для подгрузки арены необходимо указать путь к ее scene-файлу."; me_cmd_AddContainer "Выставляет в указанный гекс контейнер с указанным предметом. Необходимо указать ID контейнера (например, map_chest_bronze), номер гекса и ID предмета (например potion_agiliti-huge)."; me_cmd_AddItem "Добавляет указанному юниту указанный предмет. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Также указывается предмет, который будет добавлен (например, potion_agiliti-huge)."; me_cmd_AddLeaderBuff "Дает лидеру указанного отряда указанный баф. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Также указать ID эффекта, которой должен быть повешен (например, AllstatsMax)."; me_cmd_AddLeaderStat "Скрипт изменяет характеристику лидера указанного отряда. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Указать тэг характеристики: vit – выносливость, str – сила, int – интеллект, agi – ловкость, dex – сноровка, exp – опыт."; AddMapObject "добавляет на карту мапобъект. Необходимо указать ID мапобекта, и номер гекса. ВНИМАНИЕ: команда не очищает целевой гекс автоматически."; me_cmd_AddObjectItem "добавляет предмет в контейнер на указанном гексе. Необходимо указать гекс, на котором стоит контейнер. Также указывается предмет, который будет добавлен."; me_cmd_AddObjectiveID "добавляет новым пунктом задание в журнал игрока в раздел «задания». Необходимо указать уникальный, для данной миссии, номер задания. ID строки локализации, содержащей текст задания. Также указывается уровень приоритетности задания, где 0 – основное задание, 1 – второстепенное задание."; me_cmd_AddResource "добавляет указанной стороне, указанный ресурс, в указанном количестве. Необходимо указать сторону, присутствующую на данной карте. Где empire – Империя, Legions – Легионы Проклятых, Elves – Эльфийский Альянс. Ресурс – где gold – золото, Stone – камень, Life mana – мана жизни, Infernal mana – мана огня, Grove mana – мана земли. ВНИМАНИЕ: один скрипт добавляет только один вид ресурса."; me_cmd_AddShopItem "добавляет в указанный магазин указанный тип предмета. Необходимо указать номер центрального гекса объекта-магазина, в который нужно добавить предмет. И тип предмета, где – arm – наплечники, body – доспех, feet – обувь, gems – товары для продажи, hands – перчатки, head – головной убор, leg – штаны, potion – зелья, rings – кольца, runes – руны, sphere – сферы, talisman – талисманы, weapon – оружие."; me_cmd_AddShopLevelItem "добавляет в указанный магазин указанного уровня, указанный тип предметов. Уровень предметов. Тип предмета, где – arm – наплечники, body – доспех, feet – обувь, gems – товары для продажи, hands – перчатки, head – головной убор, leg – штаны, potion – зелья, rings – кольца, runes – руны, sphere – сферы, talisman – талисманы, weapon – оружие."; me_cmd_AddUnit "добавляет указанному лидеру указанный юнит указанного уровня. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. ID юнита, которого нужно добавить. Уровень юнита, если указанный уровень ниже базового уровня юнита, уровень останется базовый. Если указанный уровень выше уровня юнита, уровень будет поднят до указанного, с добавлением соответствующих бонусов."; me_cmd_AddUnitToMercenary "добавляет указанный юнит в список найма указанного лагеря наемников по указанной цене указанного уровня. Unit Properties. ID юнита, которого нужно добавить. Также необходимо указать цену найма юнита в золоте. Уровень юнита, если указанный уровень ниже базового уровня юнита, уровень останется базовый. Если указанный уровень выше уровня юнита, уровень будет поднят до указанного, с добавлением соответствующих бонусов."; me_cmd_AIZoneActive "Указанный триггер становится для отрядов под управлением AI непроходимой зоной. Также AI не кастует заклинания в указанный триггер."; me_cmd_CameraShake "скрипт вызывает видео эффект сотрясание камерой, продолжительность эффекта не редактируется скриптом."; me_cmd_ClearNodeObject "очищает указанный гекс от любых установленных на нем объектов, исключая юнитов. Для удаления многогексовых объектов необходимо указать центральный гекс объекта."; me_cmd_CloseFog "скрывает карту стратегическим туманом войны (черный туман, сквозь который не видно террейн), в указанном радиусе, вокруг указанного гекса (номер гекса можно узнать в строке active Node, интерфейса Quest)."; me_cmd_CompleteObjective " «завершает» задание в журнале заданий. Необходимо указать уникальный номер задания. И «результат» завершения задания, где 0 – «задание завершено» и 1 – «задание провалено» (тэги завершения будут выведены автоматически)."; me_cmd_DeleteUnit " удаляет указанный юнит. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties."; DelObjective "удаляет указанное задание из журнала заданий, без пометок. Необходимо указать уникальный номер задания."; me_cmd_FadeUnit "/out(0); вызывает графический эффект «плавной» отрисовки указанного юнита, за указанное время, его исчезновения/появления. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Также необходимо указать время продолжительности эффекта в миллисекундах. И режим появления или исчезновения, где 1 – исчезновение, 0 – появление."; me_cmd_JoinUnit " добавляет указанному лидеру отряда, уже существующий на карте указанный юнит. Необходимо указать к какому лидеру будет добавлен юнит, ID целевого лидера указан в строке Unit Name, интерфейса Unit Properties. И указать ID юнита, который будет добавлен. ID юнита указан в строке Unit Name, интерфейса Unit Properties."; me_cmd_KillSummon "уничтожает всех призванных существ на карте, независимо от их принадлежности. Не имеет редактируемых параметров."; me_cmd_MapComplete "завершает карту с указанным результатом, где victory – победа, любое другое значение или его отсутствие – поражение."; me_cmd_MessageBox " вызывает системный меседжбокс с указанным текстом сообщения."; me_cmd_MoveToGarrison " перемещает указанный юнит в гарнизон указанного города."; me_cmd_MoveToGuest "перемещает указанный юнит в «гостевой» гарнизон, указанного города."; me_cmd_MoveToObject "телепортирует указанный юнит в указанный гекс, если целевой гекс принадлежит городу, то юнит автоматически помещается в город."; me_cmd_MoveUnit "телепортирует указанный юнит в указанный гекс. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. И номер целевого гекса. Отряд будет перемещен, даже если целевой гекс занят, игнорируя правила проходимости."; me_cmd_OpenDialog "открывает указанный диалог. Необходимо указать название файла скрипта диалога, не указывая разрешение файла ."; me_cmd_OpenFog " раскрывает карту от туманов войны."; me_cmd_PlayAnimation " проигрывает у указанного юнита, указанную анимацию. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Также необходимо указать цикл нужной анимации, где Idle – анимация юнита в состоянии покоя, Attack – анимация атаки, Damage – анимация получения урона, Death – анимация смерти, Run – анимация передвижения."; me_cmd_PlayFX " проигрывает указанный графический эффект, в указанном ноде. Необходимо указать имя графического эффекта с путем к нему."; me_cmd_PlayFXOnUnit "проигрывает указанный графический эффект. Необходимо указать имя графического эффекта с путем к нему. Также необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties."; me_cmd_PlayMusic "проигрывает указанный аудио файл. Необходимо указать имя аудио файла с путем к нему."; me_cmd_QuestComplete "ставит флаг, который принудительно завершает скрипт квеста. Квест перестает быть активным и считается выполненным. Необходимо указать уникальное имя квеста."; me_cmd_RemoveItem "удаляет из инвентаря указанного юнита указанный предмет. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. И ID предмета."; me_cmd_RemoveObjectItem " убирает предмет из указанного объекта (контейнера). Необходимо указать гекс контейнера-цели и ID предмета (например potion_agiliti-huge)."; me_cmd_RemoveUnit " полное удаление указанного юнита с карты. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties."; me_cmd_RotateUnit "разворачивает указанный юнит, в направлении указанного гекса. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. И номер целевого гекса (номер гекса можно узнать в строке active Node, интерфейса Quest)."; me_cmd_SetCamera "устанавливает камеру в положение, определенное одним, или всеми перечисленными параметрами, а именно: номером гекса, который будет показывать камера(номер гекса можно узнать в строке active Node, интерфейса Quest), временем на которое будет зафиксирована камера(указывается в секундах), дистанция(высота) камеры в юнитах, высоту положения камеры можно узнать в поле Game camera, интерфейсного окна Quest, только в режиме Game Camera. Если высота положения карты выше разрешенного потолка подъема, камера займет максимальное разрешенное положение. Угол поворота камеры(в градусах от 0 до 360), угол поворота камеры можно узнать в поле Game camera, интерфейсного окна Quest. Если какой-то параметр фиксации камеры не указан, то будет браться значение, которое использовалось в момент активации скриптовой команды;"; me_cmd_SetCameraOnUnit "устанавливает камеру, фокусируя ее на юните, также можно указать дополнительные параметры фиксации камеры. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. При желании можно задействовать дополнительные параметры фиксации карты, а именно: временем на которое будет зафиксирована камера (указывается в секундах), дистанция (высота) камеры в юнитах, высоту положения камеры можно узнать в поле Game camera, интерфейсного окна Quest, только в режиме Game Camera. Если высота положения карты выше разрешенного потолка подъема, камера займет максимальное разрешенное положение. Угол поворота камеры (в градусах от 0 до 360) можно узнать в поле Game camera, интерфейсного окна Quest. Если какой-то параметр фиксации камеры не указан, то будет браться значение, которое использовалось в момент активации скриптовой команды."; me_cmd_SetLeaderStat "изменяет у указанного лидера указанный стат на указанное итоговое, до применения бонусов от бафов и экипировки, значение характеристики. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Тэг необходимой характеристики, где vit – выносливость, str – сила, int – интеллект, agi – ловкость, dex – сноровка, exp – опыт. Также указывается итоговое (до применения бонусов от бафов и экиперовки) значение. Например, выставлено значение силы 50, значит базовое значение силы юнита станет 50, не зависимо было оно больше или меньше."; me_cmd_SetPartyHP "изменяет кол-во здоровья указанного отряда. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. А также процентное значение здоровья. Так, выставив 80%, здоровье каждого юнита в отряде станет равным 80% от его максимального значения."; me_cmd_SetTerraform "указанной стороне придается поле, вокруг указанного гекса указанного радиуса. Необходимо указать сторону, где: empire – Империя, Legions – Легионы Проклятых, Elves – Эльфийский Альянс, Undead – Орды Нежити, Dwarves – Горные Кланы. Центральный гекс зоны, которая будет придана и радиус придаваемой зоны в гексах."; me_cmd_SetUnitDialog " выставляет указанному юниту указанный диалог. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Также необходимо указать название файла скрипта диалога, не указывая разрешение файла."; me_cmd_SetUnitSide "Указанный юнит переходит под командование указанной стороны. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Необходимо указать сторону, где: empire – Империя, Legions – Легионы Проклятых, Elves – Эльфийский Альянс, Undead – Орды Нежити, Dwarves – Горные Кланы."; me_cmd_ShopAddItem "добавляет в указанный магазин указанный предмет. Необходимо указать номер центрального гекса обекта-магазина, в который нужно добавить предмет."; me_cmd_StartBattle "начинает бой указанного отряда с указанным отрядом. Юниты начнут бой сразу, не передвигаясь к цели, даже если цель в обычных условиях им недоступна для атаки. После боя, выигравший остается на своем месте. Первым указывается юнит под контролем игрока – необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Вторым – атакующий юнит – необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties."; me_cmd_StopActiveUnit "Останавливает на данный момент активный юнит. Не имеет параметров для редактирования."; me_cmd_TownName "Указанный город получает указанное имя. Необходимо указать номер центрального гекса объекта-города, которому будет присвоено уникальное имя. Также необходимо указать конкретное имя, а не тэг его локализации."; me_cmd_UnitAttack "Указанный юнит атакует указанного противника. Необходимо указать ID атакующего юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Можно указать конкретного противника, для этого необходимо указать ID юнита-цели, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Или указать гекс, тогда атакующий, подбежав к указанному гексу, атакует юнита стоящего там. Юнит попытается дойти и атаковать, только если путь к цели свободен."; me_cmd_UnitDontAttakSummon " указанный юнит не может быть атакован суммонами. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Также необходимо указать активен флаг или нет, где: 1 – активен, 0 – неактивен."; me_cmd_UnitImmortal "указанный юнит не может быть убит. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Также необходимо указать активен флаг или нет, где: 1 – активен, 0 – неактивен."; me_cmd_UnitOff "указанный юнит пропадает с карты, оставаясь невидимым в гексе, в котором он пропал. Не мешая передвижению других юнитов и не генерируя агро радиус."; me_cmd_UnitStory "указанный юнит не может быть атакован. Юнит начинает при каждом интерракте с ним диалог. Диалог выставляется в интерфейсе Unit Properties. Необходимо указать ID юнита, под которым он назван на карте. Этот ID указан в строке Unit Name, интерфейса Unit Properties. Также необходимо указать активен флаг или нет, где: 1 – активен, 0 – неактивен."; me_cmd_UpdateObjectiveID "изменяет указанное задание в журнале заданий. Необходимо указать уникальный номер задания, которое нужно заменить. Также необходимо указать тэг строки локализации, на которую будет заменена текущая запись."; me_cmd_Wait "приостанавливает выполнение скрипта на указанный период времени (указывается в миллисекундах)."; me_cmd_WaitEvent "приостанавливает выполнение скрипта до наступления указанного события;"; me_cmd_Walk "указанный юнит двигается к указанному гексу. Можно указать следует камера за юнитом, или нет, где: 1 – следует, 0 – не следует (по умолчанию камера следует за юнитом во время движения). Также можно указать игнорирует ли юнит непроходимые зоны или нет, где: 1 – не игнорирует, 0 – игнорирует (по умолчанию не игнорирует);"; me_cmd_Camera "Управление камерой. camera_name – уникальный идентификатор команды камеры. lock_time|next_id – либо время (в секундах), на которое блокируется управление камерой в точке назначения (после ее достижения), либо ссылка на идентификатор команды камеры, которая должна быть следующей в цепочке. Если параметр не задан или равен -1, камера не блокируется после перемещения или разблокируется, если она была заблокирована ранее. hex|unit_id – либо идентификатор юнита, либо номер гекса, на котором центрируется камера в конце перемещения. Если параметр не задан или равен -1, камера не перемещается. height – высота камеры от земли. Если параметр не задан или равен -1, высота не меняется. angle – угол поворота камеры (в градусах). Если параметр не задан или равен -1, угол не меняется. move_time – время (в секундах) перемещения камеры к указанной точке. Если параметр не задан или задан 0 – мгновенное перемещение."; me_cmd_GrassWave "Создает круговую волну на траве, расходящуюся из центра заданного параметром hex на расстояние radius (в гексах) за время time (в секундах). Параметр amplitude задает амплитуду качания."; me_evnt_Camera_Stop "Cрабатывет, когда завершается перемещение камеры начатое командой Camera(camera_id,…)."; me_evnt_Camera_Unlock "Cрабатывет, когда завершается блокировка камеры установленная командой Camera(camera_id,…)."; me_evnt_Unit_Stop "Cрабатывет, когда завершится перемещение указанного юнита начатое командой Walk";
Пример скрипта для карты:
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 у отрядов работает и задает размер области, при заходе в которую отряд нападет на юнита игрока на глобальной карте
Дата публикации: 2012-05-24 10:58:52 Просмотров: 44655 [ Назад ]
Гость: Denis [Rain точка is точка all собака yandex точка ru] (2012-06-06 08:17:57)
все это прекрасно, но как изменить реплики легионов на те что были в предыдущих Д3?? Соблюдал расположение папок, в подключаемом моде создал папки /Mod/resources/profiles/sound/voices/ в папке voices вставил все реплики легионов (выборочно, есть и не плохие в перерождение) так же вставил реплики Эриона и Ламберта из предыдущей части. Запаковал в подключаемый мод. В игре изменились только реплики Ламберта и Эриона а у легионов как были топорные так и остались.... посоветуйте пожалуйста как изменить.
|
Nayred [nayred собака rambler точка ru] (2012-06-06 14:22:10)
Denis, звуки вообще не нужно запаковывать в моды. Все делается так же, как и в предыдущих частях Д3.
мод, не влияющий на геймплей (например, чисто графический или звуковой), создается так же, как и в Ордах нежити или Реннесансе - нужно положить в папку
...\steam\steamapps\common\disciples iii rebirth\resources\
изменённые файлы на те же места, где они лежат в архивах .vdpack, например:
...\steam\steamapps\common\disciples iii rebirth\resources\Cursors\cursor.t
Реплики легионов могли не измениться, потому что ты неправильно назвал файлы. Распакуй новые ресурсы и посмотри, как точно называются файлы.
|
Гость: Denis [rain точка is точка all собака yandex точка ru] (2012-06-06 17:55:56)
Все получилось) премного благодарен) Теперь, подправив баланс и вернув легионам более приятное озвучивание удовольствие от игры 100%.
|
Гость: Edvin [angelus_07 собака mail точка ru] (2014-01-09 00:13:13)
Хорошо... а вот будут ли работать графические моды из прошлых версий в Перерождении? Например, тот же мод, меняющий воительницу на воителя?
|
Гость: Диман [grid собака gmail точка com] (2014-07-22 02:43:12)
А как готовые карты редактировать, скачанные например?
|
Гость: Мизраель [ad2015 собака mail точка ru] (2014-08-09 12:40:27)
A ToolsKit - это и есть редактор карт?
|
Гость: Гость: Мизраель [ad2015 собака mail точка ru] (2014-08-09 13:35:20)
И почему для него нужен какой-то ключ?
|
Гость: .... [HLV_NNN собака mail точка ru] (2014-12-25 13:50:16)
Подскаэите, пожалуйста, как в игре изменить максимальное числовое значение HP?
|
Гость: Bethowen [Bethowen66 собака gmail точка com] (2015-08-21 20:42:39)
Гость: ...., Через редактирование юнитов в блокноте можно выставлять ХП каждому отдельно.
|
Гость: Snamp [mousecoin собака mail точка ru] (2016-08-31 12:25:09)
У меня такой вопрос - Как создать лагерь наемников, чтобы игрок мог взаимодействовать и нанимать юнитов находящихся там, все ни как понять эту суть не могу.
|
Гость: Ilya [chepurenko_ilya собака mail точка ru] (2016-11-05 15:09:14)
Следую этим записям, но почему-то карта или редактор напрочь не хотят видеть, к примеру, файл брифинга. Что я не так делаю? Все проверил, все правильно написано, и не названия нету и брифинг не видит. Что делать?
|
Гость: Андрей [vasilisk077 собака lenta точка ru] (2017-10-07 00:52:16)
Доброй ночи! Где взять редактор карт или как в него попасть?
|
Гость: Ник [неизвестно] (2018-12-07 12:23:22)
Гость: Андрей, ты не читал где его взять?
|
Гость: Никита Балашов [shicomaru собака mail точка ru] (2019-03-16 13:35:58)
подскажите пожалуйста как создать готовую случайную карту в редакторе, что бы карта случайным образом сгенерировалась??
|
Гость: Алексей Романович [aj-alex собака mail точка ru] (2019-03-29 14:51:36)
Подскажите в каком формате идет миникарта. Не могу ее создать.
|
|