titre

 Триггеры
Обучение
Ресейверы
Статьи
MF MM MP MR
Другие объекты
Использованные
Флаги
Таблицы


О справочнике

Перевод ERM-помощи осуществлен - DracoLich
Особая благодарность Bes`у за тестинг и помощь
А также: Berserker, Demiurg, sergroj, Master Of Puppets, ShadowTheAge, SnoRT, Миханик
и всем, кто так или иначе принял участие в улучшении справки, но был забыт в силу моей плохой памяти.
Пожелания и обнаруженные ошибки посылайте на DracoLich@ya.ru или оставляйте ответы на форуме

Здесь используется следующая система обозначений:
Если какой-либо параметр отображен как #, то его нельзя проверить или получить, можно лишь установить.
Если какой-либо параметр отображен как ?$, то он может быть только записан в переменную, установить или проверить его нельзя.
Если какой-либо параметр отображен как $, то он может быть установлен, проверен или записан.
Все это верно, если в комментарии команды не указывается иное.

Для просмотра примеров и комментариев, кликните на этом слове (если после его нету какого-либо текста, он раскроется). Обычно жирный шрифт с подчеркиванием означает, что при клике на слово откроется продолжение описания или комментария.

Установить значение - прямая запись значения, например, !!OW:R0/6/9000;- установить золото Красного равным 9000.
Проверить значение - проверка значения и запись результата во флаг 1, например, !!OW:R0/6/=9000;- флаг 1 будет истиной, если у Красного ровно 9000 золота, и Ложью, если не так.
Получить значение - запись значения в переменную, например, !!OW:R0/6/?v1; - записать количество золота Красного в переменную v1.

Если вы желаете установить какой-либо параметр на значение 0, вы можете просто не указывать ничего вместо цифры. Т.е.
!!OW:R/6/9000; эквивалентно !!OW:R0/6/9000;
Если в команде присутствует множество параметров, причем их нулевое значение означает "ничего" (IF:G), вы можете просто опустить дальнейшие параметры. Так,
!!IF:G1/1/0/33/34/35/36/37; эквивалентно !!IF:G1/1/0/33/34/35/36/37////////; , потому что здесь 0 означает "ничего". Дальнейшие параметры просто автоматически устанавливаются на 0.

В некоторых опциях вы можете встретить расширение синтаксиса, с припиской - "без обновления". Это означает, что экран не будет перерисован заново при выполнении команды, что очень полезно для боевых скриптов (иначе возникают некоторые неполадки в обрисовке) и скриптов, выполняющих множество действий (ускорение действий).

Версия 2.8е
* Поправлены некоторые стилистические ошибки
* Добавлена "потерянная" страница со статьей
+ Заполнен список картинок специализаций героев (раньше предлагалось самому найти нужного героя)
+ Добавлена информация к HE:P о показе точки назначения

Версия 2.8d
* Исправлено описание команд VR:M4 M5 M6 (неверный синтаксис в английском файле)
* Поправлен неверный комментарий к BA:S
* Команды IF:A R S перенесены соответственно алфавиту
* В команде TR:T была неверно указана картинка реки.
* Возвращены высококачественные картинки подтипов почв и магических кристаллов
* Исправлены редкие неверные ссылки
* Комментарии сделаны более явно "нажимательными"
* Укорочена таблица проклятий и благословений вырезкой малополезных словосочетаний
* Убраны ненужные выделения букв в названиях
+ Добавлен список опций Знамени Полководца в EX:R
+ Добавлена команда VR:R$/#;
+ Добавлены ссылки на триггеры всем соответственным ресейверам, триггеры, не имевшие подобного ресейвера, получили ссылки с главной
+ Добавлена информация о зрении монстров в TR:V
+ Добавлены картинки дорог для TR:T; которые корректно работают в Фениксе
+ Добавлена информация о некорректной обработке синтаксиса сравнения в соответствующих раздел статьи Флаги и переменные
+ Добавлены вот эти самые описания :P

Версия 2.8c
* Тег примеров был изменен с жирного шрифта на моноширинный
+ Добавлена статья в обучение
+ Комментарии и пояснения сделаны раскрывающимися (в итоге - более компактные страницы)
+ Описание команды при наводке мышью на опцию в заголовке
+ Улучшен раздел содержание

Версия 2.8b
* Все страницы переведены на кодировку windows-1251
* Поправка нерабочих ссылок
+ Добавлена статья-перевод послания для картостроителей
+ Добавлены оглавления во все длинные статьи и таблицы

Версия 2.8a
* Полное изменение оформления
* Исправлена неверная информация о HE:M
+ Добавлены детали для UN:I

Версия 2.7
Исправлены ошибки, шрифты.

Версия 2.6
Исправлены мелкие недочеты, упорядочены некоторые таблицы, добавлена информация

Версия 2.5
Исправлены ошибки предыдущей версии

Версия 2.4
Добавлены команды TE

Версия 2.3
Добавлена таблица опыта существ; добавлено описание команды записи в память (!!UN:C); изменения оформления (спасибо Bes'у)

Версия 2.2
Добавлена новая информация о командах

Версия 2.11
Добавлена информация о некоторых командах

Версия 2.10
Повышена стабильность работы страниц
Исправлены ошибки перевода
Добавлена дополнительная информация

Версия 2.0
Справочник оформлен в виде CHM
Добавлены корректировки, обучение и дополнительная информация

Версия 1.1
Исправления опечаток, разнообразные корректировки

Версия 1.0
Сделан перевод всех команд, оформлен в HTML


Дополнительная информация...

по ресейверу PO
по диалоговым окнам
обучение
картостроителям
флаги и переменные
работа с памятью
нестандартные функции
об опыте существ
дополнительные значения вторичных навыков
использованные переменные
файлы .wog
файлы .ers
файлы .ert
по справке
ссылки


ERS

Файлы .ERS

Если вы создаете новый скрипт для WoGификации, вы можете добавить его в диалог WoG-опций файлом ".ers". Этот файл должен иметь имя, что и у скрипта, например, script78.erm должен иметь ers-файл script78.ers. Этот файл - таблица, содержащая информацию о номере скрипта, внутренний номер скрипта, используемый для включения или отключения (номер может отличаться от номера скрипта), место появления в диалоге настроек WoGификации и текст описания.
Описание каждого поля:
1. Комментарий - вы можете писать здесь что захотите. Обычно я вставляю имя или описание скрипта, но это поле лишь для вас, оно не влияет и не показывается в игре.
2. Номер скрипта (например, для script78.erm в поле напишите 78)
3. Страница, на которой он будет расположен (0...7). Обычно значение 7 (Другие скрипты), но вы можете использовать и другие числа.
4. Группа: 0=сверху справа, 1=снизу справа, 2=сверху слева, 3=снизу слева
5. Номер (первый = 0, второй = 1 и т.д.). Вы можете ввести -1, чтобы опция поместилась прямо за последним скриптом в таблице. Обычно я использую -1.
6. Статус по умолчанию: 0=отключен, 1=включен
7. Статус по умолчанию для сетевой игры (если вы нажмете на кнопку "По умолчанию для сети")
8. Опция ERM для UN:P, используемый для определения статуса. Вы можете прочесть его командой UN:P#/?v1;, где # - ERM-номер. Я использовал номера 0-10 для встроенных опций (правый клик, Командиры, Стрелковые Башни и т.д.). 11-99 - для соответствующих скриптов. Если скрипт ниже 11, я добавлял 100. Так, скрипт 1 имеет номер 101, скрипт 2 - 102 и т. д. Также я использовал ERM-номера для дополнительных опций (например, много опций используют Правила карты), начиная от 111.
9. Текст - название опции в меню WoGификации
10. Подсказка - текст внизу экрана, появляющийся при наводке мыши на опцию
11. Текстовое сообщение при правом клике по опции.
Замечание: любой скрипт WoGификации - это чекбокс (вкл. или откл.), кроме нескольких скриптов, которых Слава объединил в группы (например, Основные настройки). Вы не можете сделать такое же файлом .ers, т.к. это вшито в WoG.


ERT

Поддержка локализаций скриптов
Файлы .ERT
(Слава)

Меня просили упростить методы перевода текстов в скрипте.
Дело в том, что если автор изменит свой скрипт, придется потратить массу времени, чтобы проверить весь скрипт и перевести сообщения. Я предложил сделать отдельный файл для каждого скрипта (опциональный), который будет хранить все текстовые элементы скрипта.
Теперь, вы можете делать файлы script##.ert , который имеет особый формат:
Номер(целое) [tab] Текст [tab] Любой комментарий ...
Две колонки обязательны, другие - опциональны (комментарии не загружаются и не сохраняются в игру).
Одна линия - один элемент.
Номер означает число, которое будет использоваться в скрипте для доступа к тексту.
Номер должен быть в переделах от 0 до 1000000.
Если номер 0 (или пустой), линия игнорируется и не загружается.
Если номер между 1 и 1000, текст будет автоматически скопирован в соответствующую z-переменную при загрузке скрипта (еще до выполнения инструкций).
Так, если у вас следующая строка:
123[tab]Это текст[tab]Комментарий
и в вашем скрипте имеется следующая инструкция:
!#IF:M1/z123;
Вы увидите сообщение "Это текст" при загрузке карты.
Это метод инициализировать переменную z в файле.
Было:
!#VRz321:S^Привет, странник!^;
...
Теперь вы удаляете эту линию скрипта и добавляете линию в ert-файл:
321[tab]Привет, странник![tab]Начальное сообщение, когда герой входит в...
Для получения доступа к тексту вы используете тот же метод, что и для z-переменных, но с номером больше 1000.
Если в вашем скрипте есть z-переменная, использующаяся для хранения имени или текста, вы можете освободить эту переменную и не использовать ее вообще, если добавите линию в ert-файл с номером более 1000 и поменяете код.
Тогда, если у вас было что-то вроде:
!#IF:M^Вы еще не готовы.^;
вы должны изменить ваш скрипт на:
!#IF:M1/z123456;
и добавить строку в ert-файл:
123456[tab]Вы еще не готовы.[tab]Комментарий
Вы не можете использовать эти дополнительные z-переменные для изменения любых стандартных текстов игры (имена артефактов и т.д). Ограничения такие же, как и в локальных z-переменных (z-1...z-10). С одним исключением. Вы можете использовать дополнительные z-переменные в качестве текста-подсказки в HT:T,P,V,W,OB:H, HO:H. Единственное ограничение, что в этом случае номер не должен быть выше 32000.
Вы можете сравнивать дополнительные z-переменные в секциях & и |.
Вы можете также использовать ссылки на другие переменные:
3333[tab]Привет, %Z55555![tab]...
55555[tab]Оррин[tab]
Вы можете включать дополнительные z-переменные в сообщения посредством %Z (как обычно).
ERT-файл загружается, если имеется и корректно загрузился соответствующий файл .erm.
Все дополнительные z-переменные являются общими для всех .ert файлов. Так, если вы используете те же номера в нескольких .ert файлах, вы получите соответствующее сообщение, и карта не загрузится.

Рекомендую делить пространство дополнительных z-переменных следующим способом:
Номера 1000...10000 пока зарезервированы
Номера 10000...20000 (100 переменных на скрипт для нужд подсказок).
Script00 10000...10099,
Script01 10100...10199...
(номер 1##00 ... 1##99, где ## это номер скрипта)
Номера 20000...100000 пока зарезервированы.
Номера 100000...200000 (1000 переменных на скрипт для различных текстов).
Script00 100000...100999,
Script01 101000...101999,
(номер 1##000 ... 1##999, где ## это номер скрипта)


Флаги и переменные

Разделы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Флаги и переменные

Введение

Флаги и переменные - это наиважнейшая особенность ERM для трансформации Героев в высокодинамичную игру, отвечающую на действия игрока. ERM скрипты могут быть написаны без использования флагов и переменных, но это будет сугубо локальный подход.

Условные флаги

Флаг - это условный рычаг, который имеет положение Истина (1) или Ложь (0). Как и двоичные числа, они имеют только два значения. В начале все флаги установлены на Ложь (0). Значение 1 (Истина) обычно называют "установлен", 0 (ложь) - "не установлен".

Установка флагов

В ERM есть 1000 условных флагов и каждый из них обладает своим номером от 1 до 1000. Флаги устанавливаются с помощью ресейвера IF, используя опцию V. Чтобы установить флаг на Истину, используйте значение 1, а чтобы на ложь, значение 0.
Например: установим флаг 4 на Истину (1):
!!IF:V4/1;
В дополнение к опции V, еще есть несколько опций ресейвера IF (A,S,R) для установки первых 10 флагов за раз. Смотрите ресейвер IF для подробной информации.

Использование условных флагов

Обычно флаги используют для проверок на что-либо как условие. Например, если вы хотите, чтобы при посещении объекта на карте показывалось сообщение только в первый раз любому герою, и никогда больше, вы можете использовать флаги для этой цели; сообщение будет показываться, если флаг был ложь (не установлен) и дальнейшей командой вы изменили его значение на Истину (1), так, если в следующий раз объект будет посещен, сообщение не будет показано. Символ для определения флага (или переменной) - & (амперсанд), который обязательно предшествует значению флага (переменной) в ресейверах, или предшествуя точке с запятой в триггерах. Амперсанд указывает, что нужно проверить флаг. Если тест для флага-"истины" (т.е. установленного на 1), просто используется номер флага. Если тест для флага-"лжи" (т.е. установленного на 0), используют минус (-) перед номером. Так, если нужен флаг №5 как Истина, вы должны использовать &5, а если флаг нужен как №5 - ложь, вы должны использовать &-5.

Пример кода:
ZVSE
 !?OB10/14/0; - проверим, посещается ли объект в 10/14/0
!!IF&-5:M^Входи. Я ждал тебя.^; - показать это сообщение, если флаг №5 - ложь
!!IF:V5/1; - установить флаг №5 на истину

Проверка нескольких флагов

Иногда вам требуется проверить более одного флага или переменных. Чтобы сделать это, отделите каждый флаг (переменную) слешем (/). Если существует несколько флагов или переменных для проверки, все условия должны быть выполнены перед выполнением ресейвера. Например, если вы хотите, чтобы действовало, когда флаг №7 - истина, флаг №8 - ложь, и флаг 10 - истина, если хоть один из флагов будет иметь другое значение, сообщение не появится.

Пример кода:
ZVSE
!?OB10/14/0; - проверим, посещается ли объект в 10/14/0
!!IF&7/-8/10:M^Входи. Я ждал тебя.^; - данное сообщение будет показано, только если флаги 7 и 10 будут истиной, а флаг 8 - ложью.

Инициализация флагов

При инициализации флаги 1...500 будут сброшены на Ложь (0), но флаги 501...1000 будут хранить свое последнее значение, если вы начали новую карту без перезапуска самой игры. Они могут быть использованы для кампаний, в которых вы хотите использовать значения флагов для последующих карт в кампаниях. Если вы избегаете потенциальной возможности того, что флаги будут отличатся от лжи (т.е, вам нужно, чтобы все флаги были 0), установите флаги от 500 и дальше на 0 в начале карты (или в начале скрипта (команда IF:V)), которые вы хотите использовать.

Особые флаги

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

Флаг 996 автоматически очищается (устанавливается на ложь), когда выполняется любая опция !!LE и устанавливается на 1 (истина) если там (в локации, определенной командой LE) нет локального события (помните, что события исчезают после первого посещения).

Флаг 997 и 998 хранят следующее:
Флаг 997 хранит мультиплеерный статус битвы.
=0 (ложь) если это битва на данном компьютере,
=1 (истина) если это интернет - битва.

Если флаг 997=1, тогда флаг 998=0, ИИ атакует игрока-человека на другом компьютере.
Заметьте, что битва запускается только на одном ПК, но этот ПК удален от текущего активного игрока.
Флаг 998=1, если битва Человек на Человека. Здесь у нас реальная мультиплеерная битва.

Вы можете использовать оба флага в триггерах BA0 или BA50, например:

!?BA0&997/998;
...

Скрипт сработает, если это битва Человек на Человека (мультиплеер)

Флаг 999, который устанавливается на 1, если текущий игрок (который активировал триггер) - игрок "здесь" и 0, если он или она на другом ПК. ИИ имеет всегда значение 0. Если флаг 999 установлен, вы можете быть уверены, что эта битва - человек против ИИ, причем человек за данным компьютером. Работает для всех триггеров.

Флаг 1000 имеет два значения, зависящих от места использования (триггер битвы или нет). Для не-битвы этот флаг будет установлен на истину, когда хозяин героя, игрок-человек, посетит объект на карте, триггер, как объект или субъект. Если компьютерный (ИИ) герой посетил объект, флаг 1000 будет установлен на ложь. Опять же, вы можете установить значение этого флага, но это не безопасно, поскольку вы можете проверить это значение в определенном скрипте, герой ли игрока или ИИ.
Поэтому, если проверять условные флаги, -1000 значит AI, а 1000 значит человек.

Для боевых триггеров (например, !?BA, !?BG, !?BF, и т.д.) флаг 1000 проверяет, настоящая или теоретическая (ИИ) битва. Если флаг 1000=1 (истина), это значит, что битва настоящая (как минимум имеется один оппонент-человек). Если 1000=0 (ложь), это значит, что теоретическая AI-битва.

Показ значений флагов и переменных в сообщениях

Чтобы показать значение флага (0 или 1) в сообщении, используйте %F, далее - номер флага для показа статуса (1...1000). Для показа значения флага №4 в сообщении, вы должны использовать %F4. Показ значения флага может быть полезен как средство помощи в отладке неработающего скрипта.

Пример:
!!IF:M^Значение флага 4 равно %F4.^;

Сравнение значений

Для сравнения игровых параметров к определенному значению, вы можете использовать следующий способ: ...[знак сравнения] значение...
Результат сравнения записывается во флаг 1. Вы можете использовать это для дальнейших сообщений.

Пример сравнения значений, используя GE-ресейвер:
!!GE100:F5 - установить день первого появления: 5 для Глобального события (стандартный синтаксис)
!!GE100:F=5 - проверить, если день первого появления 5 и установить условный флаг 1 на 0, если не так, на 1, если верно.
!!GE100:F<>5 - проверить, если день первого появления НЕ 5 и установить условный флаг 1 на 0, если не так, на 1, если верно.
!!GE100:F><5 - см. выше
!!GE100:F>5 - проверить, если день первого появления более 5 и установить условный флаг 1 на...
!!GE100:F>=5 - проверить, если день первого появления более или равный 5 и становить условный флаг 1 на...
!!GE100:F=>5 - см. выше
!!GE100:F<5 - проверить, если день первого появления менее 5 и установить условный флаг 1 на...
!!GE100:F<=5 - проверить, если день первого появления меньше или равен 5 и установить условный флаг 1 на...
!!GE100:F=<5 - см. выше

Для WoG 3.58f существует баг с проверками. Корректно сравнивают лищь проверки =, >, >=. Остальные же должны сравниваться через запись в переменную, потому что расцениваются движком игры некорректно.

Переменные

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

Если параметр команды показывается как $, это значит, что это значение может быть записано в переменную. Если параметр показан как #, это значит, что его можно только установить, но не прочитать. И если он показан как ?$, это значит, что параметр можно прочитать, но не установить.

Типы переменных и их возможные значения

Все числовые переменные варьируются в значениях от -2147483647 до +2147483647
a - пока не используется
b - пока не используется
c - хранит значение текущего дня (номер игрового дня)
d - добавляет или убавляет значения от переменной
e1...e100 - переменные с плавающей запятой
e-1...e-100 - основные триггерные переменные с плавающей запятой
f...t - стандартные переменные (еще называются быстрыми переменными)
v1...v10000 - стандартные переменные
w1...w200 - переменные героя (уникальны для каждого героя)
x1...x16 - параметры функции (зависит от функции)
y1...y100 - функциональные переменные (уникальны для каждой функции)
y-1...y-100 - основные триггерные переменные
z1...z1000 - текстовые переменные
z-1...z-10 - функциональные текстовые переменные (уникальны для каждой функции)

Запись переменных

Есть несколько путей записи переменных. Ресейвер VR может быть использован для установки значения любой переменной и может быть еще использована для арифметических операций с переменными, такими как сложение, вычитание, умножение или деление. Исключение - переменные z, которые используются для установления текста, в отличии он числовых переменных.

Пример установки значение 17 переменной v5:
!!VRv5:S17;

Второй путь записи значений в переменные - это считывание значений с объектов или установок игры, таких, как номер героя, значение золота, количество драг. камней у игрока 4, или тип или подтип любого объекта. Для установки значения через этот путь, после команды используется знак вопроса (?), далее следует переменная, в которой и будет храниться значение.

Пример установки типа объекта в координатах x=10, y=15, уровень=1 (подземелье) в переменную j: !!OB10/15/1:T?j;
Пример установки количества кристаллов (тип ресурса - 4), которые на данный момент есть у игрока зеленого (номер 3) в переменную v12:
!!OW:R3/4/?v12;

Третий способ установки переменной - внутренняя ссылка. Некоторые ERM команды требуют номер переменной v или z, а не букву. В этом случае, вместо использования знака вопроса, вы просто вводите номер параметра и значение командой для данной переменной (например, если команде нужен номер для v-переменной, вы ставите значение 17, которое будет установлено в переменную v17).

Триггерные локальные переменные

y-1...y-100 - целые переменные
e-1...e-100 - переменные с плавающей запятой
Вы можете использовать эти переменные там, где y и e переменные могли использоваться раньше.
Характерные особенности:
1. Они не сохраняются при сохранении игры. Фактически, каждая секция триггера будет полностью завершена, и вы не сможете сохранить и загрузить игру в работе триггера.
2. Эти переменные различны для каждого триггера, и если один триггер работает внутри другого, они будут иметь разные значения этих переменных. Вы не можете передавать значения из триггера к триггеру используя эти переменные.
3. Все эти переменные установлены на 0 при старте любого триггера.
4. Все функции, вызванные из одного триггера, смогут обмениваться этими переменными, т.к. они завязаны на триггере, но не на функции.

Использование переменных вместо чисел

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

Пример использования v-переменных для установки баллов заклинания героев
!!VRv200:R50; - генерировать случайное значение между 0 и 50 в переменную v200
!!HE155:Iv200; - установить герою № 155 баллы заклинания на значение, сгенерированное в переменной v200

Пример использования z-переменных: добавление "Сэр" к имени героя
!!VRz50:S^Сэр ^; - установить слово "Сэр" в переменную z50
!!HE-1:B0/?z51; - установить текущее имя героя в переменную z51
!!VRz52:S50 +z51; - добавить содержимое z51 к z50 и записать в переменную z52
!!HE-1:B0/z52; - установить текущему герою имя, находящееся в переменной z52

Замечание: оба предыдущих примера кода должны иметь триггер.

Условия с переменными

Как и флаги, вы можете использовать значения одной или более переменных как условия. Принцип действия тот же, однако, вместо номера флага (с или без знака минуса впереди), вы вводите имя переменной, далее, за знаком сравнения (=, >, <, <>, >=, или <=) - число (или переменную), с чем вы хотите сравнить.

Пример условия, если v1 больше либо равно 7, показать сообщение:
!!IF&v1>=7:M^Вы были мудры, сделав этот выбор, герой!^;

Пример условия, сравнивающего текст, установленный в переменную z1, с текстом в переменной z2, и если они одинаковы, показать сообщение:
!!IF&z1=z2:M^Вы ввели одинаковые значения!^;

Проверка нескольких переменных

Выполняется тем же путем, что и с флагами, отделяя каждое условие слешем (/). Вы можете смешивать и сравнивать флаги и переменные в одном условии, как в примере ниже, который дает текущему герою артефакт Дивный Доспех, но только если выполнены условия (установлены флаги и переменные с определенным значением):
!!HE-1&7/v2>6/-1/y4=v8:A31;

В примере выше героя получит артефакт, если выполнятся условия::
1. Флаг 7 должен быть Истиной (1);
2. v2-переменная должна быть больше 6;
3. Флаг 1 должен быть ложью (0);
4. y4-переменная должна быть равна v8.

Только если все четыре условия будут выполнены, герой получит артефакт.

Синтаксис проверки - условие ИЛИ: |

!(!|?|#)XX&c1/c2/c3|c4/c5/c6:...;
Полное условие будет таким: (c1 И c2 И c3) ИЛИ c4 ИЛИ c5 ИЛИ c6
Комментарий:
- секция ИЛИ может быть одна, либо обязательно после секции И
- если есть только секция ИЛИ, полное условие будет истиной, если хотя бы одно состояние ИЛИ - истина
- может быть до 16 условий И и до 16 условий ИЛИ

Другие типы переменных

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

Стандартные переменные (f-t) и (v1-v10000) могут использоваться практически повсеместно, кроме того, быстрые переменные могут хранить числа большие, чем v-переменные, а определенные команды требуют номер v-переменной для записи результата. Оба типа используются для записи целых значений.

Переменные героев (w1-w200) хранят тот же тип информации, что и v-переменные. но они уникальны для каждого героя, Т.е. два разных героя могут иметь разные значения, записанные в их переменных w1 (или w2, w10 или более до w200). Для установки или проверки одной или более w-переменных вы сначала должны установить номер героя, у которого будет браться значение командой IF:W. Например, если вы хотите установить или проверить w5 героя 27 (Джем), вы сначала должны вставить
!!IF:W27;
перед ресейвером(-ами), работающими с переменной w5. Для текущего героя используйте -1 вместо номера. Так,
!!IF:W-1;
означает, что следующие обращения к переменным w относятся к текущему герою (до использования другой команды IF:W)
См. также: IF:W, ресейвер VR
Исключение: !!HT:W. Там вы можете использовать только первые 100 w-переменных.

Переменные - параметры функции (x1-x16) также хранят те же типы значений, что и переменные v и w (числовые). Но данные переменные существуют лишь внутри функций (кода после триггера функции) и пропускают в функцию значения командой P (P - параметры). См. ресейвер FU для детальной информации о функциях. Если вы вызываете функцию из другой функции, любые x-переменные, которые не были установлены (как новые параметры), хранят свое старое значение в новой функции. Когда используются с ресейвером DO, параметр x16 хранит номер круга функции.

Локальные переменные (y1-y100) похожи на x-переменные тем, что используются лишь в функциях. Но они уникальны для каждой функции, так, если вы имеете 4 разных функции, каждая имеет свое значение переменной y. Как большинство других переменных, они хранят только числовые значения. Также эти переменные могут быть использованы вне функции, но помните, что при срабатывании другого триггера (HL, BA и т.д.) в середине вашего скрипта, значения этих переменных могут уничтожиться.

Переменные с плавающей запятой (e1..e100) Они используются в основном как y-переменные:
- не записываются в сохраненной игре;
- уникальны для каждой функции;
- установлены на 0 при старте каждой функции/круга функции;
- восстанавливаются при выходе с другой функции.
Вы можете использовать их для установки параметров, но главная особенность - использование выражений с плавающими запятыми и их дальнейшая запись в целое число.
Вы можете использовать команды +,-,* и : ресейвера VR для e-переменных с плавающей запятой, хотя все числа в выражении должны быть целыми.
Вы также можете показать значение e-переменной в сообщении, используя команду %E#. В этом случае будет показано только 3 знака после запятой.
Баг - ERM не обрабатывает нестрогие сравнения e-переменных (<=, >=, =>, =<).

Пример:
!#VRe5:S32;
!#IF:M^e5 теперь имеет значение "%E5"^; [ e5=32.0 ]
!#VRe5:*5;
!#IF:M^e5 теперь имеет значение "%E5"^; [ e5=160.0 ]
!#VRe5::200;
!#IF:M^e5 теперь имеет значение "%E5"^; [ e5=0.8 ]
!#VRe5:+e5*10+5:10;
!#IF:M^e5 теперь имеет значение "%E5"^; [ e5=2.1 ]
!#VRv100:Se5;
 !#IF:M^v100 теперь имеет значение "%V100"^; [ v100=2 ]

Текстовые переменные (z1-z1000) хранят символы (один или более) и не могут быть использованы для записи числовых переменных; они могут записывать число как текст, но число нельзя будет приравнять или выполнить с ним арифметические действия в любом виде. z-переменные могут быть соединены, но имеют ограничение в 512 символов каждая. Они могут быть сравнены с другими z-переменными. Когда сравниваются две z-переменных, сравнение не зависит от регистра. Так, если в переменной z1 записано "Это", она будет равна переменной z2, в которой записано "эТО" или любая другая комбинация больших и малых символов. При сравнении пустые линии или строки z-переменных игнорируются. 500 новых z-переменных добавлено в ERM 2.60 (WoG 3.57) к уже существующим 500, но помните, что z501-z1000 не сохраняют свое значение между разными картами.
Для этого используйте z301-z500.
Замечание: сообщения в тестовых переменных не должны содержать символов ; и ^

Пример:
!!VRz567:S^Неправильный текст ; Он содержит ^специальные элементы^. ^;
!!VRz567:S^Это правильный текст. Он не содержит "специальных элементов". ^;
!!IF:M^Это правильный текст. Он не содержит специальных элементов. ^;
Локальные текстовые переменные (z-1-z-10) аналогичны y-переменным, но записывают значение как z-переменные. Если вы установить одну затем вызовете функцию или круги функций, устанавливающие другие значения, при возвращении к начальной функции вы получите значение переменной, равной установленной до вызова функции. Так вы можете использовать передачу переменной от функции к функции, но не можете использовать возвращенное значение. Как обычные z-переменные, они ограничены 512 символами.

Специальные переменные

В ERM есть несколько переменных, имеющих специальное значение. Как флаги 1 и 1000, специальные переменные могут установлены как вы захотите и в любое время, но это не рекомендуется, т.к. есть риск, что другие команды могут использовать их.

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

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

Переменные v998, v999, и v1000 всегда записывают позицию объекта или события, которое посетил текущий герой, или координаты героя (например, в триггере !?HM). Лучше оставить эти переменные исключительно для сравнения их значений или копировать их значения в другие переменные

Переменная x16 (используется в функциях, вызываемых ресейвером DO), хранит текущий номер круга функции. Например, если функция повторяется 12 раз (от 1 до 12), первый раз x16 будет равна значению 1, второй раз - 2 и т.д. Если вы измените значение переменной x16, вы сможете "ускорить" или "замедлить" выполнение функции, или выйти из функции, установив значение x16 на конечное значение (или большее), использованное в ресейвере DO.

Инициализация переменных

Как и флаги, все переменные в начале игры имеют значение 0. Однако, как и флаги, некоторые переменные не будут сброшены между картами без перезапуска самой игры. Опять же, это может помочь вам в создании кампаний.

Когда вы начинаете игру, следующие переменные будут установлены на 0 или примут пустое значение "" (для z-переменных): f...t, v1...v500, v1001-v10000, z1...z300, z501-z1000, w1-w50.

Следующие переменные будут сохранять свое текущее значение между играми (только если вы не перезапустите игру): v501-v1000, z301-z500, w51-w200.

Показ переменных в сообщениях

Как и флаги, значения переменных могут быть показаны в сообщениях, используя специальный код для типа переменной:

%V# - показать быструю или v-переменную. # = f...t или 1...10000
%W# - показать переменную героя. # = от 1 до 20
%X# - показать переменную-параметр функции. # = от 1 до 16
%Y# - показать значение функциональной переменной y. # = от 1 до 100
%Z# - показать текстовую переменную. # = от 1 до 500
%$macro$ - показать переменную, ассоциируемую с макро-именем "macro"
%Dd - текущий день недели
%Dw - текущая неделя
%Dm - текущий месяц
%Da - текущий день с начала игры
%Gc - цвет текущего игрока (текстом)

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

Пример показа сообщения с быстрой переменной j, обычной переменной v21 и z-переменной z100 в текстовой переменной:
!!IF:M^Простите, %Z100, но вы имеете только %Vj золота, вам нужно %V21 золота для покупки этого артефакта.^;

Здесь подразумевается, что в переменной z100 хранится имя героя (скажем, это Клэнси) и в переменной j хранится количество золота у игрока (скажем, 750) и переменная v21 содержит цену артефакта (скажем, 2000), сообщение будет выглядеть так:

Простите, Клэнси, но вы имеете только 750 золота, вам нужно 2000 золота для покупки этого артефакта.

Внедрение переменных как часть текстовых переменных

Используя команды для показа сообщений (см. выше), вы можете добавлять переменные как часть текстовой переменной. Это удобный способ контакта с переменной z

Пример комбинирования нескольких z-переменных и v-переменных вместе в одной z-переменной:

!!VRz10:S^Клэнси^; - установить в z10 значение "Клэнси"
!!VRz11:S^зеленую^; - установить в z11 значение "зеленый"
!!VRz12:S^красная^; - установить в z12 значение "красный"
!!VRv25:S1 R1000; - установить случайное значение от 1 до 1000 в переменную v25
!!VRz100:S^%Z10 всегда хотел иметь %Z11 лошадь, но его лошадь была %Z12. Ему было %V25 лет, и %Z10 никогда не видел %Z11 лошадь за всю свою жизнь!^; - установить этот текст в переменную z100
!!IF:M^%Z100.^; - показать текст, записанный в переменной z100

Здесь подразумевается генерация случайного числа и запись его в переменную v25 (пусть будет 247), следующее сообщение ниже будет показано игроку:
Клэнси всегда хотел иметь зеленую лошадь, но его лошадь была красная. Ему было 247 лет, и Клэнси никогда не видел зеленую лошадь за всю свою жизнь!

Косвенные ссылки на переменные

Ресейверы, требующие координаты на карте (x, y и уровень) в теле ресейвера, могут быть использованы с косвенными ссылками на переменные. Это одно число, которое идет первым и последующие переменные v содержат x, y и уровень для использования. Например, если у вас значение x записано в переменную v100, y - в v101 и уровень в v102, вы можете использовать число 100 в ресейвере для точки, находящейся в этих координатах.

Пример использования локальных событий с косвенными ссылками:
!!VRv100:S10; - число, используемое как х
!!VRv101:S15; - число, используемое как y
!!VRv102:S0; - число, используемое как уровень
!!LE100:M^Странно... Здесь нет ни звука жизни.^; - установить сообщение в событии, координаты которого лежат в значениях v100, v101, v102

Косвенные переменные

Иногда полезно уметь обращаться к переменной (например, число между 1 и 1000 для переменных v), номер которой записан в другой переменной. В этом случае вы можете использовать повторение функции как в ресейвере DO для записи информации в переменную. Взамен вставки номера после v, вы можете вставить другую переменную и значение, сохраненное в ней, будет номером переменной.

Пример индексных переменных v, используя y-переменные:
!!VRy10:S7;
!!VRvy10:S5;
!!IF:M^Значение переменной v7 равно %V7.^;

Будет показано следующее сообщение:
Значение переменной v7 равно 5.

Это потому, что y10 равно 7. И vy10 значит, что v-переменная имеет номер, сохраненный в переменной y10, которая имеет значение 7. Следовательно, v7 становится равной 5.

Макросы

Если вы хотите обращаться к переменной по более значимому имени, вы можете установить макрос ресейвером MC. Макрос может быть использован почти в любом месте, где используется переменная и взаимодействует с переменной.
Макрос - это ссылка с именем, ограниченная знаками доллара: $treasure$.
Для большей информации по макросам см. ресейвер MC.

Руководство по использованию переменных

Вы можете использовать любую комбинацию номеров переменных в вашем скрипте, но желательней использовать переменные из какого-либо промежутка, чтобы затем можно было применять скрипт к карте без страха перекрытия переменных друг другом (естественно, вы будете знать, какие использовали в скрипте, и сможете изменить их при возникновении неполадок). Также рекомендуется для временных данных (нужных только в данном триггере) использовать быстрые переменные, а для долговременных - обычные глобальные. Кроме того, неплохо использовать y-переменные в функции, так освобождается больше обычных переменных для вашего скрипта. Переменные героя (w) будут полезны только для специальных нужд, нет нужды записывать в них какие-либо долгосрочные данные, если они не нужны самому герою (т.е. скрипт будет действовать не только на героя).

Использование y-переменных вне функций

Есть сто y-переменных [1...100]. Вы можете использовать их почти везде. Но каждый триггер функции сохраняет все текущие значения y в специальных слотах, сбрасывая их на 0 и после выполнения последнего ресейвера восстанавливает их обратно.

Пример:
ZVSE
!#VRy15:S3;
....
!?...;
!!IF:M^%Y15^; покажется 3
...
!!FU234:P;

!!IF:M^%Y15^; покажется 3
...
!?FU234;
!!IF:M^%Y15^; покажется 0
!!VRy15:S5;
!!IF:M^%Y15^; покажется 5
!?FU234;
!!IF:M^%Y15^; покажется 0
!!VRy15:S7;
!!IF:M^%Y15^; покажется 7

Дополнительные примеры:

Как использовать переменные героя?
Для использования w-переменных, сперва вы должны использовать команду !!IF для героя, у которого хотите изменять или узнать (используйте -1 для текущего героя). Использовав эту команду. все w-переменные далее ищутся у указанного героя до тех пор, пока вы не смените героя. Используйте эту команду перед установкой, тестированием или проверкой w-переменных. Так, если вам нужно использовать w-переменные героя #147 (Дракон), команда будет такова:
!!IF:W147;
Тогда вы сможете установить переменную w1 в точности так же, как и любую другую переменную (см. пример ниже).

Вы имеете 1 объект и 1 событие. Если герой посетил объект, событие среагирует должным образом.
Поставим объект Волшебный колодец в позицию 10/15/0.
Поставим событие в 27/18/0.

ZVSE
!?OB10/15/0;
!!IF:W-1;
!!VRw1:S1;

!?LE27/18/0;
!!IF:W-1;
!!IF&w1=0:M^Принесите мне воды из волшебного колодца!^;
!!IF&w1=1:M^Вы принесли мне воды! Я отблагодарю вас!^;

Как я могу узнать номер текущего дня?

Это просто.
!!VRv123:Sc;
Модификатор "с" работает так же, как и "d", но добавляет текущий день.
Вы можете добавлять текущий день к любым другим значениям.
!!HE-1:Fcd/c/1/2;
Добавить к атаке текущего героя номер текущего дня, установить защиту равную номеру текущего дня.
Замечание: c - это не переменная, вы не можете установить, проверить или получить в нее значение. Если вы хотите проверить номер дня, запомните ее в другую переменную.
Пример:
Это работать не будет:
!!VRy-1&c<=217:S0;
!!VRy-1&c>217:S1;
 А это - будет:
!!VRy-50:Sc;
!!VRy-1&y-50<=217:S0;
!!VRy-1&y-50>217:S1;
Подсказка о генерации случайного значения
Давайте поговорим о генерировании чисел от 1-100, но кроме 42, 81, или 99.
Здесь 3 ненужных номера, так что генерируется число от 1 до 97. Затем если это 42 или выше, добавляем 1. Затем, если это 81 или выше, добавляем 1. Если это 99 или выше, добавляем 1. Вы теперь имеете случайное значение, от 1 до 100, но кроме 42, 81, или 99.
Так, если вы хотите генерировать число от 1 до 100, исключая 10-19 и 73, вы генерируете число от 1 до 89, затем, если оно 10 или выше, добавляете 10, если 73 или выше, добавляете 1.


Таблицы

Поле боя | Классы героев
def'ы заклинаний | Классы командиров
MP3-музыка | Комбо-артефакты
Анимации заклинаний в бою | Курсоры
Артефакты | Объекты
Банки существ | Односторонние телепорты
Бонусы опыта существ | Опыт героя
Все строения города | Первичные навыки
Вторичные навыки для IF:Q | Позиции артефактов
Герои | Позиции артефактов для UN:A
Города | Почвы
Городские здания | Почвы в бою
Двусторонние телепорты | Проклятия и благословения
Дополнительные объект ы | Ресурсы
Жилища существ | Стражи прохода
Заклинани я | Существ
Звуки | Флаги монстров
Игрок и | Фоновые картинок боя
Игроки (бит) | Шахты
Картинки для IF:Q |

Введение


ERM-HELP
version 2.8e
Версия ERM: 2.81 (WoG 3.58f и выше)

Введение

ERM означает Event Related Model (событийно-связанный модуль) и является дополнением к игре Герои 3: Дыхание Смерти™.
ERM - новая технология, позволяющая динамическое изменение игры в зависимости от действий игрока или компьютера.
На данный момент изготовлено 78 официальных скриптов, влияющих на самые разные аспекты игры.
Вы можете создавать свои скрипты, и эта помощь создана специально для этого.
Новичкам рекомендуется почитать обучение.

В ранних версиях отсутствовала поддержка сетевой игры (только один игрок и хот-сит), но теперь WoG полностью поддерживает сетевую игру по TCP/IP. Исключения пока что только для некоторых скриптов, но неподдерживаемые скрипты отключаются автоматически.


Библиотека функций

Разделы: 1 2 3 4 5 6

Библиотека функций UN:C

Команда UN:C работает с памятью. Используя ее, можно редактировать даже те области героев, которые казались за гранью достижимого. Здесь приведено несколько полезных функций, не являющихся стандартным. Пользуйтесь!

Контроль типа нанимаемого в Портале Вызова существа

!?FU20114&x1=-1;
!!UN:C6919500/4/?y1;
!!VRy1:+56;
!!UN:Cy1/4/?y2;
!!VRy2:+60;
!!UN&x3=0:Cy2/4/x2;
!!UN&x3<>0:Cy2/4/?x2;
!?FU20114&x1<>-1;
!!UN:C6933756/4/?y1;
!!VRy1:+2884;
!!UN:Cy1/4/?y2;
!!VRx1:*360 +60 +y2;
!!UN&x3=0:Cx1/4/x2;
!!UN&x3<>0:Cx1/4/?x2;
Вызов:
!!FU20114:P#1/$/#2;
!!FU20114:P#1/$; (#2=0)
#1:     № города (-1 - текущий)
$:
тип существа. -1 - значит нет Портала,
или ещё не сгенерирован тип (сгенерируется при заходе в окно
замка).
#2:     0 -
установить $, любое другое значение - получить $.

Контроль количества нанимаемых в Портале Вызова существ

!?FU20115&x1=-1;
!!UN:C6919500/4/?y1;
!!VRy1:+56;
!!UN:Cy1/4/?y2;
!!VRy2:+64;
!!UN&x3=0:Cy2/2/x2;
!!UN&x3<>0:Cy2/2/?x2;
!?FU20115&x1<>-1;
!!UN:C6933756/4/?y1;
!!VRy1:+2884;
!!UN:Cy1/4/?y2;
!!VRx1:*360 +64 +y2;
!!UN&x3=0:Cx1/2/x2;
!!UN&x3<>0:Cx1/2/?x2;
Вызов:
!!FU20115:P#1/$/#2;
!!FU20115:P#1/$; (#2=0)
#1:     № города (-1 - текущий)
$:     кол-во существ
#2:     0 - установить $,
любое другое значение - получить $.
Примечание - если на первой неделе в город ни разу не
заходили (или нет Портала), тип и кол-во существ ещё не сгенерированы,
и количество будет выдавать всякий мусор.

Прочтение результатов диалога HE:C

Позволяет после команды
HE:C посмотреть, что осталось в верхних
(добавляемых) слотах, и использовать её не только для добавления существ, но и
для оставления, без особых трудностей. Для WoG 3.58 и
TE.

!?FU20116;
!!UN:V=358/?i;
!!VRy1&1:S8585652;
!!VRy1&-1:S8647508;
!!UN:Cy1/4/?x1;
!!VRy1:+4;
!!UN:Cy1/4/?x3;
!!VRy1:+4;
!!UN:Cy1/4/?x5;
!!VRy1:+4;
!!UN:Cy1/4/?x7;
!!VRy1:+4;
!!UN:Cy1/4/?x9;
!!VRy1:+4;
!!UN:Cy1/4/?x11;
!!VRy1:+4;
!!UN:Cy1/4/?x13;
!!VRy1:+4;
!!UN:Cy1/4/?x2;
!!VRy1:+4;
!!UN:Cy1/4/?x4;
!!VRy1:+4;
!!UN:Cy1/4/?x6;
!!VRy1:+4;
!!UN:Cy1/4/?x8;
!!VRy1:+4;
!!UN:Cy1/4/?x10;
!!VRy1:+4;
!!UN:Cy1/4/?x12;
!!VRy1:+4;
!!UN:Cy1/4/?x14;
Вызов:
!!FU20116:P?1/?2/?3/?4/?5/?6/?7/?8/?9/?10/?11/?12/?13/?14;
?1,?3..?13 - типы
существ в слотах 1..7 соответственно, ?2,?4..?14 - их количество.

Функция для работы со строками на низком уровне

Иногда при работе с !!UN:C требуется работать со строками. Приходится писать для этого функции. Написать их несложно, и я решил поделиться:
!?FU12925; Получение адреса z переменной номер x1 (возврат в x2)
Поддерживаются версии: 3.58f, ТЕ
!!UN:V?y1/?y2;
!!VRy3&y1=358:S40225400;
!!VRy3&y1=359:S9597416;
!!VRx2&y3=0:S0;
!!FU&y3=0:E;
!!VRx2:Sx1*512+y3;
!?FU12926; Копирование строки по адресу. x1 - источник, x2 - приемник.
!!DO12927/0/511/1:Px1/x2;

!?FU12927;
!!VRy1:Sx1+x16;
!!VRy2:Sx2+x16;
!!UN:Cy1/1/?y3 Cy2/1/y3;
!!VRx16&y3=0:S511;

А теперь сразу же полезный скрипт, использующий их.

Проигрывание любой .def анимации на юните в бою

Данный скрипт позволяет проигрывать любую анимацию на любом юните в бою (т. е. не только из списка анимаций). Требует наличия функции 12925 для работы (см. выше).
!?FU12930;
!!UN:V?y10/?y11;
!!VRy12&y10=358:S69016332;
!!VRy12&y10=359:S61479692;
!!UN&y12<>0:Cy12/4/-1;
!!UN:C4454270/4/?y1;
!!VRy1:+660;
!!VRy2:Sy1+8;
!!VRx4:*256+x3;
!!FU12925:Px2/?y5;
!!UN:Cy1/4/?y3Cy2/4/?y4Cy1/4/y5Cy2/4/x4;
!!BMx1:V55;
!!UN:Cy1/4/y3Cy2/4/y4;
Использование функции:
x1 - номер стека в бою
x2 - номер z переменной, в которой хранится имя .def файла для проигрывания
Примечание: Для работы требуется функция 12925 из функций работы со строками
x3 - позиция относительно монстра:
0: Нижняя часть анимации совпадает с нижней частью существа (например, молитва)
1: Центр анимации совпадает с центром существа (например, инферно)
2: Анимация находится сверху существа (пример в голову не лезет)
3: Анимация находится спереди существа (срабатывание гномского сопротивления)
4: Анимация находится в углу возле атакующего героя
x4 - Полупрозрачность (0 - нету, т.е. анимация непрозрачна, 1 - анимация полупрозрачна)
К примеру, полупрозрачность - как молитва, воскрешение, лечение, страх, ...
Непрозрачное: Мораль, проклятие, старость, болезнь, ...

Работают любые деф файлы, хоть с карты приключений, любые. Анимация проигрывается один раз, после чего пропадает.

К сожалению скрипт сейчас лучше не использовать, т.к. имеют место некоторые проблемы с кешированием. "Хорошее" решение этой проблемы, к сожалению, найти не удалось...

Получение адресов переменных ВоГа

При работе с UN:C бывает нужно получить адрес какой-то Z-переменной. Вот скрипт, записывающий адрес z1 в v4138: (работает в 3.58, TE и в любой версии WoG, поддерживающей используемые команды).

!#UN:A0/9/?y10; [бэкап номера переменной Z]
!#UN&y10<0:A0/9/?z-1; [бэкап текста (3.59)]

!#UN:A0/9/1; [art0.Name = z1]
!#UN:C6687592/4/?y1; [получить адрес массива артефактов]
!#UN:Cy1/4/?v4138; [получить art0. Имя - адрес z1. Имя идет первым в инфо артефакта, так y1 указывает на art0.Name]
[v4138 хранит адрес z1]

!#UN&y10>=0:A0/9/y10; [восстановить номер переменной Z]
!#UN&y10<0:A0/9/z-1; [восстановить текст (3.59)]


Ссылки

Оф. сайт New Life of Heroes
Оф. форум "Новой жизни героев"
Старый форум
Файлы Героев WoG 3.58f
ERM-помощь, кампании WoG, карты
Сайт русского города в Героях 3
Множество всего для Героев 3.58


Mapmakers_tools

Инструментарий картостроителя
16 августа, 2004

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

1. Авто-загрузка настроенных опций WoGа для вашей карты.
2. Создание и подключение своих портретов героев в карты.
3. Включение встроенного меню читов.
4. Использование встроенных читов.
5. Включение чит-меню WoGa для теста карты и скриптов.

Авто-загрузка настроенных опций WoGа для вашей карты.

a) Откройте меню WoG опций и выберите желаемые опции
b) Сохраните файл в папку Maps со своим именем файла. Обычно используется название, как у карты. Так, если ваша карта названа "Conquer the World.h3m", вы можете назвать "Conquer the World.dat".
c) Создайте глобальное событие в карте (назовите как хотите).
d) Настройте событие так, чтобы ни один игрок не был включен в список разрешенных, и установите день появления на 600.
e) В теле события напишите следующее (предполагая, что вы используете "Conquer the World.dat"):

ZVSE
!#UN:J3/^maps\Conquer the World.dat^;

f) Нажмите ОК чтобы сохранить событие.
g) Сохраните карту.
h) Когда вы запаковываете карту, включите в архив ваш файл настройки (например, Conquer the World.dat).

Теперь вместе с картой игрок автоматически скачает файл WoGификации, и будет играть по вашим правилам.

Создание и включение портретов героев в вашу карту

Даже если вы не писатель скриптов, вам может захотеться включить свой портрет героя в карту.

a) Сначала вам нужно создать большой и маленький портреты героев правильного размера и типа.

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

Большой должен быть размером 58x64 (58 пикселей в ширину и 64 в высоту).
Маленький - 48x32 (48 в ширину и 32 в высоту).

Поместите оба файла в папку Heroes3\Data и запакуйте их вместе с картой.
Не забудьте также включить напоминание игрокам, чтобы они скопировали файлы в папку Data (можете даже создать событие в первый день, чтобы никто не упустил этот момент.)

Для примера, назовем большой файл "sylvia.pcx", и маленький "sylvia-s.pcx"

b) Создайте глобальное событие на карте (назовите как хотите).
c) Настройте событие так, чтобы ни один игрок не был включен в список разрешенных, и установите день появления на 600.
d) Узнайте внутренний номер героя, портрет которому хотите сменить. В нашем примере, мы используем Сильвию, чей номер - 3.
В итоге, у нас получается !#HE3:L1^sylvia-s.pcx^;
Если бы номер героя был 17, мы бы написали !#HE17:
e) В тело события поместите следующее (учитывая номер своего героя):

ZVSE
!#HE3:L1^sylvia-s.pcx^; [Установить маленький портрет для Сильвии]
!#HE3:L2^sylvia.pcx^; [Установить большой портрет для Сильвии] f) Нажмите ОК, чтобы сохранить событие.

g) Сохраните свою карту.

Если хотите установить несколько портретов для разных героев, дописывайте дополнительные строки в событие. Вам необходимо лишь одно "ZVSE" в самом начале текста.

Важно: Если вы редактируете героя, используя свое изображение, НЕ включайте галочку "Настроить" возле портрета героя в редакторе карт, т.к. она перекроет ERM-команды и ваши настроенные портреты.

Включение встроенного чит-меню

Герои III были выпущены со встроенным чит-меню, которое можно было включить, дописав к ярлыку программы команду. В Возрождении Эрафии, Клинке Армагеддона и Дыхании Смерти, эта команда была "/nwcgrail".
В WoG код был сменен на "/zvssveta".

Код должен быть добавлен к пути файла в его ярлыке. Так, для WoG на диске F, в папке "Wake of Gods", ваш ярлык должен выглядеть как-то так:

"F:\Wake of Gods\h3wog.exe"

Добавьте "/zvssveta" в конец:

"F:\Wake of Gods\h3wog.exe" /zvssveta

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

Если вы используете полноэкранный режим, нажмите F4, чтобы временно перейти в оконный режим (примечание: пока работает только на 16 битах).
Чит-меню появится в левом верхнем углу экрана.
Нажмите F4 снова, чтобы вернуться к полноэкранному режиму.

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

Примечание: если опция "Отключить Чит-коды и чит-меню" включена, это меню будет отключено. Меню будет доступно, но ни одна из его опций не будет работать.

Использование встроенных читов

Герои III также имеют несколько встроенных читов, доступных по нажатию кнопки TAB, вводу кода и нажатию Enter.

Оригинальные коды (Возрождение Эрафии, Клинок Армагеддона и Дыхание Смерти) были предварены префиксом "nwc".
В WoG 3.58 префикс был изменен на "wog".

Коды в Возрождении Эрафии были взяты из фильма "Monty Python and the Holy Grail".
Коды в Клинке Армагеддона были взяты из фильма "Star Wars" (Эпизод 1), коды в Дыхании Смерти - из фильма "Matrix".

Коды WoG также основаны на фильме The Lord of the Rings.

Коды для экрана приключений:
все постройки | WOGMINASTIRITH
5 Архангелов в каждый слот героя | WOGGALADRIEL
получить все боевые машины | WOGOLIPHAUNT
дать уровень герою | WOGGANDALFWHITE
дать герою бесконечные ходы | WOGSHADOWFAX
открыть карту обелисков | WOGPALANTIR
открыть карту | WOGEYEOFSAURON
дать игроку 100,000 золота и 100 каждого ресурса | WOGISENGARD
дать все заклинания и 999 маны | WOGSARUMAN
10 Рыцарей Смерти в каждый слот героя | WOGPATHOFTHEDEAD
проиграть сценарий | WOGDARKLORD
выиграть сценарий | WOGONERING
максимум удачи | WOGBILBO
закрыть всю карту | WOGMORDOR
максимум морали | WOGFELLOWSHIP
увеличить контрастность | WOGSARUMANOFMANYCOLORS

А также, 3 чита, которые могут быть использованы в бою:
выиграть битву | WOGFRODO
проиграть битву | WOGDENETHOR
дать все заклинания и 999 маны | WOGGANDALF

Примечание: если опция "Отключить Чит-коды и чит-меню" включена, ввод чит-кодов ничего не даст.

Включение WoG "Cheat" Menu, для теста карты или скрипта

Заскриптованное чит-меню было добавлено в WoGификацию.

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

a) Создайте глобальное событие (назовите как хотите).
b) Настройте событие так, чтобы ни один игрок не был включен в список разрешенных, и установите день появления на 600.
c) В тексте события напишите следующее

ZVSE
!#UN:P77/1;

d) Нажмите ОК, чтобы сохранить событие.
e) Сохраните свою карту.

Или вставьте эти строки в неиспользуемый скрипт WoGификации (например, script99.erm), если хотите, чтобы оно было активно для всех карт.

Для использования WoG Cheat Menu, нажмите ALT и кликните на любом следующем объекте:

a) Герой на карте;
b) герой в вашем списке героев;
c) город на карте;
d) город в вашем списке городов.

Появится меню с выбором нескольких вариантов действия.

Вы можете использовать ALT и в окне героя. В зависимости от того, куда вы нажмете, будут разные варианты действия.
Например, если вы хотите изменить атаку героя, зажмите ALT и кликнете по Атаке. А если хотите дать артефакт, с зажатым ALT щелкните по слоту артефакта.

Примечание: если опция "Отключить Чит-коды и чит-меню" включена, это меню будет также отключено.


Ресейверы

Ресейверы и инструкции

!!AR | Артефакт (ресурс) в определенной позиции
!!BA | Битва
!!BF | Препятствия на поле боя
!!BG | Действий монстров в бою
!!BH | Действия героя в бою
!!BM | Монстр в битве
!!BU | Универсальные параметры битвы
!!CA | Замок
!!CD | Разрушения замков
!!CE | События в замке
!!CM | Клика мышью
!!DL | Нестандартный диалог (только ТЕ или выше)
!!CO | Командиры
!!DO | Многократный вызов функции
!!EA | Бонусы опыта существ
!!EX | Опыт стека
!!FU | Однократный вызов функции
!!GE | Глобальное событие
!!HE | Герой
!!HL | Новый уровень героя
!!HO | Взаимодействия героев
!!HT | Подсказки по правому клику
!!IF | Диалоги и флагов
!!IP | Сетевой сервис битвы
!!LE | Локальное события
!!MA | Общие параметры монстров
!!MC | Макросы
!!MF | Получение физ. урона в бою
!!MM | Текст в битве
!!MO | Монстр в определенной позиции
!!MP | Контроль MP3
!!MR | Сопротивления магии
!!MW | Бродячих монстров
!!OB | Объект в определенной позиции
!!OW | Параметры игрока
!!PM | Пирамиды или новые объекты
!!PO | Информация квадрата карты
!!QW | Журнала
!!SN | Проигрываемые звуков
!!SS | Настройка заклинаний (только ТЕ или выше)
!!TL | Контроль времени хода (только ТЕ или выше)
!!TM | Временный таймер
!!TR | Квадрата карты (почва, проходимость, т.п.)
!!UN | Универсальная команда
!#VC | Контроль переменных
!!VR | Установка переменных


Ресейверы

Ресейверы и инструкции
для объектов

!!CB | банк существ
!!CH | сундук сокровищ
!!DW | жилища существ
!!FR | костер покинутого лагеря
!!GD | мистический сад
!!GR | гарнизон
!!KT | дерево знаний
!!LN | навес
!!ML | ветряная мельница
!!MN | шахта
!!MT | обелиск
!!SC | ученый
!!SG | знак (бутыль)
!!SK | скелет
!!SP | магический ручей
!!SR | магическая святыня
!!ST | камень знаний
!!SW | лебединый пруд
!!SY | верфь
!!UR | университет
!!WG | тележка
!!WH | хижина ведьмы
!!WM | водяная мельница
!!WT | гробница воина

Любой их этих ресейверов способен принимать в качестве координат (x/y/l) переменные, в том числе и последовательные (например, !!MNv1:... для настройки шахты в v1/v2/v3)


Ресейверы: общее

Разделы: 1 2 3 4 5 6 7 8 9 10

Ресейверы

Введение

Ресейверы ("receiver", с англ. - приемник. Хотя на самом деле читается как "ресивер", я использую в форме "читаю как пишу".) - ЕRM-коды, действующие на героев, объекты, события таймеры, функции, сообщения или игровые установки. Большинство ресейверов имеют несколько опций, что может быть использовано для самых разных вещей. Например, ресейвер LE действует на локальные события на карте и имеет несколько различных команд для изменения свойств события.

Как использовать ресейверы

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

Синтаксис ресейвера

Все ресейверы начинаются с двойного восклицательного знака "!!" и заканчиваются точкой с запятой ";". Сразу после "!!" следует двухбуквенный код ресейвера, как AR для артефактов, HE для героев и т.д. Следующая часть после этого кода зависит от типа ресейвера. Некоторые ресейверы имеют один или более параметров перед двоеточием ( : ), каждый параметр - целое число. Далее, после двоеточия следует опция ресейвера. Опции имеют много форм и могут включать один или более параметров каждый; они представлены в таблицах далее как XXXX. Замещайте XXXX соответствующей командой или командами. После последней команды вы должны поставить знак точка с запятой ";"

Все ERM команды (ресейверы и инструкции) должны иметь как минимум одну опцию для корректной работы.

Пример синтаксиса ресейвера:
!!LE 12/21/0:E1000;

В примере выше, локальное событие в координатах x=12, y=21 и уровень=0 (верх) станет модифицированным и будет давать 1000 опыта для героя.

Родственный синтаксис

Часто вам нужно не перемещать значение, а просто добавить или убавить значение. Например, если вы хотите дать герою опыт, вы установите герою количество опыта без учета текущего значения, т.е. опыт будет установлен на новое, установленное значение. Так же будет и с ресурсами игроков. Для добавления или убавления мы используем расширенный синтаксис: ставим маленькую d как префикс числа.

Пример расширенного синтаксиса:
!!HE -1:Ed+500;

В этом примере 500 опыта будет добавлено к уже имеющемуся опыту. Если бы мы использовали E500, а не Ed+500, у героя опыт стал бы равняться 500, а не увеличен на 500. Для отнимания 500 опыта, используйте Ed-500 соответственно. Если вы хотите оставить параметр неизменным, используйте d+0 или просто d.

Синтаксис текущей даты

На принципе использования префикса d, мы можем использовать префикс c (опять же только маленькая!) для того, чтобы номер текущего дня добавился к числу. Другими словами, c равно текущему дню (например, c=4 если это месяц 1, неделя 1, день 4; c=8 если это месяц 1, неделя 2, день 1, и c=30 если это месяц 2, неделя 1, день 2)

Пример:
Нам нужно событие, которое запустится через пять дней после каких-либо действий игрока. Установим день его появления ресейвером GE, опция F$. Пусть номер события будет 100 (первое число в сообщении события), используем команду
!!GE 100:Fc5;
 и событие запустится через пять дней после выполнения команды (она выполнится после, к примеру, посещения локального события).
Можно использовать оба префикса вместе: Fcd5 или Fdc5.

Пустые параметры

Если команда имеет четыре параметра, вы должны заполнить их все, отделяя каждый слешом. Вы не можете опустить параметр команды, иначе она не будет работать и выдаст сообщение об ошибке. Однако, в некоторых случаях вы можете опустить точное число и просто оставить пустым место после слеша. Когда вы опускаете параметр, считается, что вы ввели ноль, и если ноль - корректное значение для параметра, команда будет работать.

Пример пустых параметров:
!!IF :D1/5//4;
Команда выше - пример использования расширенного окна диалога. Он имеет больше параметров, чем любая другая опция ERM, но вы не должны заполнить их все. Мы используем три из возможных 16. Именно для этой команды ввод 0 значит "оставить без изменений", но многие другие команды просто принимают значение равное нулю, что не всегда подразумевалось.

Многокомандность

В большинстве случаев вы можете поместить несколько команд после одного заголовка ресейвера (часть перед двоеточием). Команды можно не разделять пробелами, но для большей читаемости рекомендуемо. В некоторых случаях, например, установка и управление переменными ресейвером VR, многокомандность не всегда работает корректно. Так, если вы используете несколько команд, убедитесь, что они выполняются правильно и дают корректный результат. Если одна из ваших команд показывает или устанавливает текст, вы должны поместить ее последней. Если вы вставите любую другую команду после текста (как часть одного ресейвера), вы получите ошибку.

Пример многокомандности:
!!LE 10/12/0:E1000 M^Вы многому учитесь, проходя через Древний лес Знаний^;

Добавление комментариев к своему коду

Что-либо в скрипте, следующее после точки с запятой и перед следующим ресейвером или триггером считается комментарием и игнорируется ERM-процессором. Некоторые вставляют свои комментарии в квадратные скобки для облегчения чтения скрипта и комментариев другими людьми, но это не обязательно.

Пример кода с комментарием (после точки с запятой):
ZVSE
!?LE10/23/1; Событие в x=10, y=23, уровень=подземелье
!!HE -1:B0/?z5; Запомнить имя героя в текстовую переменную z5
!!IF :M^Разрозненные голоса кричат "%Z5... %Z5... ты наша последняя надежда..." ^;
Сообщение выше показывает имя героя для большей персональности.

Использование переменных в ресейверах

Переменные могут быть использованы для замещения любого # или $, кроме #, используемых для ресейверов CE и GE перед двоеточием. Все другие # и $ в ресейверах, перед и после двоеточия, могут быть замещены на переменную соответствующего типа. Многие ресейверы, относящиеся к точке на карте, также могут использовать ссылки на переменные. В этом случае, одна v-переменная хранит x-координату объекта. В следующей v-переменной должна храниться y-координата здания, и в следующей v после y-координаты должен быть уровень.

Пример использования ссылок на переменные в ресейвере OB
!!VRv10:S25; [установить x-координату]
!!VRv11:S14; [установить y-координату]
!!VRv12:S0; [установить уровень карты]
!!OB10:S; [отключить объект в v10/v11/v12]

Инструкции

Инструкции идентичны ресейверам, за исключением того, что начинаются с комбинации знаков восклицания и номера (!#) и срабатывают только раз, при первой загрузке карты. Большинство ресейверов работает и в качестве инструкций, но некоторые (особенно ресейверы определенного объекта) не работают вообще и вызывают сообщения об ошибке либо вылет карты. Инструкции выполняются один раз при загрузке карты, в порядке появления во временных событиях, независимо от триггеров, ресейверов и комментариев до и после них. Вы можете использовать инструкции для вызова функций и все обычные ресейверы (не-инструкции), будучи частью функции, будут работать нормально, однако, вы должны включить функцию во временное событие перед инструкцией, вызывающей ее, иначе она не сработает; вы не получите сообщения об ошибке, функция просто не сработает.

Пример инструкции:
!#VRv10:S25; установить v10 на 25


Ресейверы

Разделы: А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

Алфавитный указатель

Автосохранения
Артефакт
Доступность
Комбо-артефакты
Номер заклинания
Номер заклинания (свиток)
Охрана
Параметры артефакта
Сообщение
Торговцы артефактами

Банк существ
Битва
Армии в начале боя
Быстрая битва
Вызвать монстра
Герои
Действие монстра
Добавить сообщение
Доступность колдовства
Колдовство заклинания
Мины/зыбучие пески
Номер ходящего стека
Осада
Отмена боя
Параметры монстров
Победа
Поле боя
Почва
Препятствия (список)
Препятствия (установить)
Проверка на сетевую игру
Проверка на существование монстра
Проверка на труп монстра
Текст в бою
Телепортация
Убрать препятствия
Установить цель действия
Фон битвы
Хозяева сражающихся
Благословления и проклятья
Бродячие монстры
Бутылка и знак

Вагон
Версия ERM и WoG
Верфь
Ветряная мельница
Водяная мельница
Вторичный навык: описание
Вход в объект

Гарнизон
Герой
Артефакты
Биография
Благословления и проклятья
Взаимодействия
Вторичные навыки
Вызвать битву
Доступность
Заклинания
Имя
Координаты
Мана
Монстры
Мораль
Начальная армия
Начальные очки передвижения
Номер
Опыт
Очки движения
Патруль
Первичные параметры
Подсказка
Портрет
Посещенные объекты
Специальность
Специальность: картинка
Убить
Улучшение существ
Уровень: ограничение
Уровень: получение
Хозяин
Глобальное событие
Город
Внешний вид
Гарнизон
Герои
Гильдия магов
Городской холл
Доступные монстры (не скупленные)
Доступные монстры (для найма)
Заклинания
Здания
Имя
Номер на карте
Разрушение
Статус построек
Тип
Хозяин
Гробница воина

Движения героя
Дерево Знаний
Диалоги
Вопрос Сфинкса
Вопросы
Выбор из вариантов
Диалог
Добавить подсказки
Настройка w-переменных
Настройка флагов
Показ картинки (анимации)
Сообщение
Дополнительные объекты

Жилища существ
Журнал

Задержка
Загрузка и сохранение
Заклинания
Запретить
Колдовство на карте (триггер)
Колдовство на карте (выполнить)
Звуки
Знак и бутылка

Игрок
ИИ
Использованные переменные

Камень знаний
Карта: закрыть участок
Открыть
Переместить взгляд
Размер
Командиры
Костер покинутого лагеря
Курсор

Лебединый пруд
Локальное событие

Макросы
Месяц ...
Мистический сад
Монстр
Имя
Монстр на карте
Мышь

Навес
Название ...
Неделя ...

Обелиск
Обновление экрана
Объект
Подсчет
Помещение объекта
Удаление объекта
Опции
Опыт отрядов
Опыт существ

Параметры квадратов
Переменные
Пирамиды
Победа в игре
Подсказки
Получение уровня героем

Ресурсы на карте
Ресурсы у игрока

Святыня магии
Скелет
Событие в городе
Сопротивление магии
Сундук сокровищ

Таймер
Текст в бою
Территория
Тюрьма, герой

Университет
Ученый

Физический урон
Функция

Хижина ведьмы

Шахта


Вторичные навыки

Изменение вторичных навыков
 Внимание! Небезопасный скрипт

Все параметры навыков записаны в таблицу, и при установке значения уровня навыка отличного от 0-3, игра будет брать параметры соседних навыков.

Это таблица параметров навыков по уровням, используемых в игре (для навыков, которые используют процентные значения).
Есть четыре значения для каждого навыка: 0 - нет, 1 - основной, 2 - продвинутый, 3 - эксперт.
Если вы установить навык выше (или ниже) этого значения, игра будет смотреть на параметры, следующие далее (прежде) в таблице.

Например, если навык Стрельба установить на уровень 7, игра прочтет значение Атаки 3го уровня и даст бонус 30%. А если установить уровень Некромантии на 58, то после битвы поднимете все трупы врага, т.е по 1 скелету за 1 юнита врага. Кстати, значения выше 100 для Некромантии не имеют значения, к примеру, при уровне навыка равном 60, скелеты не поднимутся вообще, а при 59 - как и при 58.

Расчет: чтобы Защита Эксперта снижала урон на 60% (по значениям подойдет Орлиный Глаз Эксперта, расположенная дальше по таблице), вам нужно установить ее уровень равным №_Орлиного_глаза_эксперта_в_таблице минус №_защиты_эксперта_в_таблице; т.е. 32-24=8;
!!HE#:S23/8;
Если нужно, чтобы Защита Эксперта снижала урон на 25% (по значениям подойдет Продвинутая Стрельба, расположенная ранее в таблице), вам нужно установить ее уровень равным №_Продвинутой_стрельбы_в_таблице минус №_защиты_эксперта_в_таблице; т.е. 15-24=-9;
!!HE#:S23/-9;

Единственная проблема - это то, что игра будет неправильно показывать навык в окне героя или даже ВЫЛЕТИТ.

Можно использовать другие значения навыков с боевыми навыками, применяя смещение в триггере !?BA0 и удаляя его в триггере !?BA1.
Такой метод позволит избежать ошибок и позволит нормально качать навыки, если вы получите уровень после битвы.

Примечание: * означает, что соответствующий навык был отгадан по значениям, и фактически не тестировался.

1. Некромантия 1) 0 2)10 3)20 4)30 | 2. ? 5) 0 6) 0 7) 0 8) 0 | 3. ? 9) 0 10)0 11)0 12)0
4. Стрельба 13) 0 14)10 15)25 16)50 | 5. Атака 17)0 18)10 19)20 20)30 | 6. Защита 21) 0 22) 5 23)10 24)15
7. ? 25) 0 26) 0 27) 0 28) 0 | 8.Орлиный Глаз* 29) 0 30) 40 31) 50 32) 60 | 9. Дипломатия* 33) 0 34) 20 35) 40 36) 60
10.Сопротивление 37) 0 38) 5 39) 10 40) 20 | 11.Обучение 41) 0 42) 5 43) 10 44) 15 | 12.Логистика* 45) 0 46) 10 47) 20 48) 30
13.Волшебство 49) 0 50) 5 51) 10 52) 15 | 14.Интеллект* 53) 0 54) 25 55) 50 56) 100 | 15.Первая помощь* 57) 0 58) 100 59) 200 60) 300
Дальнейшие значения непохожи на часть таблицы, но все же работают
16. ? 61) 0 62) 0 63) 0 64) 0 | 17. ? 65) 0 66) 0 67) 0 68) 0 | 18. ? 69) 0 70) 0 71) 0 72) 0
19. ? 73) 0 74) 0 75) 105 76) 5 | 20. ? 77) 0 78) 0 79) 0 80) 0 | 21. ? 81) 0 82) 0 83) 0 84) 0
22. ? 85) 0 86) 0 87) 0 88) 0 | 23. ? 86) 0 87) 0 88) 0 89) 30 | 24. ? 90) 15 91) 90 92) 150 93) 0
25. ? 94) 0 95) 0 96) 0 97) 0 | 26. ? 98) 0 99) 0 100) 25 101) 50 | 27. ? 102) 75 103) 100 104) 100 105) 100
28. ? 106) 0 107) 0 108) 0 109) 0 | 29. ? 110) 0 111) 0 112) 0 113) 0

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


Бонусы опыта: дополнительно

Бонусы опыта существ
версия 2.2, 30 июня 2004

После победы в битве героем все его выжившие войска получают опыт.
Существа без героя не получают опыта. Опыт равен опыту, полученному героем. Таким образом, каждое существо получает равное количество опыта за битву. Существа не получают опыт от Камней Знаний, Сундуков сокровищ или похожих объектов.

Если два существа с разными уровнями опыта соединяются, их опыт усредняется. Например, у вас есть стек из 10 существ с 10000 опыта, и вы соединяете его с 20 существами, имеющими 1000 опыта, в результате у стека в 30 существ будет 4000 опыта: (10 * 10000 +20 * 1000) / 30 = 4000.

Для просмотра деталей опыта существ (текущие и будущие особенности), нажмите на существо для вызова диалога информации о существе, и затем правый клик на портрете существа. Вы можете сделать это в окне героя, в гарнизоне или на поле боя.

Замечание: бонусы параметров существ не видимы (кроме как в окне опыта) нигде, кроме битвы, и бонусы особых способностей не показываются в обычном окне способностей существа.

Существует два текстовых файла, хранящие опыт стеков:
Crexpmod.txt - установки опыта, необходимого для нового уровня и потеря опыта при улучшении.
Crexpbon.txt - установки всех параметров и особых умений, получаемых на каждом уровне.

Текстовые файлы должны быть помещены в папку Герои 3\Data для работы.

Простейший способ редактировать файлы - открывать их последним ERM-скриптером.

Для этого откройте файл как обычно и затем нажмите Ctrl-Alt-Q для открытия файла в виде таблицы для редактирования колонок.

CREXPMOD.TXT
Этот файл может иметь одну линию для каждого существа, если вы захотите, вы можете сделать меньше линий и использовать стандартные значения.

Колонка 1: тип существа (используется таблица существ). Альтернативно вы можете использовать значения -1...-7 для применения установок линии всем существа определенного уровня: -1 = всем существам 1го уровня; -2 = всем существам 2го уровня и т.д. Основано на внутренних значениях уровней существ, так что существа выше 7го уровня будут расценены как уровень 7. И наконец, вы можете использовать значение -8 для применения строки ко всем существам в игре. Линии для определенных существ будут аннулированы.

Колонка 2: множитель для подсчета опыта. Позволяет одному существу получить больше или меньше опыта за битву, чем другому. 1.0 по умолчанию

Колонка 3: множитель для коррекции опыта при улучшении. По умолчанию 0.5, но мы сейчас используем 0.75, т.е. существо потеряет 25% своего опыта при улучшении.

Колонка 4: опыт полного 10го уровня. Это значение равно полному опыту 10го уровня. Значения для каждого уровня ниже высчитываются из этого значения. Значения, используемые нами сейчас, позволяют получить низкоуровневым существа уровни быстрее, чем высокоуровневым для компенсации большего прироста и меньших параметров.

Колонка 5: потолок опыта за битву. Это процент от максимального опыта существа, который может быть получен за одну битву. Например, значение 40 значит, что стек не может получить более 40% общего (10го уровня) опыта из одной битвы, независимо от количества полученного в ней опыта. Это предотвращает раскачку существа с нулевого уровня до десятого после одной большой битвы. Если вы предпочитаете не иметь ограничителя, просто установите это значение на 100.

Колонка 6: опыт 11го уровня. Это экстра-опыт, который может получить существо после достижения 10го уровня. Основывается на "резерве" опыта, так, вы можете добавить несколько новых существ без немедленного понижения до 9го уровня. Текущее значение дает войскам первого уровня 70% резерва, второго - 60% и т.д., существа 7го уровня имеют лишь 10% резерва.

Колонка 7: комментарий. Может содержать любой текст для напоминания значения строки (к примеру, имя монстра)

CREXPBON.TXT
Этот файл может иметь несколько линий для каждого существа, вы также можете сделать меньше строк, используя стандартные значения. Точное число линий зависит от количества бонусов.

Колонка 1: тип существа (используется таблица существ). Альтернативно вы можете использовать значения -1...-7 для применения установок линии всем существа определенного уровня: -1 = всем существам 1го уровня; -2 = всем существам 2го уровня и т.д. Основано на внутренних значениях уровней существ, так что существа выше 7го уровня будут расценены как уровень 7. И наконец, вы можете использовать значение -8 для применения строки ко всем существам в игре. Линии для определенных существ будут аннулированы.
Замечание: особые флаговые способности (тип бонуса f) не могут быть установлены по обычному.

Колонка 2: тип бонуса. Это может быть бонус параметра, особая флаговая способность, или другой тип способности. Замечание: буквенный код регистрозависим, так что "а" отлична от "А". Пустое место в этой колонке означает игнорирование линии.

Колонка 3: модификатор. Варьируется в зависимости от типа бонуса, установленного в колонке 2. Возможные модификаторы: + , : , % , #xx (где xx может быть существом или номер заклинания).

Колонка 4...14: значения бонуса на соответствующем уровне (0%...100%). Варьирует в зависимости от типа бонуса в колонке 2 и (или) от модификатора в колонке 3. Если вы установите значение 0%, существо будет иметь этот бонус с начала игры. Замечание: бонусы разных уровней не складываются. Только бонус для текущего уровня дается стеку.

Колонка 15: комментарии. Вы можете вводить туда что угодно для описания бонусной линии.
Замечание: если устанавливаете или проверяете бонусную линию через ERM, используйте число в угловых скобках < > вместо буквы. Например, если устанавливаете Атаку, используйте 65 для третьего параметра в команде ERM.

Бонусы параметров (колонка 2):
A : атака <65>
D : защита <68>
H : здоровье <72>
S : скорость <83>
m : мин. урон <109>
M : макс. урон <77>
O : кол-во выстрелов <79>
P : кол-во заклинаний в битве <80>, применимо только к существам, уже имеющим свои заклинания: Архангелы имеют Воскрешение, Мастер-Джины - случайное полезное заклинание и т.д.
В колонке 3 для параметров вы можете установить:
+ : <43> фиксированный бонус к параметру, например, +10 добавит +10 к текущему параметру существа
= : <61> абсолютный параметр, т.е. =10 устанавливает параметр существа на 10 (даже если по умолчанию он больше)
% : <37> процентный бонус к параметру. Например, %10 увеличивает текущий параметр существа на 10%. Замечание: .4 округляется вниз, а .5 - вверх, так 10% от 14 = 1.4 (округлится до 1) и 10% от 16 = 1.6 (округлится до 2).

В колонках 4...14 для параметров вы можете установить любое целое значение в диапазоне 0...254.

Бонус особой способности (колонка 2):

Следующие способности могут быть даны и описаны ниже (кликните на способность для подробностей):

1) Колдует экспертное (массовое) заклинание после атаки (a) <97>

После любой атаки в рукопашную, имеется процентный шанс, что это заклинание будет применено на цель на Экспертном уровне на три раунда, независимо от того, имеет ли существо сопротивление к ней или нет. Если заклинание с массовым эффектом, оно будет наколдовано на всех существ врага или своей армии (зависит от типа заклинания - ударное или полезное), независимо от наличия у них иммунитета.
Замечание 1: эта способность не работает для дальних атак. Однако, если стреляющее существо переход в рукопашную, то способность будет работать. Используйте (p), (c), (j) или (J), чтобы заставить колдовать стрелка.
Замечание 2: если вы дадите эту способность несколько раз (с тем же или с другими заклинаниями), максимум сработает одно заклинание на действие. Если вы имеет 3 заклинания с шансом 50% каждое, любое из них может быть наколдовано после атаки. Если вам нужно больше заклинаний для колдовства, вы также можете использовать способности (c), (p), (j), (J), (k) или (K). Они могут быть скомбинированы для большего эффекта.
В колонке 3 для (a) вы можете установить:
#xx : колдует заклинание xx
Для этой способности доступны почти все боевые заклинания, включая такие как Зыбучий песок и Огненная стена и Вызов Элементаля. Дружественные заклинания (к примеру, Щит) будет наколдован как Массовый щит на все союзные войска каждый раз, когда существо атакует противника, но если заклинание не имеет массового эффекта (к примеру, Антимагия, Волшебное Зеркало, Огненный Щит), он наколдует на врага. Заклинание Клона (65) создаст клон вражеского существа под вашим контролем, но будьте осторожны - не давайте способность на уровне 0, потому что игра вылетит, если клон наколдуется со стороны без героя. Корни (72) связывают врага и не дают ему двигаться, пока связующий не отойдет от цели либо не умрет.
Заклинания, которые не могут быть использованы и вызовут вылет игры или отсутствие действия, включают: Воскрешение, Оживить Нежить, Жертва, Облако Смерти, Гром Титанов и Смертельный взгляд. Телепорт работает, но делает битву невыигрышной для этого игрока - целевой стек "исчезает", но все еще считается в битве. Он не может двигаться или атаковать в рукопашную (или быть атакованным), но если он стрелок, он все еще может стрелять. Также можно дать заклинание Паралич (74) и Окаменение (70).
В колонках 4...14 вы можете установить:
Любое целое число в диапазоне 0...100. Это процентный шанс срабатывания заклинания.

2) Снижает защиту цели (b) <98>

В колонке 3 для (b) вы можете установить:
= : <37> Процент вероятности, что защита цели уменьшится при атаке этого существа.
В колонках 4...14 для (b) вы можете установить:
Любое целое число в диапазоне 0...100. Это процент, сколько защиты снимется при атаке. Для Чудищ, Древних Чудищ и Призрачных Чудищ вы можете изменить их бонус снижения защиты с помощью этой способности вверх или вниз. Если вы не устанавливаете этот бонус существу, используются по умолчанию (40 для Чудищ, 80 для Древних Чудищ, 100 для Призрачных Чудищ). Пример усиления бонуса Древних Чудищ: 97 b = 80 82 85 ...

3) Блок (B) <66>

В колонке 3 для (B) вы можете установить:
+ (или =) : <43> (или <61>) Процентный шанс (0...100) на срабатывание способности.
В колонках 4...14 для (B) вы можете установить:
Любое целое число от 0 до 100. Это процентный шанс на срабатывание блока.

4) Колдует не-целевое заклинание (c) <99>

После любой атаки (рукопашной или дальней) имеется шанс, что это заклинание будет наколдовано на целевое существо на три раунда, независимо от иммунитета к заклинанию и того, имеется ли оно уже у врага.
Замечание: если вы даете эту способность несколько раз (с одним или с разными заклинаниями), максимум будет наколдовано одно заклинание на действие. Включаются эффекты самих существ, такие как Проклятье Черных Рыцарей, Слабость Змиев или Болезнь Зомби. Если вы имеете 3 заклинания с шансом 50% каждое, только первое заклинание будет срабатывать (в отличие от других способностей, где может работать любое из них). Если вам нужно более одно заклинания, вы можете также использовать способности (p), (j), (J), (a), (k) или (K). Они все могут быть комбинированы для большего эффекта.
В колонке 3 для (c) вы можете установить:
#xx : колдует заклинание xx
Доступны следующие заклинания:
78: снять полезные заклинания
42: Проклятье
45: Слабость
47: Разрушающий луч
50: Печаль
52: Неудача
54: Замедление
59: Берсерк
60: Гипноз
61: Забывчивость
62: Слепота
71: Яд
73: Болезнь
75: Старость
80: Кислотное дыхание
В колонках 4...14 для (c) вы можете установить:
Любое целое число от0 до 100. Это будет процентным шансом срабатывания заклинания.
5) Снижает цену заклинаний (C) <67>
В колонке 3 для (C) вы можете установить:
+ : <43> добавить бонус уменьшения стоимости магии. Для Магов и Архимагов значение по умолчанию равно 2. Для других существ - 0. Так, если вы установите +5, то для Магов значение будет 7, для других существ - 5.
= : <61> установить бонус снижения стоимости магии. Например, = 4 установит снижение требуемой маны на 4, независимо от типа существа
% : <37> процентный бонус снижения. Для Магов и Архимагов добавляется процент их обычного значения (например, % 50 добавит 50% к 2, т.е. 1). Для других существ обычное значение = 0, т.е. на них команда не возымеет действия.
В колонках 4...14 для (C) вы можете установить:
Любое целое число от 0 до 255.

6) Бонус защиты (d) <100>

В колонке 3 для (d) вы можете становить:
+ : <43> добавить бонус к обычному бонусу защиты при выборе этого действия
= : <61> определенный бонус защиты при действии "защищаться". Вы можете установить бонус больше или меньше стандартного.
% : <37> процентный бонус к защите при действии "защищаться", например, если стек имеет защиту 20, бонус 75% добавит 15 защиты при действии "защищаться"
В колонках 4...14 для (d) вы можете установить:
Любое целое значение.

7) Двойной урон Смертельным ударом (e) <101>

В колонке 3 для (c) вы можете установить:
+ : <43> добавить бонус к шансу Смертельного удара как процент (0...100). Рыцари Смерти имеют базовый шанс 20%, все другие - 0%.
= : <61> установить процент выпадения Смертельного удара (0...100)
% : <37> процентный бонус к шансу Смертельного удара. Для Рыцарей Смерти добавляет процент к их текущему значению (к примеру, для Рыцарей Смерти % 50 добавит 50% от 20, т.е. 10, итого они получат шанс 30%). Для других существ значение = 0, так что % не будет иметь эффекта.
В колонках 4...14 для (e) вы можете установить:
Любое целое значение от 0 до 255.

8) Смертельный взгляд (E) <69> [работает только для Могучих Горгон и Кошмаров]

Если вы даете бонус этим существа, вы должны установить целую линию с обычным шансом срабатывания.
В колонке 3 для (E) вы можете установить:
+ (или =) : <43> (или <61>) Процентный шанс (0...100) для срабатывания способности.
В колонках 4...14 для (E) вы можете установить:
Любое целое значение от 0 до 100.

9) Флаговые способности 1 (f)

В колонке 3 для (f) вы можете установить:
F : <70> Полет. Если существо не имеет анимации полета, оно будет просто ходить сквозь препятствия (например, Призрачные Чудища)
S : <83> Стрельба. Если существо не имеет анимации стрельбы, ничего не произойдет. Сейчас, единственное существо, которое обычно не стрелет, но имеет анимацию стрельбы, это Кентавры и Капитаны кентавров. Используйте только 0 и 1 для них, не 2.
B : <66> Дыхание дракона. Дает существу атаку дракона - в рукопашной поражает целевой стек и который расположен за ним.
L : <76> Живой.
1 : <49> Король 1. Существо с этим флагом уязвимо к Базовому Палачу
2 : <50> Король 2. Существо с этим флагом уязвимо к Продвинутому Палачу
3 : <51> Король 3. Существо с этим флагом уязвимо к Экспертному Палачу
P : <80> Иммунитет к заклинаниям разума
E : <69> Нет пенальти рукопашной для стреляющий существ.
I : <73> Иммунитет к заклинаниям Огня
D : <68> Двойной удар. Работает для рукопашников и стрелков.
R : <82> Безответный. Противники не отвечают на атаки этого существа
M : <77> Невосприимчив к морали. Существо не получает эффектов от хорошей или плохой морали в битве.
U : <85> Нежить. Неживые существа могут быть оживлены заклинанием Поднять мертвецов. "Иммунитет к заклинаниям разума" и "Невосприимчив к морали" должны быть установлены отдельно.
A : <65> Атакует всех вокруг. Существо атакует всех противников рядом с собой.
G : <71> Дракон. Существо будет получать бонусы от Пузырька с Кровью Драконов и похожих вещей.
В колонке 4...14 для (f) вы можете установить:
0 : Нет способности. Существо не имеет способности и она будет удалена, если имеется.
1 : имеет способность. Существо получает способность, если не имело его ранее.
2 : не изменять значения способности. Если существо уже имеет способность, она останется. Если же у него ее не было, то и не будет.

10) Флаговые способности 2 (f)

В колонке 3 для (f) вы можете установить:
b : <98> Удар и возвращение. Любое существо, которое передвинулось для рукопашной атаки, возвратится на стартовый квадрат после атаки (как Гарпии). Замечание: вы не можете убрать эту способность у Гарпий, Гарпий-Ведьм и Драконов Тьмы.
c : <99> Разбег. Добавляет 5% урона на каждый пройденный квадрат до цели (как Чемпионы)
f : <102> Бесстрашие. Существо невосприимчиво к способности Страх.
m : <109> Всегда положительная мораль.
r : <114> Возрождение. 20% существ будут воскрешены после смерти всех существ.
Для этой способности вы должны также установить количество воскрешений способностью P.
Например, позволим Копейщикам Возрождаться 99 раз:
0 f r 1 1 ...
0 P = 99 99 99 ...
s : <115> Стреляет вплотную. Позволяет существам-стрелкам использовать стрельбу, находясь вплотную к протвнику.
u : <117> Аура Единорога сопротивления магии. Добавляет 20% к сопротивлению магии все существам вокруг существа с этой способностью.
В колонках 4...14 для (f) вы можете установить:
0 : Нет способности. Существо не имеет способности и она будет удалена, если имеется.
1 : имеет способность. Существо получает способность, если не имело его ранее.
2 : не изменять значения способности. Если существо уже имеет способность, она останется. Если же у него ее не было, то и не будет.

11) Страх (F) <70>

В колонке 3 для (F) вы можете установить:
+ (или = ) : <43> (или <61> ) Дает способность Страха или нет. замечание: вы не можете забрать способность Страха у существ, уже имеющих его (например, у Лазурных Драконов).
В колонках 4...14 для (F) вы можете установить:
0 (не давать способность Страха)
1 (дать способность Страха)

12) Сопротивление магии (Голем) (g) <103>

Снижает урон, наносимый направленными ударными заклинаниями. Если вы установите эту способность существу, уже имеющему ее (например, Голему), вам нужно скорректировать его для всех уровней. Пример для Золотых големов (несут только 15% урона), вы должны установить линию:
116 g % 85 90 95 ...
Или если вы хотите понизить его сопротивление, попробуйте
116 g % 80 85 90 ...
Если вы не установите эту бонусную линию существу, уже имеющему свое сопротивление, она будет использоваться как обычное сопротивление.
В колонке 3 для (g) вы можете установить:
% : <37> Процент сопротивления магии

13) Дополнительные стражи Санта-Гремлина (G) <71>

Используйте эту способность для увеличения охраны вокруг Санта-гремлинов, или измените стражей на улучшенных (например, Алебардщиков для героя Замка, Мастер-гремлинов для героя Башни и т.д.)
Замечание: эта способность не может быть использована другим существо, кроме Санта-Гремлина.
В колонке 3 для (G) вы можете установить:
= : <61> используйте для улучшения стражей
+ : <43> используйте для добавления определенного числа стражей
% : <37> используйте для добавления стражей на проценты
В колонка 4...14 для (G) вы можете установить:
Для = в колонке 3, используйте 0 или 1. 1 улучшит стражей.
Для + используйте любое целое значение от 0 до 255. Это будет количество добавленных стражей.
Для % используйте любое целое значение от 0 до 255. Это процент дополнительных охранников в каждом стеке.

14) Ненависть (h) <104>

Вы можете также установить снижение вместо усиления атаки, но тексты боевых сообщений не изменятся от этого.
В колонке 3 для (h) вы можете установить:
#xx : наносит экстра (или пониженный) урон существу xx.
В колонках 4...14 для (h) вы можете установить:
1...200 (10% дополнительного урона на 1)
или 201...210 (10% меньше урона на 1)
Пример:
-1 h #52 5 ...
Означает, что все существа уровня 1 (-1) ненавидят (h) Эфритов (#52) и наносят им 50% дополнительного урона (5*10)
-2 h #53 203 ...
Означает, что все существа уровня 2 (-2) "ненавидят" Эфритов-Султанов и наносят на 30% меньше урона ((200-203)*10)

15) Нет пенальти дальности (i) <105>

В колонке 3 для (i) вы можете установить:
+ ( или = ) : <43> (или <61> ) Дать способность Нет пенальти дальности или нет. Замечание: вы не можете забрать эту способность у существ, уже имеющих ее (например, Снайперов).
В колонках 4...14 для (i) вы можете установить:
0 (не давать способность)
1 (дать способность)

16) Колдует Базовое заклинание перед атакой (j) <106>

Перед атакой (рукопашной или дальней), имеется шанс, что это заклинание будет наколдовано на цель на 3 раунда, независимо от наличия у нее иммунитета.
Замечание: если вы даете эту способность несколько раз (с различными или одинаковыми заклинаниями), максимум одно заклинание сработает за действие. Если вы имеете 3 заклинания с шансом 50% каждое, любое из них может быть наколдовано на цель после атаки. Если вам нужно больше заклинаний, вы можете использовать способности (c), (p), (J), (a), (k) или (K). Они могут быть скомбинированы для большего эффекта.
В колонке 3 для (j) вы можете установить:
#xx : колдует заклинание xx
Для этой способности доступны почти все боевые заклинания, включая такие как Зыбучий песок и Огненная стена и Вызов Элементаля. Дружественные заклинания (к примеру, Щит) будет наколдован как Массовый щит на все союзные войска каждый раз, когда существо атакует противника, но если заклинание не имеет массового эффекта (к примеру, Антимагия, Волшебное Зеркало, Огненный Щит), он наколдует на врага. Заклинание Клона (65) создаст клон вражеского существа под вашим контролем, но будьте осторожны - не давайте способность на уровне 0, потому что игра вылетит, если клон наколдуется со стороны без героя. Корни (72) связывают врага и не дают ему двигаться, пока связующий не отойдет от цели либо не умрет.
Заклинания, которые не могут быть использованы и вызовут вылет игры или отсутствие действия, включают: Воскрешение, Поднять Нежить, Жертва, Облако Смерти, Гром Титанов и Смертельный взгляд. Телепорт работает, но делает битву невыигрышной для этого игрока - целевой стек "исчезает", но все еще считается в битве. Он не может двигаться или атаковать в рукопашную (или быть атакованным), но если он стрелок, он все еще может стрелять. Заклинания Паралич (74), Окаменение (70) или Слепота (62) имеют малую полезность со способностью j, т.к. их эффект тут же отменяется атакой: используйте для них способность a.
В колонках 4...14 для (j) вы можете установить:
Любое целое значение от 0 до 100. Это процентный шанс на срабатывание заклинания.

17) Колдует Продвинутое заклинание перед атакой (J) <74>

Перед атакой (рукопашной или дальней), имеется шанс, что это заклинание будет наколдовано на цель на 3 раунда, независимо от наличия у нее иммунитета.
Замечание: если вы даете эту способность несколько раз (с различными или одинаковыми заклинаниями), максимум одно заклинание сработает за действие. Если вы имеете 3 заклинания с шансом 50% каждое, любое из них может быть наколдовано на цель после атаки. Если вам нужно больше заклинаний, вы можете использовать способности (c), (p), (j), (a), (k) или (K). Они могут быть скомбинированы для большего эффекта.
В колонке 3 для (J) вы можете установить:
#xx : колдует заклинание xx
Для этой способности доступны почти все боевые заклинания, включая такие как Зыбучий песок и Огненная стена и Вызов Элементаля. Дружественные заклинания (к примеру, Щит) будет наколдован как Массовый щит на все союзные войска каждый раз, когда существо атакует противника, но если заклинание не имеет массового эффекта (к примеру, Антимагия, Волшебное Зеркало, Огненный Щит), он наколдует на врага. Заклинание Клона (65) создаст клон вражеского существа под вашим контролем, но будьте осторожны - не давайте способность на уровне 0, потому что игра вылетит, если клон наколдуется со стороны без героя. Корни (72) связывают врага и не дают ему двигаться, пока связующий не отойдет от цели либо не умрет.
Заклинания, которые не могут быть использованы и вызовут вылет игры или отсутствие действия, включают: Воскрешение, Поднять Нежить, Жертва, Облако Смерти, Гром Титанов и Смертельный взгляд. Телепорт работает, но делает битву невыигрышной для этого игрока - целевой стек "исчезает", но все еще считается в битве. Он не может двигаться или атаковать в рукопашную (или быть атакованным), но если он стрелок, он все еще может стрелять. Заклинания Паралич (74), Окаменение (70) или Слепота (62) имеют малую полезность со способностью j, т.к. их эффект тут же отменяется атакой: используйте для них способность a.
В колонках 4...14 для (J) вы можете установить:
Любое целое значение от 0 до 100. Это процентный шанс на срабатывание заклинания.

18) Колдует Базовое заклинание после атаки (k) <107>

После любой рукопашной атаки имеется шанс, что на цель наколдуется это заклинание на 3 раунда, независимо от присутствия иммунитета.
Замечание 1: эта способность не работает для стрелковых атак. Однако она сработает, если стрелок перейдет в рукопашную. Вы можете использовать (p), (c), (j) или (J) для колдовства при стрелковой атаке.
Замечание 2: если вы даете эту способность несколько раз (с различными или одинаковыми заклинаниями), максимум одно заклинание сработает за действие. Если вы имеете 3 заклинания с шансом 50% каждое, любое из них может быть наколдовано на цель после атаки. Если вам нужно больше заклинаний, вы можете использовать способности (c), (p), (j), (J), (a) или (K). Они могут быть скомбинированы для большего эффекта.
В колонке 3 для (k) вы можете установить:
#xx : колдует заклинание xx
Для этой способности доступны почти все боевые заклинания, включая такие как Зыбучий песок и Огненная стена и Вызов Элементаля. Дружественные заклинания (к примеру, Щит) будет наколдован как Массовый щит на все союзные войска каждый раз, когда существо атакует противника, но если заклинание не имеет массового эффекта (к примеру, Антимагия, Волшебное Зеркало, Огненный Щит), он наколдует на врага. Заклинание Клона (65) создаст клон вражеского существа под вашим контролем, но будьте осторожны - не давайте способность на уровне 0, потому что игра вылетит, если клон наколдуется со стороны без героя. Корни (72) связывают врага и не дают ему двигаться, пока связующий не отойдет от цели либо не умрет.
Заклинания, которые не могут быть использованы и вызовут вылет игры или отсутствие действия, включают: Воскрешение, Оживить Нежить, Жертва, Облако Смерти, Гром Титанов и Смертельный взгляд. Телепорт работает, но делает битву невыигрышной для этого игрока - целевой стек "исчезает", но все еще считается в битве. Он не может двигаться или атаковать в рукопашную (или быть атакованным), но если он стрелок, он все еще может стрелять. Также можно дать заклинание Паралич (74) и Окаменение (70).
В колонках 4...14 для (k) вы можете установить:
Любое целое значение от 0 до 100. Это процентный шанс срабатывания заклинания.

19) Колдует Продвинутое заклинание после атаки (K) <75>

После любой рукопашной атаки имеется шанс, что на цель наколдуется это заклинание на 3 раунда, независимо от присутствия иммунитета.
Замечание 1: эта способность не работает для стрелковых атак. Однако она сработает, если стрелок перейдет в рукопашную. Вы можете использовать (p), (c), (j) или (J) для колдовства при стрелковой атаке.
Замечание 2: если вы даете эту способность несколько раз (с различными или одинаковыми заклинаниями), максимум одно заклинание сработает за действие. Если вы имеете 3 заклинания с шансом 50% каждое, любое из них может быть наколдовано на цель после атаки. Если вам нужно больше заклинаний, вы можете использовать способности (c), (p), (j), (J), (a) или (k). Они могут быть скомбинированы для большего эффекта.
В колонке 3 для (K) вы можете установить:
#xx : колдует заклинание xx
Для этой способности доступны почти все боевые заклинания, включая такие как Зыбучий песок и Огненная стена и Вызов Элементаля. Дружественные заклинания (к примеру, Щит) будет наколдован как Массовый щит на все союзные войска каждый раз, когда существо атакует противника, но если заклинание не имеет массового эффекта (к примеру, Антимагия, Волшебное Зеркало, Огненный Щит), он наколдует на врага. Заклинание Клона (65) создаст клон вражеского существа под вашим контролем, но будьте осторожны - не давайте способность на уровне 0, потому что игра вылетит, если клон наколдуется со стороны без героя. Корни (72) связывают врага и не дают ему двигаться, пока связующий не отойдет от цели либо не умрет.
Заклинания, которые не могут быть использованы и вызовут вылет игры или отсутствие действия, включают: Воскрешение, Оживить Нежить, Жертва, Облако Смерти, Гром Титанов и Смертельный взгляд. Телепорт работает, но делает битву невыигрышной для этого игрока - целевой стек "исчезает", но все еще считается в битве. Он не может двигаться или атаковать в рукопашную (или быть атакованным), но если он стрелок, он все еще может стрелять. Также можно дать заклинание Паралич (74) и Окаменение (70).
В колонках 4...14 для (K) вы можете установить:
Любое целое значение от 0 до 100. Это процентный шанс срабатывания заклинания.

20) Вызывает клон (l) <108>

Вызывает клон существа на поле боя с начала второго раунда и снова каждый раунд, пока есть свободное место вокруг существа. Количество существ в клонированном стеке подсчитывается как процент от количества существ-вызывателей.
Вызванный стек может располагаться так:
.#.
.X#
.#.
. - пустая клетка
# = возможная позиция для вызванного клона
X = существо со способностью Вызова
Вызванный стек не появляется на препятствии, но может появиться на мертвом существе.
В колонке 3 для (l) вы можете установить:
#xx : xx = тип существа для вызова. Существо может быть того же типа, что и вызыватель, или любым другим.
В колонках 4...14 для (l) вы можете установить:
любое целое значение от 0 до 255. Это число существ, которые будут появляться в вызванном стеке в процентном соотношении к вызывателям. Так, если вы установите 25, и вызовется 12 существ, стек-вызыватель будет равен 3 (25% от 12 = 3).

21) Уклонение (L) <76>

Вы можете установить его двумя путями:
1 ) Фиксированное уклонение с переменным шансом срабатывания
2) Фиксированный процентный шанс срабатывания с переменным уклонением
Для первого метода модификатор должен быть между 0 и 99, и это процент урона минус 1. Так, #33 означает, что урон будет снижен на 34%. Бонус уровня - это процентный шанс срабатывания способности против атак.
Для второго метода модификатор должен быть между 100 и 200, и это процент срабатывания минус 100. Так, #133 означает, что способность будет иметь шанс срабатывания 33% против атак. Бонус уровня - это процент снижения урона.
Пример:
L #33 0 10 20 ...
означает, что уклонение от 33% урона будет работать с шансом 0% на уровне 0, 10% на уровне 1 и т.д.
L #133 0 10 20 ...
означает, что шанс срабатывания - 33% и снижает урон на 0% на уровне 0, 10% на уровне 1 и т.д.
Вы можете использовать только один тип уклонения для существа, но не оба, но существо может также иметь способность полного блока в дополнение к Уклонению.
В колонке 3 для (L) вы можете установить:
#xx : xx = процент урона минус один, если 0...99
#xx : xx = шанс срабатывания способности минус 100, если 100...200
В колонках 4...14 для (L) вы можете установить:
Любое целое значение от 0 до 100. для метода 1 это шанс срабатывания способности, для метода 2 - процент снижения урона.

22) Нет пенальти препятствий (o) <111>

В колонке 3 для (o) вы можете установить:
+ ( или = ) : <43> ( или <61> ) Дать или нет способность Нет пенальти препятствий.
Замечание: вы не можете забрать эту способность у существ, уже имеющих ее (например, Архимагов)
В колонках 4...14 для (o) вы можете установить:
0 (не давать бонус)
1 (дать бонус)

23) Колдует Экспертное (массовое) заклинание перед атакой (p) <112>

Перед атакой (рукопашной или дальней), имеется шанс, что это заклинание будет наколдовано на цель на 3 раунда, независимо от наличия у нее иммунитета.
Замечание: если вы даете эту способность несколько раз (с различными или одинаковыми заклинаниями), максимум одно заклинание сработает за действие. Если вы имеете 3 заклинания с шансом 50% каждое, любое из них может быть наколдовано на цель после атаки. Если вам нужно больше заклинаний, вы можете использовать способности (c), (J), (j), (a), (k) или (K). Они могут быть скомбинированы для большего эффекта.
В колонке 3 для (p) вы можете установить:
#xx : колдует заклинание xx
Для этой способности доступны почти все боевые заклинания, включая такие как Зыбучий песок и Огненная стена и Вызов Элементаля. Дружественные заклинания (к примеру, Щит) будет наколдован как Массовый щит на все союзные войска каждый раз, когда существо атакует противника, но если заклинание не имеет массового эффекта (к примеру, Антимагия, Волшебное Зеркало, Огненный Щит), он наколдует на врага. Заклинание Клона (65) создаст клон вражеского существа под вашим контролем, но будьте осторожны - не давайте способность на уровне 0, потому что игра вылетит, если клон наколдуется со стороны без героя. Корни (72) связывают врага и не дают ему двигаться, пока связующий не отойдет от цели либо не умрет.
Заклинания, которые не могут быть использованы и вызовут вылет игры или отсутствие действия, включают: Воскрешение, Поднять Нежить, Жертва, Облако Смерти, Гром Титанов и Смертельный взгляд. Телепорт работает, но делает битву невыигрышной для этого игрока - целевой стек "исчезает", но все еще считается в битве. Он не может двигаться или атаковать в рукопашную (или быть атакованным), но если он стрелок, он все еще может стрелять. Заклинания Паралич (74), Окаменение (70) или Слепота (62) имеют малую полезность со способностью p, т.к. их эффект тут же отменяется атакой: используйте для них способность a.
В колонках 4...14 для (p) вы можете установить:
Любое целое значение от 0 до 100. Это процентный шанс на срабатывание заклинания.

24) Регенерация (r) <114>

Эта способность позволяет установить процентный шанс для существа регенерировать потерянное здоровья каждый раунд. Вы также можете выбрать максимальное количество здоровья для восстановления (до 255).
В колонке 3 для (r) вы можете установить:
#xx : xx = процентный шанс (0...100) для существа регенерировать потерянное здоровья в начале каждого раунда.
В колонках 4...14 для (r) вы можете установить:
Любое целое число от 0 до 255. Это максимум здоровья, которое будет регенерировано, если произойдет регенерация.

25) Дополнительные ответы (R) <82>

В колонке 3 для (R) вы можете установить:
+ : <43> Добавить к количеству уже имеющихся ответов существа (например, +1 для Грифонов даст им 3 ответа на раунд)
= : <61> Установить количество ответов на каждый раунд
В колонках 4...14 для (R) вы можете установить:
Любое целое значения от 0 до 254 (используйте 254 как своего рода бесконечные ответы)

26) Зачаровыван заклинанием (s) <115>

Накладывает на существо заклинание (например, Палач) на всю битву (999 раундов). Замечание: заклинание может быть снято.
Вы также можете установить заклинания, воздействующие на всю вашу армию (например, Массовое Благословление).
В колонке 3 для (s) вы можете установить:
#xx : наложить заклинание xx
Любое заклинание может быть наложено на существ, даже не влияющие на битву вроде Вызова лодки или Маскировки.
Однако, только эти заклинания будут полезны:
xx = 27 : Щит
xx = 28 : Воздушный щит
xx = 29 : Огненный щит
xx = 30 : Защита от Воздуха
xx = 31 : Защита от Огня
xx = 32 : Защита от Воды
xx = 33 : Защита от Земли
xx = 34 : Антимагия
xx = 36 : Волшебное зеркало
xx = 41 : Благословление
xx = 43 Жажда крови
xx = 44 : Точность
xx = 46 : Каменная кожа
xx = 48 : Молитва
xx = 49 : Радость
xx = 51 : Удача
xx = 53 : Ускорение
xx = 55 : Палач
xx = 56 : Бешенство
xx = 58 : Контрудар
В колонках 4...14 для (s) вы можете установить:
0 : нет магии
1 : колдует Базовую версию
2 : колдует Продвинутую версию
3 : колдует Экспертную версию, но "массовое" заклинание воздействует лишь на это существо
4 : колдует Экспертную версию на всю армию. Иммунитет игнорируется
5 : колдует Экспертную версию на всю армию, кроме иммунных к этому заклинанию.
6 : колдует Экспертную версию на всю армию, кроме иммунных к этому заклинанию, но игнорирует иммунитет существа с этой способностью.

27) Вызывает существо один раз (u) <117>

Будет вызывать существ на поле боя с начала второго раунда, если рядом есть пустой квадрат для вызванного существа.
Вызванный стек может располагаться так:
.#.
.X#
.#.
. - пустая клетка
# = возможная позиция для вызванного существа
X = существо со способностью Вызова
Вызванное существо не появляется на препятствии, но может появиться на мертвом существе.
В колонке 3 для (u) вы можете установить:
#xx : xx = тип существа для вызова. Существо может быть того же типа, что и вызыватель, или любым другим.
В колонках 4...14 для (u) вы можете установить:
любое целое значение от 0 до 255. Это число существ, которые будут появляться в вызванном стеке в процентном соотношении к вызывателям. Так, если вы установите 25, и вызовется 12 существ, стек-вызыватель будет равен 3 (25% от 12 = 3).

28) Вызывает существо несколько раз (U) <85>

Существо будет вызывать существ на поле боя несколько раз, начиная со второго раунда и снова через каждые четыре раунда (например, раунды 2, 6, 10, 14, и т.д.), если рядом есть пустая клетка. Количество существ подсчитывается как процент от числа вызывателей.
Вызванный стек может располагаться так:
.#.
.X#
.#.
. - пустая клетка
# = возможная позиция для вызванного существа
X = существо со способностью Вызова
Вызванное существо не появляется на препятствии, но может появиться на мертвом существе.
В колонке 3 для (U) вы можете установить:
#xx : xx = тип существа для вызова. Существо может быть того же типа, что и вызыватель, или любым другим.
В колонках 4...14 для (U) вы можете установить:
любое целое значение от 0 до 255. Это число существ, которые будут появляться в вызванном стеке в процентном соотношении к вызывателям. Так, если вы установите 25, и вызовется 12 существ, стек-вызыватель будет равен 3 (25% от 12 = 3).

29) Иммунитет к магии (w) <199>

Дает иммунитет к определенному заклинанию, всем заклинаниям определенного уровня и ниже (например, все заклинания уровня 1, или все уровней 4, 3, 2 и 1), или ко всем заклинаниям определенной школы магии (например, всем заклинаниям Воды). Также есть несколько групп заклинаний, к которым также может быть дан иммунитет (например, иммунитет к Молниям или иммунитет к Огненному урону)
В колонке 3 для (w) вы можете установить:
0 : <48> Убирает все иммунитеты к союзным заклинаниям. Вы можете использовать эту способность с другими иммунитетами, например, чтобы Черные Драконы не сопротивлялись дружественным заклинаниям, кроме магии Воды. Используйте сначала 0, затем определенное сопротивление.
Пример:
83 w 0 1 1 1 1 ...
83 w w 1 1 1 1 ...
1 : <49> Иммунитет ко всем заклинаниям уровня 1, кроме союзных.
2 : <50> Иммунитет ко всем заклинаниям уровней 1 и 2, кроме союзных.
3 : <51> Иммунитет ко всем заклинаниям уровней 1, 2 и 3, кроме союзных.
4 : <52> Иммунитет ко всем заклинаниям уровней 1, 2, 3 и 4, кроме союзных.
5 : <53> Иммунитет ко всем заклинаниям уровней 1, 2, 3, 4 и 5, кроме союзных.
6 : <54> Иммунитет ко всем заклинаниям уровня 1, включая союзные.
7 : <55> Иммунитет ко всем заклинаниям уровней 1 и 2, включая союзные.
8 : <56> Иммунитет ко всем заклинаниям уровней 1, 2 и 3, включая союзные.
9 : <57> Иммунитет ко всем заклинаниям уровней 1, 2, 3 и 4, включая союзные.
: : <58> Иммунитет ко всем заклинаниям уровней 1, 2, 3, 4 и 5, включая союзные.
B : <66> Иммунитет к Слепоте
C : <67> Иммунитет к заклинаниям холода (Ледяная молния и Кольцо Холода)
D : <68> Иммунитет ко всем направленным ударным заклинаниям, кроме:
Волшебная стрела, Удар Молнии, Цепная Молния, Метеоритный дождь, Взрыв, Огненный шар, Армагеддон, урон Огненного Щита, Инферно, Ледяная молния и Кольцо холода.
H : <72> Иммунитет к Гипнозу
I : <73> Иммунитет к Взрыву
K : <75> Иммунитет к Берсерку
L : <76> Иммунитет к заклинаниям Молнии : Удар молнии, Гром Титанов, Цепная молния.
m : <109> Иммунитет к Слепоте, Берсерку, Печали, Гипнозу и Забывчивости.
M : <77> Иммунитет к Метеоритному дождю
N : <78> Иммунитет к заклинанию Снять полезные заклинания (например, Змии)
O : <79> Иммунитет ко всем ударным магиям Огня (кроме Волшебной стрелы) :
Огненная стена, Огненный шар, Мины, Армагеддон, урон Огненного щита, Инферно.
p : <112> Иммунитет к враждебному Рассеиванию
P : <80> Иммунитет к любому Рассеиванию
R : <82> Иммунитет к Армагеддону
S : <83> Иммунитет к замедлению
A : <65> Иммунитет ко всем заклинаниям Воздуха, кроме союзных
E : <69> Иммунитет ко всем заклинаниям Земли, кроме союзных
F : <70> Иммунитет ко всем заклинаниям Огня, кроме союзных
W : <87> Иммунитет ко всем заклинаниям Воды, кроме союзных
a : <97> Иммунитет ко всем заклинаниям Воздуха, включая союзные
e : <101> Иммунитет ко всем заклинаниям Земли, включая союзные
f : <102> Иммунитет ко всем заклинаниям Огня, включая союзные
w : <119> Иммунитет ко всем заклинаниям Воздуха, включая союзные.
В колонках 4...14 для (w) вы можете установить:
0 : не имеет иммунитета
1 : имеет иммунитет

30) Сопротивление магии (W) <87>

Дает шанс на полное избежание любого вражеского заклинания. Также включаются заклинания областного эффекта, как Метеоритный дождь (исключение: сопротивление не срабатывает для Цепной молнии, если существо не целевой стек).
В колонке 3 для (W) вы можете установить:
+ : <43> Добавить бонус к шансу сопротивления (0...100)
= : <61> Установить шанс сопротивления (0...100)
% : <37> Процентный бонус к шансу сопротивления. Для существ с природным сопротивлением добавляется процент их обычного сопротивления (например, для Гномов % 50 добавит 50% от 20, т.е. 10, итого они получат всего 30% сопротивления). Другие существа имеют природное сопротивление 0, так что команда не возымеет эффекта.
В колонках 4...14 для (W) вы можете установить:
Любое целое значение от 0 до 255.


Tournament Edition

Tournament Edition, TE

НММ ТЕ - это Heroes of Might and Magic Tournament Edition - проект на основе Heroes 3.5 WoG. История проекта такова. После выхода третьей части игры Heroes of Might and Magic компании New World Computing, группа энтузиастов во главе со Славой Сальниковым aka ZVS разработала add-on, получивший название HoMM3.5 In the Wake of Gods (сокращенно - WoG). При его создании был разработан специальный язык программирования - ERM (Event Related Model), с помощью которого любой может вносить в игру дальнейшие изменения. Но WoG, как и вся серия HMM, больше ориентирован на игру против компьютерных противников, на создание и прохождение увлекательных карт и кампаний. Поэтому весной 2002 года петербургские игроки A_K_Zyzop (Александр Карпеко, один из WoG-Team) и Horn (Алекс Виноградов) решили создать еще одну версию игры, предназначенную для проведения турниров (как очных, так и заочных) по HMM. Проект развивался неравномерно, два раза практически останавливался, но с выходом WoG версии 3.58f появились новые возможности, которые подстегнули развитие проекта. Немаловажной явилась и поддержка проекта лидером WoG-team ZVS.

Проект призван собрать все лучшее из Героической Серии и, добавив новые возможности, получить интересную сбалансированную мультиплеерную стратегию.
Три "кита" HoMM TE - это разнообразие стратегий, баланс и удобство интерфейса. Все вносимые в игру изменения преследуют достижение именно этих целей.

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


Обучение

Разделы: 1 2 3 4 5 6 7 8

Обучение

Основы
общий формат

Все триггеры, ресейверы и инструкции имеют общий формат: Заголовок [:Тело] ;
Опциональные элементы - в квадратных скобках. В частности, триггеры не имеют тела.
Заголовок содержит информацию о цели команды: Триггер (T), Ресейвер (Р) или Инструкция (И), также он содержит дополнительную информацию об исполняемом объекте.
Тело содержит исполняемые ERM-команды, соответствующие типу объекта (Р или И).
Все ERM команды (ресейверы, инструкции) должны иметь как минимум один параметр для корректной работы.

Заголовок имеет следующий формат: !{?|!|#}AB [ Идентификатор ] [ Условия ]
Выберите один из разделенных "|" элементов из скобок ( '?','!','#'- означают Триггер, Ресейвер, Инструкцию соответственно ).
'AB' определяет тип Т, Р или И (см. дальше).
Идентификатор - номер определенного объекта.
Условия - условия "выполнения" дальнейшей части (тела) для Р и И или всех ресейверов триггера.
Если условий нет, Т, Р, И выполняются без проверок.

Идентификаторы имеют следующий формат: N[/N[/N[...]]]
Символы 'N' означают целые числа, значение которых зависит от типа Т, Р, И (см. дальше).

Условия имеют следующий формат: &N[/N[/N[...]]]
Символ '&' отделяет числа условия от идентификатора.
Выполнение может зависеть от флагов (Ф) (общее их число - 1000). Если вы желаете сделать Т, Р или И зависимой от флага, вы должны вставить его номер (1..1000) вместо N.
Если номер флага положителен, тогда условие - "флаг активирован (Истина)", если отрицательный - "флаг деактивирован (Ложь)".
Сравнение переменных также может использоваться как условие выполнения. См. ресейвер VR для большей информации о переменных.

Тело имеет формат, зависящий от типа T, Р, И (см. дальше).

Если параметр команды показан как $ - значение можно сохранить в переменную. Если показан как # - ее можно только установить, но не прочитать. Если он показан как ?$ - его можно лишь прочитать, но не установить.

Пример:
!!LE10/33/1&1/-2/5:E500 O2 L0;
Это ресейвер типа LE (событие на карте) с координатами X=10, Y=33, уровень=подземелье. Тело имеет 3 команды: E, O и L (см: ресейвер LE). Эти команды (в теле) выполнятся, только лишь если в момент выполнения 1ый и 5ый флаги будут Истина, а 2 - Ложь. Иначе, ничего не выполнится.

Триггеры, ресейверы и инструкции

Когда игрок активирует триггер, он вызывает один или множество ресейверов. Триггером может быть событие, объект или герой-посетитель, или это может быть ERM-функция, вызываемая другим ERM-кодом или даже таймер, установленный на срабатывание в определенный интервал времени (например, каждые 14 дней). Параметры триггера или объекта не влияют на предназначение триггера. Действие триггера должно быть описано во временном событии. Инструкции используют практически тот же формат, что и ресейверы, за исключением того, что отличаются в начале кода. В отличие от ресейверов, Инструкции выполняются лишь единожды, при загрузке карты.

Для детальной информации о триггерах, см. Триггеры.
Для детальной информации о ресейверах, см. Ресейверы.

Разное
Вы не можете использовать ";" или "^" внутри текстовых сообщений (текст, заключенный в "^" выводится на экран).
Так, ^Это сообщение, понятно?^ правильно.
А ^Это сообщение; понятно?^ некорректно.

Как создать свой первый скрипт
ERM для чайников, {Qurqirish Dragon}

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

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

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

Наконец, вы должны дать имя событию и описанию скрипта.
Теперь вставьте скрипт в сообщение события. Вы можете делать скрипт прямо здесь или в скрипт-редакторе и затем вставлять его в окно события.
Если вы будете использовать скрипт-редактор, это поможет вам избежать ошибок кода:
1) Если вы сделаете какие-либо изменения в скрипте, снова сохраните его.
2) Выберите целый скрипт (Сtrl+A) и скопируйте его (Сtrl+C)
3) Идите в редактор карт, и вставляйте скрипт (Сtrl+V)

Если вы используете любой другой редактор (типа блокнота), чтобы написать скрипт, затем откройте скрипт-редактор, скопируйте туда скрипт и сохраните. Многие редакторы - особенно WordPad помещают невидимые символы и визуальные коды в файл, и это может привести к ошибкам ERM.

----------------------
Теперь собственно о скриптинге. Я приму за факт, что вы используете последнюю версию ERM-редактора, и включили подсветку команд (кнопка H у основания окна редактора). Кроме того, я не буду предполагать, знаете ли вы ЧТО-НИБУДЬ, из того, что я напишу здесь.

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

Например, я написал скрипт Карт Пророчества (Папка_героев/data/s/script34.erm) для игры с параметрами героя при начале сражения. К счастью, у меня были мои примечания относительно скрипта, и могу разделить их здесь. Заметьте, что когда я начинал скрипт, я прежде ВООБЩЕ не видел ERM-скриптинга.

Сначала я записал это:
Артефакт, который в начале каждой битвы дает от -1 до +4 очка случайного первичного навыка.
Это было целой идеей. Выглядит просто, правда? Я думал также. Затем я описал основные шаги:
Начало битвы - проверка на артефакт. Имеется?
нет - выход
да - установить флаг, выбрать случайный номер параметра (1, 2, 3, 4)

И так далее, только общий эскиз. Я больше не буду входить в детали, я только хотел показать вам, что желательно сделать перед скриптописанием. Поверьте - если вы сделаете это сразу, то дальше будет намного легче.
-------------------------
Теперь время писать код!
Первая строка скрипта:
ZVSE
Это говорит WoG, что это не простое событие, а скрипт. Без этой строки вся ваша работа будет игнорироваться игрой.
Все команды состоят из четырех символов, и одного из трех основных типов, не включая ZVSE. В редакторе скриптов команды подсвечиваются разными цветами.

Триггеры - команды, которые означают "Если что-то происходит в игре, я начинаю работу". Все триггеры начинаются со знаков !?
Например, возьмите эту линию кода из моего скрипта Карт (помните, скрипт 34):
!?BA0&v1321=1; [начало битвы]
Это первый триггер в моем скрипте. Не беспокойтесь о действии команды, я объясню действие попозже. Но заметьте точку с запятой в конце строки. Все ERM-команды оканчиваются точкой с запятой. После этого знака дальнейший текст считается комментарием, и показывается зеленым.

Ресейверы - команды, которые устанавливают, проверяют или изменяют что-либо в игре. Они не сработают, если перед ними нет триггера. Все ресейверы начинаются с !!
Пример:
!!BA:E?v1331; [проверить на мультиплеерную игру]
Опять заметьте точку с запятой в конце команды. В комментарии вы можете объяснить значение команды, но об этом позже.

Наконец, инструкции - как и ресейверы, за исключением того, что они работают только один раз - при начале карты. Они начинаются на !#
Пример:
!#UN:P34/?v1321; [скрипт включен?]
Для тех, кто смотрит на скрипт: отметьте, что есть и просто зеленые строки - комментарии. Для этого я использовал **. это необходимо, и другие авторы ERM используют в большинстве такой же метод. Пока вы не начинаете строку с команды, ERМ игнорирует линию.

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

Этот скрипт просто рассчитает, как часто герои посещали левый верхний угол верхнего уровня карты (координаты 0, 0, 0). Всякий раз, когда я ввожу команды, я всегда включаю ERM-помощь.

Первая линия, конечно:
ZVSE
Далее, мы должны установить счетчик на 0. Так как мы хотим начать счет с 0, нам нужна инструкция. Инструкция должна быть назначена на переменную (!#VR)
Прежде чем двигаться дальше, мы должны выбрать переменную для записи счета. Обычно вы должны сверяться со списком использованных переменных, находящихся там же, где и скрипты, и выбрать неиспользованную переменную. Но в целях обучения я буду всегда пользоваться v-переменными с малыми номерами. v-переменные - это те, которые вы будете использовать чаще всего. Я введу другие типы по необходимости.
Так, теперь используем команду:
!#VRv1:S0;
Теперь разберем. что есть что:
!#VR ...
Выполнить команду в начале карты, команда работает с переменными
... v1 ...
операция проходит над переменной v1
... : ...
Любая команда, которая что-либо делает, используется двоеточие для отделения команды от опции. Триггеры не имеют этого знака, но остальные - имеют.
... S0 ...
Выбрать опцию S для VR. Это сообщает, что вы хотите установить значение переменной. В данном случае мы устанавливает его на 0.
... ;
Как я упоминал выше, точка с запятой оканчивает команду.

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

Теперь установим триггер:
!?LE0/0/0;
Триггер LE - "Когда событие в данных координатах активируется..." Эти три числа - координаты соответственно x, y и уровня. Если вы откроете помощь для триггера !?LE, вы заметите, что также есть триггер !$LE (знак $ вместо ?). Это - "После того, как событие в координатах посещено...". Если событие на карте делает что-либо без ERM, вы можете запустить его до или после кода (соответственно !$ и !?). В нашем случае это не имеет значения, т.к. событие пустое.

Далее, теперь мы должны добавить единицу к значению. Для этого используем другую опцию команды VR, но теперь мы используем ресейвер (!! вместо !#):
!!VRv1:+1;
ERM использует + для указания действия прибавления. Таким образом, эта команда обозначает "добавить 1 к переменной v1". Другие математические операции:
уменьшение: используйте "-"
умножение: используйте "*"
деление: используйте ":"
для остатка от деления: используйте "%"
Заметьте, что кроме e-переменных все числа целые, т.е. 7, разделенное на 4, будет равняться 1, а не 1,75.

Наконец, мы должны показать сообщение игроку, в котором будет указано, какой раз посещается это место:
!!IF:M^Вы %V1 посетитель этого северо-западного угла поверхности!^;
IF - команда для диалогов с игроком. Они могут быть простыми, как обычное сообщение, или задавать вопросы, показывать картинки и даже давать выбор.
Опция M - "Показ сообщения". Есть только несколько ограничений того, что может быть в сообщении. Вы не можете использовать "^" или ";". Вы также должны быть осторожны с процентом. Если вы хотите показать %, вы должны напечатать %%.
Вы, вероятно, заметили, что в сообщении есть %. Если вы используете один %, то дальше должны написать, что (какую переменную) хотите показать. В данном случае %V1 (заметьте, что здесь вместо строчных букв используются заглавные): вместо этих символов будет показано значение переменной v1. Если вы посмотрите на ресейвер !!IF, вы увидите список команд для %.

Это весь скрипт. Так, объединяя все вместе, мы получаем следующее:
ZVSE
!#VRv1:S0;
[установить переменную v1 на 0]
!?LE0/0/0;
[посещение события в северо-западном углу поверхности]
!!VRv1:+1;
[добавить 1 к v1]
!!IF:M^Вы %V1 посетитель этого северо-западного угла поверхности!^;
[показать сообщение]

Как создать свой первый скрипт (часть 2)
ERM для чайников, {Qurqirish Dragon}

Я собираюсь взять скрипт, сделанный ранее, и расширить его действие - каждый герой, посещающий северо-западный угол карты в десятый раз, станет сказочно сильным, слабым или обычным (циклически). Другими словами, после того, как 10 героев посетят событие, все герои удвоят свою силу магии во время битвы. После 20го сила магии в бою будет установлена на 1, и после 30го станет обычной. Затем цикл повторится.

Сначала мы собираемся вставить строку, между командами !!VR и !!IF. Эта строка проверит на то, какой по счету вы посетитель. Так как это значение необходимо, чтобы сохранять счет, я использую временную переменную. Временные переменные в ERM - это y-переменные. Они не сохраняются между скриптами, так что вы не можете использовать эту переменную для длительного хранения. Но вы можете не беспокоиться о том, что испортите другие скрипты, используя эти переменные.
Так давайте добавим линию:
!!VRy1:Sv1 %10; [записать остаток от деления v1 на 10 в y1]

Эта команда использует два оператора в одной команд. Все действия в ERM идут слева направо. Помните, что если у вас несколько операций для выполнения - лучше разбить их на несколько линий. В этом случае мы сначала устанавливаем переменную y1 в значение переменной v1, и затем находим остаток при делении на 10. Если y1 = 0, значит v1 - число, кратное 10.

Теперь, если это число не кратно 10, мы должны только показать сообщение, уже указанное прежде. Нужно сделать небольшое изменение:
!!IF&y1<>0:M^Вы %V1 посетитель этого северо-западного угла поверхности!^; [показать это сообщение, если ничего более не происходит]

Кроме изменения в комментарии, я добавил перед двоеточием условие & (амперсанд) и y1<>0. Амперсанд - "позволю команде работать, если мое условие выполнено".

Дальнейшее выражение y1<>0 говорит об условии (здесь нужно, чтобы y1 был больше или меньше 0). Таким образом это сообщение будет показано только если y1 больше или меньше 0.

Теперь, если v1 - число, кратное десяти, мы хотим сообщить, что волшебство изменяет мир. Но для этого мы должны узнать, какое изменение делается. Мы будем использовать другую y-переменную для проверки на это:
!!VRy2:Sv1 :10 %3; [найти номер изменения]

Эта команда возьмет v1 и разделит его на 10, затем возьмет остаток при делении на 3. Это даст значение переменной y2: если v1 будет меньше 10 или между 30 и 39, 60 и 69 и т.д., то значение y2 будет равно 0. y2 будет равно 1, если v1 будет между 10 и 19, 40 и 49 и т.д., и тот же принцип при y2 = 2. Заметьте, что даже если v1 - число, не кратное 10, оно все равно посчитается.

Теперь нам нужно еще три команды !!IF - одна для каждого типа изменения. Но я могу ввести еще несколько понятий, при этом пойдя по чуть более длинному пути.
Нам нужно сообщение, в котором говорится "Вы [число] посетитель, вы чувствуете, что сила магии в мире увеличилась!"
Также нужно сообщение, содержащее "Вы [число] посетитель, вы чувствуете, что сила магии в мире ослабевает."
И последнее, что нам нужно: "Вы [число] посетитель, вы чувствуете, что магия в мире стабилизируется."
Заметьте, что эти три предложения говорят почти одно и то же самое, но с небольшими изменениями. Нам точно не нужны лишние символы. Это особо важно, если позже мы захотим добавить больше возможностей.

Для этого мы собираемся использовать z-переменную. z-переменные - единственные переменные, способные хранить текстовые данные. Точно так же, как и v-переменные, z-переменные постоянно сохраняются.
Но есть несколько z-переменных, являющиеся временными, как y-переменные. Быстрый взгляд на "Флаги и переменные" в ERM-помощи, и вам известно, что временные z-переменные обозначаются немного по-другому: от z-1 до z-10. Давайте используем переменную z-1, чтобы записать кусок текста, который изменяется.
Это будет три линии:
!!VRz-1&y2=0:S^сила магии в мире увеличилась!^; [для визита 30, 60, 90, ...]
!!VRz-1&y2=1:S^сила магии в мире ослабевает!^; [для визита 10, 40, 70,...]
!!VRz-1&y2=2:S^магия в мире стабилизируется!^; [для визита 20, 50, 80, ...]

Здесь вы полностью должны понять эти строчки. Вместе они устанавливают переменную z-1 в тот текст, который нужен в данном случае.
Отметьте, что правила помещения текста в z-переменную аналогичны правилам для текста в команде !!IF:M, вы можете использовать команду % для показа значения других переменных, и вы должны напечатать %% для знака процентов. Символы "^" и ";" не позволительны!.

Теперь мы должны показать новое сообщение:
!!IF&y1=0:M^Вы %V1 посетитель, вы чувствуете, что %Z-1.^; [показать измененное сообщение]

В этот раз условие состоит в том, что y1 равняется 0. Мы только хотим, чтобы это сообщение появилось и изменялось.
Теперь у нас готовы все сообщения. Затем нужен код, чтобы изменить параметры героя в битве.
Я хочу добавить, что линия ниже - комментарий, т.е. в редакторе скриптов будет изображаться зеленым:
** начало кода эффекта в битвах

Нам нужна проверка на начало битвы. Это означает, что нам нужен новый триггер:
!?BA0;
Так как мы использовали новый триггер, предыдущий код прекратит работу при достижении этого места. Триггер BA активируется при битвах. BA0 (ноль, на не о) - триггер на начало сражения. Нам понадобится так же триггер на конец битвы.

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

!!BA:E?y1; [это сетевая битва?]
Это ресейвер BA. Опция E - "я узнаю, какое это сражение". В ?y1 запишется результат проверки.
Отметьте, что я многократно использую y1 с самого начала - это и есть преимущество временных переменных: вы можете не волноваться о старом значении, если вы хотите использовать переменную.

Если вы просмотрите ERM-помощь по ресейверу BA, то узнаете, что y1 может принимать значения:
Если битва - между ИИ и игроком-человеком, ход ИИ на компьютере хозяина игры, то y1 будет равна 2.
Если это битва человек на человека, кроме хот-сита, y1 установится на 1.
Если иначе, то y1 устанавливается на 0.
Теперь нам нужно, чтобы код работал в последнем случае. Пока вы не знаете, какие типы скриптов сражений работают в случаях 1 и 2, самое безопасное - сделать это.
Теперь мы имеем следующую линию:
!!FU1&y1=0:Pv1; [если нет, продолжить скрипт]

Это - новый ресейвер. Ресейвер FU вызывает другие строки кода, в этом случае - кода под функцией 1. Опять же, условие для этого - y1 = 0. Иначе функция не начнется.
Опция P означает, что следующие параметры нужно передать в функцию. Хотя в этом случае они не необходимы, я передал переменную v1. Это позволит мне управлять переменной v1 внутри функции, не изменяя сохраненное значение.
Мы не должны делать что-либо еще в начале сражения, таким образом мы можем перейти прямо к функции.

Мы начинаем триггер функции, указывая новую секцию кода вместе с комментариями:
** за миг до сражения
!?FU1;

Так как мы хотим изменить силу магии каждого героя в сражении, мы должны знать, какие герои борются, если они вообще имеются. Это делается двумя ресейверами для сражений:
!!BA:H0/?v5; [получить номер атакующего героя]
!!BA:H1/?v6; [получить номер защищающегося героя]

Опция H узнает номер героя. H0 записывает номер нападающего, H1 - защищающегося. Если героя-защитника нет, то BA:H1 устанавливается на -2.

Все номера героев перечислены в ERM-помощи, но так как мы применяем это действие ко всем героям, мы не заботимся об определенном герое.
Я выбрал переменные v5 и v6 для записи номеров, потому что переменным v3 и v4 я оставил другое назначение.

Теперь мы должны узнать силу магии для изменения. Наша y-переменная выше, которая хранила силу магии для изменения, уже потеряла свое значение. Но у нас есть доступ к переменной v1. Давайте снова получим тип изменения:
!!VRx1: :10 %3; [получить тип изменения]

Это выглядит знакомо, но несколько изменений все же есть. Первое - использована переменная x1, а не v1.
Это потому, что значение переменной v1 теперь сохранилось в x1. x-переменные пронумерованы от x1 до x15, и содержат параметры, в которые их передавали ресейвером FU.
Так как я передал v1, x1 получила свое значение.
Так же существует x16, и вы можете передать значение этой переменной, но она имеет особое назначение (дело с которым мы будем иметь чуть позже), т.е. вы должны пытаться избегать использования этой переменной. Также отметьте, что эти переменные могут содержать только целые числа, т.е. вы не можете передать z-переменную.
Кроме того, не волнуйтесь из-за двойного двоеточия. Первое двоеточие отделяет команду от опции, а второе - производит операцию деления. Теперь x1 содержит значение, которое мы записывали в первой части скрипта.

Теперь мы почти готовы. Мы просто должны узнать силу магии героев:
!!HEv5:F?y5/?y6/?y3/?y7; [получить параметры атакующего]
!!HEv6&v6>=0:F?y5/?y6/?y4/?y7; [получить параметры защищающегося]

Ресейвер HE используется для изменений аспектов любого героя. Первая линия просматривает героя, номер v5, а вторая - v6.

Во второй линии мы добавили проверку v6>=0, чтобы, если нет героя-защитника, WoG не пробовал искать героя -2. Это бы вызвало ошибку при запуске скрипта.
Опция F смотрит параметры героя. Следующие четыре числа разделены слэшами "/" - атака, защита, сила магии, знания, в именно таком порядке.
Если вы поместите число или переменную туда, это изменит параметр на значение числа или переменной. Если вы помещаете знак ? перед именем переменной, тогда берется текущее значение навыка и хранится в этой переменной. В этом случае переменные y3 и y4 будут содержать силу магии героев.
Переменные y5, y6, и y7 - просто удерживают значение, и я могу использовать их повторно.

Здесь я хочу отметить, что хорошая идея - записывать на отдельной бумаге то, что хранит каждая переменная. Это поможет, если вы вдруг это забыли.
Теперь мы должны настроить изменения силы магии. Так как мы должны знать, какие параметры восстанавливать после изменений (для восстановления старых параметров), мы будем записывать их в две v-переменных. Я буду использовать переменные v3 и v4, соответствуя y3 и y4. Это - причина того, почему я пропустил их ранее.

!!VRv3&x1=1:Sy3; [если волшебство усилилось - увеличение силы магии]
!!VRv3&x1=2:S1-y3; [если волшебство ослабилось, установить силу магии на 1]
!!VRv4&x1=1/v6>=0:Sy4; [если волшебство усилилось, увеличить силу магии]
!!VRv4&x1=2/v6>=0:S1-y4; [если волшебство ослабилось, установить силу магии на 1]

Новое, что вы заметили здесь в третьей и четвертой линии - слэш в условиях - то же самое, что и логическое "и". Так, &x1=1/v6>=0 означает "если x1=1 и v6>=0, тогда команда работает."

Теперь мы должны только сделать изменения:
!!HEv5&x1<>0:Fd0/d0/dv3/d0; [изменить силу магии]
!!HEv6&x1<>0/v6>=0:Fd0/d0/dv4/d0; [то же для защищающегося]
Здесь мы изменяем параметры героев, но только если x1 не 0. Помните, что если x1 = 0, то наш счетчик определяет "нет никаких изменений".
Снова мы используем команду HE:F. Знак d перед любым числом или переменной говорит, что число или переменная должны быть добавлены к параметру.
d0 (d) оставляет параметр без изменений.

Мы теперь завершили до-битвенную функцию!
Теперь наш скрипт таков:

ZVSE
!#VRv1:S0; [установить v1 на 0]
!?LE0/0/0; [когда посещается событие в северо-западном углу карты]
!!VRv1:+1; [добавить 1 к v1]
!!VRy1:Sv1 %10; [записать остаток от деления v1 на 10 в y1]
!!IF&y1<>0:M^Вы %V1 посетитель этого северо-западного угла поверхности!^; [показать сообщение, если более ничего не происходит]
!!VRy2:Sv1 :10 %3; [найти тип изменения]
!!VRz-1&y2=0:S^сила магии в мире увеличилась!^; [для визита 30, 60, 90, ...]
!!VRz-1&y2=1:S^сила магии в мире ослабевает!^; [для визита 10, 40, 70,...]
!!VRz-1&y2=2:S^магия в мире стабилизируется!^; [для визита 20, 50, 80, ...]
!!IF&y1=0:M^Вы %V1 посетитель, вы чувствуете, что %Z-1.^; [показать измененное сообщение]

** эффект скрипта в битве

!?BA0;
!!BA:E?y1; [это сетевая битва?]
!!FU1&y1=0:Pv1; [если нет, продолжить скрипт]

** за миг до битвы

!?FU1;
!!BA:H0/?v5;
[получить номер героя - атакующего]
!!BA:H1/?v6;
[получить номер героя-защитника]
!!VRx1::10 %3;
[получить тип изменения]
!!HEv5:F?y5/?y6/?y3/?y7;
[получить параметры атакующего]
!!HEv6&y2>0:F?y5/?y6/?y4/?y7;
[получить параметры защитника]
!!VRv3&x1=1:Sy3;
[если магия усилилась, увеличить силу магии]
!!VRv3&x1=2:S1-y3;
[если магия ослабла, уменьшить силу магии до 1]
!!VRv4&x1=1/v6>=0:Sy4; [Если магия усилилась, увеличить силу магии]
!!VRv4&x1=2/v6>=0:S1-y4;
[если магия ослабла, уменьшить силу магии до 1]
!!HEv5&x1<>0:Fd0/d0/dv3/d0;
[изменить силу магии]
!!HEv6&x1<>0/v6>=0:Fd0/d0/dv4/d0;
[то же для защищающегося]

Заметьте, как комментарии помогают пониманию происходящего.

Теперь, после битвы, мы должны вернуть изменения обратно. Сначала мы делаем
триггер конца битвы:
** пост-триггер битвы
!?BA1;
!!BA:E?y1;
[сетевая битва?]
!!FU2&y1=0:Pv1;
[если нет - уничтожить изменения]

Выглядит схоже, да? Хорошо, изменения находятся в триггере и номере функции. Триггер теперь BA1, это означает, что триггер сработает в конце битвы.
И, так как нам нужно вернуть изменения обратно, нам нужна отдельная функция. К счастью, мы сохранили номер героев и изменений в v-переменных, так что нам не нужно снова вычислять их.
Давайте начнем уборку:
!?FU2;
!!VRx1::10 %3; [получить тип изменений]
!!VRv3:*-1; [перевернем параметр нападавшего]
!!VRv4:*-1; [перевернем параметр защищающегося]

Чтобы v3 и v4 изменились, мы умножили их на -1. Теперь, если мы добавим их, как мы сделали прежде, то это уничтожит наши изменения.

!!HEv5&x1<>0:Fd0/d0/dv3/d0; [восстановить силу атакующего]
!!HEv6&x1<>0/v6>=0:Fd0/d0/dv4/d0; [восстановить силу защищающегося]
Опять же имеется проверка на изменение и существование героя-защитника.
Мы должны были хранить числа героев, потому что если герой убежал с поля битвы, мы бы уже не смогли найти его параметры.
Наш скрипт готов!

Как создать свой первый скрипт (часть 3)
ERM для чайников, {Qurqirish Dragon}

До сих пор скрипт, который мы спроектировали, активизирует герой, когда посещает северо-западный угол карты. Зачем кто-либо отправил бы туда героя?

Конечно, вы могли всегда помещать событие на карту, уведомляя об игрока, но я не стану следовать этим путем. Вместо этого я собираюсь создать нечто, что привлечет игрока. Если вы зайдете в редактор карт, посмотрите на страницу городов.
Если вы не смотрели здесь прежде, то увидите, что здесь много объектов после этих 10 (9 типов и случайный) городов.
Большинство этих объектов незаскриптованно, т.е. даже если вы поместите их на карту, они ничего не делают, даже при WoG-ификации.
Мы используем один из них.

Для этого скрипта я собираюсь использовать 4ый объект в 3ем ряду. Это похоже на пентаграмму с маленькими обелисками на лучах, и большим обелиском в середине.
Поместите это на карту максимально близко к углу, не отрезая никакого изображения. Если вы этого обычно не делали, включите инструмент "проходимость" (Ctrl+P) - разбивку карты на красные и желтые площади. Любой красный квадрат герой не может посетить или пройти сквозь него. Любой желтый квадрат - это квадрат триггера объекта.
Если C=свободно, R=красный, и Y=желтый, тогда этот объект в редакторе будет выглядеть так:
CCCCC
CRCRC
RCYCR
CCRCC
Как я предполагаю, желтый квадрат должен быть расположен в (2,2,0).

Теперь давайте изменять скрипт, чтобы использовать этот объект вместо события, помещенного ранее. Если вы сделали эту часть обучения, вы можете удалить событие - я не буду снова использвать его.

Теперь мы собираемся заменить линию !?LE, чтобы чтобы подогнать наш скрипт к желтому квадрату. Помните, старая линия была:
!?LE0/0/0; [когда событие в северо-западном углу поверхности посещено]
Теперь мы просто изменяем местоположение на желтый квадрат (2,2,0) и изменяем команду LE на OB:
!?OB2/2/0; [когда объект в (2,2,0) посещен]
Заметьте, что фактически триггер OB похож на триггер LE. Если вы не имели никаких проблем с LE, значит у вас не будет проблем и с OB.

Только помните, что LE поддерживает только события, а OB поддерживает любые объекты, и вы будете знать, когда и какой нужен триггер.
Теперь скрипт будет работать так же, как и прежде, кроме точки запуска. Но я собираюсь сделать еще одно изменение строки:
!$OB2/2/0; [ПОСЛЕ того, как объект (2,2,0) посещен]

Я изменил эту строку из триггера посещения (!?) на пост-посещение (!$). Сейчас это не имеет никаких последствий для скрипта, но теперь скрипт сработает после того, что мы еще добавим: мы сделаем дополнительную возможность, что когда вы посетите магический счетчик, за 100 золота вы сможете получить сразу пять посещений вместо одного.
Далее есть смысл заменить пентаграмму на Звездную Ось.
Это только мой выбор, если хотите, заменяйте на какой-либо другой объект, имеющий свою функцию. Только убедитесь, что помещенный объект имеет лишь одну точку входа, и этот вход расположен в (2,2,0).

Если вы теперь запустите карту, то когда вы посещаете эту Звездную ось (и только ЭТУ!), вы получите, как обычно, +1 к силе магии (или ничего, если ваш герой уже посетил ось ранее), и затем счетчик увеличится.

Теперь давайте поместим существо "Магический Сторож" где-либо возле Звездной Оси. Я думаю, что из-за природы скрипта нам подойдет Сказочный дракон.

Так или иначе, давайте начинать скриптинг:
!?OB2/2/0; [Когда объект в (2,2,0) посещается]
Это простой триггер предпосещения.

Теперь мы должны закодировать вопрос да или нет.
Первое, что мы должны понять - мы собираемся задать вопрос, на который нужно ответить. Это вызывает проблему, если ИИ посылает героя, чтобы посетить точку.
Так что мы должны посмотреть, является ли текущий игрок человеком или ИИ. Мы делаем эту операцию ресейвером OW. OW позволяет нам проверять или устанавливать почти все параметры игрока (но не героя).
Ну, пишем:

!!OW:C?y1; [Получить цвет текущего игрока]
!!OW:Iy1/?y2; [текущий игрок - ИИ?]
Опция C? проверяет цвет текущего игрока. Вы не можете изменить текущего игрока, так что знак ? - это часть кода.
Я записываю этот цвет в y1. Следующей линией я использую опцию I. Эта команда проверяет цвет на управляющего: человек это или игрок ИИ. Первое число - это цвет игрока для проверки, в нашем случае - y1. Второе число - значение: 1, если ИИ, или 0, если человек.
Вы можете установить этот параметр, чтобы добавить или удалить игрока-человека с карты! Но сейчас мы хотим лишь узнать это значение. Если это герой ИИ, то y2 получит значение 1, иначе - 0.

Теперь мы можем задать вопрос.
Так как мы должны показать вопрос, нам понадобится ресейвер IF:
!!IF&y2=0:Q1/6/0/21/134/33/0/2^Вы замечаете Магического сторожа около Звездной Оси. Сказочный Дракон подзывает вас:
- Позабавьтесь с магией! За сто золотых счетчик магии прыгнет на целых пять посещений!
Вы согласны?^;

Как вы видите, здесь я добавил условие y2=0. Если ИИ посетит ось, то вопрос не будет задаваться!
В любом случае, в этой команде много чисел, не так ли? Их восемь. Я собираюсь разобрать их ниже по частям.
Зайдите в раздел !!IF и найдите опцию Q#1/#2/#3/#4/#5/#6/#7/#8^текст^; для точной информации.

Сначала опция: Q. Это стандартный вопрос. Дальше - число 1. Это флаг, в который занесется ваш ответ. Флаги похожи на переменные, но могут принимать только два значения: 0 (ложь) и 1 (истина). В отличие от переменных, здесь нет указателя переменной. Например, v-переменная 1 пишется как "v1", z-переменная 1 как "z1", а флаг 1 просто 1. Я еще вернусь к этому моменту позднее.

Следующие шесть чисел добавляют картинки к диалогу под написанным текстом. Каждая пара чисел обозначает одну картинку. Первое число - тип картинки, а второе число - подтип. Все возможные картинки для использования можно найти на странице ресейвера !!IF.
В этом случае мы описали первое изображение как 6/0. Тип 6 - это ресурс, золото. Подтип для ресурса - это его количество, которое будет показано.
Так как я установил подтип 0, то количество не будет отображаться - просто картинка.
Второе изображение - 21/134. Тип 21 - это монстр, подтип - номер монстра. Если вы нажмете на гиперссылку в файле помощи по !!IF:Q, вы получите таблицу их номеров. В данном случае подтип 134 - это Сказочный дракон.
Третье изображение - это 33/0. Тип 33 это один из первичных навыков, в данном случае - колдовская сила. Опять же подтип ставим 0, то есть без какого-либо количества.
Когда скрипт будет запущен, под текстом будут изображения золота, Сказочного Дракона и Колдовской силы.

Последнее число 2 говорит о том, что эта команда - вопрос да или нет. Когда скрипт запустится, внизу картинок будут привычные кнопки да или нет. Если вы выберете "Да", флаг флаг установится на "Истина" (1), если вы выбрали "Нет", флаг установится на "Ложь" (0).

Теперь мы должны проверить, имеет ли игрок 100 золота для оплаты. Используем ресейвер !!OW. Вот код следующей линии:

!!OW:R-1/6/?y3; [узнать, сколько золота имеет текущий игрок]
Опция R означает, что мы хотим сделать что-либо с ресурсами игрока. Первое число - цвет игрока, у которого мы будем менять ресурсы. Это значение не-побитно, т.е. 0 для красного, 1 для синего, и так далее. Также можете посмотреть цвета в разделе помощи, но все они пронумерованы от 0 до 7 в порядке том же, что и в игре.
Для этого скрипта я устанавливаю игрока -1. Это значит, что мы узнаем опции текущего игрока, кто бы это ни был.
Мы уже проверили цвет текущего игрока выше (он сохранен в y1, если вы забыли), но я хотел использовать именно -1, чтобы показать эту возможность.
Вы должны проверить синтаксис для каждой опции, чтобы узнать, может ли -1 использоваться для текущего игрока. Хотя это может обратиться к нейтральному игроку, т.е. никому.
Число 6 - номер ресурса, здесь - золото. Последнее число - переменная, в которую мы хотим записать количество.
В этом случае мы используем переменную y3, и перед ней ставим знак ? , что означает "Записать значение в эту переменную".

Затем мы проверяем, что ответил игрок, и может ли он позволить себе покупку. Мы покажем соответствующий ответ для каждого случая. Для этого используем 3 команды IF - первая, если нажата кнопка "Нет", еще одна для "Да" и если игрок может позволить себе покупку, и последняя, если "Да" и игрок не может позволить себе покупку:
!!IF&y2=0/-1:M^Дракон разочарованно поворачивается к другому потенциальному клиенту.^;
!!IF&y2=0/1/y3>=100:M^"Отлично! Я знал, что вам понравится предложение!"^;
!!IF&y2=0/1/y3<100:M^"Я рад, что вы заинтересовались, но у вас недостаточно золота для покупки. Возвращайтесь позднее!"^;

Здесь условие "Это именно человеческий игрок" находится во всех трех командах. Второе условие проверяет флаг 1, который устанавливается в зависимости от ответа игрока
В первой линии число флага отрицательно. Это означает, что мы делаем условие "Если флаг - Ложь, то проверка пройдена". В двух других линиях флаг положителен, что означает "Если флаг - Истина, то проверка пройдена".
Еще во второй и третьей линии есть проверка на количество золота "Значение больше или меньше?". Прежде чем вычесть 100 золота у игрока, мы должны решить, что сделает ИИ.
Позвольте ИИ тоже купить пять посещений - 50%-ый шанс, что он сделает это. Мы сделаем это двумя командами:
!!VRy4:S0 R1; [генерируем значение от 0 до 1 включительно]
!!IF&y2=1:V1/y4; [установить флаг в y4]

Здесь вы признаете первую линию, но с новой опцией, которую мы прежде не использовали - R. Опция R генерирует случайное значение между 0 и числом после R (в нашем случае 1), и добавляет его к старому значению. Данный ресейвер VR устанавливает y4 на 0, и затем добавляет 0 или 1.
Это и является нашим генерируемым шансом.
Следующая линия - наш старый знакомый, ресейвер IF. На этот раз условие состоит в том, что ходит игрок-ИИ. Опция V используется для установки значения флага. В данном случае, флаг 1 устанавливается на результат генерации.

Теперь, когда мы сделали все возможные пути, мы кодируем вычитание золота командой OW.
!!OW&1/y3>=100:R-1/6/d-100; [вычесть 100 золота, если все правильно: игрок согласился, золота хватает]

Эти два условия должны быть ясны, но мы все равно резюмируем: первое условие для флага, т.е. если он Истина, независимо от того, был ли это сгенерированный флаг или сам игрок выбрал его.
Второе условие - проверка, достаточно ли золота у игрока. Как и с колдовской силой, мы используем оператор d для вычитания 100 от текущего значения золота
(ну, фактически мы добавляем -100).

Мы должны сделать еще несколько строк - сейчас, например, добавление счетчика при оплате. Так как мы не использовали v2, я сделаю это здесь:
!!VRv2:S0; [установить v2 на 0]
!!VRv2&1/y3>=100:+4; [установить v2 на 4 если оплата была произведена]

Заметьте, что хотя золото игрока и изменилось, y3 все еще содержит значение золота до оплаты. Таким образом, та же самая проверка, которую мы делали в команде OW, будет работать и здесь.
Эта часть кода теперь сделана. Но мы еще должны изменить часть кода, который мы уже написали, так как мы должны добавить эти четыре посещения и получить соответствующее сообщение.

Вспомните следующие линии из начала скрипта:
!!VRv1:+1;
[Добавить 1 к v1]
!!VRy1:Sv1 %10;
[найти остаток от деления v1 на 10 в y1]

В этой части скрипта y1 - значение счетчика посещений. Для начала мы изменим первую линию:
!!VRv1:+1 +v2; [добавить 1+v2 к v1]

Если оплата была произведена, то это добавит 5 к v1, иначе - только 1.
Далее добавим линию после вычисления y1:
!!VRy1&y1<=v2:S0; [сброс y1, если число уже не кратно 10]

Если дополнительные пять посещений перескочили через число, кратное десяти, то означает, что v2 была равна 4, таким образом y1 между 1 и 4.
Так, если y1 меньше или равен v2, это означает, что магический статус должен сработать - таким образом мы устанавливаем y1 на 0.
Оставшаяся часть кода может оставаться без изменений!

Теперь, после небольших изменений скрипт выглядит так:
ZVSE
!#VRv1:S0; [установить v1 на 0]

** триггер пост-посещения

!$OB2/2/0;
[ПОСЛЕ посещения объекта в (2,2,0)]
!!VRv1:+1 +v2;
[добавить 1+v2 к v1]
!!VRy1:Sv1 %10;
[найти остаток от деления v1 на 10 в y1]
!!VRy1&y1<=v2:S0;
[сброс y1, если число уже не кратно 10]
!!IF&y1<>0:M^Добро пожаловать на звездную ось. Магический счетчик показывает
значение %V1^;
[Показать сообщение, если ничего не произошло]
!!VRy2:Sv1 :10 %3;
[найти тип изменения магии]
!!VRz-1&y2=0:S^сила магии в мире увеличилась!^;
[для визита 30, 60, 90,
...]
!!VRz-1&y2=1:S^сила магии в мире ослабевает!^;
[для визита 10, 40,
70,...]
!!VRz-1&y2=2:S^магия в мире стабилизируется!^;
[для визита 20, 50, 80,
...]
!!IF&y1=0:M^Магический счетчик теперь равен %V1... Вы чувствуете, что %Z-1.^;
[показать измененное сообщение]

** эффект скрипта в битве

!?BA0;
!!BA:E?y1;
[это сетевая битва?]
!!FU1&y1=0:Pv1;
[если нет, запускаем скрипт]

** за миг до битвы

!?FU1;
!!BA:H0/?v5;
[получить номер героя - атакующего]
!!BA:H1/?v6;
[получить номер героя - защитника]
!!VRx1::10%3;
[получить тип изменения магии]
!!HEv5:F?y5/?y6/?y3/?y7;
[получить параметры атакующего]
!!HEv6&v6>0:F?y5/?y6/?y4/?y7;
[получить параметры защищающегося]
!!VRv3&x1=1:Sy3;
[если магия усилена, увеличить значение]
!!VRv3&x1=2:S1-y3;
[если магия ослаблена, установить на 1]
!!VRv4&x1=1/v6>=0:Sy4;
[если магия усилена, увеличить значение]
!!VRv4&x1=2/v6>=0:S1-y4; [если магия ослаблена, установить на 1]
!!HEv5&x1<>0:Fd0/d0/dv3/d0;
[изменить силу магии]
!!HEv6&x1<>0/v6>=0:Fd0/d0/dv4/d0;
[то же для защитника]

** пост-битвенный триггер

!?BA1;
!!BA:E?y1;
[это сетевая битва?]
!!FU2&y1=0:Pv1;
[если нет, продолжить]

!?FU2;
!!VRx1::10 %3;
[получить тип изменений]
!!VRv3:*-1;
[изменим параметр атакующего на отрицательный]
!!VRv4:*-1;
[изменим параметр защищающегося на отрицательный]
!!HEv5&x1<>0:Fd0/d0/dv3/d0;
[восстановим силу атакующего]
!!HEv6&x1<>0/v6>=0:Fd0/d0/dv4/d0;
[восстановим силу защищающегося]

** триггер посещения объекта
!?OB2/2/0;
[объект (2,2,0) посещен]
!!OW:C?y1;
[получить текущий цвет]
!!OW:Iy1/?y2;
[текущий игрок - ИИ?]
!!IF&y2=0:Q1/6/0/21/134/33/0/2^Вы замечаете Магического сторожа около
Звездной
Оси. Сказочный Дракон подзывает вас:
- Позабавьтесь с магией! За сто золотых счетчик магии прыгнет на целых пять
посещений!
Вы согласны?^;
!!OW:R-1/6/?y3; [Найти количество золота игрока]
!!IF&y2=0/-1:M^Дракон разочарованно поворачивается к другому потенциальному
клиенту.^;
!!IF&y2=0/1/y3>=100:M^"Отлично! Я знал, что вам понравится предложение!"^;
!!IF&y2=0/1/y3<100:M^"Я рад, что вы заинтересовались, но у вас недостаточно
золота для покупки. Возвращайтесь позднее!"^;
!!VRy4:S0 R1;
[генерируем значение]
!!IF&y2=1:V1/y4;
[устанавливаем флаг в значение]
!!OW&1/y3>=100:R-1/6/d-100; [забираем 100 золота, если согласны]
!!VRv2:S0;
[устанавливаем v2 на 0]
!!VRv2&1/y3>=100:+4;
[устанавливаем v2 на 4, если плата произведена]

Как создать свой первый скрипт (часть 4)
ERM для чайников, {Qurqirish Dragon}

Я ввел множество команд в последнем скрипте. Как вы можете видеть в справке, многие команды имеют куда больше опций, чем мы использовали. Я хочу более детально разобрать некоторые.
По скрипту, первая команда - VR.
Синтаксис начала строки
!!VR@:XXXX
Где бы вы не увидели в помощи @ - это

Создание магического поющего камня
{Fnord the Wizard}

В этом примере мы сделаем волшебный поющий камень, который может быть посещен героем. Камень даст герою маны в количестве (знания*40) и заберет все очки хода.

1. Используя редактор, выберите камень покрасивее и поместите его куда-нибудь на карту. Для наглядности, поместим его в x=10, y=12, уровень=0 (поверхность).
2. Создадим глобальное событие, куда вы введете ERM-код. Установим день появления на 500 и назовем его "Поющий камень". Начинаться событие будет так:ZVSE.
3. Используем инструкцию для возможности посещения камня:
!#TR10/12/0:P1;
4. Также, сделаем инструкцию, чтобы была возможность посещать камень (желтый квадрат):
!#TR10/12/0:E0;
5. Сделаем инструкцию на превращение камня в другой объект (важно!), скажем, колодца:
!#OB10/12/0:T49;
6. Инструкцией отключим стандартные свойства объекта (колодца):
!#OB10/12/0:S;
7. Изменим текст-подсказку нового объекта:
!#VRz1:S^Поющий камень^; [присвоить текст переменной z1]
!#OB10/12/0:H1; [установить текст-подсказку из z1]
8. Используем триггер на посещение нашего объекта:
!?OB10/12/0;
9. Покажем сообщение:
!!IF:M^Камень призывает вас отдохнуть своей приятной магической мелодией.^;
10. Установим ману героя:
!!HE-1:Fd0/d0/d0/?v1; [запишем знания в v1]
!!VRv1:*40; [умножим v1 на 40]
!!HE-1:Iv1; [установим количество маны на v1]
!!IF:Q1/35/v1/1^^; [покажем картинку бонуса маны]
11. Заберем очки хода:
!!HE-1:W0;
Готово! :-)

Если пропустить шаги 5 и 6, курсор все еще будет превращаться в лошадь на дыбах (как на обычный желтый квадрат), но когда вы зайдете героем квадрат, ничего не произойдет, *пока* вы не нажмете пробел для повторного посещения. Это допустимо для некой загадки, но для нового объекта, который должен работать как и все другие, вы должны включить шаги 5 и 6. Это действительно при любом превращении непосещаемого по умолчанию объекта в помещаемый.

Полный код:
ZVSE
!#TR10/12/0:P1;
!#TR10/12/0:E0;
!#OB10/12/0:T49;
!#OB10/12/0:S;
!#VRz1:S^Поющий камень^;
!#OB10/12/0:H1;
!?OB10/12/0;
!!IF:M^Камень призывает
вас отдохнуть своей приятной магической мелодией.^;
!!HE-1:Fd0/d0/d0/?v1;
!!VRv1:*40;
!!HE-1:Iv1;
!!IF:Q1/35/v1/1^^;
!!HE-1:W0;

Помещение жилищ 8го уровня
{Anders}

В этом примере мы поместим жилище 8го уровня в выбранном месте. Жилище будет привязано к выбранному городу.
Сначала, поместим на карте замок (желательно случайный), в x=2, y=4, z=0 (поверхность).
Затем, создайте глобальное событие, установите дату на 500 день, дайте имя "8ой уровень", ну или какое хотите, и напишите стандартную первую линию ZVSE.
Замечание: скрипт будет полностью состоять из инструкций, жилище появится на карте еще во время загрузки оной.
Теперь, проверим, какой тип города получился (все города имеют одинаковый тип объекта, но разные подтипы: Замок - подтип 0, Инферно - 4) и запишем значение в переменную v1:
!#OB2/4/0:U?v1;
Теперь добавим 80 к числу для получения корректного номера жилища:
!#VRv1:+80;
(Вы могли сделать список для записи числа в зависимости от типа города, вроде:
!#VRv1&v1=0:S80;
!#VRv1&v1=1:S81;
...
!#VRv1&v1=8:S88;
но это длиннее и не влияет на итоговый результат)
Теперь, определим, где поставить жилище. Запишите точку в переменные, потому что разные жилища имеют разный размер - вы можете увидеть это в редакторе. В данном примере, запишите x=27 в v2, y=3 в v3 и уровень (0,поверхность) в v4:
!#VRv2:S27;
!#VRv3:S3;
!#VRv4:S0;
Теперь вы должны упредить разницу в размере жилищ. Если это НЕ жилище Громовержцев (Башня) или Антихристов (Инферно), оно должно быть помещено на 1 клетку правее для точного попадания на точку:
!#VRv2&v1<>82/v1<>83:+1;
Теперь помещаем жилище:
!#UN:Iv2/v3/v4/17/v1;

Полный скрипт:
ZVSE
!#OB13/20/0:U?v1;
!#VRv1:+80;
!#VRv2:S27;
!#VRv3:S3;
!#VRv4:S0;
!#VRv2&v1<>82/v1<>83:+1;
!#UN:Iv2/v3/v4/17/v1;

Он, конечно, может быть повторен снова и снова, если вы хотите привязать больше жилищ к карте. Если вы привязываете более одного жилища к одному городу, вам нужно лишь копировать последние 5 строк и поместить их под остальным, и изменить координаты появления на нужные. Если вы желаете привязать жилище к другому городу, скопируйте все, кроме ZVSE, и измените координаты города и жилища.

Показ мифрила при его подборе
{Anders}

Этот скрипт будет показывать диалоговое окно, когда игрок подберет Мифрил на карте, показывая количество мифрила в кучке и его общее количество у игрока.
Поместите несколько мифриловых кучек на карту, и создайте глобальное событие, день срабатывания установите на 500, первая строка - ZVSE.
Теперь вам нужно включить кучки мифрила, иначе они будут собираться как золото. Сделаем это инструкцией:
!#UN:B0/1;
Затем, триггер для всех кучек мифрила, но не для других ресурсов:
!?OB79/7;
Затем, проверим, кто подобрал мифрил и запомним его имя в z1:
!!HE-1:B0/?z1;
Теперь проверим, сколько мифрила в кучке (триггер срабатывает прямо перед подбором и добавлением к общему количеству). Сохраним в y1:
!!ARv998/v999/v1000:V?y1;
Теперь, проверим, сколько мифрила имеет игрок до подбора кучки, и добавим количество в кучке к этому числу:
!!OW:R-1/7/?y2; [записать текущее количество мифрила игрока в y2]
!!VRy2:+y1; [добавить новый мифрил к имеющемуся в y2]
Теперь добавим корректные сообщения при подборе кучек. Если в ней 1 мифрил, пишем "брусок", если больше 1 но меньше 5 то пишем "бруска", если больше 4 пишем "брусков". А также подумаем об суммарном количестве: если 1, пишем "брусок", если 1<x<5 пишем "бруска", если 5<x<21 пишем "брусков", а дальше используем функцию нахождения остатка от деления чисел, и к соответственному значению настраиваем соответствующую форму слова.
!!VRy3:Sy2; присвоим количество имеющихся брусков переменной y3
!!VRy3&y3>20:%10; если она больше 20, найдем остаток от деления на 10 (получатся числа от 0 до 9)
формы для "кучки"
!!VR z3&y1=1:S^брусок ^;
!!VRz3&y1>1/y1<5:S^бруска ^;
!!VRz3&y1>4:S^брусков ^;
А теперь формы для общего количества
!!VRz2|y2=1/y3=1:S^брусок ^; используя условие ИЛИ ( | ) устанавливаем фору слова, если число имеющихся брусков равно 1 ИЛИ остаток от деления на 10 равен 1
!!VRz2&y2>1/y2<5:S^бруска ^; используем два условия - брусков больше 1 И меньше 5
!!VRz2&y2>4/y2<21:S^брусков ^; используем 2 условия - брусков больше 4 И меньше 21
!!VRz2&y2>20/y3>1/y3<5:S^бруска ^; используем 3 условия - брусков больше 20, остаток от деления меньше 5 но больше 1
!!VRz2&y2>20/y3>4:S^брусков ^; если брусков больше 20 и остаток от деления в пределах 4-9
!!VRz2&y2>20/y3=0:S^брусков ^; если брусков больше 20 и остаток равен 0.

Вы можете установить проверку на остаток и для "кучки", но редко встречаются кучки с содержанием мифрила 20+
Теперь осталось лишь вывести сообщение, если текущий игрок не компьютер.
!!IF&1000:Q1/7/y1/1^{Мифрил}

%Z1 подобрал %Y1 %Z3волшебного Мифрила.

{Всего у вас %Y2 %Z2Мифрила.}^;

Полностью скрипт:

ZVSE
!#UN:B0/1;
!?OB79/7;
!!HE-1:B0/?z1;
!!ARv998/v999/v1000:V?y1;
!!OW:R-1/7/?y2;
!!VRy2:+y1;
!!VRy3:Sy2;
!!VRy3&y3>20:%10;
 !!VRz3&y1=1:S^брусок ^;
!!VRz3&y1>1/y1<5:S^бруска ^;
!!VRz3&y1>4:S^брусков ^;
!!VRz2|y2=1/y3=1:S^брусок ^;
!!VRz2&y2>1/y2<5:S^бруска ^;
!!VRz2&y2>4/y2<21:S^брусков ^;
!!VRz2&y2>20/y3>1/y3<5:S^бруска ^;
!!VRz2&y2>20/y3>4:S^брусков ^;
!!VRz2&y2>20/y3=0:S^брусков ^;
!!IF&1000:Q1/7/y1/1^{Мифрил}

%Z1 подобрал %Y1 %Z3волшебного Мифрила.

{Всего у вас %Y2 %Z2Мифрила.}^;

Показ мифрила
{Anders}

Этот скрипт будет показывать текущее количество мифрила игрока при правом клике по кнопка "Просмотр королевства".
Начнем с создания глобального события с текстом ZVSE. Затем, триггер на правый клик:
!?CM;
Теперь узнаем, куда кликнули, и запишем в y1:
!!CM:I?y1;
И выйдем, если не на кнопку "просмотр королевства"
!!FU&y1<>3:E;
Затем узнаем, кто сейчас ходит и сколько мифрила он имеет:
!!OW:C?y3; [записать номер ходящего игрока в y3]
!!OW:Ry3/7/?y2; [сохранить мифрил текущего игрока в y2]
Временная переменная z-1 будет хранить форму слова "брусок" в зависимости от их количества.
!!VRy1:Sy2;
!!VRy1&y1>20:%10;
!!VRz2|y2=1/y1=1:S^брусок ^;
!!VRz2&y2>1/y2<5:S^бруска ^;
!!VRz2&y2>4/y2<21:S^брусков ^;
!!VRz2&y2>20/y1>1/y1<5:S^бруска ^;
!!VRz2&y2>20/y1>4:S^брусков ^;
!!VRz2&y2>20/y1=0:S^брусков ^;
Для деталей смотрите скрипт выше.
Теперь уточним, что кликнул именно текущий игрок (только для мультиплеера).
!!OW:Gy3/?y4;
Теперь, если все правильно, покажем сообщение:
!!IF&y1=3/y3=y4:Q1/7/y2/4^{Мифрил}

У вас %Y2 %Z2 мифрила.^;
Затем остается лишь отключить стандартное сообщение правого клика по кнопке "просмотр королевства":
!!CM&y1=3/y3=y4:R0;
Полный скрипт:

ZVSE
!?CM;
!!CM:I?y1;
!!FU&y1<>3:E;
!!OW:C?y3;
!!OW:Ry3/7/?y2;
!!VRy1:Sy2;
!!VRy1&y1>20:%10;
!!VRz2|y2=1/y1=1:S^брусок ^;
!!VRz2&y2>1/y2<5:S^бруска ^;
!!VRz2&y2>4/y2<21:S^брусков ^;
!!VRz2&y2>20/y1>1/y1<5:S^бруска ^;
!!VRz2&y2>20/y1>4:S^брусков ^;
!!VRz2&y2>20/y1=0:S^брусков ^;
!!OW:Gy3/?y4;
!!IF&y1=3/y3=y4:Q1/7/y2/4^{Мифрил}

У вас %Y2 %Z2 мифрила.^;
!!CM&y1=3/y3=y4:R0;

Методика создания уникальных способностей для ваших существ
{Salamandre}

Уникальные способности - наиболее привлекательная составляющая WoGа. Их изменение делает сценарий более динамичным и реиграбельным.
Понятно что данная тема адресована людям без высоких навыков скриптописания, и здесь будут описаны довольно элементарные вещи для любого опытного скриптера.
Необязательно быть Фнордом, чтобы сделать нечто подобное, все довольно легко исполняется и описывается.

К примеру, заставим Чародеев колдовать Волну Смерти в бою, а также дадим им иммунитет к вражеским заклинаниям первого уровня и Волне Смерти.
Итак, вам нужно открыть таблицу бонусов опыта существ для EA:B при $3=119.

1) Сначала вы должны пояснить игре, что она должна выполнить команды при загрузке карты. Это делается с помощью команды !?PI;

2) Теперь нужно удалить все способности существ, с которыми они начинают, и установить нужные. Очистим таблицу способностей с помощью восьми строк:

!!EA$:B5/0/////////////;
!!EA$:B6/0/////////////;
!!EA$:B7/0/////////////;
!!EA$:B8/0/////////////;
!!EA$:B9/0/////////////;
!!EA$:B10/0/////////////;
!!EA$:B11/0/////////////;
!!EA$:B12/0/////////////;

Мы используем Чародеев, их номер - 136. Поэтому $ = 136.

3) Итак, имеем:

!?PI;
!!EA136:B5/0/////////////;
!!EA136:B6/0/////////////;
!!EA136:B7/0/////////////;
!!EA136:B8/0/////////////;
!!EA136:B9/0/////////////;
!!EA136:B10/0/////////////;
!!EA136:B11/0/////////////;
!!EA136:B12/0/////////////;

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

!!EA136:B5/0/////////////;

Мы должны заполнить пространство между слешами для корректного показа способности.
Судя по таблице опыта существ, номер способности "Иммунитет к вражеским заклинаниям первого уровня" - 49.

!!EA136 - необходимое начало команды, которое объясняет, что таблица опыта существа 136 (Чародей) будет изменяться. :B5 определяет, что это первая линия.

!!EA136:B5/1 означает установку новой способности (1). Нуль означает удаление способности, что мы уже проделали.

Дальнейшие числа относятся к способности и ее шансу на срабатывание на разных уровнях опыта. Нам нужно указать число 119 перед настройкой любой способности из таблицы иммунитетов.

!!EA136:B5/1/119/49--> иммунитет к вражеским заклинаниям первого уровня

Теперь мы должны указать % шанс, но, так как это не заклинание, а иммунитет, то мы можем указать лишь 1 или 0 - соответственно "есть" и "нет".

!!EA136:B5/1/119/49/0/0/0/0/1/1/1/1/1/1/1; - всего 11 уровней опыта
У нас иммунитет будет с четвертого уровня (27600)

Теперь о процентах. Пусть Чародеи будут колдовать заклинание Волна Смерти.
Из таблицы опыта имеем: колдует заклинание перед атакой - 112
Можно также сделать, чтобы оно колдовалось после атаки, выставив соответствующий номер.
В таблице заклинаний находим номер Волны Смерти - 24

Т.к. первая линия занята иммунитетом, пойдем на вторую (В6):

!!EA136:B6/1/112/24

Дальше указываем процентный шанс существа наколдовать заклинание на каждом уровне опыта. Вы можете указывать какие захотите процентные значения, хоть 100% на первом уровне. В этом примере будет немного сбалансировано:

!!EA136:B5/1/112/24/0/0/5/10/15/20/30/35/40/45/50;

Теперь Чародеи имеют 50% шанс наколдовать Волну Смерти на 10 уровне опыта.

Весь скрипт:

ZVSE

!?PI;
!!EA136:B5/0/////////////;
!!EA136:B6/0/////////////;
!!EA136:B7/0/////////////;
!!EA136:B8/0/////////////;
!!EA136:B9/0/////////////;
!!EA136:B10/0/////////////;
!!EA136:B11/0/////////////;
!!EA136:B12/0/////////////;

!!EA136:B5/1/119/49/0/0/0/0/1/1/1/1/1/1/1; иммунитет ко вражеским заклинаниям 1го уровня
!!EA136:B5/1/112/24/0/0/5/10/15/20/30/35/40/45/50; колдует волну смерти перед атакой

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

!!EA136:B7

Сделаем способность доступной с десятого уровня (105000 опыта)
Код:

!!EA136:B7/1/119/53/0/0/0/0/0/0/0/0/0/0/1;

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

А теперь обратимся к другой таблице. Процентный шанс здесь работает как нужно, поэтому настройка здесь более тонкая. Вы не должны давать существу с полным иммунитетом к магии 100% шанс блока, только если не хотите помучить тестеров вашей карты.

Настроим блок Чародеям, поработаем с четвертой линией:

!!EA136:B8

В таблице блок - номер 66. Также мы напишем 61 (установить) на 4ой позиции: B8/1/66/61

!!EA136:B8/1/66/61/0/5/10/15/25/35/40/50/55/60/65;

Теперь Чародеи имеют потрясающий шанс заблокировать атаку врага на уровне Ас. Более половины атак будут неудачны. Осторожно, т.к. бой с такими монстрами может быть фатальным ;)

Чародеи все еще довольно слабы по здоровью, не так ли? Так пусть они вызывают клон (108, а 117 - одиночный вызов клона).

Но, нам нужно определить, какое существо они будут вызывать: они даже могут вызывать Лазурных драконов. Я бы установил на вызов тех же Чародеев. Их номер 136.

!!EA136:B9/1/108/136/10/20/25/30/40/50/70/75/80/85/90;

Процент в примере очень велик: на последнем уровне Чародеи будут вызывать 90% самих себя. Используйте меньшие числа, чтобы не поломать игру.

Наложить заклинание на существо

Мы будем накладывать Молитву. По таблице, "зачаровывает заклинанием" - 115. Мы должны настроить заклинание, взяв номер из таблицы заклинаний.

Молитва - 48, имеем:

!!EA:B10/1/115/48

В качестве параметров для каждого уровня опыта в случае заклинания мы указываем уровень магии.

0 = еще не активировано
1 = базовый
2 = продвинутый
3 = эксперт

!!EA136:B10/1/115/48/0/0/1/1/1/2/2/2/3/3/3;

В итоге:

ZVSE

!?PI;
!!EA136:B5/0/////////////;
!!EA136:B6/0/////////////;
!!EA136:B7/0/////////////;
!!EA136:B8/0/////////////;
!!EA136:B9/0/////////////;
!!EA136:B10/0/////////////;
!!EA136:B11/0/////////////;
!!EA136:B12/0/////////////;

!!EA136:B5/1/119/49/0/0/0/0/1/1/1/1/1/1/1; иммунитет к вражеским заклинаниям 1го уровня
!!EA136:B6/1/112/24/0/0/5/10/15/20/30/35/40/45/50; колдует Волну Смерти перед Атакой
!!EA136:B7/1/119/53/0/0/0/0/0/0/0/0/0/0/1; иммунитет ко вражеским заклинаниям
!!EA136:B8/1/66/61/0/5/10/15/25/35/40/50/55/60/65; блок
!!EA136:B9/1/108/136/10/20/25/30/40/50/70/75/80/85/90;вызывает клон каждый раунд
!!EA136:B10/1/115/48/0/0/1/1/1/2/2/2/3/3/3;зачарован Молитвой

И, наконец, флаговые способности

Они тоже довольно полезны, и мы установим две из них, чтобы завершить нашу машину смерти: Двойная атака и Безответный удар.

Из-за новой таблицы, третий параметр - 102, а сама способной будет четвёртой.

Двойной удар (68) Настраивается как и иммунитеты. Ноль - способность недоступна, 1 - активирована.

!!EA136:B11/1/102/68/0/0/0/0/1/1/1/1/1/1/1;

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

Принцип для "Безответный" такой же (82)

!!EA136:B12/1/102/82/0/0/0/0/0/1/1/1/1/1/1;

ZVSE

!?PI;
!!EA136:B5/0/////////////;
!!EA136:B6/0/////////////;
!!EA136:B7/0/////////////;
!!EA136:B8/0/////////////;
!!EA136:B9/0/////////////;
!!EA136:B10/0/////////////;
!!EA136:B11/0/////////////;
!!EA136:B12/0/////////////;

!!EA136:B5/1/119/49/0/0/0/0/1/1/1/1/1/1/1; иммунитет к вражеским заклинаниям 1го уровня
!!EA136:B6/1/112/24/0/0/5/10/15/20/30/35/40/45/50; колдует Волну Смерти перед Атакой
!!EA136:B7/1/119/53/0/0/0/0/0/0/0/0/0/0/1; иммунитет ко вражеским заклинаниям
!!EA136:B8/1/66/61/0/5/10/15/25/35/40/50/55/60/65; блок
!!EA136:B9/1/108/136/10/20/25/30/40/50/70/75/80/85/90;вызывает клон каждый раунд
!!EA136:B10/1/115/48/0/0/1/1/1/2/2/2/3/3/3;зачарован Молитвой
!!EA136:B11/1/102/68/0/0/0/0/1/1/1/1/1/1/1; двойная атака
!!EA136:B12/1/102/82/0/0/0/0/0/1/1/1/1/1/1; безответный

 Самое главное, что вы можете давать эти способности после срабатывания какого-либо триггера, вместе с сообщением.

!?LEx/y/l; xyl = координаты события
!!IF:M^Я дам твоим никчемным Чародеям способность не получать ответа в бою, ибо ты осилил эту скучную статейку^;
!!EA136:B12/1/102/82/0/0/0/0/0/1/1/1/1/1/1; дать способность Безответный


Триггеры

Таблица триггеров:

Код | Срабатывает ...
!?AE | при одевании и снятии артефактов
!?BA | в начале и конце битвы
!?BF | при проработке поля боя (препятствия и т.п.)
!?BG | при любом действии стека или героя в битве
!?BR | в начале каждого раунда битвы
!?CM | при клике мышкой
!?CO | при действиях с командиром
!?DL | при действиях с диалогом пользователя (только TE или выше)
!?FU | Содержит код функции
!?GE | при появлении определенного глобального события
!?GM | при загрузке и сохранении игры
!?HE | при атаке или обмене (союз.) с определенным героем
!?HL | при получении героем уровня
!?HM | при каждом шаге героя
!?IP | поддерживает мультиплеер
!?LE (!$LE) | при (после) посещения локального события
!?MF | при каждом нанесении физ. урона в битве
!?MG | при наложении заклинаний на карте
!?MM | при появлении подсказок (в битве, окне города, т.п.)
!?MR | при сопротивляемости существа заклинанию в битве
!?MW | для Бродячих монстров
!?OB (!$OB) | при или после посещения объекта(ов)
!?PI | пост-инструкция
!?SN | при попытке игры воспроизвести любой звук
!?TH | при входе и выходе в городской холл
!?TL | таймер реального времени (только ТЕ или выше)
!?TM | Содержит код таймера


Триггеры: общее

Разделы: 1 2 3 4 5 6

Триггеры

Введение

Когда игрок активирует триггер, вызываются некие действия одного или более ресейверов. Триггером может быть событие, объект или герой, который посещает другого героя, или это может быть ERM-функцией, вызываемой из другого ERM-кода или события, установленного на определенное время или интервал. Ресейвером может быть событие, герой, объект на карте или другие вещи. Поскольку многие вещи в игре могут быть использоваться как триггеры или ресейверы, важно не перепутать, что куда относится.

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

Свойства события-триггера или объекта-триггера не важны для самой работы триггера. Действия триггеров должны быть описаны во временном событии. В ERM-скриптах триггер является заглавным звеном, и после него должны идти ресейверы. Если вы помещаете более одного триггера в событие, важно понимать, что нет кода "конец триггера"; новый триггер прекратит выполнение ресейверов предыдущего триггера.

Синтаксис триггеров

Каждый триггер начинается со знаков восклицания и вопроса (!?) и заканчивается ";". После !? следует двухбуквенный код триггера , например BA, OB или HE. После имени триггера идут параметры, показанные как # в помощи. Каждый параметр (#) должен являться целым числом, например !?HE47;. Значение и диапазон чисел для каждого типа триггеров разное. Для триггера HE, число - это номер героя (у каждого героя есть собственный порядковый номер), для триггера LE - это положение события на карте.

Использование переменных в триггерах

Переменные не могут быть использованы как параметры триггера. Если вы попробуете проделать это, переменная будет игнорироваться или приниматься за ноль. Если вы используете постоянные переменные, например v4, буква (v) будет игнорироваться, и это будет принято за число 4.

Двойные триггеры

Если некоторые триггеры используются более чем один раз на карте, в этом случае все ресейверы для этого триггера будут выполняться, начиная с ресейверов первого триггера (по порядку расположения в событиях) и оканчивая ресейверами последнего.
Заметьте, что триггер !?BA0; - отличный от !?BA1;, и также триггер !?HE47; - отличный от !?HE48;

Условия триггеров

Условия могут быть добавлены к триггеру, и ресейверы этого триггера будут работать только если условие выполнено. Для этого используют знак (&) сразу после последнего параметра и до точки с запятой. После &, вставьте ваше условие. Это условие должно содержать флаг или переменную, знаки сравнения (=, >, <, >=, <=, или <>) и вторую переменную либо значение.

Пример:
!?BA0&v10=51; ресейверы этого триггера будут работать, только если v10 имеет значение 51. Вы можете включать несколько проверок, используя слеш "/", например
!?BA0&v10=51/v2>=5; ресейверы будут работать только если v10 равно 51, и если v2 равно или больше 5. См. флаги и переменные для большей информации.


Работа с памятью

Работа с памятью: !!UN:C
 (by Д'якон)

Немного теории

!!UN:C - ресивер позволяющий как записывать так и считывать данные по определенному адресу.
И так для работы с данным ресивером, Вам потребуется ArtMoney и Герои.

Адреса бывают статические и динамические.
Статические адреса - это адреса ехе файла, т.е. 00401000 - 006АСЕС0 и 00701000 - 0293512С.
Динамические адреса - выделяются программой во время загрузки. (Возможно совпадение динамических адресов в разных версиях героев, т.е. ТЕ и WoG, а также на разных компьютерах, но лучше все же привязывать динамические адреса к статическим. Динамические адреса можно привязать к статическим через указатели. Указатели, также бывают динамические и статические.).
Все это будет рассмотрено ниже. Пока просто можете запомнить

Что искать и как?
На эту тему приведено масса примеров в руководстве к АртМани (поэтому начинать нужно с чтения данного руководства).
Памятка: лучшим прерыванием процесса является !!IF:M^^; (дальше поясню. Вообще с использованием ЕРМ поиск значительно облегчается)

Что ж, я приведу пару практических примеров.

Начнем с простенького.

Задача 1: найти адрес содержащий ресурс "золото".
Данная задача является наиболее простой. Ресурс отображается в определенном значении, значит и искать мы будем "точное значение".
Создайте карту для экспериментов, где Вам не будут мешать противники. (не обязательно, но желательно). Запустите героев. Запустите Вашу карту (у Вас должен быть хотя бы замок, либо золотая шахта - для того чтобы золото меняло значение). Запомните значение ресурса. Нажмите Alt+Tab. Запустите АртМани.

1. Выберите процесс:
Тут была картинка с артмани

2. Нажмите на кнопку искать. И выберите: "точное значение" , введите кол-во золота, и выберите "Целые (стандартные)" (к последнему и следующим пунктам в меню поиска еще вернемся).

Тут была картинка с артмани
Тут была картинка с артмани
Тут была картинка с артмани

3. Нажимаем ОК. В левом поле отобразятся все найденные адреса с заданным значением. В моем случае при значении золота 20000 - 542 адреса.

Тут была картинка с артмани

4. Нажимаем Alt+Tab. Возвращаемся в героев и пропускаем ход. Золото увеличилось (у меня 20500).

5. Alt+Tab. Нажимаем на кнопку "Отсеять". И вводим в поле новое значение золота. Нажимаем ОК. Остался 1 адрес. Это и есть адрес по которому содержится значение золото. Значение целое - 4 байта. Т.е. при использовании UN:C записываем или считываем 4 байта. Полученный адрес - в 16ричной системе исчисления, переводим в 10ричную (можно при помощи стандартного калькулятора Windows), для записи в UN:C.

Тут была картинка с артмани
Тут была картинка с артмани
Тут была картинка с артмани

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

Ну вот с первым примером закончили.

Задача2: найти адрес содержащий стоимость постройки в городе.
Сложность данной задачи заключается в том что, стоимость постройки есть константа.

1. Запускаем героев. Запускаем АртМани. (В данном примере возьмем Конфлюкс).

2. Цену лучше искать по золоту, т.к. получаем меньше адресов. Поиск по другим ресурсам даст более 30000 адресов, что не очень удобно.

3. Итак. Смотрим стоимость первого, допустим жилища, - 300 золота и по 5 дерева и руды. В поиске выбираем: "точное значение" , "300" , "Целые (стандартные)". Выполняем поиск. Найдено 376 адресов.

4. Добавляем все адреса в правое поле. Если адресов больше тысячи, то нужно изменить значение отображаемых адресов в правом поле. Данная опция находится в меню "искать", в "настройках" в закладке "дополнительные". И перезапустить АртМани.

Тут была картинка с артмани
Тут была картинка с артмани

5. Т.к. адресов в данном случае не более 376. То выставлять данную опцию не следует (а вообще рекомендую поставить сразу тысяч на 8-10 для удобства).

6. После добавления адресов в правое поле. Выбираем следующее: "изменить" - "выбрать все". Далее в контекстном меню выделенных адресов выбираем "установить значение" 1 с шагом 1. Можете увидеть как становились значения в адресах. Далее заходим в героев и смотрим цену жилища. Цена в золоте 85. Находим адрес со значением 85, это и будет наш искомый адрес 06АА4D8. Для того чтобы найти адреса дерева и руды войдем в меню адреса, двойной щелчок на адресе и при помощи скролинга стрелками вниз (т.е. на уменьшение адреса) будем искать необходимые значения, т.е. 5 и 5. Можно заметить что ресурсы между собой находятся на смещении равное 4-ем. Соответственно дерево находится на смешении 24 от золота 06АА4С0. В этом легко убедится вычтя из адреса золота адрес дерева и переведя в 10ричную систему исчисления.

Тут была картинка с артмани
Тут была картинка с артмани
Тут была картинка с артмани
Тут была картинка с артмани
Тут была картинка с артмани
Тут была картинка с артмани
Тут была картинка с артмани

Вывод: обычно похожие по смыслу значения хранятся в близком диапазоне - блоке памяти или массиве значений. Чтобы найти отклонения между значениями, в данном случае между значением стоимости жилищ, нужно найти еще значение стоимости второго жилища и найти разницу между адресами. Можно быть уверенным, что и остальные стоимости жилищ находятся на одинаковом смещении друг от друга.


Использованные переменные

Разделы: V Z W Функции Флаги Таймеры Макросы Диалоги PO:N WoG Опции

Использованные переменные
Скрипты WoG для Wake of Gods 3.58 (от 25 октября 2004)

Использованные долговременные таймеры, функции, макросы и диалоги:
(временные переменные также показаны в скобках, как и в отдельном списке ниже)
*####-####* (например, *v5000-v5999*) означает, что переменные зарезервированы для картостроителей, которые хотят использовать в своих картах еще и скрипты WoG.
Обычные переменные (v1-v10000):
(v1-v10), v11-v12, (v13-v14), v15-v23, (v24-v34), v35-v36, v40-v45, (v50-v54), v70-v71, (v76), v88-v93, (v94-v95), v100, (v101-v111), v119-v142, (v143), v144-v147, v150, v157-v200, v205, v210-v250-v257, v266-v284, v295-v299, (v300-v308), v310-v312, v320-v359, (v360-v370), v372-v373, v381-v386, v388-v389, v400-v422, v424-v444, v450, (v451-v469), v487-v503, v508, v510-v559, (v564-v571), v572-v579, v587-v599, (v600-v739), v700-v761, v777, v800, v803-v844, v846-v883, v898-v899, (v900-v916), (v920-v934), v950-v966, v975-v976, (v991-v993), (v997-v1000), v1100-v1118, v1200-v1210, (v1211), v1212-v1214, v1218-v1220, v1222-v1257, v1260-v1265, v1270-v1275, v1300-v1327, v1332-v1336, v1340-v1359, v1400-v1412, v1600-v1983, v2000-v2074, v2100-v2135, v2200-v2207, v2300-v2408, v2550-v2561, v2600-v2622, v3300-v3314, v3320-v3407, v3500, v4101-v4136, v4500-v4603, v4740-v4756, *v5000-v5999*, v7000-v7015, v7018-v7089, v7118-v7119, v7130-v7132, v7177-v7178, v7180-v7183, v7185-v7199, v7206-v7217, v7220-v7236, v7300-v7310, v7401-v7456, v8033, v8038-v8043, v9001-v9007, v9300

Использованные текстовые переменные (z1-z1000):
(z1-z10), z11-z21, (z22-z44), z45-z46, (z47-z61), z62-z77, (z78-z90), z91-z140, (z141-z142), z143-z176, z190-z199, z201-z239, z241, (z242-z248), z250-z269, (z270-z279), z280-z299, (z300-z303), (z310-z319), (z326-z331), z332-z354, (z360-z366), z368-z383, (z390-z393), z400, z402-z406, z410-z439, z444, z448-z461, z469, (z470-z472), (z480-z492), z493-z495, z500-z698, z700-z708, z710-z729, z732-z745, z747-z752, z760-z768, z770-z786, z790-z791, z793-z798, z804-z841, z849-z850, *z850-z859*, z860-z876, z890, z904-z907, z910-z937, z960-z989, z1000

Переменные героев (w1-w200):
w1-w18, w20-w33 w38-w43, w45, w47-w59, w61-w84, w90-w94, w110-w119, *w150-w175*

Использованные функции (1-30000):
FU1-FU47, FU49-FU63, FU100, FU141-FU148, FU160-FU176, FU180-FU184, FU200-FU301, FU451, FU463-FU481, FU491-FU493, FU599-FU613, FU620-FU627, FU631-FU638, FU640-FU641, FU649-FU651, FU653-FU668, FU670-FU686, FU690-FU726, FU730-FU816, FU819-FU863, FU865-FU870, FU900-FU927, FU950, FU1000-FU1003, FU1100-FU1110, FU1400-FU1409, FU1872-FU1876, FU2300-FU2406, FU2826, FU3300-FU3321, FU3333-FU3334, FU3610-FU3619, FU3620-FU3630, FU3633-FU3638, FU3724-FU3733, FU4444, FU4850-FU4853, FU5000-FU5037, FU5200-FU5211, FU5219-FU5229, FU5244-FU5246, FU5248-FU5253, FU5260-FU5262, FU5300-FU5312, FU5400-FU5411, FU6100-FU6107, FU6200-FU6212, FU6300-FU6304, FU6664-FU6670, FU7000-FU7026, FU7030-FU7039, FU7050-FU7053, FU7060-FU7074, FU7100-FU7109, FU7120-FU7126, FU7795-FU7826, FU8000, FU8150-FU8166, FU8168, FU8170-FU8227, FU8230-FU8231, FU8700-FU8705, FU9600-FU9603, FU10799-FU10816, FU10850-FU10862, FU10900-FU10910, FU10920-FU10938, FU13500-FU13507, FU13520-FU13527, FU14000-FU14011, FU14800-FU14806, FU14900-FU14901, FU18001-FU18005, FU19000,FU20001-FU20008, FU20220-FU20230, FU20521-FU20523, FU20690-FU20701, FU21000-FU21014, FU22000-FU22001, FU22300-FU22343, *FU29000-FU29999*

Использованные таймеры (1-100):
TM1-TM3, TM10-TM11, TM13-TM14, TM18-TM19, *TM20-TM25*, TM26, TM28, TM30-TM32, TM34, TM38, TM41-TM42, TM48, TM50-TM51, TM58, TM61-TM64, TM74-TM80, TM82, TM84-TM85 TM90, TM98-TM99

Использованные флаги (1-1000):
Системные флаги (могут быть только проверены) : 996-1000 (990-995 зарезервированы)
(1-10), 21, 27, 32-37, 41-43, 49, 56-57, 74-79, 130-131, 140, 145-147, 160-162, 170-172, 209, 211, 230-239, 266-271, 298-299, 341-366, (400-408), 409-410, 412, 428-433, 490, *500-599*, 600-603, 710-714, 781-791, 800-801, 870-874, 902-907, [990-1000]

Использованные Макросы:
$AI$, $aknow$, $aname$, $apower$, $ban$, $cday$, $color$, $day$, $done$, $hcolour$, $he-she$,
$hisher$, $hname$, $hnumber$, $hpower$, $hrname$, $hsex$, $lpos$, $man-woman$, $month$,
$once$, $pithnum$, $pithy$, $pgold$, $sicon$, $skillnum$, $skname$, $slevel$, $spell$,
$week$, $weekday$, $weeks$, $xpos$, $ypos$
$red$, $blue$, $tan$, $green$, $orange$, $purple$, $teal$, $pink$
$monday$, $tuesday$, $wednesday$, $thursday$, $friday$, $saturday$, $sunday$,

Использованные диалоги (1-100):
1, 3-4, 7-11, 14-15, 20-22, 30-32, *50-59*, 88, 100

Использованные номера PO (по объектам)
Пещера приключений (тип 63, подтип 57) : H, N, O, S, T
Алтарь вызова (тип 63, подтип 20) : N
Артефакты (тип 5) : N
Ремесленник (тип 63, подтип 52) : N
Банки существ (тип 16, 24, 25, 84, 85) : S
Жилище существ (тип 17, подтип 93 - Разлом элементов) : V3
Гробница Смерти (тип 63, подтип 15) : N
Изумрудная Башня (тип 63, подтип 65) : N
Гарнизоны (типы 33 и 219, подтипы 0 и 1) : N
Живой череп (тип 63, подтип 50) : N, O, V0
Шахты: N, S, V3
Зеркало Пути домой (тип 63, подтип 66) : N
Мистический сад : N
Обелиск : S, T
Кучка ресурсов : N
Знак : S
Каменный круг (тип 63, подтип 21) : N
Университет : N
Фабрика боевых машин : H, O
Артефакт Знамя Войны (тип 5, подтип 156) : O
Водяная мельница : N
Ветряная мельница : N
Города : B0, B1, H, O, S, T, V3
Город (Сопряжение, только в первый день - временное использование) : N
Город (1 квадрат выше входа) : N
Деревья : B0, B1

ERM-номера WoG-опций (0-1000):
Внутренние опции: 0-10, 900-906 [907-1000 зарезервированы]
Зарезервированы для картостроителей: *800-899*
ERM-скрипты: 11-77, [78-99 зарезервированы для новых скриптов], 100-250

Временные переменные и флаги (также могут быть использованы в других скриптах):
v1-v10, v13-v14, v24-v34, v50-v54, v76, v94-v95, v101-v111, v143, v300-v308, v360-v370,
v451-v469, v564-v571, v600-v739, v900-v916, v920-v934, (v998-v1000), v1211, v4711-v4712,
z1-z9, z22-z44, z47-z61, z78-z90, z141-z142, z242-z248, z270-z279, z300-z303, z310-z319,
z326-z331, z360-z366, z390-z393, z470-z472, z480-z492
(x1-x16), i-n
Флаги: 1-10, 400-408, (1000)

Зарезервировано для картостроителей:
v5000-v5999
w150-w175
z850-z859
FU29000-FU29999
TM20-TM25
Флаги 500-599
Диалоги 50-59
ERM номера 800-899

Разбор по скриптам
--------> WOGIFY (script00.erm)
Автор: Donald
Номер WoG-опции: 132-133, 137-143, 165, 195, 196, 224, 239 (Знамя полководца), 241 (Сердце Дракона), 242 (Замена Призраками), 245 (Существа уровня 7+ получают 50% опыта), 248 (Показать сообщение WoGификации)
Объект: нет, хотя много замен объектов для использования в других скриптах,
и сундуки, значения внешних жилищ могут быть изменены
PO Номера: Артефакт Знамя Полководца (Тип 5, Подтип 156): O
Переменные: v508, v600-v705, v950-v966, v3339, v3500
Флаги: 9,870 (используется Мифрильным скриптом Anders), 995
Функции: FU670-FU686, FU5209, FU22000-FU22001 (Установить множитель опыта ИИ/Человека),
FU8-FU9 (Совместимость проходимости ландшафта), FU3333-FU3334 (конверсия битов),
FU25-FU28 (устранение запрещенных артефактов), FU7777-FU7779 (Случайное заклинание),
FU29 (установить множитель 50% для существ уровня 7+)
Макросы: $bit$, $spell$
Макросы для Универсального Таймера: $month$,$weeks$,$week$,$day$,$weekday$,$AI$,$color$,$once$,
$red$,$blue$,$tan$,$green$,$orange$,$purple$,$teal$,$pink$,
$monday$,$tuesday$,$wednesday$,$thursday$,$friday$,$saturday$,$sunday$
Диалоги: DG1, DG15
Таймеры: TM19, TM79

--------> ПРАВИЛА КАРТЫ (script01.erm)
Автор: Donald
Номер WoG-опции: 101, 111-130, 230
Объект: нет, кроме нескольких, используемых как триггеры для Воров
Переменные: z280-z299, z326-z328, z332-z354, v1-v4, v549-v559, v564-v579, v600-v602,
v610-v639, v700-v739, v1219, v1262, z680, z681-z697 (зарезервированы для дальнейших правил!)
Флаги: 1-3
Функции: FU690-FU726
Таймеры: TM84
Переменные: v549-v559, v572-v579, z280-z299, и z332-z354 не должны изменяться
другими скриптами!

--------> ИЗМЕНЕННЫЕ АРТЕФАКТЫ (script02.erm)
Автор: Donald
Номер WoG-опции: 102
Объект: следующие артефакты изменены: Птица Познания (63), Брелок Жизни (103), Брелок Смерти (104),Щит Яростного Огра (16), Сапоги Мертвеца (56), Брелок Абсолютной Памяти (107), Символ Знаний (65), Бесстрашный Хранитель (64), Брелок Ясновидения (101),Священный Брелок (102), Сапоги Противодействия (59), Колье Неприступности (57), Брелок Бесстрастия (100), Брелок Свободы (105), Кольцо Дипломата (67), Мантия Равновесия (58), Медаль Уязвимости (93), Шар Постоянства (92), Медаль Дипломата (66), Сфера Запрещения (126)
Переменные: v600-v628, v630-v631, v640-v648, z326-z331, z410-z428, i-l, w33
Флаги: 1, 2, 5, 710-714
z410-z428 не должны изменяться другими скриптами!
Другие переменные переменные могут
быть использованы где-либо еще, но засорят код.
Функции: FU599-FU609, FU612-FU613
Таймеры: TM85

--------> ИЗМЕНЕННЫЕ ВТОРИЧНЫЕ НАВЫКИ (script03.erm)
Автор: Donald
Номер WoG-опции: 103, 215-218
Переменные: v35-v36, v487-v489, v587-v589, v900-v916, v920-v934, w43,
z70-z73, z390-z391, z430-z431, z470-z472
Флаги: 2, 270-271, v487-v489 и v587-v589 и z430-z431 не должны изменяться другими скриптами!
Флаги 270-271 общие с другими скриптами, которые используют функцию Fnord'а на определения сети.
Другие переменные могут быть использованы где-либо еще, но засорят код.
Предупреждение: этот код может находиться в середине другого скрипта,
если герой получает уровень или провоцируется битва
Функции: FU649-FU651, FU653-FU668, FU8166
Таймеры: TM74

--------> БАШНЯ АРКАН (script04.erm)
Автор: Donald
Номер WoG-опции: 104
Объект: тип 63, подтип 9 (см.)
Переменные: v590, v600-v617, v618, z403
Флаги: 2-5
z403 не должна изменяться другими скриптами!
v590 всегда должна быть 0! Некоторые другие мои скрипты также используют ее как 0 для индексирования подсказок.
Другие переменные могут быть использованы где-либо еще, но засорят код.
Функции: FU620-FU627

--------> БАНК (script05.erm)
Автор: Donald
Номер WoG-опции: 105 (Банк ссуд), 181 (Передача всех ресурсов), 225 (торговля Мифрилом)
Объект: в городе, либо Черная Башня
Переменные: v493-v500, v592-v599
v592-v599, z401 должны быть неприкосновенны другими скриптами!
v590 должна быть 0! Некоторые другие мои скрипты также используют ее как 0 для индексирования подсказок.
Другие переменные могут быть использованы где-либо еще, но засорят код.
Функции: FU631-FU638, FU14800-FU14801 (передать все ресурсы)
Диалоги: DG4
Таймеры: TM75

--------> ПЕСОЧНЫЕ ЧАСЫ АСМОДЕУСА (script06.erm)
Автор: Timothy
Номер WoG-опции: 106
Объект: измененный артефакт Часы Недоброго Часа (85)
Флаги: 1, 266-271
Переменные: v234, v247, v266-284, v1255-v1256, v4600
(используется совместно со скриптом Метаморфов), v9300, z266-z269, z444
Функции: FU6664-FU6670
Макросы: $xpos$, $ypos$, $lpos$, $hpower$, $apower$, $hsex$,
$hnumber$, $aknow$, $hcolour$, $aname$, $hrname$, $hisher$

--------> РЫБОЛОВНЫЙ КОЛОДЕЦ (script07.erm)
Автор: Timothy
Номер WoG-опции: 107
Объект: измененный Волшебный Колодец (Объект 49)
Флаги: 1-6
Переменные: v300-v305, v308, v998-v1000, z1-z2, z300-z303
Функции: FU1100-FU1110, FU14000
Диалоги: DG7-DG9

--------> СТАРЬЕВЩИК (script08.erm)
Автор: Donald
Номер WoG-опции: 108
Объект: тип 63, подтип 8 (см.)
Переменные: v590, v600-v612, z326-z330, z400
Флаги: 2
v590 должна быть 0! Некоторые другие мои скрипты также используют ее как 0 для индексирования подсказок.
z400 не должна изменяться другими скриптами!
Другие переменные могут быть использованы где-либо еще, но засорят код.
Функции: FU640-FU641

--------> РЫНОК ВРЕМЕНИ (script09.erm)
Автор: Timothy
Номер WoG-опции: 109
Объект: тип 63, подтип 51 (см.)
Флаги: 1-4, 1000
Переменные: v50-v54, v451-v469, w45, z1, z47-z61, z241-z248
Функции: FU451
Диалоги: DG14
Макросы: @hsex@, @slevel@, @pgold@, @sicon@, @cday@, @skillnum@, @pithnum@, @skname@,
@hname@, @he-she@, @man-woman@, @pithy@

--------> ВОЛШЕБНЫЕ ГРИБЫ (script10.erm)
Автор: Bruno
Номер WoG-опции: 110
Объект: тип 63, подтип: 14 (Гриб Воздуха), 18 (Гриб Воды), 23 (Гриб Земли),
и 29 (Гриб Огня) (см.)
Переменные: v1-v3 для локального использования, w20-w27 для записи навыков героев,
посетивших гриб, z11-z17 и z159 для текстов подсказок
Функции: FU10-FU12

--------> ДВОРЕЦ МЕЧТЫ (script11.erm)
Автор: Timothy
Номер WoG-опции: 11
Объект: тип 63, подтип 33 (см.)
Флаги: 1-3
Переменные: v1-v2, v101-v111, z1, z3-z6, z450
Функции: FU777-FU779

--------> ЖИВОЙ ЧЕРЕП (script12.erm)
Автор: Timothy
Номер WoG-опции: 12
Объект: тип 63, подтип 50 (см.)
PO Номера: N, O, V0
Флаги: 1, 21, 27
Переменные: v1-v4, v24-v34, v94, v95, z1, z22-z44, z454
Функции: FU20-FU24, FU14900-FU14901
Диалоги: 20-21
Переменные, которые НЕ должны не изменяться вне скрипта: z454

--------> ИГРА В КАРТЫ В ТАВЕРНЕ (script13.erm)
Автор: Timothy
Номер WoG-опции: 13
Объект: измененная Таверна (объект 95)
Функции: FU1-FU2
Флаги: 1, 400-408
Переменные: v400-v420, z201-z205, w41-w42

--------> АЛТАРЬ ТРАНСФОРМАЦИИ (script14.erm)
Автор: Timothy
Номер WoG-опции: 14
Объект: тип 63, подтип 20 (см.)
PO Номера: N (для объекта 63/20)
Флаги: 1, 209-211
Переменные: v88-v95, v991-v993, x16, z451-z453
Функции: FU18001-FU18005
Таймеры: TM80

--------> ЖИЛИЩЕ ТАИНСТВЕННОГО СУЩЕСТВА (script15.erm)
Автор: Dieter
Номер WoG-опции: 15
Объект: тип 63, подтип 3 (см.)
Переменные: v141-v143, z141-z143, w14
Флаги: 140,141
Функции: FU141-FU145, FU148
Таймеры: TM14
Переменные v141, z142, z143 и w14 не должны быть изменены другими скриптами!

--------> БОЕВАЯ АКАДЕМИЯ (script16.erm)
Автор: Anders
Номер WoG-опции: 16
Объект: тип 63, подтип 32 (см.)
Флаги: 1-10
Переменные: (v1-v2), v320-v342, v381-v383, v388 z382 (не должны использоваться другими скриптами),
z1-z4, w38, [z116000-z116037]
Функции: FU3610-FU3619, FU8165-FU8167
Таймеры: TM30

--------> ФОНТАН ЗЕЛИЙ (script17.erm)
Автор: Bruno
Номер WoG-опции: 17
Объект: тип 63, подтип 48 (см.),
тип 63, подтип 2, и измененный Фонтан Удачи (объект 30)
Переменные: v1-v12, v40-v41, v1260-v1261, w10-w12, z1-z3, z18-z21
Флаги: 1, 902-907
Функции: FU800-FU802, FU810-FU816

--------> ДОМ БЕДНЯКОВ (script18.erm)
Автор: Donald
Номер WoG-опции: 18
Объект: тип 63, подтип 24 (см.)
Переменные: v590, v600-v606, z120, z326, z402, w13
z402 не должна изменяться где-либо!
v590 должна быть 0! Некоторые другие мои скрипты также используют ее как 0 для индексирования подсказок.
Другие переменные могут быть использованы где-либо еще, но засорят код.
Функции: FU610-FU611

--------> ХОЗЯЕВА ЖИЗНИ (script19.erm)
Автор: Sir Four
Номер WoG-опции: 19
Переменные: нет
Функции: FU100
Таймеры: TM2 (Универсальный таймер)

--------> НЕДЕЛИ МОНСТРОВ (script20.erm)
Автор: Timothy
Номер WoG-опции: 20, 134, 135, 136, 172, 200
Флаги 1, 56, 170-172, 412
v переменные: v1-v7, v166-200, v205, v361-v367, v372-373, v1200-1210,
z переменные: z190-z199, z495
Функции: FU180-FU184, FU5300-FU5310, FU8000
Таймеры: TM61-TM63

--------> ГИЛЬДИЯ НАЕМНИКОВ (script21.erm)
Автор: Timothy
Номер WoG-опции: 21
Объект: измененная Гильдия Наемников (объект 213)
Переменные: z1-z5, v210-247, v249-257, v3405, z210-z231
Флаги: 49-51
Функции: FU1400-FU1409
Диалоги: DG30-DG32
Таймеры: TM64

--------> БРЕД МОНСТРОВ (script22.erm)
Автор: Timothy
Номер WoG-опции: 22
Объект: монстры (тип 54)
Переменные: v1212-v1214, z119-z141, z469, (z480-z492)
Флаги: 2,57
Функции: FU2826

--------> РАСШИРЕНИЕ ВОЛШЕБСТВА (script23.erm)
Автор: Timothy
Номер WoG-опции: 23
Объект: нет, но используются многие объекты (кучки ресурсов, сундуки сокровищ, мельницы,
водяные мельницы, Звездные оси, Сады Просвещения, Мистические сады, Камни Знаний, артефакты,
гробницы воина, телеги, скелеты, водные сундуки, потерпевшие кораблекрушение, обломки, океанская бутыль,
знаки, ученые, университеты, костры, пирамиды, хижины ведьм, святыни, деревья Знаний)
PO Номера: N (для кучек ресурсов), N [только проверка] для Водяных мельниц и ветряных мельниц
для проверки на улучшение их мифрилом.
Флаги: 1-3, 410, 872
Переменные: v1-v4, v310-v312, z1-z5
Функции: FU849, FU5000-FU5037
Таймер: TM18

--------> РАСШИРЕННЫЕ ПОДСКАЗКИ ПО ВНЕШНИМ ЖИЛИЩАМ (script24.erm)
Автор: Timothy
Номер WoG-опции: 24
Объект: нет, но используются внешние жилища
Флаги: 1-3,58
Переменные: v1,v94-v95,z1-z3
Функции: FU2400-FU2406

--------> ОПЦИИ КАРТЫ (script25.erm)
Автор: Timothy
Скрипты: без Фортов, Замена Картографов, Запрет заклинаний, Запрет артефактов,
Переименование городов, Купить всех существ, Универсальное улучшение существ,
Расширенное улучшение существ, Переименование героев, Показ скрытых навыков,
Показ маны героя, Перезаписываемые знаки и показ текста правым кликом,
Отмена сообщений, Выбор класса командира, Расширенные герои, Опция отключения
автосохранения, Выбор типов нейтральных городов, Строительство двух построек,
Опции быстрой битвы
Номер WoG-опции: 25, 100, 131, 144-148, 150-164, 166-169, 173-180, 182-187, 220-223,
226-228, 233, 234, 236-238, 240, 241, 243-244, 246-247
Объект: знаки (расширены)
PO Номера: Универсальное улучшение: O, B0, B1, S (используется для городов), S (используется для знаков)
Переменные: v975-v976, v1-v5, z1-z4
v3300-v3303, v3310-v3312 (универсальное улучшение существ), v3320-v3330 (отключение сообщений),
v3393-v3402 (быстрая битва), v3341 (проверка на запрещенные заклинания)
Не используется, но зарезервировано (для script25): v3304-v3308, v3334-v3336, v3406-v3407
Временные Переменные: v600-v646, z22-z31
Флаги: 1-4
Функции: FU10799-FU10816 (FU10815 не используется, но зарезервирована для script25)
FU10920-FU10931 (купить все)
FU10932 (проверка на запрещенные заклинания)
FU3300-FU3303 (универсальное улучшение существ)
FU14802-FU14806 (показ навыков героя и смена порядка навыков)
FU18 (выбор класса командира)
FU3304 (расширенные герои)
FU50-FU53 (выбор типов нейтральных городов)
FU54-FU56 (двойные постройки)
FU57 (опции быстрой битвы)
FU10933-FU10936 (Знамя полководца: быстрый выбор)
FU41-FU42 (перестановки в таблице героев)
FU10937 (переименование героя)
FU10938 (отключение сообщений)
Макросы: $ban$
Диалоги: 17, 25
Таймеры: 34

--------> РЕМЕСЛЕННИК (script26.erm)
Автор: Dieter
Номер WoG-опции: 26
Объект: тип 63, подтип 52 (см.)
PO Номера: N (для объекта Ремесленник)
Переменные: v157-v164, v4101-v4136, z160-z166,
Функции: FU160-FU176
Флаги: 160-162
Таймеры: TM26

--------> КНИГА ЗАКЛИНАНИЙ (script27.erm)
Автор: Anders
Номер WoG-опции: 27
Объект: артефакт Книга заклинаний (0)
Переменные: (v1-v4), (v600-v611), (z1-z9), [z127000-z127003]
Функции: FU3633-FU3638

--------> ШКОЛА ВОЛШЕБСТВА (script28.erm)
Автор: Anders
Номер WoG-опции: 28
Объект: тип 63, подтип 62 (см.)
Флаги: (1-10)
Переменные: v384-v386, v389, z383, w38 (не должна изменяться другими скриптами),
(v1-v5), (z1-z4), [z128000-z128076]
Таймеры: TM30
Функции: FU3620-FU3630, FU8165-FU8167

--------> СУНДУКИ (script29.erm)
Автор: Donald
Номер WoG-опции: 29
Объект: новые сундуки (тип 101, подтип 1)
Переменные: w63, w80, z326, v550-v559, v600-v646
Флаги: 2
v550-v559 битовая таблица, используемая несколькими скриптами. Не должна изменяться, но может быть использована.
w63 из скрипта Пещера Приключений и не должна изменяться.
w80 не должна изменяться другими скриптами.
Другие переменные могут быть использованы где-либо еще, но засорят код.
Функции: FU840-FU848

--------> ПЕЩЕРА ПРИКЛЮЧЕНИЙ (script30.erm)
Автор: Donald
Номер WoG-опции: 30
Объект: тип 63, подтип 57 (см.)
PO Номера: H, N, O, S, T (для Пещеры Приключений: тип 63, подтип 57)
Переменные: z326-z330, z360-z366, z368-z379, z404, v150, v510-v548, v550-v559, v600-v669,
v1263-v1265, w61-w78, i
v510-v548, w61-w74, и z404 не должны изменяться где-либо!
v550-v559 битовая таблица, также используемая Правилами карты. Не должны изменяться, но могут быть использованы.
Другие переменные могут быть использованы где-либо еще, но засорят код.
Флаги: 2, 600-603
Функции: FU730-FU776, FU780-FU799, FU820-FU835
Таймеры: TM90

--------> СУНДУКИ 2 (script31.erm)
Автор: Timothy
Номер WoG-опции: 31
Объект: новые сундуки (тип 101, подтип 5)
Флаги: 1-2, 409, 1000
Переменные: v1-v6, z1-z5, w52-w54, w64 (только проверка)
Функции: FU5200-FU5208, FU5210-FU5211
Таймеры: TM28

--------> КАМНИ ВЫЗОВА (script32.erm)
Автор: Timothy
Номер WoG-опции: 32
Объект: тип 63, подтип 21 (см.)
PO Номера: N (для Камня Вызова: тип 63, подтип 21)
Переменные: v1-9, v234, 247, v360-370, v998-1000, v1211 z1-4, z480-494
Все переменные могут быть использованы, кроме z493 и z494, которые хранят текст подсказок.
Флаги: 1,2,4, 57 (флаг "Бред Монстров)
Функции: FU5219-FU5229
Таймеры: TM98

--------> ЖИВЫЕ СВИТКИ (script33.erm)
Автор: Timothy
Номер WoG-опции: 33
Объект: расширенные свитки заклинаний (объект 93)
Переменные: v1-v6, z1-z2, v1218, v1220, v1222-v1235, v1257, v9300
Функции: FU5244-FU5426, FU5248-FU5255, FU5260-FU5262

--------> КАРТЫ ПРОРОЧЕСТВА (script34.erm)
Автор: Matthew
Номер WoG-опции: 34
Объект: расширенный артефакт Карты Пророчества (47)
Флаги: 270,271
z-Переменные: z698, [z134001-z134025]
v-Переменные: v1300-v1327, v1332-v1336,
(также: v3393-v3400 из скрипта Быстрой битвы)
Функции: FU13500-FU13507

--------> РАСШИРЕНИЕ МИСТИЦИЗМА (script35.erm)
Автор: Anders
Номер WoG-опции: 35
Переменные: (v1-v10), (z1-z9), [z135000-z135177]
Флаги: (1-10), 56, 172, 173, 412
Функции: FU8150-FU8165, FU8230-FU8231
Таймеры: TM30

--------> УЛУЧШЕНИЯ МИФРИЛА (script36.erm)
Автор: Anders
Номер WoG-опции: 36, 149, 170, 171
Объект: ресурс Мифрил (тип 79, подтип 7), города, шахты, ветряные мельницы,
верфи, маяки, водяные мельницы.
PO Номера: N (для шахт, мистических садов, Водяных мельниц, Университетов и Ветряных мельниц)
и также S и V3 для шахт (V3 используется для совместимости с будущим скриптом Переплавка Мифрила (???)).
Переменные: (v1-v6), v70-v71, (z1-z9), z429, z805-z815, z919, [z136000-z136084]
Флаги: (1, 9, 10), 172, 410, 870-874
Таймеры: TM99
Функции: FU709, FU8170-FU8189
Устанавливаются PO:N номера на входах в шахты, Водяных мельницах и ветряных.

--------> ИЗМЕНЕННЫЕ СУЩЕСТВА (script37.erm)
Автор: Steven
Номер WoG-опции: 37, 198, 199
Флаги: нет
Переменные: v1, v1400-v1412, z860-z876
Функции: FU4850-FU4853
Таймеры: TM31-TM32

--------> КАРМИЧЕСКИЕ БИТВЫ (script38.erm)
Автор: Dieter
Номер WoG-опции: 38
Переменные: v490-v492, w49
Флаги: 490
Функции: FU491-FU494
Переменные v490,v491 и флаг 490 не должен быть изменен другими скриптами!

--------> ИЗМЕНЕННЫЕ СПЕЦИАЛИЗАЦИИ ГЕРОЕВ (script39.erm)
Автор: Alexis
Номер WoG-опции: 39
Переменные: v425-v444, v9001, w28-w32, z405-z406
Функции: FU803-FU808, FU836-FU838, FU850-FU852
Флаги: 428, 429, 430
Таймеры: TM77

--------> ПЕРВЫЕ ДЕНЬГИ (script40.erm)
Автор: Alexis
Номер WoG-опции: 40
Переменные: v428-v429
Таймеры: TM78

--------> СЛОЖНЫЕ БИВТЫ (script41.erm)
Автор: Alexis
Номер WoG-опции: 41
Переменные: v425-v427
Функции: FU809,839

--------> ГАРНИЗОНЫ (script42.erm)
Автор: Timothy
Номер WoG-опции: 42
Объект: гарнизоны (тип 33 и 219, подтип 0 и 1)
PO Номера: N (гарнизоны: тип 33 и 219, подтип 0 и 1)
Переменные: v1-v9, z1-z5, v1236-v1239, v1253-v1254
Функции: FU10850-FU10862
Таймеры: TM19 (общий с WoGификацией), TM48
Диалоги: DG88

--------> РУНЫ ОБЕЛИСКОВ (script43.erm)
Автор: Timothy
Номер WoG-опции: 43
Переменные: нет (только локальные)
Функции: FU5311-FU5312
PO Номера: S, T (для объекта Обелиск)

--------> ИЗУМРУДНАЯ БАШНЯ (script44.erm)
Автор: Timothy
Номер WoG-опции: 44
Объект: тип 63, подтип 65 (см.)
PO Номера: N (для самой башни: тип 63, подтип 65)
Постоянные Переменные: z816-z841, v1240-v1252 (v1255 используется в script06.erm), v1270-v1271,
Временные Переменные: v1-v6, v360-v369, z1-z5, z480-z490
Функции: FU10900-FU10910
Таймеры: TM38
Диалоги: DG3

--------> УЛУЧШЕНИЕ ЗАМКОВ (script45.erm)
Автор: Alexis
Номер WoG-опции: 45
Объект: нет, но используется внутри замков (объект 98)
Переменные: v424-v429, v1600-v1983
Флаги: 432, 433
Функции: FU819, FU859-FU863, FU865-FU869
Таймеры: TM82

--------> ЗМИИ-БЕРСЕРКЕРЫ (script46.erm)
Автор: Timothy
Номер WoG-опции: 46
Постоянные Переменные: v295-v299, v4740-v4748, v4750-v4756, z940-z941
Временные Переменные: v1-v6
Флаги: 2, 298, 299
Функции: FU19000

--------> ОТНОШЕНИЯ СУЩЕСТВ (script47.erm)
Автор: Matthew
Номер WoG-опции: 47
Переменные: v1340-v1359
Флаги: 130-131
Таймеры: TM13
Функции: FU13520-FU13527

--------> РАСШИРЕННЫЕ ВТОРИЧНЫЕ НАВЫКИ (script48.erm)
Автор: Arstahd
Номер WoG-опции: 48, 201-214
Переменные: s, r, j
V-Переменные: v7018-v7056, v7186-v7199
Z-Переменные: z1-z3, z700-z706, z722-z725
Y-Переменные: y1-y11
W-Переменные: w4-w9
Функции: FU7000-FU7026
Таймеры: TM50, TM51
Флаги: 1, 2

--------> ОРУЖЕНОСЕЦ (script49.erm)
Автор: Arstahd
Номер WoG-опции: 49
Переменные: w117-w119, v7181, v7206-v7217, z1-z9, z910-z918
Функции: FU7100-FU7109
Таймер: TM19 (из WoGификации script00)

--------> УСИЛЕННЫЕ МОНСТРЫ (script50.erm)
Автор: Arstahd
Номер WoG-опции: 50
Переменные: i-m, y1-y12, v7000-v7015, v7183, z2, z500-z679
Флаги: 74, 75, 77, 78
Функции: FU7050-FU7053, FU7060-FU7069
Таймеры: TM50

--------> УСИЛЕННЫЕ КОМАНДИРЫ (script51.erm)
Автор: Arstahd
Номер WoG-опции: 51
Переменные: v7080-v7119, v7177, v7185, y1-y9
Функции: FU7070-FU7074

--------> ЗЕРКАЛО ПУТИ ДОМОЙ (script52.erm)
Автор: Sir Four
Номер WoG-опции: 52
Объект: тип 63, подтип 66 (см.)
PO Номера: N (для Зеркального портала: тип 63, подтип: 66)
Переменные: v1-6, v234, v247, v360-v370, v729-v730, z1-z4, z480-z494, z729
Все переменные могут быть использованы, кроме z729, хранящей текст подсказки.
Флаги: 1, 2
Функции: FU20521-FU20523

--------> ТЕМНИЦА ХОЗЯИНА ДРАКОНОВ (script53.erm)
Автор: Hermann the Weird
Номер WoG-опции: 53
Объекты: расширенная Утопия Драконов
Переменные: v8033, v8035-v8043, z455-z461
Функции: FU20001-FU20008

** Используется FU709 из скрипта script01 (правила карты) для снижения силы Темницы Хозяина...
** Совместимо со скриптом 57 (нейтральные существа).

--------> РАСШИРЕННЫЕ БОЕВЫЕ МАШИНЫ I (script54.erm)
Автор: Overlord
Номер WoG-опции: 54
Версия 0.9 Переменные: TM41, v591, v2000-v2074, FU900-FU927, w81-w83, (z1-z4)
Версия 2.3 Переменные (?): w110-w116, v2550-v2561, (z1-z2), FU21000-FU21014

--------> РАСШИРЕННЫЕ БОЕВЫЕ МАШИНЫ II (script55.erm)
Автор: Arstahd
Номер WoG-опции: 55
Объекты: нет
Переменные: y1-y10, v7180, v7220-v7236, z790-z791
Флаги: 79
Функции: FU7120-FU7126

--------> МЕТАМОРФЫ (script56.erm)
Автор: Timothy
Номер WoG-опции: 56
Постоянные Переменные: v4500-v4603, z206-z209
Временные Переменные: v1-v10, v13-v14, v24
Функции: FU9600-FU9603

--------> НЕЙТРАЛЬНЫЕ СУЩЕСТВА (script57.erm)
Авторы: Alexandru Balahura, Timothy Pulver и Thomas Franz (samot)
Номер WoG-опции: 57, 231, 232, 235
PO Номера: S (для банков существ: тип 16, 24, 25, 84, 85)
Переменные: v100, v296, z745
Функции: FU1000-FU1001-FU1003, FU5400-FU5411

--------> ШПИОНАЖ (script58.erm)
Автор: Petyo
Номер WoG-опции: 58
PO Номера: N (1 квадрат над квадратом входа в замок)
Переменные: v2100-v2135, v2200-v2207
(z1-z7), (z200), z250-z265, z582-z584, z770-z786
w50-w51,w55-w59, f-q
Флаги: 32-36
Функции: FU463-FU481
Диалоги: DG11

--------> ПРОНЗАЮЩИЙ ВЫСТРЕЛ (script59.erm)
Автор: Petyo
Номер WoG-опции: 59
Переменные: (v51), v2600-v2622, z66-z69
Флаги: 341-366
Функции: FU31-FU33

--------> ЗАБЫТАЯ СВЯТЫНЯ (script60.erm)
Автор: Petyo
Номер WoG-опции: 60
Объекты: тип 63, подтип 22 (см.)
Переменные: v15-v23, v1100-v1118, z167-z168, w18
Временные Переменные: m-o
Флаги: 37
Функции: FU12-FU16

--------> ЗАЩИТА ОТ ЭЛЕМЕНТОВ (script61.erm)
Автор: Petyo
Номер WoG-опции: 61
Переменные: v15-v18, v2400-v2408
Флаги: 41-43
Функции: FU1872-FU1876

--------> РАЗДЕЛЕНИЕ СТЕКОВ (script62.erm)
Автор: Timothy
Номер WoG-опции: 62
Переменные: v3309, v3313-v3314, v3342-v3392, v3403-v3404, z1-z3
Флаги: 1, 3-4
Функции: FU43-FU49, FU60-FU61

--------> ПРОХОДИМОСТЬ ЛАНДШАФТА (script63.erm)
Автор: Timothy
Номер WoG-опции: 63
Объект: временная установка знаков (тип 91)
PO Номера: B0, B1 (деревья)
Постоянные Переменные: v1270, v1272-v1275, w79
Временные Переменные: v1-v4, z1
Функции: FU14001-FU14011

--------> СКРИПТЫ ТОБИНА (script64.erm) (19 сентября 2004 )
Автор: Tobyn
Скрипты:
(Универсальный таймер), библиотека функций Tobyn'а , Хижины продвинутых ведьм, смена хозяина,
расширение Имущества, расширение Первой Помощи, Искусство войны, Измененное Сопряжение/Оплот
Номер WoG-опции: 64, 188-194
Флаги: 230-239 зарезервированы (и 236-239 используются)
Постоянные Переменные: w47, w48, v2300-v2399 зарезервированы (и v2301-v2334, v2360-v2399 используются)
Временные Переменные: m-t, флаг 1, v248
Таймеры: TM1, TM2 (вместе оба формируют Универсальный Таймер)
Функции: FU2300-FU2399 зарезервированы (и FU2333-FU2345 используются)
Текстовые переменные: z232-z239 зарезервированы (и z237-239 используются)
Макросы: $month$,$weeks$,$week$,$day$,$weekday$,$AI$,$color$,$once$,
$red$,$blue$,$tan$,$green$,$orange$,$purple$,$teal$,$pink$,
$monday$,$tuesday$,$wednesday$,$thursday$,$friday$,$saturday$,$sunday$

--------> ПЛАТНЫЕ МОНОЛИТЫ (script65.erm)
Автор: Steven
Номер WoG-опции: 65
Объекты: расширенные монолиты (объекты 45 и 43)

--------> КОМАНДИРСКИЕ ХИЖИНЫ ВЕДЬМ (script66.erm)
Автор: Donald
Номер WoG-опции: 66
Объекты: расширенные Хижины Ведьм (Объект 113)
Переменные: v600-v627, z326, w40
w40 не должна изменяться другими скриптами!
Другие переменные переменные могут быть использованы
где-либо еще, но засорят код.
Функции: FU6300-FU6304
Диалоги: 10

--------> НЕЙТРАЛЬНЫЙ ГОРОД (script67.erm)
Автор: Donald и Jonas
Номер WoG-опции: 67
PO Номера: тип 17, подтип 93 (Разлом Стихий): V3
Переменные: v501, z169-z176, z707-z708
(v501, z169-z176 и z707-z709 не должны изменяться другими скриптами!)
Функции: FU6100-FU6107
Таймеры: TM2 (Универсальный таймер)

--------> НОВЫЕ ПОЛЯ БИТВ (script68.erm)
Автор: Donald с добавлениями Robert и Jonas
Номер WoG-опции: 68
Врмененные Переменные: v1
Функции: FU62

--------> НАСТРОЙКА СОЮЗОВ (script69.erm)
Автор: Sir Four
Номер WoG-опции: 69
Переменные: v1-v10, v13, v777, z1-v9, z1000
Все переменные могут быть использованы, кроме z1000, хранящей установки команд.
Флаги: 1,2
Функции: FU20690-FU20701
Таймеры: TM11

--------> МЕРТВАЯ ГРОБНИЦА (script70.erm)
Автор: Rich Reed
Номер WoG-опции: 70
Объект: тип 63, подтип 15 (см.)
PO Номера: N (для объекта 63/15)
Переменные: z849-z850, z890, v803-v844, w39
Флаги: 3, 800, 801

--------> РАСШИРЕННЫЕ АРТЕФАКТЫ (script71.erm)
Автор: Arstahd
Номер WoG-опции: 71, 219
Объекты: различные расширенные артефакты
Переменные: i, y1-y10, v7178, v7182, v7057-v7079, v7130-v7132, z1-z4, z920-z937, z960-z989
Флаги: 76
Функции: FU7030-FU7039
Таймеры: TM51

--------> СЛУЧАЙНЫЙ ГЕРОЙ (script72.erm)
Автор: Bonizag
Номер WoG-опции: 72
Объект: расширенные стеки монстров (объект 54)
Переменные: v846, v849, v851, v855-v856, v867 для долгого хранения,
z1-z3, z78-z90 временно, w81-w83 (замечание: также используется скриптом Боевых Машин Robert'а)
Флаги: 781, 783, 786 для долгого хранения
Функции: FU7797-FU7798, FU7825-FU7826

--------> РАСШИРЕННЫЕ БОЕВЫЕ МАШИНЫ III (script73.erm)
Автор: Bonizag
Номер WoG-опции: 73
Объект: расширенные стеки монстров (Объект 54)
PO Номера: H, O (Фабрика боевых машин), H, T (Города)
Переменные: v847, v850-v859, v862-v880, v883 для долгого хранения, v1-v3, v7800-v7956 временные,
z1-z3, z78-z90 временные, w81-w83 (замечание: также используется скриптом Боевых Машин Robert'а)
Флаги: 781, 783-790 для долгого хранения, 2,3,4 временные
Функции: FU7795-FU7820
Таймеры: TM41

--------> ВЫЗОВ ЭЛЕМЕНТАЛЕЙ (script74.erm)
Автор: Bonizag
Номер WoG-опции: 74
Переменные: w84, v848, v860-v861, v881-v882, v7600-v7756, v1 врменные, z1-z5 врменные
Флаги: 791
Функции: FU7821-FU7824
Таймеры: TM42

--------> ТЕКСТ ВТОРИЧНЫХ НАВЫКОВ (script75.erm)
Автор: Hermann the Weird
Номер WoG-опции: 75
Переменные: Орлиный Глаз: z318, z270-z272; Разведка: z319, z273-z275;
Сопротивление: z390, z276-z278; Обучение: z391, z279, z310, z311; Тактика: z904-z907;
Артиллерия: z738, z719-z721; Имущество: z739, z741-z743; Первая Помощь: z740, z716-z718;
Удача: z747, z726-z728; Мистицизм: z748, z710-z712; Навигация: z749-z752;
Поиск Пути: z713, z732-z734; Грамотность: z714, z735-z737; Волшебство: z715, z796-z798;
Защита: z744, z793-z795
И еще переменные: Стрельба: z45, z46, z74; Логистика: z75-77; Дипломатия: z91-93;
Лидерство: z94-96; Мудрость: z97-99; Баллистика: z110-112; Некромантия: z113-115;
Магия Огня: z116-118; Магия Воздуха: z144-146; Магия Воды: z147-149; Магия Земли: z150-152
Нападение: z153-155; Интеллект: z156-158
Функции: FU17, FU19

--------> СВЯТИЛИЩЕ КОМАНДИРА (script76.erm)
Автор: Timothy
Номер WoG-опции: 76
Объект: расширенное святилище (Объект 80)
Переменные: нет (только локальные переменные)
Функции: нет

--------> WOG CHEAT МЕНЮ (script77.erm)
Автор: Timothy
Номер WoG-опции: 77
Флаги: (1..9)
Переменные: v9002-v9007, (z1..z9)
Функции: FU22300-FU22343


.wog

Файлы .wog

Файлы .wog - это переименованные архивы .rar. Можно использовать любой уровень компрессии в WinRAR. Внутри могут быть любые файлы, но должны содержаться следующие управляющие файлы:

h3bitmap.txt
Список файлов для заливки в h3bitmap.lod, каждый следующий файл на новой строке

h3sprite.txt
Список файлов для заливки в h3sprite.lod, каждый следующий файл на новой строке

instmult.txt
Неизвестно. Во всех архивах имеют вот такой вид:

[PICS]
[MUSIC]

Детали:

inform.txt
 [GeneralName]
На новой строке идет название файла, под которым он будет отображаться при установке

[WhatAboutVrotAbout]
На новой строке идет дополнительная информация - обычно это информация об авторе и краткое описание. Переводов строки не должно быть, иначе текст на новой строке игнорируется.

[GeneralName]
ERM Help & Scripter
[WhatAboutVrotAbout]
Packed on 25.08.2004

action.txt
 [REGEDIT]
Используется для изменения реестра.
На первой строке идет путь к ключу. Ключ создается внутри HKEY_LOCAL_MACHINE.
Затем идет список присваиваемых атрибутов вида "Атрибут"="Значение" для строковых ключей и "Атрибут"=dword:значение для чисел.
Похоже, возможно создавать только один ключ и параметры внутри него.

[REGEDIT]
Software\New Life of Heroes\Heroes of Might and Magic III\3.5
"WoG_Version"="3.53"

[REGEDIT]
Software\MegaSoft\ERM Scripter
"SynCompletionProposal1_Width"=dword:350
"SynCompletionProposal2_Width"=dword:350

Если атрибут пуст, устанавливается (значение по умолчанию) у ключа.

[REGEDIT]
Software\hi
""="hi!"

[INSTALL]
Здесь идут команды вида:
XXXX "параметр" W+"параметр 2"
XXXX - команда.
W+ означает, что операция производится в папке Героев. Некоторые команды поддерживают другие базовые папки:
P+ меню "Программы" в "Пуск"
I+ рабочий стол
Если ничего из вышеперечисленного не указано, операция производится во временной папке.

VERS "параметр"
 Неизвестно. Возможно, версия синтаксиса. Обычно используется параметр "C" или "A".

DELL "файл" W+"папка"
 Удаляет файл(ы) в папке. В параметре "файл" можно указать любую маску.
DELL "*.*" W+"erm_help\images\"

Можно удалять и папки:
DELL "format" W+"erm_help\"

UNRA "файл" W+"папка"
Извлекает файл из архива в заданную папку. Если папки, куда производится копирование не существует, то она создается.
В качестве параметра "файл" могут идти некоторые маски, например, "*.*"
Внимание: Не любые маски поддерживаются, например, команда UNRA "script*.*" W+ извлечет все файлы, а не только те, что начинаются на "script".

UNRA "Mapmaker Tools.txt" W+"erm_s\"

EXEC "файл" W+"папка"
Запускает указанный файл из указанной папки. В параметре "файл" можно указывать маску.
Внимание: файлы запускаются в конце установки, поэтому вы не сможете удалить запущенные файлы после запуска.

CMPC "файлы" W+"папка"
Копирует файлы в папку. В параметре "файлы" можно использовать маску. Он должен содержать полный путь к файлам относительно папки Героев.
Внимание: копирование не происходит, если папка, куда производится копирование, не существует.

CMPC "erm_help\*.*" W+"erm_help\backup\"

SRCH "файл" W+"сообщение"
Проверяет существование указанного файла. Если файл не существует, выводит указанное сообщение. Может искать файл по маске. Если хоть один файл, удовлетворяющий маске, существует, сообщение не выводится.
Сообщение может состоять из нескольких строк, но вместо перевода строки надо писать @@.
Во всех существующих wog-файлах используется просто для вывода сообщений.

SRCH "--------.---" W+"ERM Help and Tools are installed succesfully@@Новая строка."

MDIR "название папки" W+"путь"
 Создает папку в указанном месте. Поддерживает и W+, и P+, и I+.

MDIR "New Life of Heroes" P+

ICON "название ярлыка" I+"путь к файлу"
Создает ярлык. Поддерживает только P+ и I+. Если ранее шла команда MDIR, создает ярлык внутри указанной в той команде директории.

MDIR "New Life of Heroes" P+
ICON "ERM Script Editor for Heroes III In the Wake of Gods" P+"erm_s\erm_s.exe"


About

Команда WoG
Идея ERM:
Слава Сальников
Программисты:
Александр Карпеко
Александр Трифонов
Слава Сальников

Главные художники:
Алексей Пичулин
Алексей Васильев (Darkloke)
Bruno
Dieter Averbeck
Mathias Launhardt
Петр Алексеев (Arstahd)

Художники:
Александр Карпеко
Артем Гагарин
Bianor
Jerry Kowalczyk (Treupp)
Jonas Gustafsson
Константин Ночев (Dutch)
Mandi (Kitten Angel)
Сергей Вахрамеев
Слава Сальников
Виктория Калинина (Candy)

ERM программирование и/или
дизайнеры уровней:
Александр Карпеко
Александр Трифонов
Александра Балахура
Алексей Пичулин
Alexis Koz
Anders Jonsson
Андрей Адуцкевич (Perfecto)
Bruno
COX
Dieter Averbeck
Дмитрий Леликов
Donald X.Vaccarino
Jack Stebaev (AsPiN)
Marc Lasch
Петр Алексеев (Arstahd)
Petyo Georgiev (Petronius)
Qurqirish Dragon
Rich Reed (Space8999)
Robert Bergerfjall (Overlord)
Sir Four
Слава Сальников
Steven Lynch
Thomas Franz (samot)
Timothy Pulver
Tobyn

WoG & ERM документация:
Алексей Пичулин
Bruno
Darkloke
George Toganel (Pushtiu')
Jack Stebaev (AsPiN)
Kamil Belau (Acid Dragon)
Marcus the Red
Yura Metelyov (Ennin)
Слава Сальников
Timothy Pulver

Ведущие ERM тестеры:
Donald X.Vaccarino
Gangrail
Jonas Gustafsson
Roland Rollig (Rasputin)
Stefan Pavlov (Ste)
Steve Hanna (ByteBandit)
Timothy Pulver

Тестеры:
Все мы и
WakeOfGods fan group

Веб-мастер:
Алексей Пичулин

Веб-художники:
Алексей Пичулин
Дмитрий Леликов

Особые благодарности:
Alex 2k
Alexander the Artist
Alexander Bass
Алексей Крючков (GreyMage)
Andrew Svietlichnyy
Andrew Yang
Angelspit
Dan Lind
Glover
Paul Lipka (Lipa)
Psycomonkee
Sergey Gorbanyov
Simon Mooncalf
Slaim Master
Theo van Bekkum
Xerobull


ZVSE

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

См. также:
Триггеры: общая информация
Ресейверы: общая информация
Введение


Таблица артефактов
(артефакт - тип 5)
Таблицы
По алфавиту

Номер | Артефакт
0 | Книга Заклинаний
1 | Свиток с Заклинаниями
2 | Грааль
3 | Катапульта
4 | Баллиста
5 | Подвода с Боеприпасами
6 | Санитарная Палатка
7 | Секира Кентавра
8 | Черный Клинок Мертвого Рыцаря
9 | Великий Гноллий Кистень
10 | Карающая Дубина Огра
11 | Адский Меч
12 | Гладиус Титана
13 | Щит Гномьих Героев
14 | Щит Тоскующих Мертвецов
15 | Щит Короля Гноллов
16 | Щит Яростного Огра
17 | Щит Проклятых
18 | Щит Стража
19 | Шлем Белого Единорога
20 | Шлем-Череп
21 | Шлем Хаоса
22 | Корона Верховного Волхва
23 | Шлем Сатанинской Ярости
24 | Шлем Небесного Грома
25 | Нагрудник из Окаменелого Дерева
26 | Доспехи из Ребер
27 | Кольчуга Великого Василиска
28 | Туника Короля Циклопов
29 | Нагрудник из Серного Камня
30 | Латы Титана
31 | Магические Доспехи
32 | Сандалии Святых
33 | Ожерелье Божественной Благодати
34 | Щит Львиной Храбрости
35 | Меч Правосудия
36 | Шлем Божественного Просвещения
37 | Неподвижный Глаз Дракона
38 | Языки Пламени Красного Дракона
39 | Щит из Чешуи Дракона
40 | Доспехи из Чешуи Дракона
41 | Наколенники из Драконьей Кости
42 | Плащ из Драконьих Крыльев
43 | Ожерелье из Зубов Дракона
44 | Корона из Зубов Дракона
45 | Застывший Глаз Дракона
46 | Клевер Удачи
47 | Карты Пророчества
48 | Голубка Удачи
49 | Значок Смелости
50 | Герб Доблести
51 | Знак Отваги
52 | Телескоп
53 | Подзорная Труба
54 | Амулет Гробовщика
55 | Мантия Вампира
56 | Сапоги Мертвеца
57 | Колье Неприступности
58 | Мантия Равновесия
59 | Сапоги Противодействия
60 | Эльфийский Лук из Вишневого Дерева
61 | Тетива из Волоса Гривы Единорога
62 | Стрелы из Ангельских Перьев
63 | Птица Познания
64 | Бесстрашный Хранитель
65 | Символ Знаний
66 | Медаль Дипломата
67 | Кольцо Дипломата
68 | Лента Посла
69 | Кольцо Странника
70 | Перчатки Всадника
71 | Ожерелье Морского Проведения
72 | Крылья Ангела
73 | Амулет Маны
74 | Талисман Маны
75 | Магическая Медаль Маны
76 | Магическое Ожерелье
77 | Магическое Кольцо
78 | Магическая Накидка
79 | Сфера Небесного Свода
80 | Сфера Илистого Озера
81 | Сфера Бушующего Огня
82 | Сфера Проливного Дождя
83 | Плащ Отречения
84 | Дух Уныния
85 | Песочные Часы Недоброго Часа
86 | Фолиант Магии Огня
87 | Фолиант Магии Воздуха
88 | Фолиант Магии Воды
89 | Фолиант Магии Земли
90 | Сапоги Левитации
91 | Золотой Лук
92 | Шар Постоянства
93 | Медаль Уязвимости
94 | Кольцо Жизненной Силы
95 | Кольцо Жизни
96 | Склянка Жизненной Силы
97 | Ожерелье Стремительности
98 | Сапоги-Скороходы
99 | Накидка Скорости
100 | Брелок Бесстрастия
101 | Брелок Ясновидения
102 | Священный Брелок
103 | Брелок Жизни
104 | Брелок Смерти
105 | Брелок Свободы
106 | Брелок Отрицательности
107 | Брелок Абсолютной Памяти
108 | Брелок Смелости
109 | Плащ Бесконечных Кристаллов
110 | Кольцо Драгоценных Камней
111 | Неиссякаемая Склянка Ртути
112 | Неистощимая Подвода с Рудой
113 | Вечное Кольцо Серы
114 | Неистощимая Подвода Леса
115 | Неиссякаемый Мешок Золота
116 | Неиссякаемая Сума Золота
117 | Неиссякаемая Мошна Золота
118 | Ноги Легиона
119 | Поясница Легиона
120 | Туловище Легиона
121 | Руки Легиона
122 | Голова Легиона
123 | Шляпа Морского Капитана
124 | Шляпа Оратора
125 | Оковы Войны
126 | Сфера Запрещения
127 | Пузырек с Кровью Дракона
128 | Клинок Армагеддона
129 | Альянс Ангелов
130 | Плащ Короля Нежити
131 | Эликсир Жизни
132 | Доспехи Проклятого
133 | Статуя Легиона
134 | Мощь Отца Драконов
135 | Грохот Титана
136 | Шляпа Адмирала
137 | Лук Снайпера
138 | Колодец Волшебника
139 | Кольцо Мага
140 | Рог изобилия
141 | Волшебная Палочка
142 | Золотая Стрела
143 | Сила Монстра
144 | Пустой слот (только внутри героя!)
145 | Заблокированный слот (только внутри героя!)
146 | Топор Сокрушения
147 | Мифрильная Кольчуга
148 | Острейший Меч
149 | Шлем Бессмертия
150 | Колдовская Подвеска
151 | Сапоги Ускорения
152 | Ищущий Лук
153 | Глаз Дракона
154 | Закаленный Щит
155 | Кольцо Силы
156 | Знамя Полководца
157 | Багровый Щит Возмездия
158 | Топор Свирепости Лорда Варваров
159 | Сердце Дракона
160 | Ключ Врат
161 | Пустой Шлем
162 | Пустой Меч
163 | Пустой Щит
164 | Пустое Кольцо
165 | Пустое Кольцо 3х камней
166 | Пустое Широкое Ожерелье
167 | Пустая Броня
168 | Пустая Мантия
169 | Пустые Ботинки
170 | Пустой Рог


Таблица артефактов
(артефакт - тип 5)
Таблицы
По номерам

Номер | Артефакт
11 | Адский Меч
129 | Альянс Ангелов
54 | Амулет Гробовщика
73 | Амулет Маны
157 | Багровый Щит Возмездия
4 | Баллиста
64 | Бесстрашный Хранитель
107 | Брелок Абсолютной Памяти
100 | Брелок Бесстрастия
103 | Брелок Жизни
106 | Брелок Отрицательности
105 | Брелок Свободы
108 | Брелок Смелости
104 | Брелок Смерти
101 | Брелок Ясновидения
9 | Великий Гноллий Кистень
113 | Вечное Кольцо Серы
141 | Волшебная Палочка
50 | Герб Доблести
12 | Гладиус Титана
153 | Глаз Дракона
122 | Голова Легиона
48 | Голубка Удачи
2 | Грааль
135 | Грохот Титана
26 | Доспехи из Ребер
40 | Доспехи из Чешуи Дракона
132 | Доспехи Проклятого
84 | Дух Уныния
145 | Заблокированный слот (только внутри героя!)
154 | Закаленный Щит
45 | Застывший Глаз Дракона
51 | Знак Отваги
156 | Знамя Полководца
49 | Значок Смелости
142 | Золотая Стрела
91 | Золотой Лук
152 | Ищущий Лук
10 | Карающая Дубина Огра
47 | Карты Пророчества
3 | Катапульта
46 | Клевер Удачи
128 | Клинок Армагеддона
160 | Ключ Врат
0 | Книга Заклинаний
150 | Колдовская Подвеска
138 | Колодец Волшебника
57 | Колье Неприступности
67 | Кольцо Дипломата
110 | Кольцо Драгоценных Камней
94 | Кольцо Жизненной Силы
95 | Кольцо Жизни
139 | Кольцо Мага
155 | Кольцо Силы
69 | Кольцо Странника
27 | Кольчуга Великого Василиска
22 | Корона Верховного Волхва
44 | Корона из Зубов Дракона
72 | Крылья Ангела
30 | Латы Титана
68 | Лента Посла
137 | Лук Снайпера
75 | Магическая Медаль Маны
78 | Магическая Накидка
31 | Магические Доспехи
77 | Магическое Кольцо
76 | Магическое Ожерелье
55 | Мантия Вампира
58 | Мантия Равновесия
66 | Медаль Дипломата
93 | Медаль Уязвимости
35 | Меч Правосудия
147 | Мифрильная Кольчуга
134 | Мощь Отца Драконов
25 | Нагрудник из Окаменелого Дерева
29 | Нагрудник из Серного Камня
99 | Накидка Скорости
41 | Наколенники из Драконьей Кости
117 | Неиссякаемая Мошна Золота
111 | Неиссякаемая Склянка Ртути
116 | Неиссякаемая Сума Золота
115 | Неиссякаемый Мешок Золота
114 | Неистощимая Подвода Леса
112 | Неистощимая Подвода с Рудой
37 | Неподвижный Глаз Дракона
118 | Ноги Легиона
33 | Ожерелье Божественной Благодати
43 | Ожерелье из Зубов Дракона
71 | Ожерелье Морского Проведения
97 | Ожерелье Стремительности
125 | Оковы Войны
148 | Острейший Меч
70 | Перчатки Всадника
85 | Песочные Часы Недоброго Часа
109 | Плащ Бесконечных Кристаллов
42 | Плащ из Драконьих Крыльев
130 | Плащ Короля Нежити
83 | Плащ Отречения
5 | Подвода с Боеприпасами
53 | Подзорная Труба
119 | Поясница Легиона
63 | Птица Познания
127 | Пузырек с Кровью Дракона
167 | Пустая Броня
168 | Пустая Мантия
164 | Пустое Кольцо
165 | Пустое Кольцо 3х камней
166 | Пустое Широкое Ожерелье
162 | Пустой Меч
170 | Пустой Рог
144 | Пустой слот (только внутри героя!)
161 | Пустой Шлем
163 | Пустой Щит
169 | Пустые Ботинки
140 | Рог изобилия
121 | Руки Легиона
32 | Сандалии Святых
6 | Санитарная Палатка
90 | Сапоги Левитации
56 | Сапоги Мертвеца
59 | Сапоги Противодействия
151 | Сапоги Ускорения
98 | Сапоги-Скороходы
1 | Свиток с Заклинаниями
102 | Священный Брелок
7 | Секира Кентавра
159 | Сердце Дракона
143 | Сила Монстра
65 | Символ Знаний
96 | Склянка Жизненной Силы
133 | Статуя Легиона
62 | Стрелы из Ангельских Перьев
81 | Сфера Бушующего Огня
126 | Сфера Запрещения
80 | Сфера Илистого Озера
79 | Сфера Небесного Свода
82 | Сфера Проливного Дождя
74 | Талисман Маны
52 | Телескоп
61 | Тетива из Волоса Гривы Единорога
158 | Топор Свирепости Лорда Варваров
146 | Топор Сокрушения
120 | Туловище Легиона
28 | Туника Короля Циклопов
88 | Фолиант Магии Воды
87 | Фолиант Магии Воздуха
89 | Фолиант Магии Земли
86 | Фолиант Магии Огня
8 | Черный Клинок Мертвого Рыцаря
92 | Шар Постоянства
19 | Шлем Белого Единорога
149 | Шлем Бессмертия
36 | Шлем Божественного Просвещения
24 | Шлем Небесного Грома
23 | Шлем Сатанинской Ярости
21 | Шлем Хаоса
20 | Шлем-Череп
136 | Шляпа Адмирала
123 | Шляпа Морского Капитана
124 | Шляпа Оратора
13 | Щит Гномьих Героев
39 | Щит из Чешуи Дракона
15 | Щит Короля Гноллов
34 | Щит Львиной Храбрости
17 | Щит Проклятых
18 | Щит Стража
14 | Щит Тоскующих Мертвецов
16 | Щит Яростного Огра
131 | Эликсир Жизни
60 | Эльфийский Лук из Вишневого Дерева
38 | Языки Пламени Красного Дракона


Позиции артефактов
 Таблицы

Номер | Позиции
0 | Голова
1 | Плечи
2 | Шея
3 | Правая рука
4 | Левая рука
5 | Торс
6 | Правое кольцо
7 | Левое кольцо
8 | Ноги
9 | Разное 1
10 | Разное 2
11 | Разное 3
12 | Разное 4
13 | Баллиста (боевая машина 1)
14 | Тележка с боеприпасами (боевая машина 2)
15 | Палатка первой помощи (боевая машина 3)
16 | Катапульта
17 | Книга заклинаний
18 | Разное 5
19...82 | Слоты рюкзака


Позиции артефактов
для UN:A
Таблицы

Номер | Позиция
0 | Отсут. (только рюкзак) (Грааль)
1 | Голова
2 | Плечи
3 | Шея
4 | Правая рука
5 | Левая рука
6 | Торс
7 | Кольцо (любое)
8 | Ноги
9 | Разное (любое)
10 | Баллиста (боевая машина 1)
11 | Тележка с боеприпасами (боевая машина 2)
12 | Палатка первой помощи (боевая машина 3)
13 | Катапульта
14 | Книга заклинаний
65 | Левое кольцо
1334 | Разное 1
1339 | Правое кольцо
16671 | Любая рука
21732 | Разное 2
21748 | Разное 5
35338 | Разное 4
117033 | Разное 3


Фон в битве
(Используется в опции BA:B)
Таблицы

Номер | Описание
-1 | Стандартная
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |


Цвета стражей прохода и палаток

Цвета стражей прохода, стражей границ и палаток ключника
Таблицы

Номер | Цвет
0 | Светло-голубая
1 | Зеленая
2 | Красная
3 | Темно-синяя
4 | Коричневая
5 | Фиолетовая
6 | Белая
7 | Черная


Проклятья и благословения

Таблица проклятий и благословений
 Таблицы

# | Картинка | Пояснения и установки
1 |  | Герой не может исследовать новые земли. Сила проклятья = 0
2 |  | Один слот героя блокируется. Сила проклятья = номер слота (-1 = любой).
3 |  | Ни один монстр не присоединяется к герою. Сила проклятья = 0
4 |  | Хозяин каждый день теряет деньги. Сила проклятья = кол-во золота.
5 |  | Получение доп. ресурсов каждый день. Кристаллы, драг. камни, ртуть, сера. Сила проклятья = кол-во ресурсов.
6 |  | Ежедневная потеря маны. Сила проклятья = кол-ву маны.
7 |  | Ежедневно дополняет Ману. Сила проклятья = кол-ву доп. маны.
8 |  | Установить радиус видимости на 2. Сила проклятья = 0
9 |  | Ежедневное получение опыта. Сила проклятья = кол-ву доп. опыта.
10 |  | Герой теряет очки движения. Сила проклятья = кол-ву очков движения.
11 |  | Пока не работает
12 |  | Пока не работает
13 |  | Пока не работает
14 |  | Пока не работает
15 |  | Ежедневная доп. древесина. Сила проклятья = кол-ву доп. древесины.
16 |  | Ежедневная доп. руда. Сила проклятья = кол-ву доп. руды.
17 |  | Ежедневные доп. драг. камни. Сила проклятья = кол-ву доп. драг. камней.
18 |  | Ежедневная доп. ртуть. Сила проклятья = кол-ву доп. ртути.
19 |  | Ежедневная доп. сера. Сила проклятья = кол-ву доп. серы.
20 |  | Ежедневные доп. кристаллы. Сила проклятья = кол-ву доп. кристаллов.
21 |  | Ежедневное доп. золото. Сила проклятья = кол-ву доп. золота.
22 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
23 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
24 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
25 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
26 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
27 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
28 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
29 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
30 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
31 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
32 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
33 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
34 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
35 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
36 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
37 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
38 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
39 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
40 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
41 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
42 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
43 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
44 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
45 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
46 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
47 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
48 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
49 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
50 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
51 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
52 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
53 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
54 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
55 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
56 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
57 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
58 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
59 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
60 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
61 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
62 |  | Невозможность посетить объект на картинке. Сила проклятья = 0
63 |  | Пока не работает
64 |  | Ежедневное получение доп. древесины и руды. Сила проклятья = кол-ву руды и древесины.
65 |  | Увеличить очки хода героя. . Сила проклятья = кол-во доп.очков хода.


Таблица зданий для CA:B

Таблица строений
 Таблицы

Байт | Бит в байте | Номер здания | Имя здания
0 | 01 | 0 | Гильдия магов уровня 1
0 | 02 | 1 | Гильдия магов уровня 2
0 | 04 | 2 | Гильдия магов уровня 3
0 | 08 | 3 | Гильдия магов уровня 4
0 | 16 | 4 | Гильдия магов уровня 5
0 | 32 | 5 | Таверна
0 | 64 | 6 | Верфь (0,4,7,8); ??? (1,2,3,5,6)
0 | 128 | 7 | Форт
1 | 01 | 8 | Цитадель
1 | 02 | 9 | Замок
1 | 04 | 10 | Сельская управа
1 | 08 | 11 | Префектура
1 | 16 | 12 | Муниципалитет
1 | 32 | 13 | Капитолий
1 | 64 | 14 | Рынок
1 | 128 | 15 | Хранилище ресурсов
2 | 01 | 16 | Кузница
2 | 02 | 17 | Маяк (0), Таинственный пруд (1), Торговцы артефактами (2,5,8), ??? (3), Вуаль Тьмы (4), Черный ход (6), Клетка богов Войны (7)
2 | 04 | 18 | Строение орды для неулучшенных существ: Грифонов, Гномов, Каменных Горгулий, Бесов, Скелетов, Троглодитов, Гоблинов, Гноллов, Маленьких Фей
2 | 08 | 19 | Строение орды для улучшенных существ: Королевские Грифоны, Боевые Гномы, Обсидиановые Горгульи, Прилипалы, Скелеты-Воины, Адские Троглодиты, Хобгоблины, Гноллы-Мародеры, Феи
2 | 16 | 20 | ??? (0,1,2,3,4,5,6,7,8)
2 | 32 | 21 | Конюшни (0), Фонтан Удачи (1), Смотровая башня (2), Серные Тучи (3), Усилитель Некромантии (4), Водоворот Маны (5), Гильдия наемников (6), Знаки страха (7), Университет магии (8)
2 | 64 | 22 | Братство Меча (0), Сокровищница гномов (1), Библиотека (2), Врата замка (3), Трансформатор Скелетов (4), Портал Вызова (5), Двор Баллист (6), Кровавый Обелиск (7), ??? (8)
2 | 128 | 23 | ??? (0,1,4,7,8), Стена Знаний (2), Орден Огня (3), Академия боевых искусств (5), Храм Валгаллы (6)
3 | 01 | 24 | ??? (0,2,4,5,6,7,8), Строение орды для неулучшенных существ: Дендроиды-стражники, Адские гончие
3 | 02 | 25 | ??? (0,2,4,5,6,7,8), Строение орды для улучшенных существ: Дендроиды-солдаты, Церберы
3 | 04 | 26 | Грааль
3 | 08 | 27 | ??? (все)
3 | 16 | 28 | ??? (все)
3 | 32 | 29 | ??? (все)
3 | 64 | 30 | Жилище 1го уровня
3 | 128 | 31 | Жилище 2го уровня
4 | 01 | 32 | Жилище 3го уровня
4 | 02 | 33 | Жилище 4го уровня
4 | 04 | 34 | Жилище 5го уровня
4 | 08 | 35 | Жилище 6го уровня
4 | 16 | 36 | Жилище 7го уровня
4 | 32 | 37 | Улучшенное жилище 1го уровня
4 | 64 | 38 | Улучшенное жилище 2го уровня
4 | 128 | 39 | Улучшенное жилище 3го уровня
5 | 01 | 40 | Улучшенное жилище 4го уровня
5 | 02 | 41 | Улучшенное жилище 5го уровня
5 | 04 | 42 | Улучшенное жилище 6го уровня
5 | 08 | 43 | Улучшенное жилище 7го уровня


Городские строения

Разделы: 1 2 3 4 5 6 7 8 9

Городские строения
 Таблицы

Номер | Строение
0 | Префектура
1 | Муниципалитет
2 | Капитолий
3 | Форт
4 | Цитадель
5 | Замок
6 | Таверна
7 | Кузница
8 | Рынок
9 | Хранилище ресурсов

Некоторые номера строений совпадают. Для удобства они распределены по таблицам для каждого замка.

Замок
10 | НЕ ИСПОЛЬЗУЕТСЯ
11 | Гильдия магов 1го уровня
12 | Гильдия магов 2го уровня
13 | Гильдия магов 3го уровня
14 | Гильдия магов 4го уровня
15 | НЕ ИСПОЛЬЗУЕТСЯ
16 | Верфь
17 | Колосс
18 | Маяк
19 | Братство Меча
20 | Конюшни
21 | НЕ ИСПОЛЬЗУЕТСЯ
22 | Сторожка
23 | Улучшенная сторожка
24 | НЕ ИСПОЛЬЗУЕТСЯ
25 | Башня стрелков
26 | Улучшенная башня стрелков
27 | НЕ ИСПОЛЬЗУЕТСЯ
28 | Башня Грифонов
29 | Улучшенная башня Грифонов
30 | Бастион Грифонов
31 | Бараки
32 | Улучшенные Бараки
33 | НЕ ИСПОЛЬЗУЕТСЯ
34 | Монастырь
35 | Улучшенный монастырь
36 | НЕ ИСПОЛЬЗУЕТСЯ
37 | Ипподром
38 | Улучшенный Ипподром
39 | Портал Славы
40 | Улучшенный портал Славы
Оплот
10 | НЕ ИСПОЛЬЗУЕТСЯ
11 | Гильдия магов 1го уровня
12 | Гильдия магов 2го уровня
13 | Гильдия магов 3го уровня
14 | Гильдия магов 4го уровня
15 | Гильдия магов 5го уровня
16 | НЕ ИСПОЛЬЗУЕТСЯ
17 | Хранитель Духа
18 | Мистический пруд
19 | Фонтан удачи
20 | Сокровищница
21 | НЕ ИСПОЛЬЗУЕТСЯ
22 | Конюшни Кентавров
23 | Улучшенные конюшни Кентавров
24 | НЕ ИСПОЛЬЗУЕТСЯ
25 | Коттедж Гномов
26 | Улучшенный коттедж Гномов
27 | Гильдия Горняков
28 | Усадьба
29 | Улучшенная усадьба
30 | НЕ ИСПОЛЬЗУЕТСЯ
31 | Заколдованный ручей
32 | Улучшенный заколдованный ручей
33 | НЕ ИСПОЛЬЗУЕТСЯ
34 | Арка Дендроидов
35 | Улучшенная арка Дендроидов
36 | Молодые Дендроиды
37 | Поляна Единорогов
38 | Улучшенная поляна Единорогов
39 | Скалы Драконов
40 | Скалы Драконов
Башня
10 | Торговцы артефактами
11 | Гильдия магов 1го уровня
12 | Гильдия магов 2го уровня
13 | Гильдия магов 3го уровня
14 | Гильдия магов 4го уровня
15 | Гильдия магов 5го уровня
16 | НЕ ИСПОЛЬЗУЕТСЯ
17 | Небесный корабль
18 | Библиотека
19 | Стена знаний
20 | Смотровая башня
21 | НЕ ИСПОЛЬЗУЕТСЯ
22 | Мастерская
23 | Улучшенная мастерская
24 | НЕ ИСПОЛЬЗУЕТСЯ
25 | Парапет
26 | Улучшенный парапет
27 | Крылья ваятеля
28 | Фабрика Големов
29 | Улучшенная фабрика Големов
30 | НЕ ИСПОЛЬЗУЕТСЯ
31 | Башня Магов
32 | Улучшенная башня Магов
33 | НЕ ИСПОЛЬЗУЕТСЯ
34 | Алтарь желаний
35 | Улучшенный алтарь желаний
36 | НЕ ИСПОЛЬЗУЕТСЯ
37 | Золотой Павильон
38 | Улучшенный золотой павильон
39 | Заоблачный храм
40 | Улучшенный Заоблачный храм
Инферно
10 | НЕ ИСПОЛЬЗУЕТСЯ
11 | Гильдия магов 1го уровня
12 | Гильдия магов 2го уровня
13 | Гильдия магов 3го уровня
14 | Гильдия магов 4го уровня
15 | Гильдия магов 5го уровня
16 | НЕ ИСПОЛЬЗУЕТСЯ
17 | Бог Огня
18 | Серные тучи
19 | Врата Замка
20 | Орден Огня
21 | НЕ ИСПОЛЬЗУЕТСЯ
22 | Котел Бесов
23 | Улучшенный котел Бесов
24 | Инкубатор
25 | Дворец грехов
26 | Улучшенный дворец грехов
27 | НЕ ИСПОЛЬЗУЕТСЯ
28 | Псарни
29 | Улучшенные псарни
30 | Клетки
31 | Врата Демонов
32 | Улучшенные врата Демонов
33 | НЕ ИСПОЛЬЗУЕТСЯ
34 | Адская дыра
35 | Улучшенная адская дыра
36 | НЕ ИСПОЛЬЗУЕТСЯ
37 | Огненное озеро
38 | Улучшенное огненное озеро
39 | Покинутый дворец
40 | Улучшенный покинутый дворец
Некрополис
10 | НЕ ИСПОЛЬЗУЕТСЯ
11 | Гильдия магов 1го уровня
12 | Гильдия магов 2го уровня
13 | Гильдия магов 3го уровня
14 | Гильдия магов 4го уровня
15 | Гильдия магов 5го уровня
16 | Верфь
17 | Темница Душ
18 | Вуаль тьмы
19 | Усилитель Некромантии
20 | Трансформатор Скелетов
21 | НЕ ИСПОЛЬЗУЕТСЯ
22 | Проклятый Храм
23 | Улучшенный проклятый храм
24 | Разрытые могилы
25 | Кладбище
26 | Улучшенное кладбище
27 | НЕ ИСПОЛЬЗУЕТСЯ
28 | Гробница душ
29 | Улучшенная гробница Душ
30 | НЕ ИСПОЛЬЗУЕТСЯ
31 | Поместье
32 | Улучшенное поместье
33 | НЕ ИСПОЛЬЗУЕТСЯ
34 | Мавзолей
35 | Улучшенный Мавзолей
36 | НЕ ИСПОЛЬЗУЕТСЯ
37 | Дворец Тьмы
38 | Улучшенный дворец Тьмы
39 | Склеп Драконов
40 | Улучшенный склеп Драконов
Темница
10 | Торговцы артефактами
11 | Гильдия магов 1го уровня
12 | Гильдия магов 2го уровня
13 | Гильдия магов 3го уровня
14 | Гильдия магов 4го уровня
15 | Гильдия магов 5го уровня
16 | НЕ ИСПОЛЬЗУЕТСЯ
17 | Хранитель Земли
18 | Водоворот маны
19 | Портал вызова
20 | Академия боевых искусств
21 | НЕ ИСПОЛЬЗУЕТСЯ
22 | Загон
23 | Улучшенный загон
24 | Грибные кольца
25 | Чердак Гарпий
26 | Улучшенный чердак Гарпий
27 | Опора Глаз
28 | Улучшенная опора Глаз
29 | НЕ ИСПОЛЬЗУЕТСЯ
30 | Капелла безмолвия
31 | Улучшенная капелла Безмолвия
32 | НЕ ИСПОЛЬЗУЕТСЯ
33 | Лабиринт
34 | Улучшенный лабиринт
35 | НЕ ИСПОЛЬЗУЕТСЯ
36 | Логово Мантикоры
37 | Улучшенное логово Мантикоры
38 | Пещера Дракона
39 | Улучшенная пещера Дракона
40 |
Цитадель
10 | НЕ ИСПОЛЬЗУЕТСЯ
11 | Гильдия магов 1го уровня
12 | Гильдия магов 2го уровня
13 | Гильдия магов 3го уровня
14 | НЕ ИСПОЛЬЗУЕТСЯ
15 | НЕ ИСПОЛЬЗУЕТСЯ
16 | НЕ ИСПОЛЬЗУЕТСЯ
17 | Памятник Богам Войны
18 | Черный ход
19 | ???
20 | Двор баллист
21 | Башня Валгаллы
22 | Бараки Гоблинов
23 | Улучшенные бараки Гоблинов
24 | Столовая
25 | Загон волков
26 | Улучшенный загон волков
27 | НЕ ИСПОЛЬЗУЕТСЯ
28 | Башня Орков
29 | Улучшенная башня Орков
30 | НЕ ИСПОЛЬЗУЕТСЯ
31 | Форт Огров
32 | Улучшенный форт Огров
33 | НЕ ИСПОЛЬЗУЕТСЯ
34 | Гнездо в скалах
35 | Улучшенное гнездо в скалах
36 | НЕ ИСПОЛЬЗУЕТСЯ
37 | Пещера Циклопов
38 | Улучшенная пещера Циклопов
39 | Логово Чудищ
40 | Улучшенное логово Чудищ
Крепость
10 | НЕ ИСПОЛЬЗУЕТСЯ
11 | Гильдия магов 1го уровня
12 | Гильдия магов 2го уровня
13 | Гильдия магов 3го уровня
14 | НЕ ИСПОЛЬЗУЕТСЯ
15 | НЕ ИСПОЛЬЗУЕТСЯ
16 | Верфь
17 | Плотоядное растение
18 | Клетка Богов войны
19 | Знаки страха
20 | Кровавый обелиск
21 | НЕ ИСПОЛЬЗУЕТСЯ
22 | Хижина Гноллов
23 | Улучшенная хижина Гнолллов
24 | Квартира капитана
25 | Убежище ящеров
26 | Улучшенное убежище ящеров
27 | НЕ ИСПОЛЬЗУЕТСЯ
28 | Гнездо змиев
29 | Улучшенное гнездо змиев
30 | НЕ ИСПОЛЬЗУЕТСЯ
31 | Яма Василиска
32 | Улучшенная яма Василиска
33 | НЕ ИСПОЛЬЗУЕТСЯ
34 | Логово Горгоны
35 | Улучшенное логово Горгоны
36 | НЕ ИСПОЛЬЗУЕТСЯ
37 | Гнездо Виверн
38 | Улучшенное гнездо Виверн
39 | Пруд Гидр
40 | Улучшенный пруд Гидр
Сопряжение
10 | Торговцы артефактами
11 | Гильдия магов 1го уровня
12 | Гильдия магов 2го уровня
13 | Гильдия магов 3го уровня
14 | Гильдия магов 4го уровня
15 | Гильдия магов 5го уровня
16 | Верфь
17 | Радуга
18 | Университет магии
19 | НЕ ИСПОЛЬЗУЕТСЯ
20 | НЕ ИСПОЛЬЗУЕТСЯ
21 | НЕ ИСПОЛЬЗУЕТСЯ
22 | Волшебный фонарик
23 | Улучшенный волшебный фонарик
24 | Сад жизни
25 | Алтарь воздуха
26 | Улучшенный алтарь воздуха
27 | НЕ ИСПОЛЬЗУЕТСЯ
28 | Алтарь воды
29 | Улучшенный алтарь воды
30 | НЕ ИСПОЛЬЗУЕТСЯ
31 | Алтарь огня
32 | Улучшенный алтарь огня
33 | НЕ ИСПОЛЬЗУЕТСЯ
34 | Алтарь земли
35 | Улучшенный алтарь земли
36 | НЕ ИСПОЛЬЗУЕТСЯ
37 | Алтарь Мысли
38 | Улучшенный алтарь мыслей
39 | Погребальный костер
40 | Улучшенные Погребальный костер


Хранилища существ
 Тип 16
 Таблицы

Подтип | Название
0 | Хранилище Циклопов
1 | Сокровищница Гномов
2 | Консерватория Грифонов
3 | Убежище Бесов
4 | Склады Медуз
5 | Банк Наг
6 | Улей Змиев
7 | НЕ ИСПОЛЬЗУЕТСЯ
8 | НЕ ИСПОЛЬЗУЕТСЯ
9 | НЕ ИСПОЛЬЗУЕТСЯ
10 | НЕ ИСПОЛЬЗУЕТСЯ
11 | Охотничья сторожка
12 | Покрытый снегом Грот
13 | Дворец Духа Войны (Эмиссар Войны)
14 | Цитадель Умиротворения (Эмиссар Мира)
15 | Монастырь Волшебников (Эмиссары Магии)
16 | Библиотека Легенд (Эмиссар Знаний)
17 | Трансильванская таверна
18 | Дом летучей мыши
19 | Потерянная бутыль
20 | Грот


Области кликов мышью

Разделы: 1 2 3 4 5

Области для кликов мышью (для CM:I)
 Таблицы
Области на экране приключений:
0 | Место без номера
1 | Мини-карта
2 | Рамка окна информации по герою
3 | Кнопка «Обзор королевства»
4 | Кнопка «Подземелье/поверхность»
5 | Кнопка «Журнал»
6 | Кнопка «Усыпить героя»
7 | Кнопка «Двигать героя»
8 | Кнопка «Колдовать заклинание»
9 | Кнопка «Опции приключений»
10 | Кнопка «Системные опции»
11 | Кнопка «Следующий герой»
12 | Кнопка «Завершить ход»
13 | Лист героев: стрелка прокрутки вверх
14 | Лист героев: стрелка прокрутки вниз
20 | Лист героев: шкала ходов героя #1
21 | Лист героев: шкала ходов героя #2
22 | Лист героев: шкала ходов героя #3
23 | Лист героев: шкала ходов героя #4
24 | Лист героев: шкала ходов героя #5
25 | Лист героев: шкала маны героя #1
26 | Лист героев: шкала маны героя #2
27 | Лист героев: шкала маны героя #3
28 | Лист героев: шкала маны героя #4
29 | Лист героев: шкала маны героя #5
30 | Лист городов: стрелка прокрутки вверх
31 | Лист городов: стрелка прокрутки вниз
32 | Лист городов: город #1
33 | Лист городов: город #2
34 | Лист городов: город #3
35 | Лист городов: город #4
36 | Лист городов: город #5
37 | Карта приключений
38 | Строка сообщений (сообщения, читы)
39 | Лист героев: герой #1
40 | Лист героев: герой #2
41 | Лист героев: герой #3
42 | Лист героев: герой #4
43 | Лист героев: герой #5
1000 | Строка ресурсов и даты (вся)
1001 | Значение дерева
1002 | Значение ртути
1003 | Значение руды
1004 | Значение серы
1005 | Значение кристаллов
1006 | Значение драг. камней
1007 | Значение золота
1008 | Дата (месяц/день/неделя)
1009 | Иконка дерева
1010 | Иконка ртути
1011 | Иконка руды
1012 | Иконка серы
1013 | Иконка кристаллов
1014 | Иконка драг. камней
1015 | Иконка золота
2000 | Окно информации по герою
2001 | Окно информации по герою: портрет
2002 | Окно информации по герою: имя
2003 | Окно информации по герою: атака
2004 | Окно информации по герою: защита
2005 | Окно информации по герою: сила магии
2006 | Окно информации по герою: знания

Области в окне города

0 | Гильдия магов 1го уровня
1 | Гильдия магов 2го уровня
2 | Гильдия магов 3го уровня
3 | Гильдия магов 4го уровня
4 | Гильдия магов 5го уровня
5 | Таверна
6 | Верфь
7 | Форт
8 | Цитадель
9 | Замок
10 | Сельская управа
11 | Префектура
12 | Муниципалитет
13 | Капитолий
14 | Рынок
15 | Хранилище ресурсов
16 | Кузница
17 | Специальные постройки: Мистический фонтан (Оплот), Вуаль тьмы (Некрополис), Торговцы артефактами (Башня, Темница и Сопряжение), Черный ход (Цитадель), Клетка богов войны (Крепость), Маяк (Замок)
18 | Строения орд существ: Гильдия горняков (Оплот), Бастион Грифонов (Замок), Грибные кольца (Темница), Разрытые могилы (Некрополис), Инкубатор (Инферно), Сад Жизни (Сопряжение), Крылья ваятелей (Башня), Столовая (Цитадель), Квартира капитана (Крепость)
19 | Улучш. жилища вместе с ордами (см. 18 для подробностей)
21 | Специальные постройки: Знаки страха (Крепость), Усилитель некромантии (Некрополис), Смотровая башня (Башня), Водоворот маны (Темница), Конюшни (Замок), Серные тучи (Инферно), Фонтан удачи (Оплот), Гильдия наемников (Цитадель), Университет магии (Сопряжение).
22 | Специальные постройки: Двор баллист (Цитадель), Портал вызова (Темница), Обелиски крови (Крепость), Библиотека (Башня), Трансформатор скелетов (Некрополис), Сокровищница (Оплот), Братство меча (Замок), Врата города (Инферно), Водопад (Сопряжение, неактивно!)
23 | Специальные постройки: Академия боевых искусств (Темница), Орден огня (Инферно), Стена знаний (Башня), Храм Валгаллы (Цитадель), Водопад (Замок, неактивно!), Маленькие хижины (Оплот, неактивно!), Болото (Крепость, неактивно!), Кладбища (Некрополис, неактивно!), Тееритория, свободная от зданий (Сопряжение, неактивно!)
24 | Орды существ 2: Молодые дендроиды (Оплот), Клетки (Инферно)
25 | Улучш. жилище с ордой 2 (см. 24 для подробностей)
26 | Грааль
27 | Водопад (Цитадель, неактивно!)
28 | Область за рынком и хранилищем ресурсов (Некрополис, неактивно!)
29 | Область между постройками (Сопряжение, неактивно!)
30 | Жилище 1го уровня (базовое)
31 | Жилище 2го уровня (базовое)
32 | Жилище 3го уровня (базовое)
33 | Жилище 4го уровня (базовое)
34 | Жилище 5го уровня (базовое)
35 | Жилище 6го уровня (базовое)
36 | Жилище 7го уровня (базовое)
37 | Жилище 1го уровня (улучшенное)
38 | Жилище 2го уровня (улучшенное)
39 | Жилище 3го уровня (улучшенное)
40 | Жилище 4го уровня (улучшенное)
41 | Жилище 5го уровня (улучшенное)
42 | Жилище 6го уровня (улучшенное)
43 | Жилище 7го уровня (улучшенное)
115 | Существо в гарнизоне: слот 1
116 | Существо в гарнизоне: слот 2
117 | Существо в гарнизоне: слот 3
118 | Существо в гарнизоне: слот 4
119 | Существо в гарнизоне: слот 5
120 | Существо в гарнизоне: слот 6
121 | Существо в гарнизоне: слот 7
123 | Слот гарнизонного героя
125 | Слот героя-гостя
140 | Существо героя-гостя: слот 1
141 | Существо героя-гостя: слот 2
142 | Существо героя-гостя: слот 3
143 | Существо героя-гостя: слот 4
144 | Существо героя-гостя: слот 5
145 | Существо героя-гостя: слот 6
146 | Существо героя-гостя: слот 7
147 | Задний фон экрана города (нет объекта)
148 | Нижний задний фон экрана города (между слотами и иконками)
149 | Имя города
150 | Картинка замка
151 | Строка сообщений (подсказки)
152 | Лист городов: стрелка прокрутки вверх
153 | Лист городов: стрелка прокрутки вниз
154 | Кнопка «Разделить существ»
155 | 1ый (верхний) город в листе городов
156 | 2ой (средний) город в листе городов
157 | 3ий (нижний) город в листе городов
158 | Иконка «городской холл»
159 | Иконка замка
160 | Ежедневный доход города
164 | Иконка существ 1го уровня
165 | Иконка существ 2го уровня
166 | Иконка существ 3го уровня
167 | Иконка существ 4го уровня
168 | Иконка существ 5го уровня
169 | Иконка существ 6го уровня
170 | Иконка существ 7го уровня
171 | Иконка доп. существ (портал вызова)
172 | Иконка прироста существ 1го уровня
173 | Иконка прироста существ 2го уровня
174 | Иконка прироста существ 3го уровня
175 | Иконка прироста существ 4го уровня
176 | Иконка прироста существ 5го уровня
177 | Иконка прироста существ 6го уровня
178 | Иконка прироста существ 7го уровня
179 | Иконка прироста дополнительного существа (Портал вызова)
1001 | Общее количество дерева
1002 | Общее количество ртути
1003 | Общее количество руды
1004 | Общее количество серы
1005 | Общее количество кристаллов
1006 | Общее количество драг. камней
1007 | Общее количество золота
1008 | Дата (месяц/неделя/день)
1009 | Иконка дерева
1010 | Иконка ртути
1011 | Иконка руды
1012 | Иконка серы
1013 | Иконка кристаллов
1014 | Иконка драг. камней
1015 | Иконка золота
30720 | Кнопка «ОК»

Области в окне героя

0 | Пустая зона
1 | Имя
2 | Слот головы
3 | Слот плеч
4 | Слот шеи
5 | Слот правой руки
6 | Слот левой руки
7 | Слот торса
8 | Слот правого кольца
9 | Слот левого кольца
10 | Слот ног
11 | Слот разного (1ый)
12 | Слот разного (2ый)
13 | Слот разного (3ый)
14 | Слот разного (4ый)
15 | Слот баллисты
16 | Слот тележки с боеприпасами
17 | Слот палатки первой помощи
18 | Слот катапульты
19 | Слот книги заклинаний
20 | Слот разного (5ый)
40 | Слот рюкзака (1ый)
41 | Слот рюкзака (2ой)
42 | Слот рюкзака (3ий)
43 | Слот рюкзака (4ый)
44 | Слот рюкзака (5ый)
45 | Портрет героя
46 | Количество атаки
47 | Количество защиты
48 | Количество силы магии
49 | Количество знаний
50 | Иконка атаки
51 | Иконка защиты
52 | Иконка силы магии
53 | Иконка знаний
68 | Слот существ (1ый)
69 | Слот существ (2ой)
70 | Слот существ (3ий)
71 | Слот существ (4ый)
72 | Слот существ (5ый)
73 | Слот существ (6ой)
74 | Слот существ (7ой)
77 | Стрелка прокрутки рюкзака влево
78 | Стрелка прокрутки рюкзака вправо
79 | Иконка 1го навыка
80 | Иконка 2го навыка
81 | Иконка 3го навыка
82 | Иконка 4го навыка
83 | Иконка 5го навыка
84 | Иконка 6го навыка
85 | Иконка 7го навыка
86 | Иконка 8го навыка
87 | Имя 1го навыка
88 | Имя 2го навыка
89 | Имя 3го навыка
90 | Имя 4го навыка
91 | Имя 5го навыка
92 | Имя 6го навыка
93 | Имя 7го навыка
94 | Имя 8го навыка
95 | Уровень 1го навыка
96 | Уровень 2го навыка
97 | Уровень 3го навыка
98 | Уровень 4го навыка
99 | Уровень 5го навыка
100 | Уровень 6го навыка
101 | Уровень 7го навыка
102 | Уровень 8го навыка
103 | Атака (текст)
104 | Защита (текст)
105 | Сила магии (текст)
106 | Знания (текст)
107 | Иконка благословлений и проклятий
108 | Опыт (текст)
109 | Мана (текст)
110 | Журнал (текст)
111 | Уволить героя (текст)
112 | Опыт
113 | Мана
115 | Строка чата (подсказки)
116 | Иконка морали
117 | Иконка удачи
118 | Иконка специальности
119 | Иконка опыта
120 | Иконка маны
122 | Построение в битве: раздельно
124 | Построение в битве: тесно
126 | Кнопка «разрешить/отменить тактическую фазу»
127 | Кнопка «разделить существ»
128 | Кнопка «Журнал»
129 | Кнопка «Уволить героя»
130 | 1ый герой в листе героев
131 | 2ой герой в листе героев
132 | 3ий герой в листе героев
133 | 4ый герой в листе героев
134 | 5ый герой в листе героев
135 | 6ой герой в листе героев
136 | 7ой герой в листе героев
137 | 8ой герой в листе героев
138 | Текущий герой в листе героев
139 | Иконка божественных бонусов
140 | Уровень и класс
141 | Флаг рядом с листом героев
30720 | Кнопка «ОК»

Области встречи героев
Общие

0 | Пустая зона
115 | Иконка атаки
116 | Иконка защиты
117 | Иконка силы магии
118 | Иконка знаний
300 | Поле ввода (текст подсказок внизу экрана)
301 | Центральная область с двойными стрелками
30720 | Кнопка ОК
Левый герой
1 | Портрет героя
3 | Атака
4 | Защита
5 | Сила магии
6 | Знания
13 | 1ый слот существ
14 | 2ой слот существ
15 | 3ий слот существ
16 | 4ый слот существ
17 | 5ый слот существ
18 | 6ой слот существ
19 | 7ой слот существ
27 | Слот головы
28 | Слот плеч
29 | Слот шеи
30 | Слот правой руки
31 | Слот левой руки
32 | Слот торса
33 | Слот правого кольца
34 | Слот левого кольца
35 | Слот ног
36 | Слот под разное 1
37 | Слот под разное 2
38 | Слот под разное 3
39 | Слот под разное 4
40 | Слот баллисты
41 | Слот тележки с боеприпасами
42 | Слот палатки первой помощи
43 | Слот катапульты
44 | Слот книги заклинаний
45 | Слот под разное 5
65 | Количество существ в 1ом слоте
66 | Количество существ в 2ом слоте
67 | Количество существ в 3ем слоте
68 | Количество существ в 4ом слоте
69 | Количество существ в 5ом слоте
70 | Количество существ в 6ом слоте
71 | Количество существ в 7ом слоте
81 | Опыт
83 | Манна
85 | Журнал
87 | Имя, уровень и класс
89 | Слот рюкзака 1
90 | Слот рюкзака 2
91 | Слот рюкзака 3
92 | Слот рюкзака 4
93 | Слот рюкзака 5
99 | Стрелка прокрутки рюкзака влево
101 | Стрелка прокрутки рюкзака вправо
103 | Кнопка «разделить существ»
105 | Иконка специальности
107 | Иконка морали
109 | Иконка удача
111 | Иконка опыта
113 | Иконка маны
200 | Иконка 1ого вторичного навыка
201 | Иконка 2ого вторичного навыка
202 | Иконка 3его вторичного навыка
203 | Иконка 4ого вторичного навыка
204 | Иконка 5ого вторичного навыка
205 | Иконка 6ого вторичного навыка
206 | Иконка 7ого вторичного навыка
207 | Иконка 8ого вторичного навыка
Правый герой
2 | Портрет героя
8 | Атака
9 | Защита
10 | Сила магии
11 | Знания
20 | 1ый слот существ
21 | 2ой слот существ
22 | 3ий слот существ
23 | 4ый слот существ
24 | 5ый слот существ
25 | 6ой слот существ
26 | 7ой слот существ
46 | Слот головы
47 | Слот плеч
48 | Слот шеи
49 | Слот правой руки
50 | Слот левой руки
51 | Слот торса
52 | Слот правого кольца
53 | Слот левого кольца
54 | Слот ног
55 | Слот под разное 1
56 | Слот под разное 2
57 | Слот под разное 3
58 | Слот под разное 4
59 | Слот баллисты
60 | Слот тележки с боеприпасами
61 | Слот палатки первой помощи
62 | Слот катапульты
63 | Слот книги заклинаний
64 | Слот под разное 5
72 | Количество существ в 1ом слоте
73 | Количество существ в 2ом слоте
74 | Количество существ в 3ем слоте
75 | Количество существ в 4ом слоте
76 | Количество существ в 5ом слоте
77 | Количество существ в 6ом слоте
78 | Количество существ в 7ом слоте
82 | Опыт
84 | Манна
86 | Журнал
88 | Имя, уровень и класс
94 | Слот рюкзака 1
95 | Слот рюкзака 2
96 | Слот рюкзака 3
97 | Слот рюкзака 4
98 | Слот рюкзака 5
100 | Стрелка прокрутки рюкзака влево
102 | Стрелка прокрутки рюкзака вправо
104 | Кнопка «разделить существ»
106 | Иконка специальности
108 | Иконка морали
110 | Иконка удачи
112 | Иконка опыта
113 | Иконка маны
208 | Иконка 1ого вторичного навыка
209 | Иконка 2ого вторичного навыка
210 | Иконка 3его вторичного навыка
211 | Иконка 4ого вторичного навыка
212 | Иконка 5ого вторичного навыка
213 | Иконка 6ого вторичного навыка
214 | Иконка 7ого вторичного навыка
215 | Иконка 8ого вторичного навыка

Области в экране битвы
0 | Фон и пространство вне сетки поля плюс некоторые пробелы по бокам сетки
1 | Пробелы в сетке поля (кроме некоторых, имеющих значение 0)
2000 | Рамка вокруг кнопок
2001 | Кнопка «Сдаться»
2002 | Кнопка «Убежать»
2003 | Кнопка «Опции битвы»
2004 | Кнопка «Авто-бой»
2005 | Окно текста боя
2006 | Стрелка прокрутки вверх для окна текста
2007 | Стрелка прокрутки вниз для окна текста
2008 | Кнопка «Колдовать заклинание»
2009 | Кнопка «Подождать»
2010 | Кнопка «Защищаться»
2200 | Кнопка «Книга заклинаний» (независимо от состояния)
2205 | Первичные навыки в «Окно заклинаний»
2207 | Первичные навыки в «Окно заклинаний»
2214 | Картинка существа в «Окно заклинаний»
2216 | Средний слот в «Окно заклинаний»
2217 | Нижний слот в «Окно заклинаний»
2218 | Верхний слот в слоте «Окно заклинаний


Бонусы командиров
Таблицы

Бит | Номер | Описание
1 | 0 | Атака + Защита = уменьшение вражеской защиты на 50%
2 | 1 | Атака + Здоровье = страх
4 | 2 | Атака + Урон = всегда максимальный урон
8 | 3 | Атака + Сила Магии = безответный удар
16 | 4 | Атака + Скорость = стрельба
32 | 5 | Защита + Здоровье = отвечает всем
64 | 6 | Защита + Урон = бьет по всем врагам вокруг
128 | 7 | Защита + Сила Магии = огненный щит
256 | 8 | Защита + Скорость = блок
512 | 9 | Здоровье + Урон = двойной удар
1024 | 10 | Здоровье + Сила Магии = парализация
2048 | 11 | Здоровье + Скорость = регенерация
4096 | 12 | Урон + Сила Магии = смертельный взгляд
8192 | 13 | Урон + Скорость = кавалерийский бонус
16384 | 14 | Сила Магии + Скорость = полет


Комбо-артефакты

Комбо-артефакты и их номера
 Таблицы

Номер комбо | Артефакт
0 | Альянс Ангелов
1 | Плащ Короля Нежити
2 | Эликсир жизни
3 | Доспехи проклятого
4 | Статуя Легиона
5 | Мощь Отца Драконов
6 | Грохот Титана
7 | Шляпа Адмирала
8 | Лук снайпера
9 | Колодец волшебника
10 | Кольцо мага
11 | Рог изобилия
12 | Топор свирепости Лорда Варваров


Классы командиров
 Таблицы

№ | Герой | Командир
0 | Рыцарь, Клирик | Паладин
1 | Рейнджер, Друид | Знахарь
2 | Алхимик, Волшебник | Храмовница
3 | Демон, Еретик | Суккуб
4 | Рыцарь смерти, Некромант | Пожиратель душ
5 | Лорд, Чернокнижник | Зверь
6 | Варвар, Боевой маг | Вождь Огров
7 | Хозяин зверей, Ведьма | Шаман
8 | Путешественник, Элементалист | Астральный дух


Существа
 Таблицы

Номер | Существо
0 | Копейщик
1 | Алебардщик
2 | Арбалетчик
3 | Тяжелый Арбалетчик
4 | Грифон
5 | Королевский Грифон
6 | Мечник
7 | Крестоносец
8 | Монах
9 | Фанатик
10 | Кавалерист
11 | Чемпион
12 | Ангел
13 | Архангел
14 | Кентавр
15 | Капитан Кентавров
16 | Гном
17 | Боевой Гном
18 | Лесной Эльф
19 | Благородный Эльф
20 | Пегас
21 | Серебряный Пегас
22 | Дендроид Охранник
23 | Дендроид Солдат
24 | Единорог
25 | Боевой Единорог
26 | Зеленый Дракон
27 | Золотой Дракон
28 | Гремлин
29 | Мастер-Гремлин
30 | Каменная Горгулья
31 | Обсидиановая Горгулья
32 | Каменный Голем
33 | Стальной Голем
34 | Маг
35 | Архи-Маг
36 | Джинн
37 | Мастер-Джинн
38 | Нага
39 | Королева Нага
40 | Гигант
41 | Титан
42 | Бес
43 | Чёрт
44 | Гог
45 | Магог
46 | Адская Гончая
47 | Цербер
48 | Демон
49 | Рогатый Демон
50 | Порождение Зла
51 | Адское Отродье
52 | Ифрит
53 | Ифрит-Султан
54 | Дьявол
55 | Архидьявол
56 | Скелет
57 | Воин Скелет
58 | Живой Мертвец
59 | Зомби
60 | Страж
61 | Привидение
62 | Вампир
63 | Вампир Лорд
64 | Лич
65 | Могущественный Лич
66 | Черный Рыцарь
67 | Рыцарь Смерти
68 | Костяной Дракон
69 | Дракон-Привидение
70 | Троглодит
71 | Адский Троглодит
72 | Гарпия
73 | Гарпия-Ведьма
74 | Бехолдер
75 | Злой Глаз
76 | Медуза
77 | Королева Медуза
78 | Минотавр
79 | Король Минотавр
80 | Мантикора
81 | Скорпикора
82 | Красный Дракон
83 | Черный Дракон
84 | Гоблин
85 | Хобгоблин
86 | Наездник на волках
87 | Налетчик
88 | Орк
89 | Орк-Вождь
90 | Огр
91 | Огр-Шаман
92 | Птица Рух
93 | Птица-Гром
94 | Циклоп
95 | Король Циклопов
96 | Чудище
97 | Древнее Чудище
98 | Гнолл
99 | Гнолл-Мародер
100 | Ящер
101 | Ящер-Воин
102 | Горгона
103 | Могучая Горгона
104 | Змий
105 | Змий-Дракон
106 | Василиск
107 | Великий Василиск
108 | Виверн
109 | Виверн-Монарх
110 | Гидра
111 | Гидра Хаоса
112 | Воздушный Элементаль
113 | Элементаль Земли
114 | Огненный Элементаль
115 | Элементаль Воды
116 | Золотой Голем
117 | Алмазный Голем
118 | Маленькая Фея
119 | Фея
120 | Психический Элементаль
121 | Магический Элементаль
122 | НЕ ИСПОЛЬЗУЕТСЯ (1)
123 | Ледяной Элементаль
124 | НЕ ИСПОЛЬЗУЕТСЯ (2)
125 | Элементаль Магмы
126 | НЕ ИСПОЛЬЗУЕТСЯ (3)
127 | Элементаль Шторма
128 | НЕ ИСПОЛЬЗУЕТСЯ (4)
129 | Энергетический Элементаль
130 | Огненная Птица
131 | Феникс
132 | Лазурный Дракон
133 | Кристальный Дракон
134 | Сказочный Дракон
135 | Ржавый Дракон
136 | Чародей
137 | Снайпер
138 | Хоббит
139 | Крестьянин
140 | Орк на кабане
141 | Мумия
142 | Кочевник
143 | Вор
144 | Тролль
145 | Катапульта
146 | Баллиста
147 | Палатка Первой Помощи
148 | Тележка с Боеприпасами
149 | Стрелковая Башня
150 | Верховный Архангел
151 | Алмазный Дракон
152 | Громовержец
153 | Барон Ада
154 | Кровавый Дракон
155 | Темный Дракон
156 | Чудище-Привидение
157 | Кошмарная Гидра
158 | Дух Погребального Костра
159 | Привидение
160 | Эмиссар Войны
161 | Эмиссар Мира
162 | Эмиссар Чуда
163 | Эмиссар Знания
164 | Посланник Огня
165 | Посланник Земли
166 | Посланник Воздуха
167 | Посланник Воды
168 | Змей Горыныч
169 | Фанатик Войны
170 | Арктический Снайпер
171 | Закаленный Снайпер
172 | Кошмар
173 | Санта-Гремлин
174 | Паладин (атакующий)
175 | Знахарь (атакующий)
176 | Храмовница (атакующий)
177 | Суккуб (атакующий)
178 | Пожиратель Душ (атакующий)
179 | Зверь (атакующий)
180 | Вождь Людоедов (атакующий)
181 | Шаман (атакующий)
182 | Астральный Дух (атакующий)
183 | Паладин (защищающийся)
184 | Знахарь (защищающийся)
185 | Храмовница (защищающийся)
186 | Суккуб (защищающийся)
187 | Пожиратель Душ (защищающийся)
188 | Зверь (защищающийся)
189 | Вождь Людоедов (защищающийся)
190 | Шаман (защищающийся)
191 | Астральный Дух (защищающийся)
192 | Сильванский Кентавр
193 | Волшебница
194 | Оборотень
195 | Пожар
196 | Драколич


Жилища существ
Тип 17 и 20
 Таблицы

Подтип, город Название
Замок |
56 | Сторожевой пост
57 | Башня арбалетчиков
25 | Башня грифонов
58 | Казармы
35 | Монастырь
05 | Ипподром
08 | Портал славы
80 | Портал Сияния
Оплот |
06 | Конюшни кентавров
12 | Коттедж гномов
15 | Усадьба
50 | Заколдованный ручей
45 | Арка дендроидов
51 | Лужайка единорогов (стандартная версия)
68 | Лужайка единорогов (уменьшенная версия)
24 | Драконьи скалы
81 | Драконий пик
Башня |
43 | Мастерская
17 | Парапет
20 | Тип 20, подтип 1:Фабрика Големов (Каменные, Стальные, Золотые, Алмазные)
31 | Башня магов
18 | Алтарь желаний
36 | Золотой павильон
44 | Заоблачный храм
82 | Храм Шторма
Инферно |
29 | Котел бесов
22 | Дворец пороков
27 | Псарни
37 | Врата демонов
40 | Провал
14 | Огненное озеро
10 | Покинутый дворец
83 | Проклятый Дворец
Некрополис |
54 | Проклятый храм
55 | Кладбище
48 | Пристанище душ
53 | Поместье
52 | Мавзолей
03 | Дворец тьмы
04 | Склеп драконов
84 | Спектральный Свод
Темница |
46 | Загон
26 | Чердак гарпий
02 | Камень глаз
33 | Часовня безмолвия
34 | Лабиринт
32 | Логово мантикор
41 | Пещера драконов
85 | Темная Пещера
Цитадель |
21 | Казармы гоблинов
19 | Волчий загон
39 | Башня орков
38 | Форт огров
42 | Гнездо на скале
09 | Пещера циклопов
01 | Утес чудищ
86 | Могила Чудища
Крепость |
20 | Хижина гноллов
30 | Логово ящериц
11 | Улей змиев
00 | Яма василисков
23 | Логово горгон
49 | Гнездо вивернов
28 | Пруд гидр
87 | Пруд Хаоса
Сопряжение |
59 | Волшебный фонарик
20 | Тип 20, подтип 0: Сопряжение элементалей (Воздух, Огонь, Вода, Земля)
07 | Воздушные Элементали Сопряжения
69 | Алтарь Воздуха
47 | Водяные Элементали Сопряжения
82 | Алтарь Воды
16 | Огненные Элементали Сопряжения
71 | Алтарь Огня
13 | Земляные Элементали Сопряжения
70 | Алтарь Земли
60 | Алтарь мыслей
61 | Костер
88 | Костер Духа
Нейтральные |
74 | Сарай (Крестьяне)
73 | Тростниковая лачуга (Хоббиты)
75 | Кабанья лощина (Кабаны)
78 | Убежище воров
77 | Палатка кочевников
76 | Могила проклятых (Мумии)
67 | Башня на дереве (Снайперы)
79 | Мост троллей
66 | Ложбина чародеев
64 | Магический лес (Сказочные драконы)
65 | Серная берлога (Ржавые драконы)
63 | Кристаллическая пещера (Кристальные драконы)
62 | Замороженный утес (Лазурные драконы)
Новые нейтральные жилища |
89 | Укрытие в камнях (Лавовые Снайперы)
90 | Заснеженное укрытие (Закаленные Снайперы)
91 | Гигантская пещера (Горынычи)
92 | Подкова грез (Кошмары)
93 | Стихийное бедствие (Посланники)
94 | Заброшенный монастырь (Фанатики войны)
95 | Снеговик (Санта-гремлины)
96 | Конюшни сильванских кентавров
97 | Зачарованная башня (Волшебницы)
98 | Воющая пустота (Оборотни)
99 | Кратер вулкана (Пожары)
100 | Могила дракона (Драколичи)


Диалоговые окна

Диалоговые окна (ресейвер IF)

Введение
Если вам нужно показать игроку сообщение, задать вопрос, показать картинку или анимацию игроку, или дать игроку выбрать между опциями, или дать напечатать что-либо (например, свое имя), вы должны использовать диалоговые окна.

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

Использование стандартных диалоговых окон
Они базируются всего лишь на двух командах для стандартного окна диалога: IF:M, который используется для одиночных сообщений, и IF:Q, который используется для вопросов типа "Да/нет" и для показа картинок. В обоих случаях, все зависит только от вашего желания.
Пример показа простого диалогового окна - сообщения командой IF:M :

!!IF:M^В этой загадочной стране летающие существа не летают, но им не отвечают на атаку.^;
В этом коде будет показано сообщение, которое вы видите выше, белым текстом, выровненное по центру. Ниже будет одна кнопка ОК, которую должен нажать игрок для продолжения игры.
Пример показа простого окна вопроса командой IF:Q (без картинки):

!!IF:Q2^Особые правила модифицируют игру. Вы хотите выбрать их вручную? (Если нет, одна или две опции будут выбраны случайно.)^;
В этом примере появится, как видно, диалоговое окно с двумя кнопками: ОК и отмена. Число 2 после IF:Q означает, что флаг 2 будет принимать значение выбранной кнопки, и установится на Ложь (0), если будет нажата Отмена. Для вопроса может быть выбран любой флаг. См. флаги и переменные для дополнительной информации.
Пример показа сообщения с картинкой (без вопроса):

!!IF:Q2/20/53/1^{Гриб Магии Воды}
Гриб Магии Воды дает навык Магия Воды эксперта до конца недели...
Вы вдыхаете споры гриба...
Вы стали Экспертом Магии Воды!^;
Пример показа сообщения и двух картинок - игрок должен нажать на картинку для ее выбора и нажать кнопку ОК:

!!IF:Q2/5//8/141/7^Вы желаете сыграть на {ресурсы} или {артефакты}?^;

Есть много комбинаций с этими командами. Экспериментируйте!

Использование Расширенного диалогового окна - многозадачный диалог
Если вы хотите разрешить игроку ввести текст, позволить ему выбрать что-либо из четырех вариантов, и/или показать определенные картинки или анимации, вы должны использовать расширенные диалоговые окна. В общем, вам нужно записать некоторый текст в z-переменную и затем использовать ее для установки команд в расширенном диалоговом окне. Для их установки воспользуйтесь командами !!IF:D и !!IF:F, а для показа - командой IF:E. Любая опция ниже может быть соединена в многозадачный диалог:

1. Показ картинок: в отличии от стандартного диалогового окна, расширенное не может показывать внутренние, т.е. игровые, картинки, а только внешние картинки, с определенным типом и размером. Если вам нужно показать еще и внутреннюю картинку игры, воспользуйтесь Print Screen и вырежьте нужную картинку. Путь к картинке может содержать до 256 символов, и начинается с директории Heroes3\Maps. Картинки могут быть BMP, GIF или JPG с максимальным размером 100х100 пикселей. Если изображение меньше, оно будет выровнено по центру свободного пространства. Если изображение больше, только 100х100 пикселей будет показано. Для BMP верхний левый пиксель будет интерпретироваться как прозрачный. Вы можете смешивать и менять картинки как захотите. Команда IF:D используется для установки картинок для многозадачного диалогового окна.

Пример 1:
!!VR z10:S^Земли, в которых вы путешествуете, прекрасны.^;
!!VRz11:S^blue forest.jpg^;
!!VRz12:S^sparkling lake.bmp^;
!!VRz13:S^rainbow.gif^;
!!VRz14:S^mountains.jpg^;
!!VRz15:S^Мрачный лес^;
!!VRz16:S^Кристальное озеро^;
!!VRz17:S^Мистический дождь^;
!!VRz18:S^Туманные горы^;
!!IF:D5/10/0/0/11/12/13/14/15/16/17/18/0/0/0/0;
!!IF:E1/5;

В примере выше, в z10 записан заглавный текст для диалога, в z11...z14 записаны имена картинок в папке Maps, и в z15...z18 записаны подсказки для каждой картинки. Мы использовали диалоговое окно №5 (первый параметр), далее номер z-переменной, содержащей главный текст, далее два 0, означающие "Не изменять эти параметры". После этого - z-переменные с именами файлов (11...14) и z-переменные для подсказок (15...18). Последние четыре параметры также не используются в этом примере и мы заменяем их нулями.

2. Показ анимации: вы можете использовать расширенный диалог для показа анимации или клипа в формате AVI. AVI-анимация может быть показана вместо картинки и может быть комбинирована с картинками (например, вы можете показать две анимации и две картинки в одном диалоге). AVI должна быть в сжатом формате, иначе она не будет работать. Как и картинки, анимация ограничена 100х100 пикселей. Опять же, используйте IF:D для установки анимации для расширенного диалогового окна.

3. Чекбоксы: если вы хотите дать игроку выбор между четырьмя (или более) опциями, вы можете использовать чекбоксы. Там вы можете ввести заголовок сообщения (текст будет желтым). Каждая опция чекбокса будет иметь текст в табличке, и также может иметь текст-подсказку (показывается внизу диалогового окна при наведении курсора на опцию). И хотя вы не можете поместить картинку в сам чекбокс, вы можете соотнести выбранную опцию и картинку в ней, которая будет показана выше. Когда диалог появится, ни одна опция не будет выбрана. Игрок может выбрать только одну опцию, выбор другой автоматически отключит предыдущую. После нажатия игрока на ОК, вы можете проверить, какая опция была выбрана, ее номер запоминается в v-переменную. Устанавливается диалог так же, как и картинки и анимации: IF:D и IF:F для добавления текста-подсказок для чекбоксов, если захотите.

4. Ввод текста: если в хотите получить текстовое сообщение от игрока, вы можете показать окно ввода. Над ним вы можете ввести небольшое сообщение (текст будет желтым). Текст, введенный игроком в окно ввода, занесется в текстовую переменную (z-переменную), и может быть использован для имени города или героя, текста-подсказки, текста знака, часть другого сообщения, или может быть проверена, правильный ли ответ или нет. Вы также можете использовать введенный текст с командой UN:N для поиска, например, артефакта с введенным именем, или монстра, постройки замка или имени навыка. IF:D используется для установки окна ввода текста.

5. Текст заголовка: текст вверху диалогового окна (белый) можно установить командой IF:D, и желтый текст для чекбоксов может быть использован даже если вы не использовали чекбоксы в диалоге.

6. Кнопка отмены: команда IF:F может быть использованна для отключения или включения кнопки "Отмена" (и кнопки Esc на клавиатуре) для расширенного многозадачного диалогового окна.

Пример 2:
!#IF:F1/z21/z22/z23/z24/0; - установить подсказки и отключить кнопку отмены.

Пример 3:

Вот код:
!#VRz199:S^..\Data\Zvs\Cmp.res^;
!#VRz10:S^Время играть!^;
!#VRz11:S^Ваше имя^;
!#VRz12:S^Выберите ваше заклинание^;
!#VRz13:S^%Z199\21_001.BMP^;
!#VRz14:S^%Z199\21_002.BMP^;
!#VRz15:S^%Z199\21_003.BMP^;
!#VRz16:S^%Z199\21_004.BMP^;
!#VRz17:S^Жажда крови^;
!#VRz18:S^Благословление^;
!#VRz19:S^Волшебная стрела^;
!#VRz20:S^Медлительность^;
!#VRz21:S^Ваш герой начнет с заклинанием Жажда крови^;
!#VRz22:S^Ваш герой начнет с заклинанием Благословление^;
!#VRz23:S^Ваш герой начнет с заклинанием Волшебная стрела^;
!#VRz24:S^Ваш героя начнет с заклинанием Медлительность^;
!#IF:D1/z10/z11/z12/z13/z14/z15/z16/z17/z18/z19/z20/z17/z18/z19/z20;
!#IF:F1/z21/z22/z23/z24/0;  - установить подсказки и отменить кнопку отмены
!#IF:E100/1; - записать выбор диалога номер 1 в v100
!#VRz400:Sz1; ваше имя
!#VRz400:H10; Проверить, если строка осталась пустой во флаг 10
!#VRz400&-10:S^DracoL1ch^;  если строка пуста,
установить имя на DracoL1ch

Использование расширенных диалоговых окон (2) - диалог одиночного изображения/анимации
Если вы хотите показать одиночное изображение или одиночный AVI-файл, вы можете использовать второй тип расширенных диалогов. Эти диалоги более просты для установки, чем многозадачные (меньше параметров), и имеют преимущество в том, что могут показывать изображение или видео почти любого размера. Главный недостаток - вы не можете включить никакой текст вместе с изображением или видео. Когда вы вызываете этот диалог, вы получаете простое окно сообщение с изображением или AVI в центре и кнопку ОК ниже. Команда для установки этого сообщения - IF:B, и команда для показа - IF:P. Но некоторое перекрывание командой IF:D (используется для установки многозадачного диалога) - если вы используете команду IF:D вместо IF:B, первая картинка или AVI в таблице параметров будет показано командой IF:P, а дополнительные картинки или анимации будут проигнорированы.

Расширенный диалог (3): радио- или чекбокс- диалог (до 12 опций)
Пример:

!#VRz1:S^Отметьте правила для этой игры - на ваш выбор
(страница 1 из 2).^;
!#VRz2:S^Атака без контрудара вместо полета^;
!#VRz3:S^Инвертированная скорость существ^;
!#VRz4:S^Половинная стоимость существ на 7-ой день^;
!#VRz5:S^Создание героями магического ландшафта^;
!#VRz6:S^Двойная атака для всех существ^;
!#VRz7:S^Растущие армии^;
!#VRz8:S^Продажа кабанов во всех внешних жилищах^;
!#VRz9:S^Начало с героями пятого уровня^;
!#VRz10:S^Дублирование артефактов^;
!#VRz11:S^Туман войны^;
!#IF:G0/100/4/1/2/3/4/5/6/7/8/9/10/11/0/0;


Таблица Def'ов заклинаний

Таблица индексов Def'ов заклинаний
Таблицы
Используется в ресейвере !!SS

Индекс | Заклинание
-1 | Силовое поле, Землетрясение, Жажда крови, Телепортация, Клон, все Вызовы Элементалей
0 | Молитва
2 | Воздушный щит
3 | Волшебное зеркало
4 | Оживление мертвецов
5 | Антимагия
6 | Слепота
7 | Контрудар
8 | Волна Смерти
9 | Инферно
10 | Взрыв
11 | Огненный Щит
12 | Армагеддон
14 | Разрушающий луч
16 | Метеоритный дождь
17 | Бешенство
18 | Удача
19 | Медлительность
20 | Радость
21 | Гипноз
22 | Защита от воздуха
23 | Защита от воды
24 | Защита от огня
25 | Точность
26 | Защита от энергии
27 | Щит
28 | Палач
29 | Уничтожить нечисть
30 | Печаль
31 | Ускорение
34 | Устранение преград
35 | Берсерк
36 | Благословление
38 | Цепная молния
39 | Лечение
40 | Проклятье
41 | Снятие помогающих заклинаний, Снятие Заклинаний
42 | Забывчивость
45 | Кольцо Холода
46 | Ледяная молния
47 | Минное поле
48 | Неудача
49 | Гром Титанов, Удар Молнии
50 | Воскрешение
52 | Жертва
53 | Огненный Шар
54 | Каменная кожа
55 | Зыбучие пески
56 | Слабость
64 | Волшебная стрела
65 | Стена Огня
67 | Яд
68 | Корни
69 | Болезнь
70 | Паралич
71 | Старость
72 | Облако смерти
80 | Смертельный взгляд
81 | Кислотное дыхание


Флаговые способности существ
 Используются в !!MA:X и !!BM:F
Таблицы

Значение | Способность
1 | Широкий - занимает две клетки
2 | Монстр может летать
4 | Монстр может стрелять. Если вы даете эту способность не-стрелку, вы получите несколько сообщений об ошибке ("неверный ресурс"). Возможно только с доп. графикой.
8 | Расширенный радиус атаки (две клетки). Это как дыхание дракона. Этот флаг не работает для стрельбы, только в рукопашном бою.
16 | Живое существо. Делает монстра чувствительным к Благословению, Радости, Волне Смерти, Морали и другим вещам, работающим лишь на живых.
32 | Катапульта. Монстр может атаковать стены города.
64 | Осадное орудие. Не может двигаться. При телепортировании следует вылет из игры. Отряд не требуется убивать для достижения победы. Возле отряда отсутствует обозначение количества существ.
128 | Король 1 - это все существа 7го уровня и нейтральные драконы, не принадлежащие к КОРОЛЬ 2 или КОРОЛЬ 3, существа, несущие доп. урон от заклинания Палач
256 | Король 2 - Ангелы, Архангелы, Дьяволы, Архидьяволы, существа, несущие доп. урон от продвинутого или выше уровня заклинания Палач
512 | Король 3 - Гиганты, Титаны, существа, несущие доп. урон от экспертного уровня заклинания Палач
1024 | Иммунитет к заклинаниям разума (вроде Печали, Бешенства, т.п.)
2048 | Монстр - 35 (архимаг), 74 (Созерцатель), 75 (Злой глаз). Это означает "нет пенальти за препятствия", например у Архимагов эта способность есть, а у Магов - нету. И я не замечал такой способности у Созерцателей и Злых глаз. Так же, анимация выстрела с этим флагом становится непрерывным прямым лучом.
4096 | Нет пенальти в ближнем бою (для стрелков)
8192 | В игре никогда не проверяется. Возможно, он раньше использовался, а теперь потерял своё значение.
16384 | Иммунитет к заклинаниям огня, в т.ч. положительным (Эфриты)
32768 | Двойной удар. (улуч. Стрелки или Крестоносцы)
65536 | Нет ответа (Церберы или Гидры)
131072 | Нет пенальти морали (Элементали, Големы)
262144 | Нежить (все существа Некрополиса, существо с этим флагом не имеет морали, получает урон от заклинания Уничтожить нежить и не несет урона от Волны смерти)
524288 | Атакует всех вокруг, не работает вместе с Дыханием Дракона.
1048576 | Расширенный радиус стрельбы. Это способность Магогов/Личей/Могучих Личей. Используется только ИИ, не имеет ценности для игрока.
2097152 | Отряд не получает право на ход во время боя. По окончании битвы отряд исчезнет. Отряд не требуется убивать для достижения победы. Возле отряда отсутствует обозначение количества существ. Иммунитет к некоторым заклинаниям. Этот флаг автоматически устанавливается, когда существо умирает. Если вы сами установили этот флаг, то убрав его вы воскресите существо. При получении урона в "мертвом" состоянии количество существ и здоровья у последнего существа в стеке уменьшается. Поэтому после воскрешения может быть 0 существ. Но это вам не мешает установить с помощью BM:N столько существ, сколько нужно. Если же существо действительно умерло, то убирание флага существо не воскресит, но может привести к различным сбоям в работе AI. Телепортируется корректно.
4194304 | По окончании битвы или в случае смерти отряд исчезнет. Такой флаг имеют элементали, вызванные заклинанием в битве.
8388608 | При получении любого урона отряд погибнет. Отряд окрашен в синий цвет. Пример - заклинание Клона.
16777216 | В этом раунде битвы отряду выпала мораль.
33554432 | Отряд находится в состоянии ожидания.
67108864 | В этом раунде битвы отряд уже совершил некое действие.
134217728 | Отряд стоит в защитном положении.
268435456 | Флаг выставляется стэку, когда тот был принесён в Жертву. Тело отряда исчезает после смерти.
536870912 | Существа с этим флагом не меняют свой цвет при клонировании и окаменении.
1073741824 | Отряд окрашен в серый цвет.
2147483648 | Дракон. На юнита с этим флагом действует Пузырек крови дракона и влияния героя-дракона (Мутаре)


Таблица анимаций в битве

Таблица анимаций в битве (для !!BM:V)
 Таблицы

Номер | Описание
0 | Молитва
1 | Удар молнии
2 | Воздушный щит
3 | Магическое зеркало
4 | Восстановление (темное)
5 | Анти - магия
6 | Слепота
7 | Контрудар
8 | Волна смерти
9 | Инферно
10 | Взрыв
11 | Огненный щит
12 | Армагеддон (всегда в верхнем левом углу 5х5 клеток)
13 | Разрушающий луч (в полете)
14 | Разрушающий луч (достиг цели)
15 | Страх
16 | Метеоритный дождь
17 | Бешенство
18 | Фортуна/удача
19 | Медлительность
20 | Радость/мораль
21 | Гипноз
22 | Защита от воздуха
23 | Защита от воды
24 | Защита от огня
25 | Точность
26 | Защита от земли
27 | Щит
28 | Палач
29 | Уничтожить нечисть
30 | Печаль/плохая мораль
31 | Ускорение
32 | Силовое поле (один кусочек)
33 | Большое (два кусочка) силовое поле
34 | Убрать препятствие
35 | Берсерк
36 | Благословление
37 | Удар молнии (полет) (прямая молния с небес)
38 | Удар молнии (достигла цели) (взрыв электричества, белые искры попадания)
39 | Лечение (как одноименным заклинанием)
40 | Проклятие
41 | Снятие заклинаний
42 | Забывчивость
43 | Огненная стена (одинарный кусочек) (исчезает практически мгновенно)
44 | Огненная стена (два кусочка) (исчезает практически мгновенно)
45 | Кольцо холода
46 | Ледяная молния (достигла цели) (прозрачно-голубой всполох)
47 | Мины (временная небольшая задержка, мины не появляются)
48 | Неудача
49 | Молния (достигла цели) (то же, что и 38)
50 | Восстановление мертвых/восстановление (светлое)
51 | Жертва
52 | Восстановление мертвых/восстановление (светлое)
53 | Огненный шар
54 | Каменная кожа
55 | Зыбучие пески (временная небольшая задержка, пески не появляются)
56 | Слабость
57 | Взрыв мины
58 | Зыбучие пески (временная небольшая задержка, пески не появляются)
59 | Мины (временная небольшая задержка, мины не появляются)
60 | Силовое поле (рядом с героем)
61 | Двойное (два кусочка) силовое поле (рядом с героем)
62 | Огненная стена (одинарный кусочек) (рядом с героем)
63 | Огненная стена (два кусочка) (рядом с героем)
64 | Волшебная стрела (достигла цели)
65 | Огненная стена (малая) (рядом с героем)
66 | Огненная стена (малая) (рядом с героем)
67 | Яд
68 | Корни
69 | Болезнь
70 | Паралич
71 | Старость
72 | Облако смерти (полупрозрачное, появляется примерно в квадрате 142)
73 | Смертельный удар
74 | Регенерация Вампиров-Лордов
75 | Добавление маны (Прилипалы)
76 | Высасывание маны (Прилипалы)
77 | Высасывание маны (Привидения)
78 | Сопротивление магии (Гномы)
79 | Лечение палаткой
80 | Смертельный взгляд
81 | Кислотное дыхание
82 | Небольшой взрыв, как мина, но слабее
83 | Призраки (не Привидения!) регенерируют
84 | Блок удара (как командир)
85 | Блок удара (как Драколич)
86 | Палач


Цвета игроков
 Таблицы

Номер игрока | Цвет
-1 | Нейтральный (используется только с оговорками самой команды)
0 | Красный
1 | Синий
2 | Коричневый
3 | Зеленый
4 | Оранжевый
5 | Фиолетовый
6 | Бирюзовый
7 | Розовый


Цвета игроков побитно
 Таблицы

Номер бита | Цвет
1 | Красный
2 | Синий
4 | Коричневый
8 | Зеленый
16 | Оранжевый
32 | Фиолетовый
64 | Бирюзовый
128 | Розовый

Для примера: красный, зеленый и бирюзовый будут равны = 1+8+64 = 73. Все игроки = 255.


Классы героев
 Таблицы

Номер класса | Имя класса
0 | Рыцарь
1 | Клирик
2 | Рейнджер
3 | Друид
4 | Алхимик
5 | Волшебник
6 | Демон
7 | Еретик
8 | Рыцарь смерти
9 | Некромант
10 | Лорд
11 | Чернокнижник
12 | Варвар
13 | Боевой маг
14 | Хозяин зверей
15 | Ведьма
16 | Путешественник
17 | Элементалист


Уровни героя (и командиров)

Уровни героев/командиров
 Таблицы

Уровень | Необходимый опыт
1 | нет
2 | 1000
3 | 2000
4 | 3200
5 | 4600
6 | 6200
7 | 8000
8 | 10000
9 | 12200
10 | 14700
11 | 17500
12 | 20600
13 | 24320
14 | 28784
15 | 34140
16 | 40567
17 | 48279
18 | 57533
19 | 68637
20 | 81961
21 | 97949
22 | 117134
23 | 140156
24 | 167782
25 | 200933
26 | 240714
27 | 288451
28 | 345735
29 | 414475
30 | 496963
31 | 595948
32 | 714730
33 | 857268
34 | 1028313
35 | 1233567
36 | 1479871
37 | 1775435
38 | 2130111
39 | 2555722
40 | 3066455
41 | 3679334
42 | 4414788
43 | 5297332
44 | 6356384
45 | 7627246
46 | 9152280
47 | 10982320
48 | 13178368
49 | 15813625
50 | 18975933
51 | 22770702
52 | 27324424
53 | 32788890
54 | 39346249
55 | 47215079
56 | 56657675
57 | 67988790
58 | 81586128
59 | 97902933
60 | 117483099
61 | 140979298
62 | 169174736
63 | 203009261
64 | 243610691
65 | 292332407
66 | 350798466
67 | 420957736
68 | 505148860
69 | 606178208
70 | 727413425
71 | 872895685
72 | 1047474397
73 | 1256968851
74 | 1508362195
75 | 1810034207
76 | Призрачный уровень
77 | Призрачный уровень
78 | Призрачный уровень
79 | Призрачный уровень
80 | Призрачный уровень
81 | Призрачный уровень
82 | Призрачный уровень
83 | Призрачный уровень
84 | Призрачный уровень
85 | Призрачный уровень
86 | Призрачный уровень
87 | Призрачный уровень
88 | Призрачный уровень
89 | 2073739157

Примечание: при достижении 75 уровня вы получаете сразу несколько уровней до 89 как бонус. Если вы получите уровень, при этом будучи на 89 уровне, ваш уровень будет показываться 0. Командиры используют такую же систему опыта.


Специальности героев

Картинки специальностей героев
 для UN:G2
 Таблицы

Стандартные специальности |
0 | Стрельба (Оррин)
1 | Лучники (Валеска)
2 | Грифоны (Эдрик)
3 | Навигация (Сильвия)
4 | Имущество (Лорд Хаарт)
5 | Мечники (Сорша)
6 | Баллиста (Кристиан)
7 | Кавалеры (Турис)
8 | Первая помощь (Рион)
9 | Благословение (Адель)
10 | Слабость (Катберт)
11 | Кольцо холода (Аделаида)
12 | Монахи (Инхам)
13 | Орлиный глаз (Саня)
14 | Молитва (Лоинс)
15 | Золото (Каитлин)
16 | Защита (Мепхала)
17 | Гномы (Уфретин)
18 | Золото (Енова)
19 | Дендроиды (Роланд)
20 | Сопротивление (Торгрим)
21 | Эльфы (Ивор)
22 | Единороги (Кланси)
23 | Логистика (Киррь)
24 | Палач (Корониус)
25 | Лечение (Уланд)
26 | Интеллект (Эллезар)
27 | Первая помощь (Джем)
28 | Орлиный глаз (Мальком)
29 | Удача (Мелодиа)
30 | Ледяная молния (Алагар)
31 | Пегасы (Аерис)
32 | Гаргулии (Пигуедрам)
33 | Джины (Тан)
34 | Големы (Жозефина)
35 | Защита (Нелла)
36 | Баллиста (Торосар)
37 | Наги (Фафнер)
38 | Ртуть (Ризза)
39 | Джины (Иона)
40 | Гипноз (Астрал)
41 | Мистицизм (Халон)
42 | Орлиный глаз (Серена)
43 | Удача (Даремиф)
44 | Маги (Теодор)
45 | Цепная молния (Солмир)
46 | Ускорение (Кира)
47 | Золото (Аин)
48 | Адские гончии (Фиона)
49 | Ифриты (Рашка)
50 | Демоны (Мариус)
51 | Бесы (Игнат)
52 | Золото (Октавия)
53 | Гоги (Калх)
54 | Баллиста (Пир)
55 | Порождения зла (Нимус)
56 | Интеллект (Айден)
57 | Инферно (Ксирон)
58 | Мистицизм (Аксис)
59 | Слабость (Олема)
60 | Сера (Калид)
61 | Жажда крови (Аш)
62 | Волшебство (Зидар)
63 | Огненный шар (Ксарфакс)
64 | Живые Мертвецы (Стракер)
65 | Вампиры (Вокиал)
66 | Личи (Моандор)
67 | Стражи (Чарна)
68 | Черные рыцари (Тамика)
69 | Некромантия (Исра)
70 | Золото (Клавиус)
71 | Скелеты (Галтран)
72 | Волна Смерти (Септиенна)
73 | Метеоритный дождь (Аислин)
74 | Волшебство (Сандро)
75 | Орлиный глаз (Нимбус)
76 | Оживление мертвецов (Тант)
77 | Каменная кожа (Кси)
78 | Чародейство (Видомина)
79 | Золото (Нагаш)
80 | Гарпии (Лорелей)
81 | Баллиста (Арлаш)
82 | Минотавры (Дас)
83 | Бехолдеры (Аджит)
84 | Золото (Дамакон)
85 | Логистика (Гуннар)
86 | Мантикоры (Синка)
87 | Троглодиты (Шакти)
88 | Воскрешение (Аламар)
89 | Мистицизм (Жаегар)
90 | Волшебство (Малекит)
91 | Воскрешение (Жеддита)
92 | Орлиный глаз (Геон)
93 | Метеоритный дождь (Деемер)
94 | Кристалы (Сепхинороф)
95 | Каменная кожа (Дарксторн)
96 | Циклопы (Йог)
97 | Баллиста (Гурниссон)
98 | Орки (Жабаркас)
99 | Рух (Шива)
100 | Гоблины (Гретчин)
101 | Огры (Креллион)
102 | Нападение (Крэг Хэк)
103 | Наездники на волках (Тираксор)
104 | Волшебство (Гирд)
105 | Огры (Вей)
106 | Логистика (Десса)
107 | Ускорение (Терек)
108 | Точность (Зубин)
109 | Нападение (Гундула)
110 | Орлиный глаз (Орис)
111 | Драгоценные камни (Сауруг)
112 | Василиски (Брон)
113 | Гноллы (Дракон)
114 | Яшеры (Вистан)
115 | Защита (Тазар)
116 | Горгоны (Алкин)
117 | Змии (Корбак)
118 | Баллиста (Гервульф)
119 | Виверны (Бронхильд)
120 | Слабость (Мирланда)
121 | Мистицизм (Розик)
122 | Навигация (Вой)
123 | Первая помощь (Вердиш)
124 | Каменная кожа (Мерист)
125 | Волшебство (Стиг)
126 | Интеллект (Андра)
127 | Орлиный глаз (Тива)
128 | Элементали разума (Пасис)
129 | Элементали земли (Тунар)
130 | Элементали огня (Игнисса)
131 | Элементали воды (Лакус)
132 | Элементали разума (Монер)
133 | Элементали земли (Эрдамон)
134 | Элементали огня (Фьюр)
135 | Элементали воды (Кальт)
136 | Стена огня (Луна)
137 | Ускорение (Брисса)
138 | Волшебная стрела (Циэль)
139 | Каменная кожа (Лабета)
140 | Жажда крови (Интеус)
141 | Разрушающий луч (Аэнаин)
142 | Золото (Джелар)
143 | 350 золота (Гриндан)
Дополнительные герои |
144 | Скорость (Сэр Мюллих)
145 | Эксперт магия огня (Эдрианна)
146 | Мечники (Катерина)
147 | Чародеи (Дракон)
148 | Снайперы (Джелу)
149 | Древние Чудища (Килгор)
150 | Черный рыцарь (Лорд Хаарт)
151 | Голова дракона (Спец. Мутаре)
152 | Мечники (Роланд)
153 | Голова дракона (спец. Мутаре-Дрейко)
154 | Огры (Борагус)
155 | Дьяволы (Ксерон)
156 | Вуаль тьмы (WoG - Нагаш)
157 | Строитель (WoG - Жеддит)
Другие существа |
158 | Пикейщик
159 | Алебардир
160 | Стрелок
161 | Королевский грифон
162 | Крестоносец
163 | Монах
164 | Чемпион
165 | Ангел
166 | Архангел
167 | Кентавры
168 | Капитан кентавров
169 | Боевой гном
170 | Великий эльф
171 | Серебряный пегас
172 | Дендроид - солдат
173 | Боевой единорог
174 | Зеленый дракон
175 | Золотой дракон
176 | Гремлин
177 | Мастер - гремлин
178 | Обсидиановая Горгулья
179 | Стальной голем
180 | Архимаг
181 | Мастер - Джин
182 | Королева Нага
183 | Гигант
184 | Титан
185 | Черти
186 | Магог
187 | Цербер
188 | Рогатый демон
189 | Адское отродье
190 | Эфрит - султан
191 | Архидьявол
192 | Скелет - воин
193 | Зомби
194 | Привидения
195 | Вампир - Лорд
196 | Могущественный Лич
197 | Зловещий рыцарь
198 | Костяной дракон
199 | Призрачный дракон
200 | Адский троглодит
201 | Гарпия - ведьма
202 | Злой глаз
203 | Медуза
204 | Королева медуз
205 | Король минотавров
206 | Скорпикора
207 | Красный дракон
208 | Черный дракон
209 | Хобгоблин
210 | Налетчик
211 | Орк - капитан
212 | Огры - маги
213 | Птица Грома
214 | Циклопы - короли
215 | Чудища
216 | Гнолл - марадер
217 | Ящер - воин
218 | Стрекоза
219 | Великий Василиск
220 | Могучая Горгона
221 | Виверна - монарх
222 | Гидра
223 | Гидра хаоса
224 | Пикси
225 | Феи
226 | Воздушный элементал
227 | Штормовой элементал
228 | Ледяной элементал
229 | Энергетический элементал
230 | Элементал магмы
231 | Волшебный элементал
232 | Огненная птица
233 | Феникс
234 | Золотой голем
235 | Кристальный голем
236 | Лазурный дракон
237 | Кристальный дракон (старая спец. Мутаре)
238 | Сказочный дракон
239 | Ржавый дракон
240 | Хоббит
241 | Крестьянин
242 | Кабан
243 | Мумия
244 | Кочевник
245 | Воры
246 | Троль
247 | Катапульта
248 | Палатка первой помощи
249 | Тележка с боеприпасами
250 | Супер Архангелы
251 | Драгоценные драконы
252 | Громовержцы
253 | Антихристы
254 | Кровавые Драконы
255 | Дракон Тьмы
256 | Чудище - привидение
257 | Адская Гидра
258 | Священный Феникс
259 | Призраки
260 | Бог Войны
261 | Бог Мира
262 | Бог Магии
263 | Бог Маны
264 | Посланник Огня
265 | Посланник Земли
266 | Посланник Воздуха
267 | Посланник Воды
268 | Горыныч
269 | Боевой фанатик
270 | Арктический снайпер
271 | Закаленный снайпер
272 | Кошмар
273 | Санта - гремлин
274 | Паладин
275 | Хиромант
276 | Храмовница
277 | Суккууб
278 | Пожиратель душ
279 | Зверь
280 | Людоед
281 | Шаман
282 | Астральный дух
283 | Сильванский кентавр
284 | Волшебницы
285 | Оборотни
286 | Адские лошади
Ресурсы |
287 | Дерево
288 | Руда
289 | Дерево + руда
290 | Мифрил
291 | Драг. Камни + кристаллы + сера + ртуть
Базовые навыки |
292 | Магия воздуха
293 | Артилеррия
294 | Баллиста
295 | Дипломатия
296 | Магия земли
297 | Лидерство
298 | Обучение
299 | Удача
300 | Поиск пути
301 | Школяр
302 | Разведка
303 | Тактика
304 | Мудрость
305 | Магия Воды
З аклинания |
306 | Защита от воздуха
307 | Воздушный Щит
308 | Вызов Элемента Воздуха
309 | Просмотр воздуха
310 | Контрудар
311 | Дверь Измерений
312 | Маскировка
313 | Уничтожить нечисть
314 | Полет
315 | Волшебная стрела
316 | Волшебное зеркало
317 | Гром Титанов
318 | Видения
319 | Антимагия
320 | Защита от Земли
321 | Землетрясение
322 | Вызов элемента Земли
323 | Силовое поле
324 | Взрыв
325 | Городской портал
326 | Зыбучие пески
327 | Медлительность
328 | Печаль
329 | Щит
330 | Армагеддон
331 | Слепота
332 | Берсерк
333 | Проклятье
334 | Защита от Огня
335 | Бешенство
336 | Огненный щит
337 | Вызов Элемента Огня
338 | Жажда Крови
339 | Мины
340 | Неудача
341 | Жертва
342 | Вызвать корабль
343 | Клон
344 | Снять заклинания
345 | Забывчивость
346 | Радость
347 | Убрать препятствие
348 | Затопить корабль
349 | Телепорт
350 | Хождение по воде
351 | Защита от воды
352 | Вызов элементала Воды
Особые |
353 | "Специалист"
354 | Просмотр Земли
355 | Драколичи
356 | Стрелковые башни


Таблица битов

Таблица возможных бит-значений
 Таблицы

Номер бита | Значение
0 | 1
1 | 2
2 | 4
3 | 8
4 | 16
5 | 32
6 | 64
7 | 128
8 | 256
9 | 512
10 | 1024
11 | 2048
12 | 4096
13 | 8192
14 | 16384
15 | 32768
16 | 65536
17 | 131072
18 | 262144
19 | 524288
20 | 1048576
21 | 2097152
22 | 4194304
23 | 8388608
24 | 16777216
25 | 33554432
26 | 67108864
27 | 134217728
28 | 268435456
29 | 536870912
30 | 1073741824
31 | 2147483648


Шахты
Шахта - тип 53
Таблицы
Номер | Название
0 | Лесопилка
1 | Лаборатория алхимика
2 | Рудоносная шахта
3 | Серные залежи
4 | Пещера кристаллов
5 | Пруд драгоценных камней
6 | Золотая шахта
7 | Заброшенная шахта


Курсоры

Типы курсоров
 Таблицы

Номер | Описание
0 | Обычный курсор (см. таблицу 1 для подтипа)
1 | Курсор карты приключений (см. таблицу 2 для подтипа)
2 | Боевой курсор (см. таблицу 3 для подтипа)
3 | Анимированная книга заклинаний (иконка колдовства в битве). Подтип не важен.
4 | Артефакт (см. таблицу артефактов для подтипа)

Обычные курсоры (тип 0)

Номер | Описание
0 | Восстановить обычный (стрелку)
1 | Стрелка
2 | Песочные часы

Курсоры карты приключений (тип 1)

Номер | Описание
0 | Стрелка
1 | Песочные часы
2 | Шлем (герой)
3 | Город
4 | Лошадь
5 | Меч (атака)
6 | Лодка
7 | Якорь
8 | Двойная стрелка (встреча двух героев)
9 | Лошадь на дыбах
10 | Лошадь (2)
11 | Меч (2)
12 | Лодка (2)
13 | Якорь (2)
14 | Двойная стрелка (2)
15 | Лошадь на дыбах (2)
16 | Лошадь (3)
17 | Меч (3)
18 | Лодка (3)
19 | Якорь (3)
20 | Двойная стрелка (3)
21 | Лошадь на дыбах (3)
22 | Лошадь (4+)
23 | Меч (4+)
24 | Лодка (4+)
25 | Якорь (4+)
26 | Двойная стрелка (4+)
27 | Лошадь на дыбах (4+)
28 | Лодка
29 | Лодка (2)
30 | Лодка (3)
31 | Лодка (4+)
32 | Прокрутка карты на север (стрелка)
33 | Прокрутка карты на северо-восток (стрелка)
34 | Прокрутка карты на восток (стрелка)
35 | Прокрутка карты на юго-восток (стрелка)
36 | Прокрутка карты на юг (стрелка)
37 | Прокрутка карты на юго-запад (стрелка)
38 | Прокрутка карты на запад (стрелка)
39 | Прокрутка карты на северо-запад (стрелка)
40 | Стрелка
41 | Дверь измерений
42 | Затопить корабль

Курсоры битвы (тип 2)

Номер | Описание
0 | Нет/не доступен
1 | Двигаться
2 | Лететь
3 | Стрелять (стрела)
4 | Герой (шлем)
5 | Знак вопроса
6 | Стрелка
7 | Атаковать северо-восток (меч)
8 | Атаковать восток (меч)
9 | Атаковать юго-восток (меч)
10 | Атаковать юго-запад (меч)
11 | Атаковать запад (меч)
12 | Атаковать северо-запад (меч)
13 | Атаковать север (меч)
14 | Атаковать юг (меч)
15 | Половинный урон (сломанная стрела)
16 | Атаковать стену (катапульта)
17 | Лечение
18 | Жертва
19 | Телепорт


Таблица MP3-файлов

Таблица MP3-музыки игры
 Таблицы

Номер | Название
1 | "cstletown" - Замок
2 | "rampart" - Оплот
3 | "towertown" - Башня
4 | "infernotown" - Инферно
5 | "necrotown" - Некрополис
6 | "dungeon" - Темница
7 | "stronghold" - Цитадель
8 | "fortresstown" - Крепость
9 | "elemtown" - Конфлюкс
Номер | Название
10 | "dirt" - грязь
11 | "sand" - песок
12 | "grass" - трава
13 | "snow" - снег
14 | "swamp" - болото
15 | "rough" - скалы
16 | "underground" - подземелье
17 | "lava" - лава
18 | "water" - вода
Номер | Меню
19 | "mainmenuwog" - меню WoG
20 | "mainmenu" - меню Дыхание Смерти
Номер | Передвижение ИИ
21 | "aitheme0"
22 | "aitheme1"
23 | "aitheme2"
Номер | Компании Клинка Армагеддона
24 | "bladeabcampaign"
25 | "bladedbcampaign"
26 | "bladedscampaign"
27 | "bladeflcampaign"
28 | "bladefwcampaign"
29 | "bladepfcampaign"
Номер | Компании
30 | "campainmusic01"
31 | "campainmusic02"
32 | "campainmusic03"
33 | "campainmusic04"
34 | "campainmusic05"
35 | "campainmusic06"
36 | "campainmusic07"
37 | "campainmusic08"
38 | "campainmusic09"
39 | "campainmusic10"
40 | "campainmusic11"
Номер | Битва
41 | "combat01"
42 | "combat02"
43 | "combat03"
44 | "combat04"
Номер | Тема
45 | "eviltheme"
46 | "goodtheme"
47 | "neutraltheme"
48 | "secrettheme"
Номер | Магический сад - Лепрекон
49 | "looplepr"
Номер | Результаты битвы в замке
50 | "losecastle" - проигрыш
51 | "defend castle" - победа
Номер | Результаты битвы
52 | "lose combat" - проигрыш
53 | "retreat battle" - побег с битвы
54 | "surrender battle" - сдача
55 | "win battle" - победа в битве
Номер | Завершение сценария
56 | "lose campain" - проиграл компанию
57 | "ultimatelose" - проиграл игру
58 | "win scenario" - выиграл сценарий
Номер | Пользовательские
59...199 | Определяются пользователем


Таблица игровых звуков
 Таблицы

Описание

Имя файла

Начало нового дня

newday.wav

Начало новой недели

newweek.wav

Начало нового месяца

newmonth.wav

Сундук сокровищ, морской сундук

chest.wav

Артефакт

treasure.wav

После подбора сундука, ресурса или артефакта: случайно выбирается из

pickup01.82M; pickup02.82M;
pickup03.82M; pickup04.82M;
pickup05.82M; pickup06.82M;
pickup07.82M

Герой получил уровень

nwherolv.82m

Ящик Пандоры, укрытие воров, черный рынок, алтарь жертвоприношений, Сфинкс, заброшенная шахта, обелиск, труп, пирамида или любой пустой объект ВоГа:

mystery.wav

Выкопал Грааль

UltimateArtifact.wav

После принятия, убийства или отпускания монстров героем

killfade.82M

Жилище, лагерь наемников, школа войны, гарнизон, форт на холме

Military.wav

Банк существ (включительно жилища Богов, Тюрьмы)

Rogue.wav

Звездная ось, камень знаний, университет, хижина ведьмы, библиотека просвещения, ученый, дерево знаний

gazebo.wav

Святилище, сад просвящения

GetProtection.wav

Идол удачи, мистический сад, костер покинутого лагеря

Expernce.wav

Мельница, водяная мельница, обломки кораблекрушения, вагон, чей-то погреб:

genie.wav

Башня Марлетто, Лагерь наемников, Арена

Nomad.wav

Фабрика боевых машин, рынок, конюшни, верфь, бутыль, знак, таверна

Store.wav

Школа магии, волшебный колодец, магический источник

Faerie.wav

Храм или святыня заклинания:

Temple.wav

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

Cavehead.wav

Маяк, глаз мага, обсерватория красного дерева, столп огня, картограф, вуаль тьмы

Lighthouse.wav

Утопия драконов

Dragon.wav

Хижина провидца

Quest.wav

Гробница воина, склеп

Graveyard.wav

Флаг единства, фонтан юности, буй

Morale.wav

Русалки, лебединое озеро, фонтан удачи, кольцо фей

Luck.wav

Водоворот, Сирены

Danger.wav

Шахта

flagmine.wav

Колдовство просмотра земли/воздуха

view.wav


Новые объекты

Новые объекты WoG`a
 Таблицы

Объект | Тип | Подтип
 | Используется:
 | 63 | 0
 | Встроено
 | 63 | 1
 | 63 | 2
 | Скрипт 17: Фонтан зелий (Bruno)
 | 63 | 3
 | Скрипт 15: Жилище таинственного существа (Dieter)
 | 63 | 4
 | 63 | 5
 | 63 | 6
 | 63 | 7
 | 63 | 8
 | Скрипт 8: Старьевщик (Donald)
 | 63 | 9
 | Скрипт 4: Башня Аркан (Donald)
 | 63 | 10
 | Встроено
 | 63 | 11
 | Встроено
 | 63 | 12
 | Встроено
 | 63 | 13
 | Встроено
 | 63 | 14
 | Скрипт 10: Грибы (Bruno)
 | 63 | 15
 | Скрипт 70: Гробница (Rich Reed)
 | 63 | 16
 | 63 | 17
 | 63 | 18
 | Скрипт 10: Грибы (Bruno)
 | 63 | 19
 | 63 | 20
 | Скрипт 14: Алтарь трансформации (Timothy)
 | 63 | 21
 | Скрипт 32: Камень вызова(Timothy)
 | 63 | 22
 | Скрипт 60: Часовня (Petyo P. Georgiev)
 | 63 | 23
 | Скрипт 10: Грибы (Bruno)
 | 63 | 24
 | Скрипт 18: Дом бедняков (Donald)
 | 63 | 25
 | 63 | 26
 | 63 | 27
 | 63 | 28
 | 63 | 29
 | Скрипт 10: Грибы (Bruno)
 | 63 | 30
 | 63 | 31
 | 63 | 32
 | Скрипт 16: Боевая академия (Anders)
 | 63 | 33
 | Скрипт 11: Дворец мечты (Timothy)
 | 63 | 34
 | 63 | 35
 | 63 | 36
 | 63 | 37
 | 63 | 38
 | 63 | 39
 | 63 | 40
 | 63 | 41
 | 63 | 42
 | 63 | 43
 | 63 | 44
 | 63 | 45
 | 63 | 46
 | 63 | 47
 | Скрипт 5: Банк (Donald)
 | 63 | 48
 | Скрипт 17: Фонтан зелий (Bruno)
 | 63 | 49
 | 63 | 50
 | Скрипт 12: Живой череп (Timothy)
 | 63 | 51
 | Скрипт 9: Рынок времени (Timothy)
 | 63 | 52
 | Скрипт 26: Ремесленник (Perfecto)
 | 63 | 53
 | 63 | 54
 | 63 | 55
 | 63 | 56
 | 63 | 57
 | Скрипт 30: Пещера приключений (Donald)
 | 63 | 58
 | 63 | 59
 | 63 | 60
 | 63 | 61
 | 63 | 62
 | Скрипт 28: Школа Волшебства (Anders)
 | 63 | 63
 | 63 | 64
 | 63 | 65
 | Скрипт 44: Изумрудная башня (Timothy)
 | 63 | 66
 | Скрипт 52: Зеркало пути домой (Four)
 | 63 | 67
 | 63 | 68
 | 63 | 69-74 (по часовой от 12 часов)


Таблица номеров героев
Тип 34
 Таблицы

 | Рыцари
0 | Оррин
1 | Валеска
2 | Эдрик
3 | Сильвия
4 | Лорд Хаарт
5 | Сорша
6 | Кристиан
7 | Турис
 | Клерики
8 | Рион
9 | Адела
10 | Катберт
11 | Аделаида
12 | Инхам
13 | Саня
14 | Лоинс
15 | Каитлин
 | Рейнджеры
16 | Мепхала
17 | Уфретин
18 | Янова
19 | Риланд
20 | Торгрим
21 | Ивор
22 | Кланси
23 | Киррь
 | Друиды
24 | Корониус
25 | Уланд
26 | Эллезар
27 | Джем
28 | Малькольм
29 | Мелодия
30 | Алагар
31 | Аэрис
 | Алхимики
32 | Пигуедрам
33 | Тан
34 | Жозефина
35 | Нила
36 | Торосар
37 | Фафнер
38 | Рисса
39 | Иона
 | Волшебники
40 | Астрал
41 | Халон
42 | Серена
43 | Даремиф
44 | Теодор
45 | Солмир
46 | Кира
47 | Аин
 | Демоны
48 | Фиона
49 | Рашка
50 | Мариусса
51 | Игнат
52 | Октавия
53 | Калх
54 | Пир
55 | Нимус
 | Еретики
56 | Айден
57 | Ксирон
58 | Аксис
59 | Олема
60 | Калид
61 | Аш
62 | Зидар
63 | Ксарфакс
 | Рыцари смерти
64 | Стракер
65 | Вокиал
66 | Моандор
67 | Чарна
68 | Тамика
69 | Исра
70 | Клавиус
71 | Галтран
 | Некроманты
72 | Септиенна
73 | Аислин
74 | Сандро
75 | Нимбус
76 | Тант
77 | Кси
78 | Видомина
79 | Нагаш
 | Лорды
80 | Лорелей
81 | Арлаш
82 | Дас
83 | Аджит
84 | Дамакон
85 | Гуннар
86 | Синка
87 | Шакти
 | Чернокнижники
88 | Аламар
89 | Жаегар
90 | Малекит
91 | Жеддит
92 | Геон
93 | Деемер
94 | Сепхинороф
95 | Даркстон
 | Варвары
96 | Йог
97 | Гурниссон
98 | Жабаркас
99 | Шива
100 | Гретчин
101 | Креллион
102 | Крэг Хэк
103 | Тираксор
 | Боевые маги
104 | Гирд
105 | Вей
106 | Десса
107 | Терек
108 | Зубин
109 | Гундула
110 | Орис
111 | Сауруг
 | Хозяин зверей
112 | Брон
113 | Дракон
114 | Вистан
115 | Тазар
116 | Алкин
117 | Корбак
118 | Гервульф
119 | Бронгхильд
 | Ведьмы
120 | Мирланда
121 | Розик
122 | Вой
123 | Вердиш
124 | Мерист
125 | Стиг
126 | Андра
127 | Тива
 | Путешественники
128 | Пасис
129 | Тунар
130 | Игнисса
131 | Лакус
132 | Монер
133 | Эрдамон
134 | Фьюр
135 | Кальт
 | Элементалисты
136 | Луна
137 | Брисса
138 | Циель
139 | Лабета
140 | Интеус
141 | Аэнаин
142 | Гелар
143 | Гриндан
 | Дополнительные герои
144 | Сэр Мюллих
145 | Адриэнна
146 | Катерина
147 | Дракон
148 | Джелу
149 | Килгор
150 | Лорд Хаарт
151 | Мутаре
152 | Роланд
153 | Мутаре - Дрейко
154 | Борагус
155 | Ксерон


Таблица типов объектов

Объекты
Таблицы

Номер | Описание
0 | Значек "Пусто" (обычно можно встретить вместо картинки героя, если графика не найдена)
1 | Пусто
2 | Жертвенный алтарь
3 | Встать на якорь (данный тип имеют все квадраты радом с водой, на которые можно высадиться, подтип = -1. Если квадрат имеет другой тип, на него высадиться нельзя.)
4 | Арена
5 | Артефакт [0-170 – таблица артефактов ]
6 | Ящик Пандоры
7 | Черный рынок
8 | Лодка [подтип 0-2]
9 | Страж границы [0-7 – таблица стражей ]
10 | Палатка ключника [0-7 – таблица стражей]
11 | Буй
12 | Кострище покинутого лагеря
13 | Картограф [0 - водяной, 1 - наземный, 2 - подземный]
14 | Лебединое озеро
15 | Вуаль Тьмы
16 | Банк Существ [0-20 – таблица банков]
17 | Генератор существ 1 [0-100 – таблица жилищ ]
18 | Генератор существ 2
19 | Генератор существ 3
20 | Сопряжение Элементов (Воздуха, земли, огня, воды) [подтип 0]; Фабрика Големов (каменные, железные, золотые, кристальные) [подтип 1]
21 | Проклятая земля
22 | Труп
23 | Башня Марлетто
24 | Ветхий корабль
25 | Утопия драконов
26 | Событие
27 | Глаз мага
28 | Домик фей
29 | Обломки
30 | Фонтан удачи
31 | Фонтан молодости
32 | Сад откровения
33 | Гарнизон [0 - обычный, 1 - антимагический, 2 -обычный перпендикулярный, 3 - антимагический перпендикулярный, 4 - перпендикулярный занеженый]
34 | Герой [0-155 – таблица героев]
35 | Форт на холме
36 | Грааль
37 | Хижина мага
38 | Идол Удачи [0 - обычный, 1 - заснеженный]
39 | Навес
40 | Декоративный объект [0 - снегопад, 1 - лавовая жижа, 2 - дождь]
41 | Библиотека Просвящения [0 - стандартная, 1 - заснеженная]
42 | Маяк [0-7, -1 - по цвету игрока]
43 | Монолит входа [0-7 – таблица монолитов ]
44 | Монолит выхода [0-7 – таблица монолитов]
45 | Двухсторонний монолит [0-7 – таблица монолитов ]
46 | Равнина магов
47 | Школа магии
48 | Магический источник
49 | Магический колодец [0 - обычный, 1 - украшенный]
50 | Рынок времени
51 | Лагерь наемников
52 | Русалки
53 | Шахта [0-7 – таблица шахт ]
54 | Монстр [0-196 – таблица монстров]
55 | Мистический сад
56 | Оазис
57 | Обелиск
58 | Обсерватория красного дерева
59 | Океанская бутыль
60 | Огненный столп
61 | Звездное колесо
62 | Тюрьма
63 | Объект [0-74 – таблица новых объектов ]
64 | Флаг единства
65 | Случайный артефакт
66 | Случайный артефакт сокровище
67 | Случайный малый артефакт
68 | Случайный большой артефакт
69 | Случайная реликвия
70 | Случайный герой
71 | Случайный монстр
72 | Случайный монстр 1
73 | Случайный монстр 2
74 | Случайный монстр 3
75 | Случайный монстр 4
76 | Случайный ресурс
77 | Случайный город
78 | Лагерь беженцев
79 | Ресурс [0-7 – таблица ресурсов ]
80 | Святилище
81 | Ученый
82 | Морской сундук
83 | Хижина провидца [0 - соломенная хижина, 1 - грибная, 2 - древоподобная]
84 | Склеп [0 - заснеженный]
85 | Кораблекрушение
86 | Потерпевший кораблекрушение
87 | Верфь [0-7, -1 - по цвету игрока]
88 | Святыня магического воплощения
89 | Святыня магического жеста
90 | Святыня магической мысли
91 | Знак
92 | Сирены
93 | Свиток с заклинанием [0-69 – таблица заклинаний ]
94 | Конюшня
95 | Таверна [0 - обычная, 1 - заснеженная]
96 | Храм
97 | Гильдия воров
98 | Город [0-8 – таблица городов]
99 | Рынок
100 | Камень знаний [0 - стандартный, 1 - заснеженный]
101 | Сундук с сокровищами [UN:B]
102 | Древо знаний [0 - обычное, 1 - заснеженное]
103 | Врата подземного мира [0 - обычные, 1 - заснеженные]
104 | Университет
105 | Телега
106 | Фабрика военной техники
107 | Школа войны
108 | Могила воина
109 | Водяное колесо
110 | Водоем
111 | Водоворот
112 | Ветряная мельница
113 | Хижина ведьмы [0-27 – таблица вторичных навыков ]
114 | Щетка
115 | Куст
116 | Кактус
117 | Каньон
118 | Кратер
119 | Мертвая растительность
120 | Цветы
121 | Замерзшее озеро
122 | Изгородь
123 | Холм
124 | Нора
125 | Водоросль
126 | Озеро
127 | Поток лавы
128 | Озеро лавы
129 | Гриб
130 | Бревно
131 | Мандрагора
132 | Мох
133 | Курган
134 | Гора
135 | Дуб
136 | Пласт породы
137 | Сосна
138 | Растение
143 | Дельта реки
147 | Камни
148 | Песчаная дюна
149 | Песчаная яма
150 | Куст
151 | Череп
152 | Сталагмит
153 | Пень
154 | Смоляная шахта
155 | Деревья
156 | Виноград
157 | Жерло вулкана
158 | Вулкан
159 | Ива
160 | Юкка
161 | Риф
162 | Случайный монстр 5
163 | Случайный монстр 6
164 | Случайный монстр 7
165 | Щётка
166 | Куст
167 | Кактус
168 | Каньон
169 | Кратер
170 | Мёртвая растительность
171 | Цветы
172 | Замёрзшее озеро
173 | Ограда
174 | Холм
175 | Дыра
176 | Бурая водоросль
177 | Озеро
178 | Поток лавы
179 | Озеро лавы
180 | Грибы
181 | Бревно
182 | Мандрагора
183 | Мох
184 | Курган
185 | Гора
186 | Дубовый лес
187 | Горная порода
188 | Сосновый лес
189 | Растение
190 | Дельта реки
191 | Скала
192 | Песчаные дюны
193 | Песчаная впадина
194 | Кустарник
195 | Череп
196 | Сталагмит
197 | Пень
198 | Смоляная яма
199 | Деревья
200 | Виноградная лоза
201 | Вулканическое отверстие
202 | Вулкан
203 | Ивовый лес
204 | Юкковый лес
205 | Риф
206 | Необитаемые холмы
207 | Грязевые холмы
208 | Травяные холмы
209 | Дикие холмы
210 | Подземные скалы
211 | Болотные листья
212 | Пограничные ворота [0-7]
213 | Гильдия наемников
214 | Лагерь героя
215 | Страж задания
216 | Случайное жилище
217 | Жилище существ фиксированного уровня (подтип 0-6)
218 | Жилище существ, привязанное к городу (подтип 0-8 )
219 | Гарнизон
220 | Рудник
221 | Торговый пост [0 - заснеженный рынок]
222 | Клеверное поле
223 | Проклятая земля
224 | Дьявольский туман
225 | Попутный ветер
226 | Огненные поля
227 | Святая земля
228 | Прозрачные пруды
229 | Магические облака
230 | Магические равнины
231 | Скалистая земля


Препятствия

Таблица препятствий на поле боя (для !!BF:O)
 Таблицы

Номер используется командой !!BF:O. Не все объекты блокируют свою начальную позицию. Все объекты появляются вправо и вверх от стартового квадрата, никогда влево или вниз. Скалы - не пронумерованные препятствия (кроме одной скалы среднего размера)

Номер | Имя | Объект
0 | Череп |
1 | Ребра |
2 | Ребра |
3 | Скелет |
4 | Скелет |
5 | Дерево/скала |
6 | Камень |
7 | Камень |
8 | Камень |
9 | Камень |
10 | Куст |
11 | Ветвь/камень |
12 | Дерево/камни |
13 | Ветвь/камень |
14 | Кусты/камни |
15 | Кусты |
16 | Озеро |
17 | Кусты |
18 | Камни/кусты/ череп |
19 | Бревно |
20 | Серые камни |
21 | Пень |
22 | Пруд |
23 | Камни |
24 | Мерзлый пруд |
25 | Снежные камни |
26 | Снежное бревно |
27 | Снежное бревно |
28 | Снежный пень |
29 | Снежный пень |
30 | Снежный камень |
31 | Снежный камень |
32 | Замерзшее озеро |
33 | Снежные бревна |
34 | Дерево |
35 | Обрыв |
36 | Камень |
37 | Камень |
38 | Заболоченный пруд |
39 | Бревно |
40 | Камни/бочка |
41 | Камни/обломки |
42 | Камни |
43 | Камни |
44 | Камни |
45 | Сталагмит/грибы |
46 | Грибы/камень |
47 | Сталагмит/грибы |
48 | Трещина лавы |
49 | Кратер |
50 | Лава |
51 | Кратер |
52 | Трещина |
53 | Трещина |
54 | Лава |
55 | Веревка |
56 | Челюсть |
57 | Кости |
58 | Лужа |
59 | Лужа |
60 | Камни |
61 | Надгробие |
62 | Могила |
63 | Крест |
64 | Склеп |
65 | Большой склеп |
66 | Дьявольский сорняк |
67 | Дьявольский сорняк |
68 | Дьявольский сорняк |
69 | Дьявольский сорняк |
70 | Дьявольский сорняк |
71 | Клевер |
72 | Клевер |
73 | Клевер |
74 | Клевер |
75 | Камни |
76 | Камни |
77 | Камни |
78 | Камни |
79 | Горячие камни |
80 | Горячие камни |
81 | Горячие камни |
82 | Горячие камни |
83 | Горячие камни |
84 | Камни |
85 | Камни |
86 | Камни |
87 | Камни |
88 | Облачная дыра |
89 | Облачная дыра |
90 | Облачная дыра |


Односторонний монолит
 (Вход - тип 43; Выход - тип 44)
Таблицы

Подтип | Описание
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |


Картинки для IF:Q

Типы картинок (для !!IF:Q)
Таблицы

Название | Тип | Подтип
Ресурс | Тип (0...7) | Количество
Артефакт | 8 | Номер артефакта
Заклинание | 9 | Номер заклинания
Флаг | 10 | Номер флага (8 - светло-оранжевый флаг с подписью "Человек или компьютер")
Удача (позитивная) | 11 | + удачи
Удача (нейтральная) | 12 | Не имеет значения
Удача (отрицательная) | 13 | - удачи
Мораль (позитивная) | 14 | + морали
Мораль (нейтральная) | 15 | Не имеет значения
Мораль (отрицательная) | 16 | - морали
Опыт | 17 | Количество
Вторичный навык | 20 | Навык + уровень
Монстр | 21 | Тип монстра
Здание в городе | 22...30 (в зависимости от типа города) | Номер строения
Первичный навык | 31...34 (прибавьте к 31 номер нужного) | Количество
Баллы заклинаний | 35 | Количество
Золото | 36 | Количество


Дополнительно по !!PO

Дополнительная информация по ресейверу PO

Небольшое объяснение - взято из переписки Timothy и Славы.
ОК, первое: вы обращаетесь к объектам неизвестным мне путем. Как минимум, вроде такого:
!?OB63/3; для каждой *разбитой башни* на карте
x=v998, y=v999, v=1000
В этом примере вы используете 63/3 как параметры. Раньше я считал, что единственный вариант - это параметры X, Y и Уровня карты. Как используются наши параметры и что именно они означают? Это номер объекта и его подтип? Как оно работает?

Триггер OB может иметь три вариации:
1. !?OB$1/$2/$3
2. !?OB$1/$2
3. !?OB$
Вариант 1: $1=X, $2=Y и $3=уровень
Вариант 2: $1=Тип объекта и $2=подтип (-1 = любой подтип)
Вариант 3: $=тип объекта (подтип = -1)
Если несколько вариантов используются для одного объекта, сначала срабатывает триггер варианта 2, затем 1 и 3. Варианты 1 и 3 выполняются в порядке расположения в скрипте. Когда триггер в. 2 срабатывает, координаты объекта записываются в v[998]=X, v[999]=Y, v[1000]=Уровень. По тому же пути записываются координаты и любых других посещаемых объектов.
Важно: вы можете использовать ссылочные координаты для всех ресейверов, требующих точных координат.
Пример:
!!OB5/3/1:...
Мы можем также использовать:
!!OB10:... 10 - это номер переменной v, хранящей координату X (v10=X, v11=Y, v12=Уровень), или
!!OBv11:... значение v11 принимается как ссылка, так что v[v11]=X, v[v11+1]=Y, v[v11+2]=Уровень.
Вариант для ресейверов такого типа:
!!XX$:...
, где XX - имя ресейвера, $ = номер переменной v, хранящей X, Y и уровень (v[$]=X, v[$+1]=Y v[$+2]=Уровень)

Обратите внимание на ресейвер !!PO:
Вы можете использовать его для установки информации по любому квадрату карты.
Команды:
H$ - установить/проверить/получить номер героя (0...255)
Какое значение предполагается получить, если героя нет? 0? Или -1?

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

O$ - установить/проверить/получить хозяина (-8...8)
Вопрос тот же: что получим, если хозяина нет, и зачем нужны отрицательные значения?

Ответ тот же :-) Это просто место для записи чего-либо о квадрате. Я предполагал использовать ее для цвета (положительное значения для какого-либо бонуса и отрицательное для обратного - штрафа). Но вы можете установить что пожелаете.

N$ - установить/проверить/получить обычный определительный номер (0...15)
Что команда представляет собой?

Абсолютно любое целое число от 0 до 15.

T$ - установить/проверить/получить тип объекта (или любое число) (0...255).
Что получится, если объекта нет?

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

S$ - установить/проверить/получить подтип объекта (или любое число) (0...255).
Что, если подтип отсутствует (или объекта нет)?

То же самое.

C$1/$2/$3/$4/$5 - подсчитать все объекты
Что вы хотели сказать "подсчитать все объекты"? Вы определите их количество на карте или что?

Команда "проходится" по всей карте и ищет объекты, соответствующие вашему запросу. Для игнорирования параметра используйте -1. Так, C1/2/0/-1/-1 подсчитает все квадраты, где вы установили тип на 1, подтип на 2, номер героя на 3, без учета других значений.

$1=тип (-1=не имеет значения)
$2=подтип (-1=не имеет значения)
$3=герой (-1=не имеет значения)
$4=хозяин (-1=не имеет значения)
$5=обычный номер (-1=не имеет значения)
Результат запишется в v1
Синтаксис:
!!POx/y/l:... - прямое обращение
!!PO$:... - непрямое обращение
x=v[$], y=v[$+1], Уровень=v[$+2]

Комментарий: эта команда может быть очень полезен, если вы хотите контролировать посетителей объекта.

Пример:
!?OB63/3; для каждой "разбитой башни" на карте
x=v998, y=v999, уровень l=v1000
!!FU100:P; вызвать функцию 100

Что произойдет? На старте карты, когда она первый раз загрузится? Я не уверен, что понимаю.

Код сработает только если вы используете ресейвер для установки значений и их получения. На старте карты все квадраты карты имеют параметры: номер героя 255, хозяин -1 и остальные параметры установлены на 0.

!?FU100; функция 100
!!HE-1:O?y1 N?y2; y1=хозяин, y2=номер
Хорошо... Так, давайте посмотрим... Получаем хозяина текущего героя и номер героя и записываем их в y1 и y2.
!!OB998:T?y3 U?y4; y3=тип объекта, y4=подтип
Здесь вы ссылаетесь на 998. Что это за число? Это не координаты, и не стандартный объект типа 998, что же это?

Триггер OB устанавливает v998, v999 и v1000 на соответствующие координаты X Y L.


Таблица первичных умений
 Таблицы

Номер | Название
0 | Атака
1 | Защита
2 | Сила магии
3 | Знания


Таблица ресурсов
 Тип 79
Таблицы

Номер | Название
0 | Дерево
1 | Ртуть
2 | Руда
3 | Сера
4 | Кристалл
5 | Драг. камни
6 | Золото
7 | Мифрил


Таблица вторичных навыков
 Таблицы

Номер | Название
0 | Поиск пути
1 | Стрельба
2 | Логистика
3 | Разведка
4 | Дипломатия
5 | Навигация
6 | Лидерство
7 | Мудрость
8 | Мистицизм
9 | Удача
10 | Баллистика
11 | Орлиный глаз
12 | Некромантия
13 | Имущество
14 | Магия огня
15 | Магия воздуха
16 | Магия воды
17 | Магия земли
18 | Грамотность
19 | Тактика
20 | Артиллерия
21 | Обучение
22 | Атака
23 | Защита
24 | Интеллект
25 | Волшебство
26 | Сопротивление
27 | Первая помощь


Таблица вторичных навыков
с командой IF:Q
Таблицы

Номер | Название
3 | Базовый поиск пути
4 | Продвинутый поиск пути
5 | Эксперт поиск пути
6 | Базовая стрельба
7 | Продвинутая стрельба
8 | Эксперт стрельба
9 | Базовая логистика
10 | Продвинутая логистика
11 | Эксперт логистика
12 | Базовый разведка
13 | Продвинутый разведка
14 | Эксперт разведка
15 | Базовый дипломатия
16 | Продвинутый дипломатия
17 | Эксперт дипломатия
18 | Базовый навигация
19 | Продвинутый навигация
20 | Эксперт навигация
21 | Базовый лидерство
22 | Продвинутый лидерство
23 | Эксперт лидерство
24 | Базовый мудрость
25 | Продвинутый мудрость
26 | Эксперт мудрость
27 | Базовый мистицизм
28 | Продвинутый мистицизм
29 | Эксперт мистицизм
30 | Базовый удача
31 | Продвинутый удача
32 | Эксперт удача
33 | Базовый баллиста
34 | Продвинутый баллиста
35 | Эксперт баллиста
36 | Базовый орлиный глаз
37 | Продвинутый орлиный глаз
38 | Эксперт орлиный глаз
39 | Базовый некромантия
40 | Продвинутый некромантия
41 | Эксперт некромантия
42 | Базовый имущество
43 | Продвинутый имущество
44 | Эксперт имущество
45 | Базовый магия огня
46 | Продвинутый магия огня
47 | Эксперт магия огня
48 | Базовый магия воздуха
49 | Продвинутый магия воздуха
50 | Эксперт магия воздуха
51 | Базовый магия воды
52 | Продвинутый магия воды
53 | Эксперт магия воды
54 | Базовый магия земли
55 | Продвинутый магия земли
56 | Эксперт магия земли
57 | Базовый грамотность
58 | Продвинутый грамотность
59 | Эксперт грамотность
60 | Базовый тактика
61 | Продвинутый тактика
62 | Эксперт тактика
63 | Базовый артиллерия
64 | Продвинутый артиллерия
65 | Эксперт артиллерия
66 | Базовый обучение
67 | Продвинутый обучение
68 | Эксперт обучение
69 | Базовый атака
70 | Продвинутый атака
71 | Эксперт атака
72 | Базовый защита
73 | Продвинутый защита
74 | Эксперт защита
75 | Базовый интеллект
76 | Продвинутый интеллект
77 | Эксперт интеллект
78 | Базовый волшебство
79 | Продвинутый волшебство
80 | Эксперт волшебство
81 | Базовый сопротивление
82 | Продвинутый сопротивление
83 | Эксперт сопротивление
84 | Базовый первая помощь
85 | Продвинутый первая помощь
86 | Эксперт первая помощь


Таблица способностей существ

Таблица способностей существ при прокачке ($3 для команды EA:B)
Таблицы

Буква | Значение | Числовой код
A | Атака | 65
B | Блок | 66
C | Уменьшает цену заклинаний | 67
D | Защита | 68
E | Мертвый взгляд | 69
F | Страх | 70
G | Гвардия Санты (имеет окружающих помощников) | 71
H | Здоровье | 72
J | Колдует заклинание продвинутого уровня перед атакой | 74
K | Колдует заклинание продвинутого уровня после атаки | 75
L | Уклонение | 76
M | Максимальный урон | 77
O | Кол-во выстрелов | 79
P | Кол-во заклинаний | 80
R | Доп. ответы | 82
S | Скорость | 83
U | Вызов | 85
W | Сопротивление магии | 87
a | Колдует Заклинание после атаки (эксперт) | 97
b | Снижает защиту цели | 98
c | Колдует Не наносящее урона заклинание после атаки | 99
d | Бонус защиты | 100
e | Двойной урон | 101
f | Флаговые способности | 102
g | Сопротивление магии (как Големы) | 103
h | Ненависть (доп. урон) | 104
j | Колдует заклинание базового уровня перед атакой | 106
k | Колдует заклинание базового уровня после атаки | 107
i | Нет пенальти дальности | 105
l | Вызов клонов | 108
m | Минимальный урон | 109
o | Нет пенальти за препятствия | 111
p | Колдует заклинание перед атакой | 112
r | Регенерация | 114
s | Очаровывает заклинанием | 115
u | Одиночный Вызов | 117
w | Иммунитет к заклинаниям | 119


Флаговые способности

Флаговые способности ($4 для команды EA:B, когда $3=102 (f))
Таблицы

Буква | Описание | Код
1 | Король 1 | 49
2 | Король 2 | 50
3 | Король 3 | 51
A | Атакует всех вокруг | 65
B | Дыхание дракона | 66
D | Двойной удар | 68
E | Нет пенальти ближнего боя | 69
F | Полет | 70
G | Природа дракона | 71
I | Иммунитет к огню | 73
L | Живой | 76
M | Нет морали | 77
P | Иммунитет к заклинаниям разума | 80
R | Безответный | 82
S | Стрелок | 83
U | Нежить | 85
b | Ударяет и возвращается | 98
c | Чемпионский разбег | 99
f | Бесстрашный | 102
m | Всегда хорошая мораль | 109
r | Возрождение | 114
s | Стреляет вплотную | 115
u | Аура единорога | 117


Опыт существ

Опыт существ: не-наносящие урона заклинания ($4 для команды EA:B, когда $3=99 (c))
Таблицы

Название | Код
Старость | 75
Кислотное дыхание | 80
Берсерк | 59
Слепота | 62
Проклятье | 42
Болезнь | 73
Снятие полезной магии | 78
Разрушающий луч | 47
Забывчивость | 61
Гипноз | 60
Неудача | 52
Яд | 71
Медлительность | 54
Печаль | 50
Слабость | 45


Опыт существ

Опыт существ: иммунитет к заклинаниям ($4 для команды EA:B, когда $3=119 (w))
Таблицы

Буква | Описание | Код
1 | Уровень 1, враждебные | 49
2 | Уровень 1-2, враждебные | 50
3 | Уровень 1-3, враждебные | 51
4 | Уровень 1-4, враждебные | 52
5 | Все враждебные заклинания | 53
6 | Все 1-го уровня | 54
7 | Все 1-2-го уровня | 55
8 | Все 1-3-го уровня | 56
9 | Все 1-4-го уровня | 57
: | Все заклинания | 58
B | Слепота | 66
C | Заклинания холода | 67
D | Наносящие повреждения заклинания | 68
H | Гипноз | 72
I | Взрыв | 73
K | Берсерк | 75
L | Заклинания молнии | 76
M | Метеоритный дождь | 77
N | Снять полезные заклинания | 78
O | Огненные заклинания | 79
P | Любое снятие заклинания | 80
R | Армагеддон | 82
S | Медлительность | 83
A | Враждебные заклинания воздуха | 65
E | Враждебные заклинания земли | 69
F | Враждебные заклинания огня | 70
W | Враждебные заклинания воды | 87
a | Все воздушные заклинания | 97
e | Все земляные заклинания | 101
f | Все огненные заклинания | 102
m | Враждебные заклинания разума | 109
p | Враждебное снятие заклинания | 112
w | Все водные заклинания | 119


Опыт существ

Опыт существ: стандартные модификации ($4 для команды EA:B)
Таблицы

Символ | Описание | Код
+ | Добавить | 43
= | Установить | 61
% | Проценты | 37


Таблица заклинаний в числовом порядке

Таблица заклинаний
 Таблицы
По алфавиту

Номер | Заклинания вне битвы
0 | Вызвать корабль
1 | Затопить корабль
2 | Видения
3 | Просмотр земли
4 | Маскировка
5 | Просмотр воздуха
6 | Полет
7 | Хождение по воде
8 | Дверь измерений
9 | Городской портал
Номер | Боевые заклинания
10 | Зыбучие пески
11 | Минное поле
12 | Силовое поле
13 | Стена огня
14 | Землетрясение
15 | Волшебная стрела
16 | Ледяная молния
17 | Удар молнии
18 | Взрыв
19 | Цепная молния
20 | Кольцо холода
21 | Огненный шар
22 | Инферно
23 | Метеоритный дождь
24 | Волна смерти
25 | Уничтожить нежить
26 | Армагеддон
27 | Щит
28 | Воздушный щит
29 | Огненный щит
30 | Защита от воздуха
31 | Защита от огня
32 | Защита от воды
33 | Защита от земли
34 | Антимагия
35 | Снятие заклинания
36 | Волшебное зеркало
37 | Лечение
38 | Воскрешение
39 | Оживление мертвецов
40 | Жертва
41 | Благословление
42 | Проклятье
43 | Жажда крови
44 | Точность
45 | Слабость
46 | Каменная кожа
47 | Разрушающий луч
48 | Молитва
49 | Радость
50 | Печаль
51 | Удача
52 | Неудача
53 | Ускорение
54 | Медлительность
55 | Палач
56 | Бешенство
57 | Гром титанов
58 | Контрудар
59 | Берсерк
60 | Гипноз
61 | Забывчивость
62 | Слепота
63 | Телепорт
64 | Убрать препятствие
65 | Клон
66 | Вызов элемента огня
67 | Вызов элемента земли
68 | Вызов элемента воды
69 | Вызов элемента воздуха
70 | Окаменение
71 | Яд
72 | Корни
73 | Болезнь
74 | Паралич
75 | Старость
76 | Облако Смерти
77 | Удар Молнии
78 | Снять полезные заклинания
79 | Смертельный взгляд
80 | Кислотное дыхание


Таблица заклинаний в числовом порядке

Таблица заклинаний
 Таблицы
По номерам

Номер | Название
34 | Антимагия
26 | Армагеддон
59 | Берсерк
56 | Бешенство
41 | Благословление
73 | Болезнь
18 | Взрыв
2 | Видения
28 | Воздушный щит
24 | Волна смерти
15 | Волшебная стрела
36 | Волшебное зеркало
38 | Воскрешение
0 | Вызвать корабль
68 | Вызов элемента воды
69 | Вызов элемента воздуха
67 | Вызов элемента земли
66 | Вызов элемента огня
60 | Гипноз
9 | Городской портал
57 | Гром титанов
8 | Дверь измерений
43 | Жажда крови
40 | Жертва
61 | Забывчивость
1 | Затопить корабль
32 | Защита от воды
30 | Защита от воздуха
33 | Защита от земли
31 | Защита от огня
14 | Землетрясение
10 | Зыбучие пески
22 | Инферно
46 | Каменная кожа
70 | Камень
80 | Кислотное дыхание
65 | Клон
20 | Кольцо холода
58 | Контрудар
72 | Корни
16 | Ледяная молния
37 | Лечение
4 | Маскировка
54 | Медлительность
23 | Метеоритный дождь
11 | Минное поле
48 | Молитва
52 | Неудача
76 | Облако Смерти
21 | Огненный шар
29 | Огненный щит
39 | Оживление мертвецов
55 | Палач
74 | Паралич
50 | Печаль
6 | Полет
42 | Проклятье
5 | Просмотр воздуха
3 | Просмотр земли
49 | Радость
47 | Разрушающий луч
12 | Силовое поле
45 | Слабость
62 | Слепота
79 | Смертельный взгляд
35 | Снятие заклинания
78 | Снять полезные заклинания
75 | Старость
13 | Стена огня
63 | Телепорт
44 | Точность
64 | Убрать препятствие
17 | Удар молнии
77 | Удар Молнии
51 | Удача
25 | Уничтожить нежить
53 | Ускорение
7 | Хождение по воде
19 | Цепная молния
27 | Щит
71 | Яд


Типы почвы
Таблицы

Номер | Картинка | Название
0 |  | Грязь
1 |  | Песок
2 |  | Трава
3 |  | Снег
4 |  | Болото
5 |  | Скалы
6 |  | Подземелье
7 |  | Лава
8 |  | Вода
9 |  | Пропасть


Земля во время битвы
Таблицы

Значение | Тип земли
-1 | Обычная (где происходит битва без изменений)
0 | Битва на побережье
1 | Проклятая земля
2 | Равнины магов
3 | Святая земля
4 | Дьявольский туман
5 | Клеверное поле
6 | Прозрачные пруды
7 | Огненные поля
8 | Скалистая земля
9 | Магические облака


Типы городов

Таблица городов
Тип 98
 Таблицы

Подтип | Название
0 | Замок
1 | Оплот
2 | Башня
3 | Инферно
4 | Некрополис
5 | Темница
6 | Цитадель
7 | Крепость
8 | Сопряжение


Двусторонние монолиты
 Тип 45
 Таблицы

Подтип | Описание
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
7 |


Ресейвер AI

Опции AI: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер AI (ИИ - контроллер)

!!AI:XXXX; - позволяет установить компьютерному игроку точку назначения, указав ее значимость.
 Этот ресейвер дает вам некоторый контроль над передвижением ИИ. Вы можете использовать его, чтобы вынудить героев ИИ двигаться в определенное место карты. В зависимости от установленной значимости точки, ИИ может отклонить от пути для сбора сокровищ, атаки более слабых монстров или героев, захвата шахты или городов. Даже используя максимальную значимость, ИИ не всегда можно заставить идти к нужной точке, если обстоятельства сильнее (например, у него есть армия, он потерял последний замок, но поблизости есть пустой замок), но это редкость. Другая возможность использования этого ресейвера - настроить точки пути как для патрулирования местности. Также можете связать координаты героя противника и координаты точки назначения, и герой ИИ будет неумолимо преследовать героя игрока.
Данная команда довольно ощутимо затормаживает действия компьютера, при том, ИИ остается непредсказуем - он может и "ослушаться" приказа идти в эту точку. Т.е. использование данной команды нерационально.

D#1/#2/#3
Удалить точку назначения
#1 – номер героя (-1 – любой)
#2 – номер игрока (-1 – любой)
#3 – номер точки назначения (-1 – удалить все точки назначения для этого героя или игрока)

S#1/#2/#3/$1/$2/$3/$4/$5
Установить новую точку назначения
#1 – номер героя (-1 – любой)
#2 – номер игрока (-1 – любой)
#3 – последовательный номер точки
$1 – X
$2 – Y
$3 – L
$4 – значимость точки (500000 – значима, 5000000 – очень значима)
$5 – флаг. Значения: 0 = нет флага, 1 – начинать с этой точки, 2 – не удалять эту точку после посещения, 3 – начинать с этой точки и не удалять ее после посещения.
Комментарий

1) Порядок работает так. Если вы установите точки назначения с номерами 2, 4, 5, 6, 88, 99 и установите флаг 1 для номера 6, герой будет двигаться так: 6, 88, 99, 2, 4, 5 и потом, если вы поставите флаг «Не удалять» (например, для 88, 4 и 5), герой будет бегать так: 88, 4, 5, 88, 4, 5, 88, 4, 5…
2) Вы можете установить любого игрока (-1) и это будет означать, что герой будет идти к точке независимо от хозяина.
3) Вы можете установить любого героя (-1) и это будет означать, что все герои будут двигаться к этой точке.
4) Если первая точка одновременно и последняя, и установлена на «неудаление» после посещения, на карте появится фантомный клон героя.
5) Если герой не определен, и есть многочисленные точки назначения, то первый герой ИИ будет двигаться к первой точке. После достижения точки второй герой начнет продвигаться к следующей точке назначения. Поэтому лучше назначить определенного героя во избежание хаоса.


Ресейвер AR

Опции AR: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер AR (артефакты или ресурсы)

!!AR#1/#2/#3:XXXX; - артефакт или ресурс в координатах X Y L (#1/#2/#3).
Расширение синтаксиса:
!!AR$:XXXX; - артефакт ИЛИ ресурс в координатах v[$], v[$+1], v[$+2] соответственно
Используется для модификации атрибутов артефактов или ресурсов в определенной позиции.
Артефакты – тип 5, свитки с заклинаниями – тип 93. Ресурсы – тип 79.

Артефакты и ресурсы имеют раздельную нумерацию.

Важное замечание:
Большинство этих команд не будут воздействовать на артефакт или кучку ресурсов, если он не имеет некие установки, сделанные в Редакторе карт. Это может быть простым настраиванием охраны у ресурса или артефакта. Если артефакт или ресурс не имеет никакой специальной установки, то появится сообщение о ошибке ERM. Вы можете использовать статусы опций вывода ошибок командами UN:P904 P905, во избежание проблем; также можете использовать команду OB:C для получения контрольного числа, и обработки его значения (но команда V$ будет работать корректно, даже если свиток или ресурс не будут иметь какой-либо установки).

G#1/$2/$3
Установить/проверить/получить монстров - охранников
#1 - позиция (0...6)
$2 - тип монстра
$3 - количество монстров
Команда не может включить охранников, она может лишь поставить их. Используйте опцию X для включения.

M^ТЕКСТ^
Установить текстовое послание ТЕКСТ. Длина текста может превышать оригинальный. Послание может содержать любые символы, кроме "^" и ";"

M#
Установить текст сообщения такой же, что и в глобальном событии номер #.

M-1
Восстановить оригинальное сообщение для артефакта

Mz#
Установить текст из текстовой переменной z#

M1/$
Установить и получить текстовый параметр. Вы можете использовать данную опцию, когда команда M используется для установки имени или сообщения.
$ = номер текстовой переменно
$ = -1 - отключить сообщение (восстановить по умолчанию)

V$
Установить/проверить/получить номер заклинания в свитке (если ресурс, то количество ресурса)
Комментарий

Для артефактов это значение задает тип поднимания:
0 - Артефакт просто поднимается
1 - Предложение купить артефакт за 2000 монет
2 - Для поднятия артефакта требуется мудрость
3 - Для поднятия артефакта требуется лидерство
4 - Предложение купить артефакт за 2500 монет и 3 дерева
5 - Предложение купить артефакт за 3000 монет и 5 дерева
6 - У артефакта есть охрана (еще один способ ее включить)
Все значения большие 6 делают артефакт неподнимаемым.

X#
Включить охранников, если # не равно нулю, иначе - отключить. Проверки на существование охранников нет.


Ресейвер BA

Опции BA: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер BA (атрибуты битвы)

!!BA:XXXX; - используется для установки атрибутов битвы.

Примечание о триггере !?BA
Этот триггер срабатывает для каждой битвы. Но если вы используете 0 (!?BA0), то триггер будет вызван в начале сражения, а если 1 - то в конце. Каждый раз, когда имеет место сражение, этот триггер будет работать, причем для ЛЮБОГО количества сражений, т.е. в своем скрипте вы можете сделать лишь один такой триггер, и получать доступ к параметрам битвы при каждом сражении. Например, если вы хотите оказывать некое вспомогательное действие именно в седьмой день недели, просто проверяйте день и выполняйте нужные ресейверы.
Примечание:
Проверка координат после битвы не сработает, так как герой исчезает с координат после боя. То же с монстрами - они исчезают сразу после их уничтожения. Простейший путь - проверять текущего хозяина героя - если он равен -1, значит, игрок проиграл битву.

A$
Получить или проверить (НЕ установить), если битва – только ИИ
$ = 1 если это только теоретическая битва (полностью ИИ-битва)
$ = 0 если это настоящая или быстрая битва
Комментарий

Вы можете установить данный параметр, но это не возымеет никаких действий. Если происходит битва на карте (герой на героя, герой на монстров, герой на защищающийся объект...), триггер !?BA#; срабатывает всегда. Также соответственный ресейвер !!BA... работает прекрасно. НО. Если битва происходит БЕЗ игрока-человека (полностью ИИ-битва, не быстрая битва!), реальной симуляции не происходит. ИИ просто подсчитывает возможные потери, используя ИИ-ценность существ, не более. Это означает, что в таких битвах не могут быть использованы следующие ресейверы (соответственные триггеры также не будут работать в этом случае):
!!BG, !!BM, !!BH, !!BU, !!BF
Это важно для всех, кто хочет изменить ход битвы некими параметрами. Игра скорее всего просто вылетит.

B#
Установить фон # поля битвы.
См. таблицу "Фоновые картинки для битвы"
Комментарий

Фон 21 - это чистое поле; я предполагаю, что здесь должен быть фон для битвы на Попутном ветре, но он не был доделан.
Фон 24 (битва корабль на корабль) не изменяет клетки пространства между кораблями на непроходимое, если битва проводится не на воде и не против корабля. Т.е. по водному пространству можно будет проходить монстрам, и стоять там же.

B^файл.pcx^;
Установить свою картинку для поля боя.
Файл фона ищется в папке DATA. Как обычно, имя файла + расширение не должно превышать 12 символов.

D#
Отменить или разрешить битву
# = 1 для отмены (автоматическая победа)
# = 0 для разрешения битвы

E$
Проверить на МП-битву:
$ - это статус битвы:
= 2 – битва ИИ против неактивного Человека (на удаленном компьютере)
= 1 – человек на человека (2 компьютера)
= 0 – если это любая другая битва (на данном компьютере)
Комментарий

Используйте эту команду для отключения скриптов, не поддерживающих МП-битвы.
Если $ больше нуля, битву становится нелегко контролировать с помощью ERM.
В Хот-сите данное значение всегда равно 0, то же самое для одиночной игры.

H#/$
Установить бьющихся героев
# = 0 для атакующего
# = 1 для защитника
$ = номер героя. $ = -2, если нет героя (данное значения возможно только у защитника)
Не пытайтесь установить атакующего героя как -2 (т.е. заставить его исчезнуть с поля боя). Игра просто вылетит на такой битве.

M#1/#2/$1/$2
Установить/проверить/получить монстров в битве
#1 = атакующий монстр (0) или защищающийся (1)
#2 = слот (0…6)
$1 = тип монстра ( -1, если слот пуст)
$2 = количество монстров

O$1/$2
Получить атакующего и защищающегося игрока
$1 – хозяин атакующего
$2 – хозяин защитника (хозяин героя или монстра)

P$1/$2/$3
Позиция на карте (влияет только на фон и бонусы родной земли)
$1 = X; $2 = Y; $3 = Уровень
Пример

!!BA:P10/15/0; - установить, что битва проводится в квадрате 10/15/0 (не имеет значения, что расположено там)

Q$
Установить/проверить/получить флаг быстрой битвы
$ = 1 если быстрая битва активирована
$ = 0 если отключена

S$
Проверить/получить тип осадной битвы
$ - тип битвы,
= 0 – обычная битва
= 1 – осада форта
= 2 – осада цитадели
= 3 – осада замка
Правильное значение вы получите в триггере !?BR или позже. В триггере !?BA0 значение не определено.


Ресейвер BF

Опции BF: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер BF (поле битвы)

!!BF:XXXX; - установки поля битвы.
Эта команда позволяет вам настраивать поле битвы и может быть использована только после триггер !?BF, т.к. подготовка поля битвы начинается до битвы, хотя и размещение препятствий возможно непосредственно в течение боя.
Комментарий

Также мы заметили, что VR:R не работает внутри триггера BF, или, скорее, воспроизводит один и тот же ряд чисел для каждого сражения. Первое число, сгенерированное в сражении, всегда то же самое, сгенерированное в любом другом сражении. VR:T работает прекрасно, но, понятно, может использоваться только один раз в триггере BF.
Ответ от Славы:
Я думаю, это сделано нарочно, таким образом вы сможете использовать тот же самый образец сражения всякий раз при загрузке карты. И есть способ обойти это:
1. Генерируем число командой VR:T -> n
2. Теперь генерируем n случайных чисел командой VR:R и пропускаем их
3. Теперь все готово для использования VR:R в вашем скрипте.

См. также: Боевые препятствия, триггер BF

C
Очистить поле боя (каждый квадрат доступен)
Примечание: если вам нужно удалить какое-либо определенное препятствие, при том не стирая остальное поле боя, попробуйте наложить на него заклинание "Убрать препятствие".

M#1/#2/#3/#4/#5/#6/#7/#8/#9/#10/#11(/#12)
Поместить скалу в определенную позицию на поле боя
#1 – побитная позиция от 0 до 16
#2 – побитная позиция от 17 до 33
#3 – побитная позиция от 34 до 50…
…
#12 – тип препятствия (0…90)
Комментарий

Побитная позиция: пусть в верхнем ряду поля битвы должны будут быть скалы: 11111111111111111 = 131071 (1+2+4+8+…+65536)
В остальных – пусть скала только одна в начале и одна в конце: 10000000000000001 = 65537 (65536+1)
Пример:
ZVSE
!?BF;
!!BF:M131071/65537/65537/65537/65537/ 65537/65537/65537/65537/65537/131071;
Вы также можете поставить невидимое препятствие, используя препятствие -1. Оно невидимо и занимает 1 клетку. Так что можно сделать картинку для поля боя с расчетом на непроходимость некоторых мест, и сделать их непроходимыми с помощью невидимых препятствий. Эти препятствия невозможно удалить заклинанием "Убрать препятствие" и "Снять заклинания"

O#1/#2
Поместить отдельный объект
#1 – тип препятствия (0…90)
#2 – позиция (0…184)
Некоторые препятствия выглядят должным образом лишь на "родной" земле

Поле боя:


Ресейвер BG

Опции BG: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер BG (действия в битве)

!!BG:XXXX; - в битве вы можете установить/проверить/получить параметры действия монстров.
См. также: триггер BG, триггер BR

A$
Тип действия:
0 = отменить действие (стек теоретически может сделать это действие, но это невозможно сделать по некоторой причине, к примеру, попытка убежать с оковами войны использует именно это действия для отмены)
1 = герой колдует заклинание
2 = ходьба
3 = защита
4 = убежать с битвы
5 = откупиться
6 = идти и атаковать
7 = стрелять
8 = ждать
9 = атака стен (катапульта, Циклопы)
10 = монстр колдует заклинание (волшебный дракон)
11 = палатка первой помощи (лечение)
12 = нет действия (можно использовать как отмену действия отряда)
Атака башен замков считается обычной стрельбой

D$
Точка назначения (магия на монстра, движение или атака). См. поле боя

E$
Получить номер отряда, на который направлено действие стека (-1 если монстра нет)

H$
Номер героя – хозяина (-1 = нет героя)

N$
Номер текущего активного стека (0…41). Если используется в триггере !?BG1, возвращает номер отряда, которому передастся ход

Q?$
Текущая ходящая сторона (левая (0) или правая (1)). Только получить/проверить.

S$
Номер колдующегося заклинания
Комментарий

Если монстр колдует заклинание перед действием (Чародеи или Тролли (регенерация)), оно идет перед триггером.
Если монстр подходит атаковать, то эта опция позволяет вам получить номер клетки, откуда он будет бить. Если монстр стреляет, значение равно -1.
Пример, как можно заставить монстра, имеющего заклинание, наколдовать его:
!!BG:A10 S-1 Dx1;
(На позиции x1 должен располагаться объект, на который кастуется магия)

Поле боя:


Ресейвер BH

Опции BH: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер BH (действия героя)

!!BH#:XXXX; - в битве вы можете установить/проверить/получить параметры действия героя.
# - сторона, которая совершит действие (0 = атакующий, 1 = защищающийся)

C#1/#2/#3/#4
Колдовать заклинание
#1 – заклинание
#2 – позиция
#3 – уровень навыка героя (0…3)
#4 – проверить существование цели (0=игнорировать, заклинание будет срабатывать на всех союзных заклинателю)
Комментарий

Вы можете наложить на всех союзных существ заклинания, не имеющих массового эффекта (например, Волшебное зеркало); для этого используйте в качестве 4го параметра 0. Но не все заклинания работают корректно таким методом (например, Клон).
Пример:
!!BH:C36/0/0/0; - наложить Волшебное зеркало на 3 раунда на всю союзную армию
!!BH:C36/18/3/1; - наложить Волшебное зеркало на 3 раунда на существо в квадрате 18, если оно там есть.

M$
Разрешить (0) или запретить (1) колдовство заклинания
Комментарий

Если вы повторно разрешаете колдовство заклинания после произошедшего колдовства, книга Заклинаний станет доступной только когда следующее существо, принадлежащее игроку, получает ход, либо тот же самый стек получает бонус Морали и может действовать сейчас.

N?$
Получить или проверить номер ходящего героя (-1 если нет героя)

Q#1/#2/#3
Поместить участок Зыбучих песков или Мин в позицию
#1 – тип (0 = зыбучие пески, 1 = мины)
#2 – позиция
#3 - обновить (1) или нет (0)
Позиция будет проверена автоматически на препятствие (если препятствие, то заклинание не поместится)

Поле боя:


Ресейвер BM

Опции BM: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер BM (параметры существ в бою)

!!BM#:XXXX; - установить/проверить/получить некоторые параметры стека монстров.
# - номер стека (0…41). Используются номера 0…20 для первого (0) игрока и 21…41 для второго (1) игрока.

A$
 Атака (параметр) монстра

B$
Количество монстров в стеке (в начале битвы)
Пример

!!BM0:B?v51; - записать исходное кол-во существ в v51
!!BM0:B100; - установить количество монстра на начало битвы (монстры не добавятся) (потери подсчитываются так: существа в начале битвы (данная команда) минус оставшиеся в живых, отрицательных потерь быть не может)

C#1/#2/#3/#4/#5
Колдовать заклинание:
#1 – номер заклинания
#2 – позиция для заклинания
#3 – уровень навыка монстра (0…3)
#4 – уровень навыка героя (???) (0…3)
#5 – проверка на существование монстра (0 - не выполнять, 1 - выполнить)
Комментарий

5ый параметр должен быть равен 1, чтобы не вызвать ошибки при выполнении, но большая часть заклинаний работает и с 0
Пример:
!!BM0:C36/0/0/0/0; - существо под номером 0 наколдует на всех союзников Волшебное зеркало;
!!BM0:C36/v10/0/0/1; - существо под номером 0 наколдует Волшебное зеркало лишь на существо в позиции v10 (если оно там есть), иначе - ничего.
Существует баг, что нельзя наложить таким методом Воскрешение (игра выходит в темный экран).

D$
Защита (параметр) существа

E$
Количество заклинаний (для существ-колдунов)
Комментарий

Это количество заклинаний, которое может наложить существо за одну битву. Например, у Архангелов это значение равно 1; после того, как они кого-либо воскрешат, оно становится = 0. Для триггера BG: значение изменяется после триггера наложения заклинания.

F$
Флаги монстров
Комментарий

Для проверки этих бит используйте BM:F, затем VR:& со значением соответствующего бита, интересующего вас. Помните, что флаги 32-битны, и должны быть помещены в однобуквенную переменную (по крайней мере, они не будут соответствовать в v-переменной).
Пример:
!!BM0:F?i; [Записать значения флагов первого стека в i]
!!VRi:&33554432; [проверить на ожидание]
!!IF&i>0:M^Стек ждет лучшего момента для действия^;

G#/$1/$2
Установить/проверить/получить параметры активных заклинаний
# - номер заклинания
$1 – установить/проверить/получить продолжительность
$2 – установить/проверить/получить силу заклинания
При установке длительности заклинания на 0 картинка по-прежнему остается, а действие заклинания исчезает.
Дополнительно

!!BM:G - это "неаккуратно" сделанная функция, и позволяет менять сотни характеристик существа, не только наложенные заклинания.
Вызов: !!BM:G#/$/d;
# - некоторый номер, если это 0..65 то будет работа с заклинаниями (нормальное функционирование команды), но если использовать другие значения, можно изменять любую информацию о монстре, как доступную (атака, здоровье), так и недоступную (например, звуки, анимацию).
$ - номер. Во избежание ошибок, "/d" в конце обязательно.
Известная таблица:
-100: Видимость существа (4 - виден, 8 - не виден)
Отряды теряют невидимость при любом действии на поле боя. Но ее можно восстановить в триггере !?BG1.
-90: Есть ли цифры количества существ? (0-есть, 1-нет).
Отряд не имеет обозначения кол-ва существ, пока не походит. При этом на него можно колдовать магию и бить. Количество показывается при щелчке правой кнопки в нижнем правом углу картинки (где обычно, в общем).
-89: Тип существа
Параметры отряда становятся как у существа, номер которого установлен, но сразу же снижаются до стандартных параметров существа, которое меняют. Имя отряда в меню при щелчке правой кнопкой по существу меняется; когда его бьют - имя остается измененным. Когда битва окончена - на картинке будет показан настроенный отряд, а не старый. Если изменить тип существа, битву становится невозможно выиграть (логика игры требует убить того, на кого нападал, и изменения типа существ = вызову другого существа, без уничтожения старого (по логике опять же игры)). Эта проблема делает параметр почти бесполезным.
-88: Позиция существа
Если сменить, на старом месте останется стоять копия. Копия не может ходить и быть атакованной, занимает место.
-87: Номер анимации
При значение 2,6,9... (много еще где) игра выдает черный экран. Кадры берутся в том порядке, как и при создании.
-86: Номер кадра в анимации
Анимация возвращается к нормальной, если навести мышкой
-83: Количество существ (реальное)
-82: Количество существ для отображения
Может не совпадать с количеством. В этом случае написано будет одно, а реально другое. По умолчанию -1 - значит "полностью совпадает с реальным".
После того, как любое существо попадет под атаку, данному значению станет равно количество реальное; в итогах битвы показывается реальное количество убитых; при атаке измененного существа фантомные монстры не учитываются (т.е. если изменить 10 монстров на 100 этой командой и атаковать, то урон будет нанесен именно этими 10). Но его можно восстановить в триггере !?BG1.
-81: Безвозвратные потери.
Количество существ после выигранной битвы (или после откупа) равно "текущее количество существ" минус "безвозвратные потери". Потери могут быть записаны в безвозвратные при использовании, например, после Воскрешения без навыка Магия Земли или с ней, но на базовом уровне.
-80: Разница между текущим здоровьем и полным.
Если 0 значит стек здоров.
-78: Количество существ в начале боя
-73: Город-владелец (существа)
-71: Флаги существа
-68: Название существа
-67: Название существа (множественное число)
-66: Строка состояния (например, "Нет штрафа рукопашной")
-54: Здоровье (полное)
-53: Скорость
-52: Атака
-51: Защита
-50: Мин. урон
-49: Макс. урон
-48: Боезапас
-41: Владелец (не вполне корректно работает)
-40: Неизвестно
-38: Смещение существа по Y
-37: Смещение существа по X
От того места, где существо должно быть. В пикселях.
-19: Смещение по оси OX прямоугольника с количеством существ.
-17: Частота проигрывания случайной анимации.
Чем меньше тем чаще. Поставьте 200, будет без перерыва.
-13: Анимация существа
-12: Анимация снаряда
-10: Звук перемещения
-9: Звук атаки
-8: Звук урона
-7: Звук выстрела
-6: Звук смерти
-5: Звук защиты
-1: Кол-во активных заклинаний (для отображения цвета кол-ва существ).
173: Кол-во активных заклинаний (для отображения при щелчке правой кнопкой).
212: Мораль существа
213: Удача существа
Мораль и удача пересчитывается при передаче хода другому существу. Поэтому полезно только для получения или проверки. Если очень нужно менять, то можно делать это или перед атакой, или каждый ход.

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

H$
Максимальное здоровье существа

I$
Принадлежность герою:
0 = левому
1 = правому

J?$
Получить или проверить количество активных заклинаний

K#
Нанести # урона существу
При данном действии триггер !?MF не срабатывает

L$
Количество потерянного здоровья монстра в стеке
Комментарий

Например, если у Лучника 10 здоровья, и ему нанесли 4 урона, то значение команды будет равно 4. Если нанесено 10 урона, то Лучник погибает, а следующий лучник будет иметь значение этой команды 0.

M#1/#2/#3
Наложить заклинание на монстра
#1 = номер заклинания
#2 = продолжительность
#3 = уровень навыка (0 – нет, 1 – базовый, 2 – продвинутый, 3 – эксперт)
Если вы накладываете заклинание, которое монстр уже имеет, это будет игнорироваться. Но вы можете использовать «Снятие заклинания» :)
Дополнительно

Также вы можете наложить специальные заклинания :
70. Окаменение
71. Яд
72. Корни
73. Болезнь
74. Паралич
75. Старость
Вы можете установить эти 6 заклинаний без проблем, разве что Привязанное существо никогда не сможет двинуться (продолжительность игнорируется), и отравленное существо не получит урона в первом раунде битвы. И, конечно, нет графики наложения заклинаний, хотя внутри существа все отображается корректно - окаменевшее существо выглядит как камень и не получает хода, и.т.д.
Вы можете установить любое другое заклинание данной командой, даже то, которое не имеет значения в битве - например, вы можете дать существу "Вызов корабля" на 3 раунда.
Графика будет показана при правом клике на существе, и будет выглядеть как "вызов корабля". Существо будет иметь зеленый показатель количества (т.е. положительное заклинание), за исключением заклинаний, показываемых красным цветом (волшебная стрела, Взрыв). Дополнительные заклинания с номера 76, кажется, использовались для способностей существ, имеющих картинку и эффект, но не действующий на стек постоянно (т.е. не показывается при правом клике на существо). Вы можете установить эти заклинания на существо этой командой, но не будет показано никакой картинки (но все же показывается название при наведении на пустой квадрат) либо последует вылет из игры (и это не последовательно - иногда следует вылет, иногда вы видите пустой квадрат).
И если вы используете BG:C, чтобы попытаться "наколдовать" одно из этих заклинаний, либо ничего не происходит, либо - вылет.
76. Облако смерти
77. Удар молнии
78. Снятие полезных заклинаний
79. Мертвый взгляд
80. Кислотное дыхание

N$
Количество монстров в стеке (текущее)

O$
Номер слота существа в армии героя (0…6, -1)
Если $ = -1, стек не принадлежит армии героя (вызван)

P$
Позиция на поле боя
Можно использовать как телепорт

Q#1/#2/#3
Поместить участок Зыбучего песка или мину в позицию
#1 – тип (0 – песок, 1 – мины)
#2 – позиция
#3 – обновить (1 – да, 0 – нет)
Комментарий

Данная команда автоматически проверяет, можете ли вы поместить мину или песок. Вы можете использовать стек номер 0 для левого героя и 21 для правого, чтобы быть в уверенности помещения препятствия (стек может быть мертв - все, что нужно, это номер стороны (т.е. можете использовать 0-20 для левого героя и 21-41 для правого)

R$
Количество ответов на атаки (проверка для Королевских грифонов)
Комментарий

Это количество ответов стека, оставшихся до конца раунда. Оно каждый раунд равно одному и после ответа равен 0. Королевские грифоны каждый раунд имеют 5000 ответов.

S$
Скорость существа

T$
Тип монстра

U#/$
Изменить параметры монстров
# = 1 – установить/проверить/получить минимальный урон в $
# = 2 – установить/проверить/получить максимальный урон в $
# = 3 – установить/проверить/получить кол-во выстрелов в $
# = 4 – изменить заклинание существа на $
# = 5 - клон стека. Если клонов стека не существует, $ = -1, иначе равен 0...41 - номер стека-клона искомого стека (искомый - # в !!BM#:U5/$;). Если существо погибает, его клоны умирают тоже.
Комментарий

Вы можете изменить заклинание существа только на родственное. Например, если существо колдует заклинание на союзных существ (скажем, Огры-маги - Жажду крови), вы можете изменить заклинание на любое одинарное положительное заклинание (например, Радость или Ускорение), но не атакующее (Волшебная стрела или замедление), иначе ИИ никогда не будет использовать его. Однако, если вам нужно, чтобы такая особенность была только у игроков-людей, вы можете настроить почти любое заклинание без проблем.
Данный пример подтвержден Командирами, они колдуют заклинание как Огры-маги.
Также помните, что данная команда не действует на существ, колдующих случайное заклинание (например, Сказочный дракон и Джин-мастер)

V#
Показать анимацию # стека.

Поле боя:


Ресейвер BU

Опции BU: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер BU (универсальные параметры битвы)

!!BU:XXXX; - установить/проверить/получить некоторые универсальные параметры битвы.

C?$
 Используется для точного определения, закончился бой или нет
$ = 1 если да
$ = 0 если нет.
Рационально использовать в !?BG1;

D#/?$
Получить или проверить позицию # на мертвых монстров (в $ будет номер мертвого стека).
$ = номер стека мертвых монстров
-1 если вообще нет монстров на позиции
-2 если на позиции живой стек

E#/?$
Получить или проверить номер стека $ на живых монстров в позиции #. Если живых монстров в этой позиции нет, $ = -1.

G$
Установить/проверить/получить специальную землю и бонусы этой земли в битве.
$ - тип земли

-1 – не-модифицированная
0 – битва на побережье (не отражается на самой битве)
1 – Магические поляны (экспертные магии Воздуха, Воды, Огня и Земли)
2 – Проклятые земли (можно колдовать только магию 1го уровня)
3 – Святая земля (+1 мораль всем добрым существам)
4 – Дьявольский туман (+1 мораль всем Дьявольским существам)
5 – Клеверные поля (+1 удачи всем добрым существам, -1 злым)
6 – Прозрачные пруды (экспертная магия Воды)
7 – Огненные поля (экспертная магия Огня)
8 – Скалистая земля (экспертная магия Земли)
9 – Магические облака (экспертная магия Воздуха)

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

Mz#
Добавить сообщение в битву
z# - z-переменная с текстом
Комментарий

Эта команда отличается от команды MM:M тем, что в MM:M сообщение только показывается, и не сохраняется в лог битвы, когда используя BU:M текст и показывается, и добавляется в таблицу событий, и вы можете с помощью стрелочек вверх и вниз пролистнуть и найти это сообщение в дальнейшем. Помните, что вы не можете устранить оригинальный текст.

O#/?$
Получить или проверить флаг ($) из позиции #
$ = 0, если нет препятствий
$ = 1, если на позиции магическое препятствие
$ = 2, если на позиции препятствие
$ = 4, если на позиции Зыбучий песок (магия)
$ = 8, если на позиции мины (магия)

R
Обновить поле боя после каких-либо действий
Не используйте эту команду в триггере !?BF

S#1/#2/#3/#4/#5/#6
Вызвать монстров на поле боя
#1 – тип монстра
#2 – количество монстров
#3 – позиция
#4 – сторона (0 – левый герой, 1 – правый)
#5 – номер слота героя (-1 – отсутствует (исчезнет после битвы))
#6 – обновить (1 – да, 0 – нет)
Позиция должна быть корректна, свободна от других монстров и препятствий, и не может быть более 20 стеков с каждой стороны.

T?$
Проверить, имеет ли битва тактическую фазу
$ = 1 если да
$ = 0 если нет

V$
Выиграть в битве
$ - сторона победителя
0 = правый (защитник)
1 = левый (атакующий)

Поле боя:


Ресейвер CA

Опции CA: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер CA (настройки замка)

!!CA#1/#2/#3:XXXX; - используется для изменений параметров замка в X Y L.
Расширение синтаксиса:
!!CA#:XXXX; - замок в v[#], v[#+1], v[#+2]
Расширение синтаксиса:
!!CA0/#:XXXX; - город под номером # на карте (см. опцию U)
Расширение синтаксиса:
!!CA-1:XXXX; - текущий город. Можно использовать только в экране города!
Город - тип 98. См. также: таблица городов

B#/$
Настройка зданий города:
# = 1 – построить здание $
# = 2 – разрушить здание $
# = 3 – проверить, построено ли здание $ (во флаг 1)
# = 4 – разрешить для постройки здание $
# = 5 – запретить для постройки здание $
# = 6 – построить здание в городе, используя внутреннюю функцию
Шестая опция - улучшение первой, она позволяет строить многоуровневые здания (гильдия магов, к примеру) без ошибок.

G$
Установить/проверить/получить уровень гильдии магов (в экране заклинаний) (0...4)

G$1/$2
Установить/проверить/получить количество доступных заклинаний ($2) в $1 этаже гильдии магов

G$1/$2/$3
Установить/проверить/получить заклинание в слоте $2, уровня гильдии $1 в переменную $3.
При улучшении гильдии добавленные (т.е. сверх доступного количества заклинаний для этого уровня - 5 для 1го уровня, 4 для второго и т.д.) заклинания стираются

H#/$
Установить/проверить/получить номер героя в гарнизоне города или гостя
# = 0 – герой в гарнизоне города
# = 1 – герой-гость
$ - номер героя (-1 = нет)
Вы можете получить или установить героя. Если соберетесь установить, не забудьте убрать старого куда-либо.

I#
Установить внешний вид замка. Вы можете только установить это значение.
Значения для #:
0 = обычный (синхронизация с построенными зданиями, например, Капитолий или форт)
-1 = полностью разрушен
1 = слабо разрушен
2 = средне разрушен
3 = сильно разрушен

M1/$1/$2/$3
Установить/проверить/получить количество доступных монстров ($2 – неулучшенных, $3 – улучшенных) в жилище уровня $1 (0...6)
Если построено улучшенное жилище, значение записывается из $3 вместо $2.

M2/$1/$2/$3
Установить/проверить/получить количество стражников
$1 – позиция (0..6)
$2 – тип монстра
$3 – количество

N^Имя Города^
Nz#
N?z#
Установить/получить имя города

O$
Установить/проверить/получить хозяина (0...7; -1)

P?$1/?$2/?$3
Проверить/получить координаты города
$1 = x; $2 = y; $3 = уровень

R$
Установить/проверить, может ли игрок строить сегодня в городе.
$ = 0 если может
$ = 1 если уже строил
Вы можете использовать R0 любое количество раз в течение хода.

T$
Установить/проверить/получить тип города (истинный, не зависит от внешнего вида). Используйте команду I, чтобы присвоить городу внешний вид, соответствующий типу.

U$
Проверить/получить номер города на карте (не в окне игрока)
Вы можете установить значение, но мы бы не рекомендовали ;)


Ресейвер CB

Опции CB: A B C D E F G H I J K L M N O P Q R T T U V W X Y Z

Ресейвер CB (банки существ)

!!CB#1/#2/#3:XXXX; - установка параметров банка (хранилища) существ в X Y L.
Вы можете дать в награду неограниченное количество артефактов, кроме свитков с заклинаниями. Если вы поставите в награду свиток, игра вылетит. Этот ресейвер работает также для Драконьей утопии, Склепа, Кораблекрушения и Заброшенного корабля.

A
Бонус – артефакт
A1/$ - проверить/получить количество артефактов в таблице бонусов (установить нельзя!)
A2/#/$ - установить/проверить/получить артефакт $ в позиции # (0…) в таблице бонусов
A3/$ - добавить артефакт $ в конец бонусной таблицы
A4/$ - удалить артефакт в позиции $ (0…) в таблице бонусов.

G#1/$2/$3
Установить/проверить/получить охранников в слоте #1 (0…6), типа $2 и количеством $3.
Дополнительно

Монстры располагаются так:
3 6 0
5 4
2 1
Причем даже если вы настроили каких-либо монстров в слотах 0...4 включительно, то слоты 5 и 6 будут заняты копейщиками. Во избежание этого используйте для слотов 5 и 6 значение монстра-охранника -1 количеством 0.

M$1/$2
Установить/проверить/получить бонусных существ типа $1 и количеством $2. Количество бонусных существ должно быть больше 0 и меньше 128. Чтобы удалить бонусное существо, установите тип -1 и количество 0.

R#1/$2
Установить/проверить/получить бонус ресурсов типа #1 и количеством $2. Вы можете установить все 7 ресурсов.

T$
Установить/проверить/получить, посещен ли банк (1) или нет (0).
Комментарий

Если вы включаете хранилище снова (устанавливаете данную команду на 0), вам нужно установить как минимум одного охранника, иначе следующий герой, посетивший данное хранилище, получит всю награду без битвы.

V$
Установить/проверить/получить слово «посещено» для игрока $.
Комментарий

Это побитная маска, например, если хранилище посещал синий, красный и зеленый, и оно было ограблено синим сразу, $ будет равно 2(синий)+1(красный)+8(зеленый)=11. Этим игрокам на жилище будет надпись, что оно посещено. Также, если игрок посетил хранилище, но не атаковал, его биты все равно занесутся в значение, редактируемое этой опцией, и игроку будет в подсказке указано количество охранников.


Ресейвер CD

Опции CD: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер CD (разрушение замков)

!!CD:XXXX; - используется для установки параметров разрушения города игроком
Комментарий

В: Что произойдет, если я полностью разрушу замок, где в гарнизоне находится мой герой?
О: Внешний герой (герой-гость) не имеет выбора, кроме как уйти на 6 дней. Герой в гарнизоне будет потерян хозяином :-) Он станет ничьим героем. Он всегда будет стоять внутри и защищать замок от каждого. Если он победит, он получит опыт :-)

В: Может ли ИИ разрушать замки?
О: На данный момент ИИ не может разрушать замки. Проблема в том, что очень сложно вывести формулу, в каком случае делать это ИИ (если вообще возможно). Если вы хотите, чтобы ИИ разрушил свой замок, используйте ERM-скрипт (проконтролируйте, когда ИИ посещает замок, решите за него, что делать, и наслаждайтесь). Но ИИ будет перестраивать город в родной замок герой.

A#1/#$2/$3
Задать минимальное количество здоровья армии героя для разрушения здания в определенном типе города
$1 = тип города
$2 = тип здания
$3 = минимальное здоровье армии героя

B0/#1/#2/$
Глобальное разрешение/запрещение постройки (только TE и выше)
Разрешить/запретить постройку здания #2 в любом городе типа #1.
$ - флаг (0=запретить, 1=разрешить).
Пример

!#CD:B0/7/2/0 - запрет гильдий 3 уровня (2) для всех "Крепостей" (7) (с самого старта игры)

B1/#1/#2/$1/$2
Установить зависимость построек для здания. (только TE и выше)
#1 = тип города
#2 = номер здания
$1 = первое значение (байты 0-3), см. номера зданий
$2 = второе значение (байты 4-5), см. номера зданий
Комментарий

Каждый бит в $1 (первое значение) или в $2 (второе) означает, что здание может быть построено, когда все постройки с входящими в указанные значениями битами будут построены.
Пример:
!!CD:B1/0/3/36/0 значит, что гильдия магов уровня 4 в Замке (0) может быть построена лишь при гильдии магов 3го уровня и Таверны (гильдия 3го уровня = 4, таверна = 32, сумма =36).

B3/#1/#2/$1/$2
Установить исключающие зависимости для здания. (только TE и выше)
#1 = тип города
#2 = номер здания
$1 = первое значение (байты 0-3), см. номера зданий
$2 = второе значение (байты 4-5), см. номера зданий
Комментарий

Каждый бит в $1 (первое значение) или в $2 (второе) означает, что если здание #2 построено, все постройки с входящими в указанные значения битами будут скрыты (визуально) с экрана города.
Пример:
!!CD:B3/0/43/31/0 означает, что после постройки Улучш. Портала Славы (43) (Замок) гильдия магов (если есть) не будет показана (вся гильдия магов = 1+2+4+8+16=31).

D$
$ - максимальное количество разрушений в день

E#1/#2/$3
Установить минимальный уровень опыта героя для разрушения определенного здания в городе.
$1 = тип города
$2 = тип здания
$3 = опыт

M$
$ = количество очков хода героя, тратящихся на каждое разрушения.

N#1/$2
$1 = номер разрушения на сегодня (первое, второе, и т.д.)
$2 = цена за разрушение следующего строения в этот же день

P$1/$2/$3/$4/$5
Используется для установки места на карте, где будет проводиться битва с монстрами (если вы захотите разрушить жилище с не-нанятыми в нем монстрами). Используется только для типа земли и территориальных бонусов, не более.
$1 = номер монстра в городе (0…7 – неулучшенные, 8…13 – улучшенные)
$2 = X
$3 = Y
$4 = уровень
$5 = соответственные (1)/точные (0) координаты.
Примечание: соответственные координаты (1) означают, что битва будет проводиться на земле, которая расположена на входе в замок.


Ресейвер CE

Опции CE: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер CE (событие в городе)

!!CE#:XXXX; - настройка события в городе.
# - номер события. Это число, идущее первым в тексте сообщения. Оно не влияет на текст самого сообщения.

B#1/$2
Установить/проверить/получить количество ресурсов #1 в $2 (может быть отрицательным).

C#1/$2
Установить/проверить/получить "подарочных" монстров количеством $2 в жилище уровня #1 (0…6)

D#
НЕ строить здание # (0...40)

E$
Установить возможность активации события для игроков $ (побитно - складывайте биты необходимых игроков).
Комментарий

Если вы используете $, начинающееся с параметра d, это будет означать как "или", т.е. вы можете дать возможность игрокам активировать событие, без изменения остальных игроков. Пример: E3 дает возможность активировать событие только красному и синему игроку, в то время как Ed3 разрешает активирование события красному и синему игроку, причем остальные цвета, установленные в самом событии в редакторе не считаются исключенными.

F$
Установить/проверить/получить день первого появления на $

H#
Применить или проверить, разрешение на использования события игроком – человеком (если # = 1, значит можно)

M^ТЕКСТ^
Установить послание ТЕКСТ. Длина текста не должна превышать оригинальный. Может содержать любые символы, кроме "^" и ";"

M#
Установить текст события такой же, как и в глобальном событии номер #

M-1
Не выводить сообщение на экран

N$
Установить, что игрок(и) $ НЕ могут активировать событие (складывайте биты нужных игроков).
Комментарий

Если вы используете $, начинающийся с d, это будет расцениваться как значение "или", т.е. вы можете запретить игрокам активировать событие без изменения остальных игроков. Пример: N3 запрещает красному и синему игроку активировать событие и разрешает всем остальным. Nd3 запрещает активирование события красному и синему игроку, но не изменяя исключения для других игроков.

Q#
Применить событие для компьютерных игроков, если # = 1.

R$
Установить/проверить/получить интервал между появлениями события в $

U#
Построить здание # (0…40)


Ресейвер CH

Опции CH: A B C D E F G H I J K L M N O P Q S T U V W X Y Z

Ресейвер CH (сундук сокровищ)

!!CH#1/#2/#3:XXXX; - настройки сундука сокровищ в X Y L (#1, #2, #3).
Сундук сокровищ - тип 101 .

A$
$ - номер артефакта

B$
Бонус золота или опыта в $, $ может быть 0…15, золото = $*500, опыт = $*500-500. Если $ = 0, получится выбор между 0 золота и -500 опыта. Как можно увидеть, максимально можно получить до 7500 золота или 7000 опыта.

S$
Тип содержимого:
$ = 1 - артефакт
$ = 0 - золото/опыт


Ресейвер CM

Опции CM: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер CM (инфо по кликам мышки)

!!CM:XXXX; - установить/проверить/получить информацию по правому клику мышкой.
Должен следовать после триггера !?CM.
Комментарий

Если вы желаете показать диалоговое окно, которое не будет задерживаться на экране (как при обычном щелчке правой кнопкой мыши), используйте команду IF:Q с опцией 4. Это создаст текстовое окно без кнопок, которое исчезнет сразу после отпускания кнопки мыши. Если вам не нужна картинка, используйте значения -1 для типа и подтипа картинки.

A$1/$2
Абсолютная позиция курсора в пикселях
$1 – X
$2 – Y

D$
Установить/проверить/получить позицию на поле боя
$ - номер позиции
Комментарий

Квадраты сетки поля имеют значения от 0 до 186, фон и внешние квадраты имеют значение -1. У левого героя - номер квадрата 252, у правого - 253.
Левая башня (верхняя) и центральная башня имеют значения позиций 254 и 255 соответственно.

F$
Флаги для кликов мышью
0 = левая кнопка мыши
1 = Shift+ левая кнопка мыши
4 = Ctrl + левая кнопка мыши
32 = Alt + левая кнопка мыши
512 = правая кнопка мыши
Номера можно комбинировать, например, 5 будет означать, что должны быть нажаты Shift + Ctrl + левая кнопка мыши. Правая кнопка не может быть ни с чем комбинирована.

H$1/$2
Получить номер героя
$1 - номер левого героя
$2 - номер правого героя
Вы можете лишь получить или проверить их.
Вы также можете использовать эту опцию в теле !?CM2 для получения левого героя как активного, второй - фантом, его не существует.

I$
Условно обозначенное место, куда наведен курсор при нажатии.
Комментарий

Некоторые области не будут регистрироваться при правом щелчке, а некоторые имеют значение 0.
Эта команда всегда получает правильное значение в экране города, даже если одна постройка накладывается на другую. Также она устанавливается в -1, если не найдено никакого здания под курсором.
"неактивно" означает, что объект регистрируется при нажатии, но не имеет игровой функции. Такие объекты различны для каждого города.
Номер области при нажатии на гильдии магов всегда принимает значение высшего уровня гильдии (т.е. если у вас есть 3 уровень гильдии магов, при клике в любом месте гильдии значение области будет равно значению третьего уровня гильдии). Также улучшенные жилища всегда принимают значения улучшенного. Кроме того, здания орд существ при их постройке заменяют своим числом номер жилища. Другие объекты точно также ведут себя: например, таверна Замка (№5) преобразуется в Братство меча (№22) при ее отстройке.

Mz#
Установить текст – описание в окне города, изменив обычное на свое. Вы можете использовать общие (z1…z1000) или локальные (z-1…z-10) z-переменные.

P$1/$2/$3
Позиция на карте
$1 – X
$2 – Y
$3 – уровень
Работает только для карты приключений и миникарты (I-номера - соответственно 1 и 37).

R$
Включить/отключить стандартное действие
0 – отключить
1 – включить
Если вы хотите правый клик на карте приключений для чего-либо, вы можете использовать эту команду для отключения стандартного диалога о оставлении существ.

S$
Подтип действия
Левая кнопка нажата (=12)
Левая кнопка отпущена (=13)
Правая кнопка нажата (=14)

T$
Тип действия (обычно 512)


Ресейвер CO

Опции CO: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер CO (командиры)

!!CO#:XXXX; - этот ресейвер позволяет вам устанавливать, проверять и изменять параметры командиров.
 # = -2 – применить ко всем командирам
# = -1 – применить к текущему командиру (для текущего героя)
# >=0 – применить к определенному командиру (соответственно с номером героя)
См. также: триггер !?CO
Комментарий

Все командиры, помещенные на карту с помощью ERM, имеют одни и те же вторичные и первичные навыки (но способности зависят от их типа). Фактически, это один Командир с разными возможностями. Если вы не установили какие-либо параметры для таких командиров, они будут иметь стандартные для начала игры параметры. Для их усиления используйте этот ресейвер. Для применения всех изменений к только этим дополнительным командирам используйте номер -3 (все командиры с атакующей стороны) и -4 (все командиры защищающейся стороны).
Чтобы превратить это в реального командира, вы должны установить его живым данным ресейвером, и также установить его тип. Вы можете дать любому командиру особые бонусы или установить параметры любого командира как обычного. Если вы НЕ установите командира живым, он будет расценен как "командир-монстр", и всегда будет иметь Полет и способность Стрелять. Параметры и другие бонусы для этого командира-"монстра" должны быть установлены другими командами ERM, а не ресейвером CO.
Заметьте, что вы можете установить все в секции триггеров BA0/BA50 или позже, в битве. Все настройки будут потеряны после битвы и не будут сохранены в игре.

A
Поддержка артефактов командира
A1/#1/#2
Добавить артефакт
#1 – номер артефакта (146…155)
#2 – количество выигранных битв
Возможные результаты

v1 = 0 – артефакт добавлен
v1 = 1 – это не командирский артефакт
v1 = 3 – командир уже имеет этот артефакт
v1 = 4 – нет свободных слотов

A2/#1
Удалить артефакт командира
#1 – номер артефакта (146...155)
Возможные результаты

v1 = 0 – артефакт удален
v1 = 1 – у командира нет этого артефакта

A3/#1/$1/$2
Контроль артефакта командира в определенном слоте.
#1 – слот артефакта (0...5)
$1 – номер артефакта (146…155)
$2 – количество выигранных битв
Возможные результаты

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

A4/$1/$2/$3/$4/$5/$6/$7/$8/$9/$10/$11/$12
Контроль артефактов командира во всех слотах сразу
$1 – номер артефакта (146-155) в слоте 0
$2 – кол-во выигранных битв для артефакта в слоте 0
$3 – номер артефакта (146-155) в слоте 1
$4 – кол-во выигранных битв для артефакта в слоте 1
$5 – номер артефакта (146-155) в слоте 2
$6 – кол-во выигранных битв для артефакта в слоте 2
$7 – номер артефакта (146-155) в слоте 3
$8 – кол-во выигранных битв для артефакта в слоте 3
$9 – номер артефакта (146-155) в слоте 4
$10 – кол-во выигранных битв для артефакта) в слоте 4
$11 – номер артефакта (146-155) в слоте 5
$12 – кол-во выигранных битв для артефакта в слоте 5
Не может быть применено ко всем командирам (-2)
Результаты

Вы можете получить/проверить или установить артефакт и/или кол-во выигранных битв.

B#/$1/$2
Особые бонусы
B0/$
Дать командиру определенные способности
$ = сумма битов способностей
Команда устанавливает бонусы, и отключает все те, которые вы не учли в битовом значении. Например, !!CO0:B0/3; - даст командиру Оррина Страх и Уменьшение вражеской защиты, но отключит остальные имеющиеся бонусы.

B1/$1/$2
Специальный бонус: один спец. бонус
$1 – номер бонуса (0…14)
$2 – есть (1) или нет (0)

B2/$
Специальный бонус: запретить несколько выбранных бонусов
$ - сумма битов запрещенных бонусов

B3/$1/$2
Специальный бонус: запретить один спец. бонус
$1 – номер бонуса (0…14)
$2 – разрешен (1) или нет (0)
Вы можете применять любую опцию B для всех командиров, но только для установки параметров. Для отдельного командира, как обычно, можно использовать установку, получение и проверку.

D$
Мертв или жив командир
$=1 – мертв
$=0 – жив

E$
Разрешить ($=1) или запретить ($=0) командира (ов). Если командиры отключены, значение -1.

N$
Установить или получить имя командира.
$ - номер z-переменной (1…1000, -1…-10)
Вы можете изменить z-переменную после использования (имя копируется в структуру командира). Эту команду нельзя использовать для всех командиров.

P#/$
Параметры командира
# - тип параметра
0 – атака
1 – защита
2 – здоровье
3 – урон
4 – сила магии
5 – скорость
6 – сопротивление магии
$ - значение

P$
Установить/проверить/получить «контроль первичных навыков»
$ = 0 – отключен
$ = 1 – включен
Если вы установить 1 (вкл), первичные навыки не будут изменяться с продвижением командира по уровням. Если установить 0, то здоровье и урон будут автоматически прибавляться вместе с уровнем командира.

S#/$
Вторичные навыки командиров
# - тип навыка
0 – атака
1 – защита
2 – здоровье
3 – урон
4 – сила магии
5 – скорость
6 – сопротивление магии
$ - значение
Сопротивление магии имеет тот же уровень, что и сила магии, и если вы измените какой-либо навык из них, второй автоматически продублируется.

T$
Тип командира (0…8)

X#/$
Установить/получить опыт командира
# - тип
0 – необходимое кол-во опыта до следующего уровня
1 – текущий опыт командира
2 – текущий уровень командира
$ - значение


Ресейвер DL

Опции DL: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер DL (нестандартные диалоги)
(только TE или выше)

Поддержка нестандартных диалогов.
!!DL#:XXXX; работа с диалогом # (#>0)
На данный момент (TE) команда "сырая", полный функционал и описание отсутствуют.
См. также: триггер !?DL

A#1/#2/$
Изменить параметр элемента диалога
#1 = номер элемента
#2 = тип $
Подтипы любого элемента управления

52 - установить положение по X (без перерисовки) (число/числовая переменная)
53 - установить положение по Y (без перерисовки) (число/числовая переменная)
61 - установить ширину (без перерисовки) (число/числовая переменная)
Подтипы def
9 - установить имя файла (текстовая переменная)
4 - установить кадр (число/числовая переменная)
12 - установить группу (число/числовая переменная)
8 - установить CloseDialog ?
10 - установить палитру (устройства) ?
13 - установить используемый цвет игрока ?

Подтипы кнопок
9 - установить имя файла (текстовая переменная)
3 - установить надпись (текстовая переменная)
10 - установить палитру (устройства) ?
13 - установить используемый цвет игрока ?

Подтипы pcx
11 - установить имя файла (текстовая переменная)
10 - установить палитру (устройства) ?
13 - установить используемый цвет игрока ?

Подтипы прокрутки
49 - установить позицию (число/числовая переменная)
50 - установить количество позиций (число/числовая переменная)

Подтипы поля ввода
51 - установить максимальную длину (число/числовая переменная)
3 - установить текст (текстовая переменная)
7 - получить текст?

$ = значение зависит от #2
Замечание: может быть вызван в триггере !?DL, а также для редактирования диалога "на лету"

C#/$2/$3
Установить особое callback-действие ИЛИ изменить курсор мыши.
# - тип действия
1 - закрыть диалог и возвратить данный код в качестве результата
1000+# - установить курсор # (см. курсоры)
Комментарий

Для данной команды вам не нужно устанавливать номер диалога в части триггера DL. Она сработает для активного диалога и на любой объект.
Пример:
!!DL:C1; - закрыть диалог
!!DL:C1000; - изменить курсор на стрелку (обычный курсор)
!!DL:C1042; - изменить курсор на "затопить корабль"

Callback-действие (или функция в программировании) - это действие, которое будет исполнено (вызвано, если речь идёт о функции) по выходу из текущего блока кода (обычно функции).
На примерах Славы (ZVS) видно, что при каждом событии диалога (таким, как движение мышью) вызывается определённая ЕRМ-функция, которая и управляет всей остальной логикой. В функции мы выбираем, на какие действия как реагировать, а что игнорировать. Команда DL:C1 была бы обычной функцией, если бы закрывала диалог и тут же выходила из текущего блока кода. Но выполнения кода идёт вплоть до конца триггера.

E#1/#2
Включить элемент диалога
#1 - номер элемента
#2 - включить (1) или выключить (0)
При выключении кнопки показывается следующий кадр def'а

H#1/#2
Настроить подсказку для элемента диалога
#1 - номер предмета диалога
#2 - подсказка (появится при наведении мышью на элемент)
#2 может быть глобальной или статической Z-переменной

N#
Анализ шаблона диалога
# - имя файла шаблона (может быть текстом, глобальной, локальной или статической z-переменной)
Комментарии

Текст анализируется перед использованием.
Эта команда загружает файл шаблона (если еще не загружен), ищет диалог (используя Id) в файле и анализирует его.
Она не показывает диалог.
Главная цель этого дать нам шанс настроить загруженный диалог перед его показом.
Результат:
Флаг 1 = 1 если успешно
Флаг 1 = 0 если случились ошибки (не найден шаблон диалога)
Формат шаблона описан ниже.

P$
Передать действие функции $
Параметры функции:
x1 - действие
0 - мышь двигается к другому квадрату
12 - нажата левая кнопка
13 - отпущена левая кнопка
14 - нажата правая кнопка
x2 - x -координата кликнутого квадрата
x3 - y -координата кликнутого квадрата
x4 - уровень кликнутого квадрата
Пример

!?OB8/11/0;
!!DL:P12345;
!!IF:M^Теперь заклинание окончилось.^;
!?FU12345;
!!if&x1=0:; мышь двигается
!!OBx2/x3/x4:T?y1; получить тип объекта в квадрате
!!if&y1=34:; герой?
!!DL:C1042; курсор Затопить корабль
!!el:;
!!DL:C1000; курсор-стрелка
!!en:;
!!FU:E;
!!en:;
!!if&x1=13:; левая кнопка отпущена
!!OBx2/x3/x4:T?y1 C?y2;
!!if&y1=34:; герой
!!HEy2:K; убить героя
!!DL:C1000; курсор-стрелка
!!en:;
!!FU:E;
!!en:;
!!if&x1=14:; нажата левая кнопка
!!DL:C1;
!!en:;

S$
 Показать диалог
$ - получаемый объект (активный объект при закрытии)
Комментарий

Показывает диалог (с определенным номером), и ждет его закрытия. Т.е. дальнейшие команды будут выполнены не сразу, а только после закрытия диалога. Вы можете не использовать параметр вообще, тогда получаемый предмет просто проигнорируется. Вы можете показать один диалог "из другого" и последовательность может быть бесконечной, но вы можете иметь лишь ОДИН диалог одного типа на экране. Т.е. вы не можете вызвать диалог X из диалога X.

Формат шаблонов.

Это стандартный файл текстовой таблицы Героев 3.
Первые две строки пропускаются (могут быть заполнены текстом или оставлены пустыми)
Самый левый столбик также игнорируется (может быть заполнен текстом или оставлен пустым).
В шаблоне должно быть как минимум 14 колонок. Последняя графа в характеристике пункта (сразу после "флаг") это всегда текст подсказки - если текстовый пункт для подсказки присутствует. Подсказка требует для себя места даже там, где её не надо. Если графа пуста, то и подсказки как бы нет. Если же шаблон "обрезан", например, до 13 колонок, то для пункта "Text" (как самого "длинного") вместо пустой и "невидимой" подсказки выведется надпись "...not found the text resourse...".
Диалог начинается со следующих строк (в порядке столбца):

0: пропускается
1: знак '#' - означает начало нового шаблона диалога
2: xxx номер - уникальный Id диалога
3: номер x позиции - X позиция от верхнего левого угла (-1=центр экрана)
4: номер y позиции - Y позиция от верхнего левого угла (-1=центр экрана)
5: dx номер - горизантальный размер диалога
6: dy номер - вертикальный размер диалога
7: xxx номер - количество пунктов диалога (вы можете использовать меньше, но не больше, чем выбрали)
8: xxx номер - установить цвет рамки диалога под цвет номера игрока (-1 означает текущего игрока)
9: текст - имя PCX файла, который будет фоном
10: XXX номер - Id текстового пункта, который используется как поле с описанием.

Следующие строки анализируются как пункты диалога до тех пор, пока не будет знака '#' в первом столбце. Это может быть просто пустая строка с '#', или линия с началом нового диалога.

Самый главный элемент - первый символ в первом столбце. Поддерживаемые на данный момент элементы:

'P' - PCX рисунок
0: пропускается
1: 'P'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - имя PCX файла
8: флаги - специфическое значение (ещё не известно полностью)

'D' - кадр DEF рисунка
0: пропускается
1: 'D'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - имя DEF файла
8: кадр - изображения внутри DEF'а для вывода
9: флаги - специфическое значение (ещё не известно полностью)

 'A' - анимированный DEF рисунок
ещё не поддерживается

'B' - кнопка (особый DEF)
0: пропускается
1: 'B'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - имя DEF файла
8: флаги - специфическое значение (ещё не известно полностью)

[Примечание: в DEF'е кнопки должно быть как минимум 2 кадра. При нажатии на кнопку показывается второй кадр. Также при отключении кнопки (переводе элемента диалога в режим выключен) показывается второй кадр. Например если вы сделаете кнопкой деф с заклинаниями, то будет изображено заклинания вызов лодки а при нажатии или выключении вы увидите следующее заклинание - потопить лодку.
При нажатии на кнопку (не удерживая) происходит выход из диалога (выход в предыдущий диалог, если диалог был открыт из другого диалога). Конечно кнопка должна быть включена.]

'T' - текст
0: пропускается
1: 'T'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - текст (может быть пустым и заполняться позже)
8: шрифт - имя файла шрифта
9: цвет - цвет текста
10: bkcol - цвет фона
11: выравнивание - выравнивание текста
12: флаги - специфическое значение (ещё не известно полностью)

'S' - текст с вертикальной прокруткой
0: пропускается
1: 'S'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - текст (может быть пустым и заполняться позже)
8: шрифт - имя файла шрифта
9: цвет - цвет текста
10: цвет2 - цвет полосы прокрутки
11: выравнивание - выравнивание текста

'E' - отредактированный текст
0: пропускается
1: 'E'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - текст (может быть пустым и заполняться позже)
8: шрифт - имя файла шрифта

'V' - SMK или BIK видео
0: пропускается
1: 'V'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
Видео выводится поверх любых других пунктов диалога и не имеет поддержки 'hint' описания. Это значит, что вам нужно следить, чтобы видео не вылазило за границы окна диалога, чтобы не получить проблем с перерисовкой.
Также вы можете использовать только одно видео за диалог.

Примечания:
Вы можете хранить больше одного диалога в файле шаблона.
Вы не должны использовать одинаковые Id диалогов в различных файлах шаблонов. Каждый диалог должен иметь свой унильный Id. Это также значит, что некоторые Id будут заняты под WoG-диалоги.
Пункт с номером 30721 - пункт отмены по умолчанию. Так, если игрок нажимает кнопку ESC когда выведен диалог - диалог закроется.
 Цвета текста
Белый: 1,4,11,17,18,30
Жёлтый: 3,6,9,20,29
Светло-жёлтый: 2,5,7,8,10,12,19,21,22
Зелёный: -10,-4,13,15,25
Светло-зелёный: -6,14,
Желтовато-белый: 16
Чёрный: -27,-9,-7,-5,-3,-1,23
Синий: 24
Голубой: -8,26
Красный: 27
Фиолетовый: 28
Тёмно-красный: -2
Голубовато-белый: 0


Ресейвер DO

Опции DO: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер DO (циклическая функция)

!!DO#1/#2/#3/#4:XXXX; - вызывает функцию несколько раз.
 #1 – номер функции
#2 – начальное значение
#3 – конечное значение
#4 – шаг
Комментарий

Переменная x16 всегда хранит номер текущего круга функции. Например, если дельта функции (конечное значение минус начальное) равна 12, в первый раз x16 будет равно 1, во второй 2 и т.д. до 12. Изменяя переменную x16 фактически можно замедлять или ускорять выполнение функции, или завершить ее, установив в x16 конечное значение функции (можно большее конечного значения). Помните - параметры функций можно устанавливать только внутри самой функции.
Пример 1
!!DO1/2/10/2:P5;
…
!?FU1;
!!IF:M^Переменная x1=%X1 и x16=%X16^;
!!VRx1:+1;
!!VRx16:+1;
Вы должны увидеть следующее:
Переменная x1=5 и x16=2
Переменная x1=6 и x16=5
Переменная x1=7 и x16=8
Пример 2
!!DO2/1/66/1:P47/11; - установить значение 47 для переменной x1
!?FU2;
!!VRv5:Sx1+1-x16;
!!IF:M^Значения переменных: x16=$X16 , и v5=$V5^;
!!VRx16:+7; - прыжок на 8
Вместо 66 вы получите лишь 9 циклов, с такими значениями:
x16: 1   9     17      25      33      41      49      57      65
v5:  47 39    31      23      15      7        -1      -9      -17

Для каждой функции все переменные x (1-16) уникальны, т.е. две разные функции будут иметь разные значения x-переменных.
Также !!VRx16:+7; может быть заменено (например) на R7: !!VRx16:R7; - следующий прыжок будет сразу на седьмой цикл, или (например) с Rx2: !!VRx16:Rx2; - добавление случайного числа до x2, в случае выше x2 равно 11.

Расширение синтаксиса ресейвера DO
Ресейверы FU и DO имеют расширенный синтаксис для запоминания некоторых значений. Теперь вы можете использовать синтаксис "получить" для записи значения в переменную. Вы можете использовать v, y- или y переменные для записи значений.
Например:
!!FU...:Pv1/v2/v3/?v4;
Теперь, если вы измените значение переменной x4 внутри функции, например
!!VRx4:Sx1;
значение будет скопировано в v4 после окончания функции.

Пример
!?FU2;
!!VRx2:Sx2+17;
!!VRx3:Sx1+17;
!?FU1;
!!FU2:P13/?y-1/?y-2;
!#IF:M^%Y-1, %Y-2^;
!#FU1:P;
!#IF:M^%Y-1, %Y-2^;
Вы увидите "0, 0" и затем "16, 30"
Пример
!?FU2;
!!VRx2:Sx1 +17;
!!IF:M^x=%X1^;
!?FU1;
!!VRy-1:S33;
!!DO2/1/20/1:P=y-1/?y-1;
!#FU1:P;
Вы увидите 33, 50, 67...
Знак равно в предпоследней строчке означает следующее: если вы измените данную
переменную внутри тела функции, переменная будет пропущена в следующий цикл
функции измененной.
Пример
...!!VRv35:S10;
!!DO...:P=v35;
!?FU...;
!!VRv35:Sx1 +1;
В таком случае вы получите значения x1 равными 10, 11, 12, 13... при начале
каждого цикла.
Но если вы напишите как
...!!VRv35:S10;
!!DO...:Pv35;
!?FU...;
!!VRv35:Sx1 +1;
, то x1 будет равен 10, 10, 10... в начале каждого цикла.

Вопросы и ответы

В: Как x16 влияет на "вложенные" DO-ресейверы?
О: Каждый DO-ресейвер имеет свое отдельное значение x16

В: Скажем, у меня есть следующий код: (это будет отражать, скажем, проверку массива 10х11 для чего-либо)
!!DO1/1/10/1:P;
!?FU1;
!!DO2/20/30/1:P;
точка А
!?FU2;
точка Б
Мой вопрос - точка Б будет иметь значение x16 между 1 и 10 или между 20 и 30?
О: Между 20 и 30

В: Также, в точке А x16 будет принимать значение от DO1 или DO2?
О: DO1, потому что линия находится внутри функции FU1

В: У меня есть главная функция, покрывающая всех героев (DO1/0/155/1), но у каждого героя я должен узнать существ в его слотах (DO2/0/6/1). Как это можно?
О: Это решается простым "вложением" одной функции в другую.

P$1[/$2/$3/../$16]
$1, $2 и т.п. служат для установки x# (1-16). Эти параметры могут быть использованы где угодно (в пределах функции) вместо использования стандартных переменных. Когда вы вызываете другую функцию, все параметры будут наследованы.
Функция начинает работать командой P, пример:
!!DO1/1/15/1:P; - правильно
!!DO1/1/15/1; - неправильно
Все команды ERM (ресейверы, инструкции) для использования имеют хотя бы один параметр в обязательном порядке.

Дополнительный синтаксис:
Вы можете использовать синтаксис "?перем" для получения значения из вызова. Вы можете использовать v, y или y- переменные для записи значений. К примеру:
!!FU...:Pv1/v2/v3/?v4;
Теперь, если вы измените значение x4 внутри функции, например, командой
!!VRx4:Sx1;
, оно будет скопировано в v4 после окончания функции.
Комментарий

само значение переменной (v4) не передается в x4 при вызове функции, взамен передает номер переменной (в примере x4 будет равно 4). В ресейвере DO значение номера (4) будет одинаковым при каждом цикле. Так, если вы установите ее внутри тела функции, значение будет скопировано в переменную-получатель после окончания цикла и восстановлено на индекс переменной в начале следующего цикла.

Также вы можете использовать синтаксис "=перем" для установки значения на каждом цикле DO. Скажем,
!!VRv35:S10;
!!DO...:P=v35;
Теперь, если вы измените v35 внутри тела функции, число будет допущено в дальнейшие циклы и примет новое значение. К примеру,
!!VRv35:Sx1+1;
Так, здесь вы будете получать x1 равное 10,11,12,13... на следующих кругах.
Если бы вы использовали стандартный синтаксис:
!!VRv35:S10;
!!DO...:Pv35;
, вы бы получили, что x1 = 10, 10, 10... на любом цикле.

Вы можете использовать любое количество таких переменных в функции. Вы можете использовать похожие переменные (см. пример ниже) с синтаксисом "?" и "=".
Пример 1

!?FU2;
!!VRx2:Sx2+17;
!!VRx3:Sx1+17;

!?FU1;
!!FU2:P13/?y-1/?y-2;

!#IF:M^%Y-1, %Y-2^;
!#FU1:P;
!#IF:M^%Y-1, %Y-2^;

Вы увидите "0, 0" и затем "16, 30".
Пример 2
!?FU2;
!!VRx2:Sx1+17;
!!IF:M^x=%X1^;

!?FU1;
!!VRy-1:S33;
!!DO2/1/20/1:P=y-1/?y-1;

!#FU1:P;

Вы увидите 33, 50, 67... и т.д.


Ресейвер DW

Опции DW: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер DW (жилище существ)

!!DW#1/#2/#3:XXXX; - жилище монстров в X Y L. Жилище – тип 17 и 20.

G#1/$2/$3
Установить монстров – охранников:
#1 – номер слота (0…6)
#2 – тип монстра (-1 – нет)
#3 – количество монстров

M#1/$2/$3
Установить монстров для найма:
#1 – слот (0…3) - вы можете установить до четырех различных монстров в одном жилище
#2 – тип монстра (-1 – отключить слот)
#3 – количество для найма

O$
Установить хозяина (-1 – никто)
Расширенный синтаксис:
O$/1
Передать контроль другому игроку, $ - хозяин; но без обновления


Ресейвер EA

Опции EA: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер EA (опыт существ)

!!EA$:XXXX; - ресейвер для добавления поддержки бонусной линии с помощью ERM. $ - тип монстра.
Комментарий

Установки записываются в сохраненную игру. В командах A, S и T тип монстра может быть любой, например 0, потому что это значение не используется.
Дополнительный синтаксис: вы можете установить опыт, линию опыта и параметры опыта для любого существа в битве. Для этого используйте номер стека на поле боя с отрицательным знаком:
!!EA-1:… стек 0
!!EA-2:… стек 1
…
!!EA-42:… стек 41
Как и прежде, вы можете использовать положительные значения для применения к существам в целом. Вы можете установить параметры опыта для любого стека на поле боя прямо в триггере BA0 (BA50) или позже, во время самой битвы.

A$1/$2
Установить множитель опыта для ИИ
$1 – сложность (0…4, соответственно легкая, нормальная, средняя, тяжелая, невозможная.)
$2 - значение
Это значение используется как множитель получаемого опыта существами ИИ-героев. Он равен 1(легко), 2, 3, 4, 5 (невозможно) по умолчанию. В качестве номера стека можно использовать любой тип монстра.

B#1/$2/$3/$4/$5/$6/$7/$8/$9/$10/$11/$12/$13/$14/$15
Установить/получить линию опыта
#1 – бонусная линия (0…19) (нельзя получить значение)
$2 – флаг-значение (1 – способность включена, 0 – выключена)
$3 – способность
$4 – модификатор (уточнение способности, например, номер монстра, заклинания, чего-либо; в некоторых случаях не имеет значения)
$5 – значение для первого уровня (нет опыта)
…
$15 – значение для 11 уровня (максимальный опыт)
Комментарий

Некоторые способности накладываются на существ в битве некорректно (картинка есть, а эффекта нет). К примеру: Снижение цены заклинаний (цена не уменьшается), Чемпионский Бонус (дополнительный урон подсчитывается, но не наносится). Также, возможно, Смертельный Взгляд и Удар Молнии.
Если $2 = 0, то, независимо от других параметров, линия исчезнет

C$
Установить/получить высший уровень получения опыта. Это максимальный процент опыта, который может получить существо за одну битву.

EA#:D?$
Можно использовать в битве
Проверить, если линия опыта была скопирована стеку на поле боя
# - номер стека (-1…-42)
$ - переменная, получающая «копированное» значение
Комментарий

Если $ = 0, установки взяты из стандартных бонусов существ и не были скопированы во временные установки BF для текущего стека. Это может понадобиться при вызове стека.
* Если $ равен числу между 1 и 7, линии бонусов стека были скопированы и это был стек под номером от 0 до 6 соответственно в армии атакующего.
* Если $ равен числу между 8 и 14, линии бонусов стека были скопированы и это был стек под номером от 0 до 6 соответственно в армии защищающегося.
* Если $ равен -1, этот стек не был в армии атакующего или защищающегося, но его бонусные линии уже были скопированы.
Так, если вы вызываете стек и используете эту команду, она получит значение 0 (бонусные линии не были скопированы). Если затем вы использовали любую команду EA: [M] [U] [L] [P] [C] [B] [O] не для проверки, а для установки чего-либо для этого определенного стека и затем снова проверите значение EA:D, оно станет равным -1.
Обычный порядок:
* Проверка на копирование бонусных линий с помощью данной команды;
* Если нет, используем EA:O для копирования;
* Теперь делайте любые изменения с помощью EA: [M] [U] [L] [P] [C] [B].

E$1/$2/$3/$4
Можно использовать в битве
Установить опыт для стека в битве
$1 – очки опыта
$2 – модификатор (как для модификатора 6 в HE:C)
$3 – тип существа
$4 – количество существ
Вы можете использовать параметр d в $3 и $4, чтобы не изменять тип существа (будет автоматически установлена на корректный тип).
Пример:
!!EA-2:E1000/2/d/d;
Установить (2) очки опыта (1000) для существа в стеке № 1 на поле битвы.
Вы можете использовать эту команду ТОЛЬКО для стека на поле битвы (только отрицательные значения #).

F$1/$2
Получить номер линии определенного бонуса, или найти первую пустую линию
$1 – номер способности
$2 – номер линии (-1, 0…13)
Комментарий

Вы можете только получить или проверить второй параметр, но не установить его. Вот стандартный вид:
!!EA...:F65/?v100;
Так мы получим номер линии, содержащей бонус "Атака" (65) определенного существа. Если линия не найдена, v100 примет значение номера пустой линии. Если вы установите $1 на 0, вы найдете первую пустую бонусную линию. Если $2 примет значение -1 - свободного места в способностях существа нет.
Расширение синтаксиса:
F$1/$2/$3
$1 - номер способности
$2 - модификатор (-1 = не имеет значения, выбирается самая первая подходящая линия)
$3 - переменная для записи результата

H$
Установить множитель опыта для людей-игроков
Используется для героев под контролем игроков-людей для настройки опыта, полученного каждым отрядом армии героя после выигранной битвы. Стандартное значение 100%. Значение сохраняется при сохранении игры. В качестве номера стека можно использовать любой тип монстра.

L$
Установить/получить шкалу опыта и лимит
Позволяет настроить опыт, нужный существу для достижения 10 ранга, от этого числа идет процентный расчет опыта для каждого уровня в самой игре

M$
Установить/получить множитель опыта. Значение $ в 1000 раз меньше введенного, т.е., чтобы получить 0.75, нужно ввести 750. Если вы хотите установить на 1, используйте M1000

EA#1:O$/#2;
Можно использовать в битве
Копировать все линии бонусов и параметров существа или стека на поле боя другому существу или стеку на поле боя.
#1 – целевой отряд (монстр)
$ - исходный отряд
#2 – тип копирования:
0 (обычное) - просто копировать исходные бонусы целевому монстру.
1 - если целевой отряд на поле боя (ПБ), то параметры исходного отряда скопируются цели и всем похожим существам дружеских войск. Если целевой стек - обычный номер монстра, ничего не произойдет.
2 - если целевой отряд на ПБ, то параметры исходного отряда скопируются цели и всем похожим существам вражеских войск. Если целевой стек - обычный номер монстра, ничего не произойдет.
3 - если целевой отряд на ПБ, то параметры исходного отряда скопируются цели плюс всем похожим существам атакующей стороны. Если цель - обычный номер монстра, то копировать параметры на всех похожих существ атакующей стороны.
4 - если целевой отряд на ПБ, то параметры исходного отряда скопируются цели плюс всем похожим существам защищающейся стороны. Если цель - обычный номер монстра, то копировать параметры на всех похожих существ защищающейся стороны.
5 - если целевой отряд на ПБ, то параметры исходного отряда скопируются цели плюс всем похожим существам на поле боя. Если цель - обычный номер монстра, то копировать параметры исходного отряда всем целевым похожим существам.
"Похожие существа" - одни и те же (Грифоны и грифоны).

EA#:O$
Можно использовать в битве
Копировать все бонусные линии и параметры
# - целевой отряд или монстр
$ - исходное существо
Команда копирует все бонусы и параметры опыта одного существа (на поле боя или определенного существа) другому стеку или существу.
Пример

!!EA-2:O0;
Эта команда установит все бонусы и параметры опыта стека 1 на поле боя (-2) как и у Копейщиков. Также все параметры опыта (множитель при улучшении и т.п.) будут также скопированы. Эта команда полезна, если вы вызываете стек и хотите дать ему особые бонусы других монстров или для динамичного изменения любого параметра опыта. Эта команда не устанавливает очки опыта.

P$
Установить значение последнего уровня опыта. После 10 уровня опыт все еще набирается, и это число - максимум опыта, получаемого существом.

R$1/$2
Можно использовать в битве
Поддержка артефактов для стеков в бою, установить/проверить/получить артефакт и опцию:
$1 – номер артефакта
$2 – опция артефакта
На данный момент поддерживается только артефакт номер 156 (знамя) и опции 0…8 ($2).

S$1/$2
Установить дополнительный опыт для ИИ
$1 – номер уровня сложности (0…4)
$2 – модификатор
Это модификатор дополнительного опыта для ИИ к его стекам. Это 50 (легко), 100, 200, 300, 400 (невозможно) соответственно. В качестве номера стека можно использовать любой тип монстра.

T$1/$2
Установить множитель опыта гарнизона для ИИ
$1 – уровень сложности (0…4)
$2 – значение
Значения: 10 (легко), 25, 50, 75, 100 (невозможно) соответственно. Если значение EA:A равно 0, то получение опыта ИИ было бы нулевым независимо от этого значения. В качестве номера стека можно использовать любой тип монстра.

U$
Установить/получить множитель опыта при улучшению. Значение в 1000 раз меньше, чем заданное в $.


Ресейвер EX

Опции EX: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер EX (опыт стеков)

!!EX$1/$2:XXXX; - опыт стека существ.
$1 – номер героя (0…155, -1),
$2 – номер слота (0...6).
Расширение синтаксиса 1:
!!EX$1/$2/$3/$4:XXXX;
$1 – X (0...)
$2 – Y (0...)
$3 – L (0 - поверхность, 1 - подземелье)
$4 – номер слота (в этой позиции может быть герой, город, гарнизон или шахта)
Расширение синтаксиса 2:
!!EX$1/$2/$3/$4/$5:XXXX;
$1 – X
$2 – Y
$3 – L
$4 – номер слота (0...6)
$5 – тип объекта
1 = герой
2 = город
3 = шахта
4 = гарнизон
другое число = любой выше перечисленный
Если вы используете 4 параметра, пятый по умолчанию находится в состоянии "первый найденный". Поиск идет в следующем порядке: герои, города, шахты, гарнизоны.

A$1/$2/$3
Установить/проверить/получить информацию по стеку:
$1 – тип монстра
$2 – количество существ
$3 – кол-во опыта у существа

C$1/$2/$3[/$4/$5/$6]
Соединить стеки
$1 – тип исходного стека
$1 = 0 - у героя
$2 – номер героя (-1 – текущий)
$3 – слот героя (0…6)
[$4] – предупреждение (см. ниже)
$1 =1 - герой в координатах
$1 =2 - город в координатах
$1 =3 - шахта в координатах
$1 =4 - гарнизон в координатах
$2 - X-позиция
$3 - Y-позиция
$4 - уровень (0 - поверхность, 1 - подземелье)
$5 - слот армии (0...6)
[$6] - предупреждение
Результаты
Эта команда установит переменную v1 на:
-1, если это разные существа (нельзя комбинировать)
0, если произошла ошибка (нельзя комбинировать)
1, если комбинирование прошло успешно.
Комментарий

Эта команда добавит исходный стек к слоту армии, вместе с комбинированием параметров. Весь опыт распространится поровну на всех солдат, артефакты суммируются. Если вы установите тип предупреждения на 1 (по умолчанию 0), вы не получите сообщение, что эти стеки различны.
Пример 1:
Герой посещает объект и его стек 3 добавляется к стеку 1 (они должны быть одного типа):
!?OB5/3/0;
!!EX-1/1:C0/-1/3;
Пример 2:
Вы посещаете объект и ваш текущий герой "добавляет" первый стек в город с входом в 3/2/0 к стеку №3.
!?OB5/3/0;
!!EX-1/3:C2/3/2/0/1;

E$
Установить/проверить/получить опыт существ:
$ - опыт существ

N$
Установить/проверить/получить количество существ
$ - количество

R$1/$2
Установить/проверить/получить артефакт и опцию
$1 = номер артефакта
$2 = опция артефакта
Примечание: сейчас доступен только артефакт 156 (знамя) и опции 0…8

0 | +2 здоровья плюс удвоение текущего бонуса здоровья в бою
1 | +2 атаки плюс удвоение текущего бонуса атаки в бою
2 | +2 защиты плюс удвоение текущего бонуса защиты в бою
3 | +1 урона плюс удвоение текущего бонуса мин и макс урона в бою
4 | +1 скорости плюс удвоение текущего бонуса скорости в бою
5 | +50% опыта отряду за битву
6 | Уменьшение защиты цели на 25%
7 | 25% шанс блокирования 50% урона
8 | 2 дополнительных ответа

Расширение синтаксиса:
R$1/$2/$3/$4
$1 – есть артефакт или нет (0 = нет, 1 = да)
$2 – номер артефакта (сейчас только 156)
$3 – подтип артефакта (опции 0…15 – еще не все используются)
$4 – количество копий артефакта (0...3)

T$
Установить/проверить/получить тип монстра
$ - тип монстра


Ресейвер FR

Опции FR: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер FR (костер покинутого лагеря)

!!FR#1/#2/#3:XXXX; - костер покинутого лагеря в координатах X Y L (#1, #2, #3). Костер – тип 12.

B$1/$2
Бонус:
$1 – тип ресурса
$2 – количество
Костер всегда имеет в себе золото. Так что если значение $2 = 5, то в костре будет 5 единиц ресурса $1 и 500 золота.
Также, вы можете установить тип в диапазоне 8...15, и увидите картинку соответственного номера из формата IF:Q. При этом ничего из 8...15 не будет дано герою.


Ресейвер FU

Опции FU: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер FU (функция)

!!FU#:XXXX; - ресейвер функции – передает контроль ERM – коду функции (см. !?FU).
# = 1…30000
Используется для создания специальной секции кода, к которой можно получить доступ из нескольких мест, и использовать повторно. Функции вызываются ресейвером функции !!FU. Триггер функции (!?FU) определяет начало кода функции.

Если вы вызываете функцию инструкцией, функция должна быть описана до инструкции. Например, если вы хотите вызвать функцию 100 в начале карты, вы можете поместить ее как инструкцию !#FU100:P; но она не будет работать, если функция не была описана ранее. Так что триггер функции (и ее код) должны быть первыми.
ZVSE
!?FU100;
!!IF:M^Это функция 100.^;
!#FU100:P;
Пример выше работает отлично, но если !#FU100:P; поставить на первое место (прямо после ZVSE), она не будет работать. Вы не получите сообщения об ошибке, но функция не будет выполняться.
Вы можете использовать переменные в ресейвере функции. Так, вы можете, к примеру, использовать такой код:
!!FUv10:P; и функция под номером, равном числу, записанному сейчас в v10, начнет работу (если триггер этой функции существует).

Примеры функций

Пример 1
!?FU1;
!!IF:M^Здесь мы вначале. %X1 %X16^;
!!VRx1:+1;
!!FU2:Px1;
!!IF:M^А здесь - в конце. %X1 %X16^;
Пример 2:
!!VRv10:S5;
!!FUv10:P;
 В этом примере функция будет иметь номер 5 и заработает, только если триггер FU5 существует.

Каждая функция имеет 100 уникальных переменных (y1-y100). Вы можете устанавливать, проверять и получать эти переменные. Каждый вызов создает индивидуальные переменные, которые после выполнения функции опять обратятся в нули. Так что все операции над локальными переменными могут иметь место только в теле функции.

Пример 3:
!!FU1:Pi/102/v10/35;
!?FU1;
!!IF:M^x1=%X1, x2=%X2^;

Здесь, если вы вызовете функцию с параметрами, переменные x1...x16 в теле функции будут иметь соответственные значения.
!!FU1:P10/20; будет показано "x1=10, x2=20"
!!VRv5:S33;
!!FU1:Pv5/0; будет показано "x1=33, x2=0"

Y-переменные y1...y100 служат локальными переменными. Вы можете использовать их внутри функции для любых нужд. Все функции имеют свои собственные уникальные локальные переменные, даже если вы вызываете новые функции. Когда функция оканчивается, y-переменные сбрасываются на 0.
!!FU1:P; вызвать функцию 1

!?FU1; y1 не настроена (=0)
!!VRy1:S1; y1=1
!!FU2:P; вызвать функцию 2
!!IF:M^y1=%Y1^; "y1=1" (y1 возвратит оригинальное значение 1, установленное перед вызовом функции 2)
!?FU2; y1 не настроена (=0)
!!VRy1:S2; y1=2
!!IF:M^y1=%Y1^; "y1=2"

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

Пример 4:
!?FU1;
!!... ресейверы 1
...
!?FU1;
!!... ресейверы 2
...
!!FU1:...
Последний вызов выполнит все ресейверы 1 и затем все ресейверы 2 в том же порядке.

C$
Проверить на неправильные y-переменные. Можно использовать без параметров, например: !!FU:C1;
$ = 0 – разрешить проверку
$ =1 – запретить проверку (можно просто !!FU:C;)
Она лишь проверит, использовали ли вы y-переменные вне тела функции (во время выполнения), т.к. часто это главный источник проблем. По умолчанию проверка отключена. Наиболее логично использовать эту команду как инструкцию и она может быть полезна при тестировании скриптов. очень простое использование.
Пример

ZVSE
!#FU:C;
!#TM1:S1/999/1/1; - установить таймер 1 для красного игрока
!?TM1;
!!VRy1:S1;
!!FU123:P;
!?FU123;
!!VRy1:S2;
В этом примере, когда таймер начнет свою работу, вы получите сообщение, что
y-переменная используется вне тела функции.

D$1[/$2/$3/.../$16]
Поддержка интернет-игр. Вызывает функцию на противоположной стороне. Синтаксис такой же, как и FU:P, и, соответственно, особенности такие же. Для получения доступа к параметрам используйте синтаксис x# (# = 1...16). Они могут быть использованы где угодно (внутри функции) как обычные переменные. Когда вы вызываете функцию, все параметры, которые не были установлены, будут наследованы.
Примечание: параметр $1 D должен быть помещен в вызове !!FU (даже если нет значений, необходимых для передачи в функцию) для корректной работы команды.

Пример 1

На одной стороне вы запускаете скрипт:
...
!!VRv1234:S999;
На другом компьютере v1234 будет содержать старое значение. Для изменения используйте это:
...
!!VRv1234:S999;
!!IP:V1234/1234;
Последняя команда немедленно передаст значение v1234 другому компьютеру. Теперь вторая часть проблемы. Скажем, вы используете некоторые специфические команды, которые возымеют эффект на поле боя (скажем, кастование заклинаний с помощью ERM). Опять же, если вы проведете действия на одной стороне, возникнет проблема, потому что ничего не произошло на другой стороне. Теперь вы можете использовать дистанционный вызов для таких случаев. Это означает, что вы вызываете функцию, но она запускается не на этом, текущем, компьютере, а на втором (компьютере оппонента). Передается до 16 параметров.

Пример 2
На своей стороне вы имеете:
...
!!BMv10:Mi/y5/5;
 Для корректного выполнения вы должны проделать некоторые вещи:
...
!!BMv10:Mi/y5/5;
!!FU12345:Dv10/i/y5/5;
!?FU12345;
!!BMx1:Mx2/x3/x4;
Это все. Принцип работы: FU:D немедленно передает все параметры x на другой компьютер и вызовет там функцию 12345. Так команда BMv10:M... будет работать на одном компьютере и команда BMx1:M... на другом. Если вы сделаете все правильно, то получите одинаковый эффект на обеих сторонах.
Заметьте, что вы можете передать некоторые переменные командой IP:V и затем вызвать FU:D для передачи более чем 16 параметров x на другой компьютер.

Пример 3

**************
ZVSE

!?BG0;
!!IF:M^Привет!^;
!!VRv99:S99;
!!VRv100:S100;
!!VRv101:S101;
!!IP:V99/100;
!!FU123:D1/2/3/4/5;

!?FU123;
!!IF:M^V99=%V99, V100=%V100, V101=%V101, X1=%X1, X2=%X2, X3=%X3, X4=%X4, X5=%X5^;
 **************

Вы увидите сообщение "Привет!" при любом действии стека, затем увидите сообщение "V99=99, V100=100, V101=0, X1=1, X2=2, X3=3, X4=4, X5=5" на другом компьютере. Затем вы получите сообщение "Привет!" на другом компьютере.
Если вы продолжите, следующее полученное вами сообщение будет "V99=99, V100=100, V101=101, X1=1, X2=2, X3=3, X4=4, X5=5". Так, изменилась v101. Это потому что вы отправили v99 и v100 через сеть и вызвали функцию, которая покажет сообщение (поэтому v101 = 0). Но затем триггер BG0 сработал на стороне защищающегося и v101 будет установлена на 101.
Этот пример только пример, потому что скрипт:
!?BG0;
!!IF:M^Hi!^:
!!VRv99:S99;
!!VRv100:S100;
!!VRv101:S101;
 будет работать одинаково на обеих сторонах, но если вы запустите скрипт как реакцию на действие человека (обычно клик мыши), вам нужно будет продумать передачу изменений на другой компьютер.
См. также: ресейвер IP

E
Эта команда немедленно выходит из последней запущенной функции или триггера.
Комментарий

Вы можете использовать эту команду для избежания перезапуска функции.
Пример 1:
Было:
!?FU123;
...
!!VRv10:S0 T10; получить случайное значение
!?FU123&v10<5; продолжать, только если случайное значение <5
...
Теперь вы можете использовать следующий способ:
!?FU123;
...
!!VRv10:S0 T10; получить случайное значение
!!FUv10>=5:E; выйти из функции, только если случайное значение больше либо равно 5
...
Пример 2 (полный):
ZVSE
!?LE3/4/0; все триггеры для локальных событий
!!IF:M^L0-0^;
!!FU123:P;
!!IF:M^L0-1^;
!!FU:E; выход
!!IF:M^L0-2^;

!?FU123;
!!IF:M^L1-0^;
!!FU124:P;

!!IF:M^L1-1^;
!!FU:E; выход
!!IF:M^L1-2^;

!?FU124;
!!IF:M^L2-0^;
!!FU125:P;
!!IF:M^L2-1^;
!!IF:M^L2-1a^;

!?FU125;
!!IF:M^L3-0^;
!!FU126:P;
!!IF:M^L3-1^;
!!FU:E; выход
!!IF:M^L3-2^;

!?FU126;
!!IF:M^L4-0^;
!!IF:M^L4-1^;

!!FU:E; выход
!!IF:M^L4-2^;
Вы получите следующие сообщения:
L0-0
L1-0
L2-0
L3-0
L4-0
L4-1
L3-1
L2-1
L2-1a
L1-1
L0-1

P$1[/$2/$3/../$16]
Означает старт функции, позволяет получить доступ к параметрам x# (1…16).
Помните, что опция P должна существовать для старта функции:
!!FU1:P; - правильно,
!!FU1; - неправильно


Ресейвер GD

Опции GD: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер GD (мистический сад)

!!GD#1/#2/#3:XXXX; - мистический сад в X Y L. Мистический сад - тип 55.

B$
Тип ресурса (обычно 5)

N$
Номер мистического сада (0…31)

T$
Тип бонусного ресурса: 1 = ресурс, золото = 0.


Ресейвер GE

Опции GE: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер GE (глобальные события)

!!GE#:XXXX; - ресейвер для глобальных событий (# - номер события). Номер – первое число в тексте сообщения (например, "100Привет!" будет показываться как "Привет!", а событие будет иметь номер 100). Используется для изменения параметров глобальных (таймерных) событий.
См. также: триггер GE
Пример

Обнуление стартовых ресурсов игрока без каких-либо пояснений и картинок
(инструкцию использовать нельзя):
!?GE1;
- должно присутствовать глобальное событие, начинающееся на 1.
!!OW:R0/0/0; - обнулить все ресурсы игрока 0 (красного)
!!OW:R0/1/0;
!!OW:R0/2/0;
!!OW:R0/3/0;
!!OW:R0/4/0;
!!OW:R0/5/0;
!!OW:R0/6/0;

B#1/$2
Установить/проверить/получить количество ресурса #1 (0…6) на $2 (может быть отрицательным)

D#1/#2
Запретить (#2 = 1) или разрешить (#2 = 0) событие для игрока #1.

E$
Установить игроков, которым разрешено получать событие.
Комментарий

Если вы используете $, начинающееся с параметра d, это будет означать как "или", т.е. вы можете дать возможность игрокам получать событие, без изменения остальных игроков.
Пример: E3 дает возможность получить событие только красному и синему игроку, в то время как Ed3 разрешает получение события красному и синему игроку, причем остальные цвета, установленные в самом событии в редакторе, остаются без изменений.

F$
Установить/проверить/получить день первого появления на $

H#
Применить или проверить, разрешено ли события для игроков-людей (1 = разрешено, 0 = запрещено)

M^Текст^
Установить текстовое послание. Оно не может быть длиннее оригинального. Может содержать любые символы, кроме "^" и ";"

M#
Установить текст события такой же, что и в глобальном событии под номером #.

M-1
Не показывать сообщение, записанное в самом событии

N$
Установить игроков, которые НЕ могут активировать событие.
Комментарий

Если вы используете $, начинающееся с параметра d, это будет означать как "или", т.е. вы можете запретить игрокам получать событие, без изменения остальных игроков.
Пример: E3 запрещает возможность получить событие только красному и синему игроку, в то время как Ed3 запрещает получение события красному и синему игроку, причем остальные цвета, установленные в самом событии в редакторе, остаются без изменений.

Q#
Применить или проверить, разрешено ли событие для компьютерных игроков (1 = разрешено, 0 = запрещено)

R$
Установить/проверить/получить интервал между появлениями на $.


Ресейвер GR

Опции GR: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер GR (гарнизоны)

!!GR#1/#2/#3:XXXX; - гарнизон в X Y L. Гарнизоны - тип 33 и 219.

F$
Установить/проверить/получить возможность удаления стражников. 1 = нельзя, 0 = можно.

G#1/$1/$2
Установить/проверить/получить монстров – стражников
#1 = номер слота (0...6)
$1 = тип монстра (-1 = нет)
$2 = количество монстров

O$
Установить/проверить/получить хозяина (0…7, -1 = нейтрал)


Ресейвер HE

Опции HE: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер HE (опции героя)

!!HE#:XXXX; - герой номер #. Каждый герой имеет свой уникальный номер.
Расширение синтаксиса:
!!HE#1/#2/#3:XXXX; - герой в определенных координатах X Y L
!!HE-1:XXXX; - герой, активировавший триггер. Данная команда существенно упрощает скрипт, так как вам не нужно при каждом вызове ресейвера HE сохранять координаты героя.
Используется для изменения характеристик, войск, инвентаря, навыков, местоположения и просто всего, что можно вообразить, над героем. Также позволяет наложить проклятье или благословение.
Примечание: вы можете использовать косвенные ссылки на героев (копии информации):
!!HE-10:... применить изменения к атакующему герою
!!HE-20:... применить изменения к защищающемуся герою
См. также: триггер HE

A#
Получить/дать/убрать артефакт
# - номер артефакта
Если # > 0, артефакт будет добавлен
Если # < 0, артефакт будет удален из всех слотов.
Комментарий

Полученный этой командой артефакт не будет одет автоматически и будет помещен в рюкзак. !!HE:A-1; - означает удалить у героя ВСЕ свитки с заклинаниями.
Пример:
!!HE106:A-1; (удалить все свитки с заклинаниями у героя №106)
Eсли вы используете HE:A1 чтобы отдать герою артефакт, дающий какое-либо заклинание, например, Том магии, свиток заклинания или Шляпу Оратора, заклинания не добавятся, пока игрок сам не снимет и не наденет обратно артефакт. Новая команда HE:A4, добавленная в 3,58, корректно даст заклинания герою.
Eсли вы используете команду HE:A1 для экипировки артефакта, он будет надет, независимо от того, блокирован ли он или занят. Опять же, команда HE:A4 будет надевать артефакты только на не заблокированные и не занятые слоты.
Eсли вы удаляете артефакт, добавляющий заклинание герою, с помощью ERM (HE:A- или HE:A3), заклинание исчезнет из книги героя навсегда.
Eсли вы удаляете артефакт командой !!HE:A-, бонусы снимутся корректно, но если вы удалите его командой HE:A3, это не уберет бонусы.
Eсли вы удаляете комбо-артефакт командой HE:A-, заблокированные слоты разблокируются, но если вы удалите его командой HE:A3, блок не уберется!

A1/$1/$2
Одеть артефакт
$1 – номер артефакта
$2 – позиция, куда надевать
Если слот занят, флаг 1 устанавливается на 0.
Комментарий

Также вы можете узнать, какой артефакт одет на определенном слоте. Для этого используйте синтаксис получения первого параметра ($1):
!!HE:A1/?@/x; - где @ - переменная для сохранения результата, x - номер проверяемого слота. Если артефакта нет, значение переменной равно -1.

A2/$1/?$2/?$3
Подсчитать количество артефактов (получить или проверить):
$1 - номер артефакта
$2 - получить количество артефактов $1 у героя (получить или проверить)
$3 - получить количество артефактов $1, надетых на героя (получить или проверить)
Количество невозможно установить. При попытке установки количества ничего не произойдет.

A3/$1/$2/$3
Удалить несколько копий артефакта:
$1 – номер артефакта
$2 – кол-во копий для удаления
$3 – удалить сначала надетые (1) или в рюкзаке (0)
Если артефакт давал заклинание, оно не удалится из книжки героя; если артефакт был удален этой командой, то все закрытые слоты и бонусы останутся на прежних местах.

A4/#
Одеть артефакт #. Теперь вы можете добавлять заклинания артефактов автоматически. Также решена проблема заблокированных слотов. Фактически, здесь используется внутренняя функция получения артефакта. Если артефакт может быть одет, он одевается.

B0/$
Установить/получить имя героя
В биографии имя не изменится!

B1/$
Установить/получить биографию героя
Если биография или имя героя такое же, как и по умолчанию, вы получите пустую текстовую переменную, а не стандартный текст.

B2/$
Установить/получить класс героя
$ - класс (0…17)
Разделите полученное значение на 2 и вы получите тип города героя.

B3/?$
Получить текст биографии героя в текстовую переменную (z). Эта команда всегда будет получать текст по умолчанию, независимо от того, изменяли ли вы текст биографии или нет. Вы можете использовать только синтаксис получения, вроде:
!!HE0:B3/?z25; записать биографию Оррина в переменную z25

C0/#1/$2/$3
Изменить монстров
#1 – номер слота (0...6)
$2 – тип монстра
$3 – кол-во монстров

C1/#1/$2/$3
Изменить монстров: все монстры типа # будут изменены на
$2 – тип монстра
$3 – кол-во
Пример

!!HE-1:C1/0/1/d20; (добавить 20 юнитов в каждый слот с копейщиками (d20) и заменить всех копейщиков (0) на алебардщиков (1))
Если использовать значение -1 в $2 или 0 в $3, все существа данного типа будут удалены из героя.
Вы также можете получить количество ($3). Нахождение количества позволяет быстро проверить, имеет ли герой существ данного типа, без использования циклов. Но, если герой имеет несколько отрядов, вы получите количество существ данного типа в последнем слоте с такими монстрами. Например, имеем:
Слот 0: 14 Циклопов
Слот 1: 18 Королей Циклопов
Слот 2: 50 Копейщиков
Слот 3: 100 Алебардщиков
Слот 4: 9 Циклопов
Слот 5: 49 Копейщиков
Слот 6: Пусто
Тогда !!HE-1:C1/94/?y-1/?y-2; возвратит y-1=94, y-2=9 для героя (94=Циклопы)
Но если вы используете !!HE-1:C1/96/?y-1/?y-2; возвратит y-1=0, y-2=0. (96=Чудище)

Расширение синтаксиса для команд C0 и C1:
C#/#1/$2/$3/$4/$5
$4 = количество опыта (по умолчанию 0)
$5 = модификатор опыта (по умолчанию 0)
Поддерживаемые значения для $5:
Мод 0

Используйте этот мод для добавления существ, уже имеющих опыт. Новые существа будут иметь опыт в количестве $4, но старые существа (если вы "добавляете" монстров) сохранят свой опыт. Результат количества опыта на существо можно подсчитать:
Опыт = (СтарыйОпыт*количествоСтарыхСуществ+ОпытНовых*количествоНовых)/(количествоСтарых+количествоНовых)
а) скажем, вы имеет стек Монахов с 1000 опыта (здесь и далее - на существо) и хотите добавить 5 Монахов с опытом 3000.
Результатом будет: (1000*10+300*5)/15=1666
Пример: HE...:C0/0/d/d100/5000/0;
Добавить к стеку 100 существ с опытом 5000.
б) Если вы добавляете существ разных типов, учитывается только опыт новых существ. Так, если вы имеете 10 Грифонов с опытом 1000 и хотите добавить 5 Монахов с опытом 3000. Результатом будет 3000.
Это используется во избежание проблемы, когда вы сдвигаете стеки из одного слота в другой и опыт смешивается. Скажем, вы помещаете стек Грифонов в слот 1 и затем изменяете их в Монахов, случайно забыв изменить опыт (так что это стек Монахов, хотя система думает, что это стек Грифонов). Теперь, добавляя Монахов, система будет думать, что вы изменили тип существ и возьмет только опыт новых существ.
Исключение: если стек еще не получил опыта, опыт будет усреднен, как будто вы добавили их без смены типа (как мод 1).
Примечание: не используйте параметр "d" для $4 с модом 0.
Мод 1
Похож на мод 0, за исключением того, что здесь нет проверки на тип существа. Так что она всегда работает в соответствии с формулой (выше), независимо от опыта и имеющихся у вас существ.
Пример:
Вы хотите установить существ в слоте как Копейщиков и они должны иметь опыт (на существо) предыдущих существ слота (кто бы они ни были) плюс 7 новых существ с 50 очками опыта.
!!HE...:C0/1/0/d7/50/1;
Примечание: не используйте параметр "d" для $4 с модом 1.

Мод 2
Используйте этот мод для установки опыта для всего стека. Стек будет иметь $4 опыта.
Пример: HE...:C0/0/d/d/5000/2;
Стек имеет 5000 опыта
Примечание: если вы используете параметр "d" для $4 с модом 2, опыт будет добавлен к существующему. Идентично работе мода 3.

Мод 3
Используйте этот мод для добавления опыта стеку.
Пример: HE...:C0/0/d/d/5000/3;
Стек получит добавочные 5000 опыта.
Новые существа примут опыт старых существ плюс $4. Опыт не распределяется. Так, если вы имеете стек с 10 Монахами с 1000 опыта, хотите добавить 5 монахов и добавить 3000 опыта модом 3, результатом будет: 1000+3000=4000.
Пример: HE...:C0/0/d/d5/3000/3;
Стек получит +5 существ и +3000 опыта. Вы также можете использовать этот мод для добавления существ к стеку без уменьшения опыта стека, либо изменения типа существ стека, сохраняя опыт неизменным.
Вы можете использовать этот модификатор для временного изменения типа существа, так как после возврата в обычное состояние он сохранит весь свой опыт.
!!HE...:C0/1/0/d/0/3;
!!HE...:C0/1/99/d/0/3;
!!HE...:C0/1/0/d/0/3;
Примечание: если вы используете параметр "d" для $4 с модом 3, работа идет так:
ОпытСтека = СтарыйОпыт+СтарыйОпыт+ДополнительныйОпыт. Так, если вы имели стек с 2000 опыта, и добавите таким методом 1000 опыта, получится 2000+2000+1000=5000. Затем, если вы добавите еще 1000 опыта, получите 5000+5000+1000=11000.

Мод 4
Используйте этот мод для добавления уровней опыта (рангов) стеку.
Новые существа получат опыт старых существ плюс опыт, равный рангу $4.
Опыт не распределяется. Так, если вы имели стек из 10 Монахов с 1000 опыта и хотите добавить 5 Монахов и 3 уровня опыта, результат 1000+3ранга=????
Используем следующие подсчеты:
- мы имеет E опыта
- получаем текущий уровень опыта стек L0
- получаем количество опыта E0 для уровня L0
- получаем: dE как E-E0
- мы имеем бонус уровня L
- получаем результирующий уровень L1 как L0+L
- получаем количество опыта E1 для уровня L1
- получаем финальный опыт E как E1+dE
Пример: HE...:C0/0/d/d/5/4;
Стек получит +5 уровней опыта.
Примечание: не используйте параметр "d" для $4 с модом 4.

Мод 5
Используйте этот мод, если вы улучшаете существ. Похож на мод 3, но опыт новых существ получается эквивалентным улучшению существ. Новый опыт будет старым опытом, помноженный на множитель улучшения плюс бонус опыта.
Пример: HE...:C0/0/d/d/500/5;
Стек будет иметь опыта как улучшенный + 500 опыта.
Примечание: не используйте параметр "d" для $4 с модом 5.

Мод 10
Используйте этот мод для добавления дополнительных существ с уровнями (рангами) опыта.
Это похоже на мод 0, но $4 показывает дополнительные уровни (ранги) опыта новых существ.
Пример: HE...:C0/0/d/d100/5/10;
Добавить к стеку 100 существ с уровнем опыта 5.
Примечание: не используйте параметр "d" для $4 с модом 10.

Мод 11
То же, что и мод 10, но независимый от типа существ.
Похож на мод 1, но вы добавляете существ с рангом опыта $4.
Пример: HE...:C0/0/3/d100/5/11;
Добавить к стеку 100 существ с рангом опыта 5, но также изменить их тип на Стрелков.

Мод 12
Используйте этот мод для установки уровня опыта (ранга) всему стеку.
Похож на мод 2, но $4 означает уровень опыта (ранг)
Пример: HE...:C0/0/d/d/5/12;
Стек будет иметь 5 уровней (рангов) опыта.

Мод 13
Используйте этот мод для установки эквивалентного процента опыта новому типу существ.
Похож на мод 3, но предполагает, что вы изменили тип существа и опыт новых существ берется как процент имеющегося у старых существ. Так, если вы имеет стек Монахов с X опыта и изменяете стек на Ангелов, новым опытом будет X*МаксАнгелов/МаксМонахов+dE, где МаксАнгелов это максимальный опыт Ангелов и МаксМонахов - максимальный опыт Монахов, dE - это добавляемый опыт.
Пример: HE...:C0/0/../d/1000/13;
Новый стек получит соответствующий опыт, имеющийся у старого стека, плюс 1000 опыта.
НовыйОпыт=СтарыйОпыт*ОпытНовыхСуществНа10Ранге/ОпытСтарыхСуществНа10Ранге+ЭкстраОпыт.

Мод 14
Похож на мод 13, но добавляет уровни опыта (ранги).
Пример: HE...:C0/0/../d/3/14;
Новый стек получит соответствующий опыт от старого стека плюс 3 уровня (ранга) опыта.

C2/#1/#2/#3
Добавить новый стек монстров герою:
#1 – тип монстра
#2 – кол-во монстров
#3 = 1 (спросить человека о присоединении если все слоты заняты), = 0 (использовать ИИ, т.е. если все стеки заняты, заменить менее значимый автоматически)

C#1/#2/…./#14
Изменить монстров: дать игроку выбор монстров. Используется команда C с 14 параметрами:
#1 – тип монстра 1 (-1 значит нет)
#2 – кол-во монстров 1
#3 – тип монстра 2 (-1 значит нет)
#4 – кол-во монстров 2
#5 – тип монстра 3 (-1 значит нет)
#6 – кол-во монстров 3
#7 – тип монстра 4 (-1 значит нет)
#8 – кол-во монстров 4
#9 – тип монстра 5 (-1 значит нет)
#10 – кол-во монстров 5
#11 – тип монстра 6 (-1 значит нет)
#12 – кол-во монстров 6
#13 – тип монстра 7 (-1 значит нет)
#14 – кол-во монстров 7
Пример

Это будет представлено в виде диалога для помещения существ на карту:
!!HE-1:C5/6/7/8/9/10/11/12/13/14/15/16/17/18;
!!HE-1:C1/2/-1/0/-1/0/-1/0/-1/0/-1/0/-1/0;

D
Вызвать диалог для улучшения армии героя (нет параметров)

E$
Установить/проверить/получить опыт героя в $
Таблица опыта героев

E$1/$2
Установить/проверить/получить опыт героя (дополнительный синтаксис)
$1 – очки опыта
$2 – уровень героя
Пример

!!HE-1:Ed/d2; - добавить герою 2 уровня (при этом фактического получения уровня не происходит)

E$1/$2/1
То же, что и HE:E$1/$2, но без обновления. Для стандартного синтаксиса происходит обновление, даже при простой проверке.

F$1/$2/$3/$4
Установить/проверить/получить первичные навыки
$1 = атака
$2 = защита
$3 = сила магии
$4 = знания

F?$1/?$2/?$3/?$4/1
Дополнительный синтаксис для проверки первичных навыков. Добавьте /1 в конец команды, и получите значения без влияний артефактов.
$1 = атака
$2 = защита
$3 = сила магии
$4 = знания
Вы можете использовать только синтаксис получения или проверки. Также вы можете установить значения, но ничего не произойдет.
Например, !!HE-1:F?v100/?v101/?v102/?v103/1;
Команда отнимает только стандартные значения артефактов, если артефакт был изменен с помощью скрипта, возможно некорректное получение значений.

G$
Установить начальные очки передвижения героя
$ - начальные очки передвижения
Если вы установите параметры HE:W и HE:G одинаковыми, вы сможете копать Грааль.

H$1/$2/$3/$4
Установить армию нанимаемого героя.
$1 – номер слота (0, 1, 2)
$2 – тип монстра (-1 – нет монстра)
$3 – мин. кол-во монстров
$4 – макс. кол-во монстров (может быть равно $3 для определенного числа)
Команда может установить армию героя, которого нет в таверне на данный момент ни у одного из игроков. В случае, если он находится в таверне, никаких изменений в его стартовой армии не произойдет до следующей недели.
Пример

Установить армию Оррина на Гноллов в начале игры
!#HE0:H0/99/3/3 H1/-1/2/2 H2/-1/0/0;
Команду можно выполнить в любое время игры.

I$
Установить/проверить/получить количество маны.
Используйте параметр "d" для упрощения изменения, если вы хотите добавить или отнять ману.
Пример:
!!HE-1:Id-1; заберет у текущего героя 1 очко маны
Количество маны может быть отрицательным.

I$/1
То же, что и HE:I$, но без обновления. В стандартном синтаксисе вызывает обновление даже если вы делали проверку.

K
Немедленно убить героя (к примеру, при посещении колодца - упасть в него:))

K1
То же, что и HE:K, но без обновления

L#^Портрет.pcx^
Установить портрет героя из внешних файлов
# = 1 – установить маленький портрет – файл.pcx
# = 2 – установить большой портрет – файл.pcx
# = 3 – возвратить оригинальные фото (^^)
Комментарий

Файл.pcx будет искаться в директории Data, но вы можете изменить поддиректорию. Например: ^c\name.pcx^ - в папке "c" в папке DATA. Или ^..\maps\1.1^ - в папке Maps в папке героев. Важно! Полная длина имени файла (вместе с путем к папке) не может иметь более 12 символов. Экран будет обновлен автоматически, если вы измените портреты героев.
Требования к картинке: 256 цветов; размеры: 58х64 для большой, 48х32 - для маленькой
Вы также можете установить портрет из "bitmap.lod", просто указав его имя

L0/$
Установить портрет героя номер $

L4/$
Установить оба портрета из игры, от героя $

L5/$1/$2
Установить портрет героя
$1 – текстовая переменная (z) для большой картинки (0 – не менять)
$2 – текстовая переменная (z) для маленькой картинки (0 – не менять)

M#1/$2
Установить/проверить/получить статус заклинания у героя
#1 – заклинание
$2 – значение (0 = удалить, 1 = дать (при проверке на присутствие 1 = есть, 0 = нет))
Комментарий

Для проверки, изучено/получено заклинание или именно изучено, существуют 2 метода:
- Вы можете проверить на заклинание, которое герой изучил ИЛИ имеет на свитке или артефакте с заклинанием, используя HE:M#/?$. В любом случае, переменная станет = 1, если герой имеет заклинание.
- Вы можете проверить на заклинание, которое выучено героем, но НЕ со свитка или артефакта, используя HE:M=#/1. Флаг 1 будет установлен на Истину (1), если герой изучил заклинание. Если герой знает заклинание благодаря свитку/артефакту, флаг 1 будет установлен на Ложь (0).

N?$
Проверить или получить номер героя.
Не пытайтесь установить номер героя. Это не сработает, или вызовет нестабильность.

O$
Установить/проверить/получить хозяина героя (0...7).
$ = номер игрока, контролирующего героя.
Если героя нет на карте, или он не нанят, хозяин -1.
Комментарии

Если вы попытаетесь дать героя игроку, уже имеющему 8 активных героев, команда будет просто отменена. Проверьте героев игрока для гарантии того, что передача завершится успешно.
Используя второй фантомный параметр в этой команде (например HE...:O5/1;), вы мгновенно поменяете хозяина героя. Вы можете использовать это для установки незанятого героя для защиты нейтральных монстров, но убедитесь в возвращении к хозяину -1 после битвы. Если вы измените хозяина не нанятого героя путем временного хозяина (от 0 до 7), это может быть узнано через HE:O, но BA:O будет получать значение -1.

P$1/$2/$3
Установить/проверить/получить координаты героя (если установить координаты, это будет что-то вроде телепорта). Также вы можете "вытащить" в игру ненанятого героя, указав координаты его появления и затем назначив ему хозяина.
Расширение синтаксиса:
P$1/$2/$3/$4
Переместить героя противника (не вашего цвета) со звуком и операций обновления:
если $4<>0 - переместить героя со звуком и обновлением (телепорт)
если $4 = 0 - старый стиль (герой немедленно перемещается на точку)
Старый стиль команды (без $) принимает $ = 0
Примечание: указанное число будет воспринято игрой как биты игроков, которым будет открыта точка назначения вместе с телепортированным героем.

R0/$
Установить/проверить/получить мораль героя (до следующей битвы)

R1/$
Установить/проверить/получить удачу героя (до следующей битвы)

R2/$
Установить/проверить/получить пол героя
$ = 0 – мужчина
$ = 1 – женщина

R3/$1/$2
Установить/проверить/получить доступность героя в таверне для каждого игрока.
$1 – разрешить (1) или запретить (0) героя для найма
$2 – игроки, которые могут нанять
$2 имеет значение только если вы разрешили героя.

R4/$
Установить/проверить/получить возможность расстановки войск в начале боя при наличии тактики. Пример команды - кнопка внизу справа в окне героя.
$=1 – разрешить
$=0 – запретить

R5/$
Установить максимум морали
$ = 0 – не установлена,
$ = 1 – установлена

R6/$
Установить максимум удачи
$ = 0 – максимальная удача не дана
$ = 1 – максимальная удача дана

R7/$
Установить модификатор посещенного объекта, временно меняющего параметры героя.
Только TE или выше!
$ = двоичное слово, битовая маска
Комментарий

В большинстве случаев, установка или очистка этих бит не изменит удачу, мораль, очки хода или магии - она лишь установит (либо очистит) запись о посещении героем объекта в данном периоде, например, на этой неделе, до следующей битвы, и т.д. Команда установит или очистит текст, ассоциируемый с посещением этого объекта, если вы кликнете на удаче или морали в окне героя (например, "Посещение храма +1"), но вы по-прежнему будете должны установить временную удачу или мораль командами HE:R0 и HE:R1.

Номер бита | Постройка
0 | Волшебный колодец
1 | Конюшни
2 | Буй
3 | Лебединое озеро
4 | Идол удачи (дни 1-6)
5 | Фонтан удачи (-1 удача)
6 | Водоворот
7 | Оазис
8 | Храм (дни 1-6)
9 | Кораблекрушение
10 | Склеп
11 | Заброшенный корабль
12 | Пирамида
13 | Кольцо фей
14 | Фонтан молодости
15 | Русалки
16 | Флаг битвы
18 | В лодке (устанавливайте лишь если герой на воде, иначе игра вылетит)
20 | Сирены
21 | Гробница воина
22 | Максимум удачи (как HE:R6)
23 | Максимум морали (как HE:R5)
24 | WOGSHADOWFAX (код на 1 миллион очков хода)
25 | Идол удачи (день 7)
26 | Храм (день 7)
27 | Фонтан удачи (+1 удача)
28 | Фонтан удачи (+2 удачи)
29 | Фонтан удачи (+3 удачи)

R#1/$/#2
Команда обновления (для всех команд HE:R)
#1 - номер команды R
$ - значение
#2 - флаг обновления (1 = обновить, 0 = не обновлять)
Экран приключений не обновляется автоматически после команд HE:R. Если вы хотите обновить его, используйте этот синтаксис с флагом "обновить" (#2 = 1)

S#1/$2
Установить/проверить/получить вторичные навыки
#1 – номер навыка
$2 – уровень навыка (0 – нет, 1 – базовый, 2 – продвинутый, 3 – эксперт).
Вы можете установить все вторичные навыки (28) сразу, но показываться в экране героя будут только первые 8.

S$
Проверить/установить кол-во навыков для показа.
$ - кол-во навыков, которые будут показаны (0...8)
Если вы хотите показывать лишь один навык, сначала поменяйте его позицию в слот 1 и затем ограничьте количество показываемых навыков одним с помощью этой команды.

S$1/$2/1
Установить/проверить/получить вторичный навык. Расширенный синтаксис.
$1 – номер в окне навыков героя (0 = нет, 1…8 = номер слота)
$2 – номер навыка (0…27)
Комментарий

Вы можете использовать три вариации синтаксиса:
!!HE#:S?#1/#2/1; - узнать, в каком слоте показывается навык #2 в переменную #1
!!HE#:S#1/?#2/1; - узнать, какой навык находится в слоте #1 в переменную #2
!!HE#:S#1/#2/1; - установить слот #1 на показ навыка #2
В последнем случае, если другие навыки занимают этот слот, навык останется без слота. Вы можете использовать эту команду дважды для смены позиций двух навыков.
Когда вы устанавливаете навыки этой командой, вы должны следовать следующим правилам:
- вы можете двигать любые два показывающихся навыка для смены их позиций
- вы не должны устанавливать навык для показа, если он ниже базового уровня (нет навыка)
- вы должны установить навыки для показа в определенном порядке (без пустых мест).
Следовательно, вы не можете использовать команду для скрытия уже показывающихся навыков. Вы также не можете показать навык, если герой не знает его. Попытка это сделать вызовет "фантомный" навык (обычно Базовая Мудрость), что повлечет вылет из игры при клике на ней.

T$1/$2/$3/$4/$5
Вызвать битву с одним типом монстров
$1 – X
$2 – Y
$3 – L
$4 – тип монстров
$5 – кол-во монстров
X, Y и L используются только для типа почвы и соответствующих бонусов.

U$1/$2/$3
Установить/проверить/получить позицию и радиус патруля для ИИ. Центр патруля X = $1, Y = $2 (уровень фиксирован). Радиус будет установлен в $3 (освободить героя от патруля можно установкой $3 = -1)

V#1/$2
Установить/проверить/получить, посещал ли герой объекты типа #1 ($2 используется как битовая маска (1 для первого объекта, 2 для второго, 4 для третьего и т.д.))
Расширение синтаксиса:
V#1/#2/#3
#1 – тип объекта
#2 – номер объекта (0…31)
$3 – посещено героем (1) или нет (0)
Типы объектов

0 Камень знаний (100)*
1 Башня Марлетто (23)
2 Сад просвящения (32)
3 Лагерь наемников (51)
4 Звездная ось (61)
5 Дерево знаний (102)
6 Библиотека просвещения (41)
7 Арена (4)
8 Школа магии (47)
9 Школа войны (107)
* Номер в скобках - номер типа объекта.

Пример
V0/0/0 - установить, что Камень знаний под номером 0 не был посещен героем
V6/2/0 - установить, что Библиотека Просвещения номер 2 не была посещена героем
V5/2 - установить, что все Деревья Знаний, кроме второго, будут не посещенными героем (только второе посещено)

W$
Изменить/получить очки движения героя
$ - очки для изменения (W0, Wd-10, W?i, W>=100…)
Комментарий

Это число не количество шагов, которые может совершить герой, а значительно большее число (обычно между 1500 и 2000, зависит от скорости войск), устанавливаемой игрой автоматически. Проблематично подсчитать варианты бонусов почв и пенальти (плюс Поиск Пути, Логистика, Сапоги-Скороходы и т.п.). На траве со смешанными существами 1 шаг равен 100 очкам движения героя.
В Дыхании Смерти и в WoG, герои компьютера получают дополнительные очки движения на высоких уровнях сложности. На Эксперте они получают 125 дополнительных очков, на Невозможном - 75.

W$/1
То же, что и HE:W$, но без обновления. В стандартном синтаксисе обновление вызывается даже если вы проводите проверку.

X#1/$2/$3/$4/$5/$6/$7
Изменить специальность героя. Установить/проверить/получить все спец. установки. Типы специальностей (#1):
#1 = 0 – спец по вторичному навыку

$2 = номер вторичного навыка
$3…$7 игнорируются.
#1 = 1 – спец по существам
$2 = тип существ
$3…$7 игнорируются

#1 = 2 – спец по ресурсам
$2 – тип ресурса
$3…$7 игнорируются

#1 = 3 – спец по заклинанию
$2 – номер заклинания
$3…$7 игнорируются

#1 = 4 – экстраспец по существам
$2 – тип существа
$3 – бонус атаки
$4 – бонус защиты
$5 – бонус урона
$6…$7 игнорируются

#1 = 5 – скорость
$2 = 2
$3…$7 игнорируются

#1 = 6 – спец по улучшениям
$2 = существо 1 для улучшения
$6 = существо 2 для улучшения
$7 = существо улучшенное
$3…$5 игнорируются

#1 = 7 – спец по драконам
$2 = бонус атаки
$3 = бонус защиты
$4…$7 игнорируются

#1 = 8 – экстра-ВоГ – специальность
$2 =
1 - Вуаль Тьмы
2 - Строитель
$3…$7 игнорируются

Комментарий
Вы можете использовать параметр "d" для игнорируемых или неизменяемых вами настроек:
!!HE:X8/2/d/d/d/d/d;
 или так
!!HE:X8/2;
Пример: для проверки текущих настроек используйте:
HE####:X?y5/?y6/?y7/?y8/?y9/?y10/?y11;

Y$1/$2/$3/$4
Благословления и проклятья.
$1 – номер благословления/проклятья (1…65)
$2 – сила заклятья (не используется для слепоты и блокировки слота)
$3 – продолжительность в днях
$4 – что с ним сделать (1 – дать, 2 – добавить/убавить, 0 – удалить)
!!HE...:Y0/0/0/3; - удаление всех проклятий и благословений
Комментарий

Каждый герой может иметь только одно заклятье каждого типа. Так, когда вы добавляете или отнимаете (отнимание - добавление отрицательного значения), это означает, что сила и продолжительность будут изменены на сумму старого и нового значений. Если вы удаляете проклятье, параметр силы и продолжительности не имеет значения.
Проклятье заблокированного слота. $2 - номер слота для блока (-1 = случайный слот). Если слот содержит артефакт, он будет скрыт и появится на том же месте по окончанию действия проклятья. НО: при удалении проклятья "закрытый слот" слот не разблокируется, если же использовать команду снятия всех проклятий, все в порядке.
Таблица слотов непохожа ни на одну другую таблицу, результаты получены экспериментальным путем:
0 - голова
1 - плечи
2 - шея
3 - правая рука
4 - левая рука
5 - торс
6 - правое/левое кольцо
7 - ноги
8 - разное 5
9 - баллистика (боевая машина 1)
10 - тележка с боеприпасами (б. м. 2)
11 - палатка (б. м. 3)
12 - ничего (катапульта?)
13 - ничего (книга заклинаний?)
14 и т.д. - дают в итоге баги. Чем выше число тем страшнее выглядит кукла героя :).
Если закрыть боевую машину, и она уже есть у героя, то закроется слот разное (1-3) в зависимости от номера боевой машины, причем внешне он будет выглядеть как пустой слот, но по окончанию проклятья артефакт вернется. Если во время действия проклятья "поднять" машину в инвентаре, под ней появится замок, и вы не сможете установить ее обратно.


Ресейвер HL

Опции HL: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер HL (уровень героя)

!!HL:XXXX; - контроллер уровней героя. Позволяет вам контролировать, какие навыки (первичные и вторичные) получит герой при получении нового уровня. Должно быть использовано только после триггера !?HL. Вы не можете проверить или получить предлагаемые вторичные навыки, а лишь установить их.

S$1/#2/#3
Установить первичный и вторичные навыки, которые может получить герой.
$1 – установить/проверить/получить первичный навык +1 (0…3)
#2 – установить левый вторичный навык (-2, -1, 0…27)
-2 = не изменять
-1 = нет навыка
#3 – установить правый вторичный навык (-2, -1, 0…27)
Ресейвер работает только после триггера !?HL и действует только на текущий получаемый уровень.
Пример:
!?HL-1; - получает ли любой герой уровень
!!HL:S0/-1/-1; - установить, что бонусный первичный навык – атака, и нет выбора вторичных навыков.


Ресейвер HO

Опции HO: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер HO (действия на героя)

!!HO$:XXXX; - используется для позволения или запрета взаимодействий с героем. $ - номер героя. В отличие от HE, используется для активирования или деактивирования взаимодействий героя.

D$
Запретить всем героям цвета $ (-1 – текущий) атаковать (вражеский герой) или посещать (союзник) этого героя.

E$
Разрешить всем героя цвета $ (-1 – текущий) атаковать (вражеский герой) или посещать (союзный герой) этого героя

H$
Установить подсказку для этого героя в переменно z$.

R
Разрешить всем героям атаковать (вражеский герой) или посещать (союзный герой) этого героя

S
Запретить всем героям атаковать (вражеский герой) или посещать (союзный герой) этого героя


Ресейвер HT

Опции HT: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер HT (текст подсказки)

!!HT$1/$2:XXXX; - позволяет вам установить подсказку (текст по правому клику) для всех объектов карты определенного типа и подтипа.
$1 – тип объекта (может быть переменной)
$2 – подтип (-1 = все) (может быть переменной)
Комментарий

Сначала всегда ищется подсказка для определенного объекта.
Если она не найдена, то ищется по типу и подтипу любой команды HT (W,V)
Если не найдена, то ищется по типу и любому подтипу.
Простой пример - установка текста подсказки для всех объектов определенного типа
и подтипа (без изменений):
ZVSE
!#VRz100:S^Клык летучей Мыши^;
!#VRv25:S0;
!#HT98/1:V25/0/100;

Этот пример изменяет текст подсказки всех городов Оплота на карте на "Клык
летучей Мыши" при старте игры.
Более полный пример, иллюстрирующий все три команды, представлен ниже. Поместите
этот ERM код в событие на тестовой карте и вставьте на карту три колонки трех
типов грибных зданий с четырьмя грибными зданиями в колонке:
ZVSE
!#HT63/18:V10/0/10; !#VRz10:S^Инициализация 63/18^;
!#HT63/18:V10/1/11; !#VRz11:S^Один 63/18^;
!#HT63/18:V10/2/12; !#VRz12:S^Два 63/18^;
!#HT63/18:V10/3/13; !#VRz13:S^Три 63/18^;
!#VRv10:S0;
!?OB63/18;
!!VRv10:+1;

!#HT63/14:W10/0/20; !#VRz20:S^Инициализация 63/14^;
!#HT63/14:W10/1/21; !#VRz21:S^Один 63/14^;
!#HT63/14:W10/2/22; !#VRz22:S^Два 63/14^;
!#HT63/14:W10/3/23; !#VRz23:S^Три 63/14^;
!#HT63/14:W10/4/24; !#VRz24:S^Четыре 63/14^;
!#HT63/14:W10/5/25; !#VRz25:S^Пять 63/14^;
!?OB63/14;
!!IF:W-1;
!!VRw10:+1;

!#HT63/30:P0/30; !#VRz30:S^Инициализация 63/30^;
!#HT63/30:P1/31; !#VRz31:S^Один 63/30^;
!#HT63/30:P2/32; !#VRz32:S^Два 63/30^;
!#HT63/30:P3/33; !#VRz33:S^Три 63/30^;
!#HT63/30:P4/34; !#VRz34:S^Четыре 63/30^;
!#HT63/30:P5/35; !#VRz35:S^Пять 63/30^;
!?OB63/30;
!!PO998:Nd1;

P$1/$2
Подсказка зависит от PO:N – номера
$1 – число (0…15). Если число равно числу PO:N, тогда используется переменная z$2 как текст подсказки;
$2 – номер z – переменной (1…1000), содержащей подсказку (0 = удалить)
Используйте этот метод, когда вам нужно установить подсказку для объекта, не изменяя остальные подсказки других таких же объектов.

T$
Установить подсказку для всех объектов определенного типа и подтипа в z-переменной (0 = удалить)
Вы можете установить подсказку по артефакту:
!!HT5/номер_арта:T$;
Эта подсказка будет использоваться только если не установлены другие типы подсказок.

V$1/$2/$3
Подсказка, зависящая от v-переменной
$1 – номер v-переменной
$2 – значение (0…3). Если переменная v$1 равна $2, то используем в подсказке z$3
$3 – номер z-переменной (1…1000), содержащей текст (0 – удалить)
Используйте этот метод, когда вы хотите изменить подсказку по объекту после посещения его героем.

W$1/$2/$3
Подсказка, зависящая от w-переменной
$1 – номер w-переменной текущего героя
$2 – значение. Если W-переменная текущего героя
$3 – номер z-переменной (1…1000), содержащей текст (0 – удалить)
Используйте эту команду, когда вы хотите изменять подсказку по объекту для каждого героя, кто посетил или не посетил объект.


IF ELSE END

Конструкция IF-ELSE-ENDIF
(если-иначе-конец_если)
Только TE или выше

Конструкция If-else-endif используется для установки условий без использования новых функций или тонн триггеров.

Чтобы начать секцию IF, используйте следующий ресейвер (инструкцию):
!!if&условие:;

Заметьте, что 'if' написано в нижнем регистре.
Условия - стандартные И и ИЛИ, которые вы можете и сейчас использовать в любом ресейвере. Если при выполнении скрипта значение условия ИСТИНА, выполянется дальнейшая часть. Если оно ЛОЖЬ, дальнейшая часть пропускается до нахождения начала секции ELSE или ENDIF.

Чтобы начать секцию ELSE, используйте следующий ресейвер/инструкцию:
!!el:;
'el' в нижнем регистре.
Для данного ресейвера не нужны условия.
Секция ELSE всегда ожидает IF и "привязывается" к последнему найденному в скрипте IF.

Для завершения IF или IF-ELSE секции используется следующий ресейвер/инструкция:
!!en:;
'en' в нижнем регистре.
Для данного ресейвера не нужны условия.
Секция ENDIF всегда ожидает часть IF или IF_ELSE, и "привязывается" к последнему найденному в скрипте IF или IF-ELSE.

Вы можете включать секции IF-ELSE-ENDIF друг в друга, но не глубже 10 уровней.
Каждый триггер (и функция) имеет свои IF-ELSE-ENDIF, таким образом можно превысить лимит 10 включений вызовом функций.
Когда вы вызываете функцию в какой-либо секции IF-ELSE-ENDIF, она (секция) остается активной, и сохраняет свои собственные переменные y (как и у функций).

Пример:

ZVSE
!?HM-1;
!!VRv10:S5;
!!if&v10=5:;
!!IF:M^Первый IF^;
!!VRv10:S10;
!!if&v10<>10:;
!!IF:M^Второй IF^;
!!el:;
!!IF:M^Второй ELSE^;
!!en:;
!!IF:M^Второй IF закончился^;
!!el:;
!!IF:M^Первое ELSE^;
!!VRv10:S99;
!!if&v10=99:;
!!IF:M^Третье IF^;
!!el:;
!!IF:M^Третье ELSE^;
!!en:;
!!IF:M^Третий IF закончился^;
!!en:;
!!IF:M^Первый IF закончился^;

Вы должны увидеть следующие сообщения:
Первый IF
Второй ELSE
Второй IF закончился
Первый IF закончился


Ресейвер IF

Опции IF: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер IF (менеджер флагов и сообщений)

!!IF:XXXX; - менеджер условных флагов (1-1000), вопросов, показ сообщений и картинок.
Используется для менеджмента условных флагов, вопросов к игроку, показа сообщений и картинок, выбор героя для использования w-переменных, расширенные окна диалогов.
* Команды A, R и S данного ресейвера работают только с первыми 10 флагами.
* Любой триггер и ресейвер может зависеть от максимум 16 условий.
* Флаг 1000 принимает значение "Игрок" (0 = ИИ, 1 = человек) при выполнении практически любых действий. Может быть использован во всех ресейверах и триггерах.

Примечание: поскольку ресейвер IF включает текстовые сообщения, в них не может быть использованы символы ";" и "^".
Пример:
!!IF:M^Это ошибочный текст; он содержит ^ запрещенные символы^;
!!VRz567:S^Ошибочный текст; содержит ^запрещенные символы^;
!!IF:M^Это корректный текст. Он не содержит запрещенных символов^;
См. также: доп. информация о диалоговых окнах

Axxxxxxxxxx
Установить значения первых десяти флагов. Линия XXXX содержит 10 нулей и единиц, соответственно 1 для флага, который нужно установить на Истина, и 0 для ложных
Пример:
A0100010000 – установить все флаги на 0, кроме второго и шестого. В начале игры все флаги установлены на 0

B#/$1/$2
Установка или изменение одиночного изображения или анимации для показа командой IF:P.
# - номер диалога (1…100)
$1 – номер текстовой переменной, где записано имя файла/изображения (BMP/GIF/JPG или AVI)
$2 – для AVI – повторять снова (1) или нет (0)

D#/$1/$2/$3/$4/$5/$6/$7/$8/$9/$10/$11/$12/$13/$14/$15
Установка или изменение расширенных диалогов для показа командой IF:E
# - номер диалога (1…100)
*$ = номер переменной z, в которой установлен текст для использования
$1 – титульный текст (белый) сверху диалогового окна (не более одной строки, центрирование в случае нехватки места)
$2 – левое описание (желтое) выше окна ввода (29 символов максимум, дальше обрезается)
$3 – правое описание (желтое) об окне выбора (29 символов максимум, дальше обрезается)
$4 – картинка/AVI 1 (левый), файл в «папка_героев/maps»
$5 – картинка/AVI 2, файл в «папка_героев/maps»
$6 – картинка/AVI 3, файл в «папка_героев/maps»
$7 – картинка/AVI 4 (правый), файл в «папка_героев/maps»
$8 – описание картинки 1 (при наведении мыши)
$9 – описание картинки 2 (при наведении мыши)
$10 – описание картинки 3 (при наведении мыши)
$11 – описание картинки 4 (при наведении мыши)
$12 – выбор 1 (окно ввода) – текст кнопки
$13 – выбор 2 (окно ввода) – текст кнопки
$14 – выбор 3 (окно ввода) – текст кнопки
$15 – выбор 4 (окно ввода) – текст кнопки
Комментарий

Если вы используете 0 или пустой параметр, это означает пропуск. Полный путь к файлу, включая имя (до 256 символов) может быть изменен, но помните, что он начинает обработку с Maps, поэтому можно делать так: ^../data/mypic.bmp^. Максимальный размер картинки 100*100, но может быть меньше (будет выровнена по центру автоматически). Поддерживает форматы JPG, BMP. Из видео - поддерживает небольшие AVI. Установочная информация не сохраняется при сохранении игры, так что всегда делайте установку перед использованием IF:E

E$1/$2
Показ расширенного диалога, установленного ранее командой IF:D (возможно IF:F).
$1 – номер v-переменной для сохранения выбора
$2 – номер диалога
Комментарий: переменная будет равна либо 1, 2, 3, 4 соответственно, если сделан выбор, либо -1, если нажат выход. Текст с окна ввода автоматически занесется в z1, даже если окна нет.

F$1/$2/$3/$4/$5/$6
Добавление текста подсказок в окно выбора в расширенном диалоге. Расширение команды IF:D.
#1 – номер диалога (1…100)
$2 – номер z-переменной с текстом для 1ого выбора
$3 – номер z-переменной с текстом для 2ого выбора
$4 – номер z-переменной с текстом для 3его выбора
$5 – номер z-переменной с текстом для 4ого выбора
$6 – разрешить кнопку выхода (1) или нет (0)
Комментарий: установочная информация не будет сохранена при сохранении, поэтому всегда делайте установки перед использованием команды IF:E

G#1/#2/#3/#4/#5/#6/#7/#8/#9/#10/#11/#12/#13/#14/#15/#16
Установить диалог выбора (до 12 вариантов)
#1 - тип диалога:
1 = однокнопочный (один выбор)
0 – мультикнопочный (несколько выборов)
#2 – номер v-переменной, куда занесется результат
#3 – начальный статус кнопок
#4 – номер z-переменной – титульной (верх окна)
#5 – номер z-переменной с именем 1ого предмета (0 – не показывать)
#6 – номер z-переменной с именем 2ого предмета (0 – не показывать)
…
#16 - номер z-переменной с именем 12ого предмета (0 – не показывать)
Комментарий

статус выбранного исчисляется побитно
выбор 1 = 1
выбор 2 = 2
выбор 3 = 4
выбор 4 = 8
выбор 5 = 16..
Так, все предметы будут равны = 4095. Для установки предмета 2, 4, 5, 8 и 10 значение будет 2+8+16+128=154. Все отключено = 0.
Пример:

L^Текст^
 Добавить сообщение в лог на экране. Только ТЕ или выше
L^Текст^ - добавит "текст"
L$ - добавит значение переменной z$
Комментарий

Похоже на то, что вы нажали Tab, ввели сообщение, и нажали <Enter>.
Сообщение всплывает под предыдущим.
Возможно до 20 сообщений на экране.
Каждое сообщение остается на экране 20 секунд.
Работает и в экране приключений, и в бою.
Когда вы входите или выходите из битвы, сообщение остается на экране.

M^Текст^
Показать сообщение (текст). Сообщение может содержать любые символы, кроме "^" и ";"
Пример

Расширение синтаксиса:
M0/4/^Подсказка^ - позволяет показать сообщение без картинок и кнопок. Может быть использовано для подсказок в триггерах !?CM

M1/$
Установить или получить текст сообщения
$ - номер текстовой z-переменной

N#1/#2/#3/#4/#5/#6/#7/#8/#9/#10/#11/#12/#13/#14/#15/#16
Сообщение с текстом и до 8 картинок любого типа, имеющегося в игре. Похожее вы можете увидеть, установив глобальное событие с несколькими ресурсами
Синтаксис таков:
!!IF:N...;
Если вы установите более 3 параметров, интерпретатор поймет их как тип и подтип картинок, также как и в команде IF:Q.
Вы можете установить до 8 картинок (16 параметров) и минимум 2 картинки. Диалог не показывается, это лишь подготовительная фаза. Пример:
!!IF:N3/8/10/2/11/3/13/2/17/1000/21/99/22/4;
Означает, что будут показаны: 3/8 – ресурс - сера, количество 8, следующий – флаг коричневого игрока (10/2), потом Удача и т.д. Как вы можете увидеть, здесь 7 картинок.
Другой синтаксис:
Если вы имеете менее четырех параметров, интерпретатор поймет это как команду для показа диалога, который был приготовлен предыдущим синтаксисом.
Единственный параметр здесь - это текст для показа:
!!IF:N^Текст^; - прямой текст, или
!!IF:N1/$; - z-переменная (стандартная или локальная)
Есть одно ограничение: текст не должен содержать много строк. Пример максимального кол-ва строк:
!!IF:N^ Это
Ооооо…
…
…
…
чень
дли…
…
…
нный
текст^;
 Если будет больше строк, игра вылетит.

P#
Показа одиночного изображения/анимации в расширенном окне диалога, предварительно установленном командой IF:B
# - номер диалога

Q#^Вопрос^
Спросить игрока (вопрос). Ответ (да = 1, отмена = 0) заносится во флаг # (1…1000). Вопрос может содержать любые символы, кроме "^" и ";"
Пример

Q#1/#2/#3/#4^текст^
Показать сообщение или вопрос с одной картинкой
#1 – номер флага
#2 – тип картинки
#3 – подтип картинки
#4 – тип сообщения
1 – сообщение
2 – вопрос типа да/нет (устанавливается во флаг)
4 – сообщение без кнопок (используйте этот формат с триггером !?CM для сообщений по правому клику и используйте значение -1 для типа и подтипа картинки, если она вам не нужна)
7 – выбор одной из картинок:
0 = правая
1 = левая
10 – выбор из двух картинок + кнопка отмены: результат будет занесен в v-переменную #. Она сможет принять такие значения:
0 = нажат выход
1 = левая картинка выбрана
2 = правая картинка выбрана
Примечание: вы должны использовать параметр ^текст^, или команда не будет работать. Если вы не хотите использовать текст, используйте ^^.
Пример

Q#1/#2/#3/#4/#5/#6^текст^
Показать сообщение или вопрос с двумя картинками
#1 – номер флага
#2 – тип картинки 1
#3 – подтип картинки 1
#4 – тип картинки 2
#5 – подтип картинки 2
#6 – тип сообщения
1 – сообщение
2 – вопрос типа да/нет (устанавливается во флаг)
4 – сообщение без кнопок (используйте этот формат с триггером !?CM для сообщений по правому клику и используйте значение -1 для типа и подтипа картинки, если она вам не нужна)
7 – выбор одной из картинок:
0 = правая
1 = левая
10 – выбор из двух картинок + кнопка отмены: результат будет занесен в v-переменную #. Она сможет принять такие значения:
0 = нажат выход
1 = левая картинка выбрана
2 = правая картинка выбрана

Примечание: вы должны использовать параметр ^текст^, или команда не будет работать. Если вы не хотите вводить текст, используйте ^^.
Пример

Q#1/#2/#3/#4/#5/#6/#7/#8^текст^
Показать сообщение или вопрос с тремя картинками
#1 – номер флага
#2 – тип картинки 1
#3 – подтип картинки 1
#4 – тип картинки2
#5 – подтип картинки 2
#6 – тип картинки 3
#7 – подтип картинки 3
#8 – тип сообщения
1 – сообщение
2 – вопрос типа да/нет (устанавливается во флаг)
4 – сообщение без кнопок (используйте этот формат с триггером !?CM для сообщений по правому клику и используйте значение -1 для типа и подтипа картинки, если она вам не нужна)
7 – выбор одной из картинок:
0 = правая
1 = левая
10 – выбор из двух картинок + кнопка отмены: результат будет занесен в v-переменную #. Она сможет принять такие значения:
0 = кнопка Отмена
1 = левая картинка выбрана
2 = правая картинка выбрана

Примечание: вы должны использовать параметр ^текст^, или команда не будет работать. Если вы не хотите вводить текст, используйте ^^.

Вместо любого ^текст^ можно использовать номер z-переменной. Синтаксис таков:
Q.../#/z#;
где # - тип сообщения, z# - номер z-переменной с текстом.

Sxxxxxxxxxx
Установить некоторые флаги на истину (синтаксис, обратный R)
Пример:
S0100010000 – установить второй и шестой на 1, остальные оставить без изменений.

Rxxxxxxxxxx
Установить некоторые флаги на ложь (синтаксис, обратный S)
Пример:
R0100010000 – установить второй и шестой флаг на 0, остальные оставить без изменений.

V#1/#2
Установить условный флаг #1 (1…1000) в значение #2 (1 или 0)

W$
Каждый герой имеет 200 индивидуальных переменных.
Они называются w# (# = 1…200)
Они могут быть использованы везде, где и переменные f...t.
Вы должны установить героя, у которого и будут проверяться эти значения ($ = 0...155, -1 = текущий)
!!IF:W-1; - текущий герой
Каждый раз, когда вы применяете эту команду, вы обращаетесь к переменным определенного героя.

X$
Задать игроку вопрос Сфинкса
$ - номер вопроса (-1 – случайный)
Комментарий

Происходит вызов диалогового окна со Сфинксом. Все вопросы и ответы берутся из файла ZSphinx.txt. Если у вас нет TxtEditor, вы можете использовать CmdEditor для каких-либо добавлений. Первая колонка - вопросы, вторая - ответы. Сейчас совпадение написанного игроком с ответом означает корректность ответа. Флаг 1 устанавливается на истину (1), если ответ правилен, на ложь (0), если неправилен.

Дополнительная информация для ресейвера IF

В ERM-сообщениях (M и Q – команды) вы можете использовать специальный синтаксис:
“%%” -> “%”
“%F#” -> текущее значение флага #
“%Vf”…”%Vt” -> текущее значение переменной f…t
“%W1”...”%W200” -> текущее значение переменной w
“%X1”...”%X16” -> текущее значение параметра функции
“%Y1”...”%Y100” -> текущее значение локальных переменных
“%Z1”...”%Z500” -> текущее значение текстовой переменной
“%$macro$” -> значение макро-переменной
“%Dd” -> текущий день недели
“%Dw” -> текущую неделю
“%Dm” -> текущий месяц
“%Da” -> текущий день с начала игры
“%Gc” -> цвет текущего игрока (текстом)

Просмотр названия
Иногда вы будете знать номер монстра, артефакта, здания, вторичного навыка или заклинания, но не будете знать его имени (особенно при случайной генерации). В таких ситуациях используйте команду просмотра имени ресейвера UN. Эта команда позволит вам ввести номер и получить имя, записанное в z-переменную, которую можно включить в диалог. Для деталей см. ресейвер UN:N.

Интерпретация значений в IF:Q
Игра "переводит" некоторые значения в IF:Q немного по другому: отрицательные значения как "кол-во в день", поэтому таким образом вы не можете показать отрицательное кол-во золота. Но. Если вы отнимете от числа еще -100000, то все будет работать корректно.
Так:
!#IF:Q1/6/200/1^Сообщение^; - золото: 200
!#IF:Q1/6/-200/1^Сообщение^; - золото: 200 в день
!#IF:Q1/6/-100200/1^Сообщение^; - золото: -200
Также для денег:
!#IF:Q1/36/-100/1^Сообщение^; - золото: 100 в день
!#IF:Q1/36/-100100/1^Сообщение^; - золото: -100
А у монстров вы можете задавать количество:
подтип картинки = кол-во монстров*65536 + тип монстра.
!#IF:Q1/21/327686/1^Сообщение^; - 5 мечников (65536*5 +6)
!#IF:Q1/21/65542/1^Сообщение^; - 1 мечник (65536*1 +6)
!#IF:Q1/21/6/1^Сообщение^; - мечник

Картинки

Название | Тип | Подтип
Ресурс | Тип (0...7) | Количество
Артефакт | 8 | Номер артефакта
Заклинание | 9 | Номер заклинания
Флаг | 10 | Номер флага (8 - светло-оранжевый флаг с подписью "Человек или компьютер")
Удача (позитивная) | 11 | + удачи
Удача (нейтральная) | 12 | Не имеет значения
Удача (отрицательная) | 13 | - удачи
Мораль (позитивная) | 14 | + морали
Мораль (нейтральная) | 15 | Не имеет значения
Мораль (отрицательная) | 16 | - морали
Опыт | 17 | Количество
Вторичный навык | 20 | Навык + уровень
Монстр | 21 | Тип монстра
Здание в городе | 22...30 (в зависимости от типа города) | Номер строения
Первичный навык | 31...34 (прибавьте к 31 номер нужного) | Количество
Баллы заклинаний | 35 | Количество
Золото | 36 | Количество


Ресейвер IP

Опции IP: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер IP (сервис сетевой игры)

!!IP:XXXX; - сетевой сервис для битвы.
См. также: триггер IP
Описание

Теперь во время сражения вы можете передавать значения v-переменных другому компьютеру и вызывать функции с его стороны.
Скажем, вы запускаете скрипт, подчиняющийся игроку (например, разделение стеков). Скрипт запускается на одном компьютере, так как это реакция на действие человека (клик мышью). Так что все, что вы заменяете на своей стороне, не будет изменено на другом компьютере.
Теперь вы сможете передать все изменения или значения другому компьютеру, не запуская там самого скрипта.
Пример:
На одной стороне вы запускаете скрипт по действию мыши:
...
!!VRv1234:S999;
На другом компьютере v1234 будет все еще хранить старое значение. Для исправления этого используйте:
...
!!VRz1234:S999;
!!IP:V1234/1234;
Последняя команда немедленно отошлет значение v1234 к другому компьютеру.
Теперь ко второй части проблемы. Скажем, вы используете некоторый специфический тип команды, имеющий какой-то эффект на поле боя (например, вы колдуете заклинание с помощью ERM).
Опять же, если это будет сделано только на одном компьютере, возникнет недоразумение, так как данного действия на другом компьютере не произошло. Теперь вы можете использовать удаленный вызов для таких случаев. Это значит, вы сможете отдаленно вызвать функцию на другом компьютере.
Передаются все 16 параметров.
Пример:
На одной стороне вы имеете:
...
!!BMv10:Mi/y5/5;
Для правильного выполнения этой команды вами должны быть произведены некоторые изменения:
...
!!BMv10:Mi/y5/5;
!!FU12345:Dv10/i/y5/5;
!?FU12345;
!!BMx1:Mx2/x3/x4;
Это все. Как это работает? FU:D немедленно передает все параметры x на другой компьютер и вызывает функцию 12345 там. так команда BMv10:M... запускается на одном компьютере, и BMx1:M... на другом. Если вы все правильно передали, то увидите тот же самый эффект на обеих сторонах.
Обратите внимание, что вы можете передать некоторые переменные командой !!IP:V и затем вызвать FU:D для передачи 16 x-параметров другой стороне.
Теперь пример, где вы можете проверить:
********
ZVSE
!?BG0;
!!IF:M^Привет!^;
!!VRv99:S99; !!VRv100:Sv100; !!VRv101:S101;
!!IP:V99/100;
!!FU123:D1/2/3/4/5;
!?FU123;
!!IF:M^V99 = %V99, V100 = %V100, V101 = %V101, X1 = %X1, X2 = %X2, X3 = %X3, X4 = %X4, X5 =
%X5^;
 ********
Вы увидите сообщение "Привет!" при любом действии стека, затем увидите сообщение
"V99=99, V100=100, V101=0, X1=1, X2=2, X3=3, X4=4, X5=5".
Если вы продолжите, вы можете заметить, что в следующий раз сообщение будет таким: "V99=99,
V100=100, V101=101, X1=1, X2=2, X3=3, X4=4, X5=5". Как видите, v101 изменилось. Это потому, что сначала вы посылаете v99 и v100 через сеть и вызываете функцию, которая показывает сообщение (поэтому v101 = 0). Но когда триггер BG0 срабатывает у защитника, и v101 будет установлен на 101.
Этот пример - только пример, потому что в скрипте
!?BG0;
!!IF:M^Привет!^;
!!VRv99:S99; !!VRv100:S100; !!VRv101:S101;
 будет работать одинаково над обеими сторонами, но если вы запускаете скрипт как реакцию на действие игрока (клики мыши вообще), вы должны продумать, как передать изменения другой стороне.

D$
Установить игрока для передачи информации через !!IP. $ - номер игрока (-1 = все).
Комментарий

Вы можете передать переменные и вызвать определенные функции не только в сражении, но и на карте. Поэтому вы должны установить игрока, которому посылаете значения этой командой. Она работает тем же путем, что и w-переменные героя. Так, если вы установите !!IP:D, оно будет таковым, пока вы (или кто-либо еще) не измените значение. Обратите внимание, что если вы сохраняете и затем загружаете игру, игрок - приниматель становится не определен, поэтому установите эту команду в каждом триггере, посылающем данные. Также обратите внимание, что если вы посылаете всем игрокам (-1), все посланные переменные и вызванные функции будут запущены на всех PC в игре, включая самого себя. Сначала пробежит всех игроков по очереди, и последний игрок перенаправит на инициатора. Это хороший способ сообщить всем сторонам об каких-либо изменениях.

F$1/$2
Отправить флаги стороне оппонента
$1 - номер первого флага для передачи
$2 - номер последнего флага для передачи

R
Перезапустить случайный генератор на обеих сторонах на одну последовательность

V$1/$2
Отправить v-переменные стороне оппонента
$1 - номер первой v-переменной для передачи
$2 - номер последней v-переменной для передачи

W$1/$2/$3
Отправить W-переменную героя стороне оппонента
$1 - номер героя
$2 - первая w-переменная для передачи
$3 - последняя w-переменная для передачи


Ресейвер KT

Опции KT: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер KT (дерево знаний)

!!KT#1/#2/#3:XXXX; - дерево знаний в X Y L. Дерево знаний – тип 102.

N$
Номер дерева знаний (0…31)

S$
Тип оплаты
$ = 0 (свободное, бесплатно)
$ = 1 (2000 золота)
$ = 2 (10 драг. камней)


Ресейвер LE

Опции LE: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер LE (локальное событие)

!!LE#1/#2/#3:XXXX; - локальное событие в X Y L. Используется для изменений параметров события в определенных координатах карты.
Расширение синтаксиса:
!!LE$:XXXX; - координаты в переменных v[$], v[$+1], v[$+2]
См. также: триггер LE
Комментарий

Если событие было установлено на «удалить после первого посещения», после его посещения вы не сможете вернуть его к жизни. Оно полностью исчезло.
Теперь существует проверка, есть ли привязанный на событие ERM код. Если он существует, флаг 999 устанавливается на 0 и выполняются все команды.
Если же его нет, флаг 999 устанавливается на 1 и все команды LE пропускаются.
Вы можете использовать этот ресейвер для редактирования Ящика Пандоры.
Примечание: вы все еще не можете изменить количество вторичных навыков, артефактов или заклинаний, установленных в событии, а только изменить существующие.

A#1/$2
Установить/проверить/получить артефакт $2 в позиции #1 в таблице артефактов, получаемых в событии. Вы можете только изменить артефакт на другой. Если на позиции нет артефактов, то ничего и не произойдет.
Расширенный синтаксис:
A$ - получить кол-во артефактов

B
Бонус артефактов
B1/$ - получить/проверить кол-во артефактов в таблице артефактов бонусного листа (нельзя установить)
B2/#/$ - установить/проверить/получить артефакт $ на позиции # (0…) в таблице бонусов.
B3/$ - добавить артефакт $ в конец бонусной таблицы
B4/$ - удалить артефакт на позиции $ в таблице бонусов
Комментарий

Есть, конечно, команда LE:A, но с ее помощью можно только ИЗМЕНЯТЬ артефакты в бонусной таблице. Эта новая команда позволяет вам устанавливать, добавлять и удалять артефакт из локальных событий и ящиков Пандоры.
Вы можете сделать практически неограниченную таблицу артефактов для любого локального события или ящика Пандоры. Вы не можете установить свиток как артефакт, игра «поймет» это не правильно, и вылетит.

C#1/$2/$3
Установить/проверить/получить получаемых монстров на позиции #1 (0…6) типа $2 и кол-ва $3

D#1/#2
Разрешить/запретить событие для игроков-людей.
#2 = 1 – запретить
#2 = 0 – разрешить
Для игрока #1 (0…7)

E$
Установить/проверить/получить кол-во опыта в $

F$1/$2/$3/$4
Установить/проверить/получить четыре первичных навыка

G#1/$2/$3
Установить/проверить/получить охранников в позиции #1 (0…6) типа $2 и кол-ва $3
Команда только устанавливает стражников, но не включает их.

I#
Запретить/разрешить событие для ИИ
# = 0 – запретить
# = 1 – разрешить

L#
Отменить (# = 1) или не отменять (# = 0) событие после первого посещения

M^текст^
Установить текст сообщения. Может содержать любые символы, кроме "^" и ";"

M#
Установить текст сообщения из глобального события номер #

M-1
Не показывать сообщение на экран

Mz#
Установить/получить текст сообщения из текстовой переменной

M1/$
M1/-1
Установить и получить текстовые параметры.
Вы можете использовать это, если команда M использовалась для установки послания.
M1/$ - номер текстовой переменной в $
M1/-1 – отменить сообщение (восстановить по умолчанию)

N#1/$2/$3
Установить/проверить/получить вторичный навык $2, уровень $3 (0 = базовый, 1 = продвинутый, 2 = эксперт) на позиции #1 в таблице вторичных навыков, даваемых событием. Вы можете только ИЗМЕНИТЬ навык на другой. Если нет навыка на позиции, ничего не изменится.
Расширенный синтаксис:
N$ - получить кол-во вторичных навыков

O$
Установить/проверить/получить мораль (-3…3)

P$
Установить/проверить/получить баллы заклинаний (м.б. отрицательным)

R#1/$2
Установить/проверить/получить кол-во ресурсов #1в $2 (м.б. отрицательным)

S#1/$2
Установить/проверить/получить заклинание $2 в позиции #1 в таблице заклинаний, даваемых событием. Вы можете только ИЗМЕНИТЬ заклинание. Если нет заклинания на позиции, нчиего не изменится.
Расширенный синтаксис:
S$ - получить кол-во заклинаний

U$
Установить/проверить/получить удачу (-3…3)

X#
Активировать стражников, если # не ноль, иначе - выключить их.


Ресейвер LN

Опции LN: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер LN (навес)

!!LN#1/#2/#3:XXXX; - навес в X Y L. Погреб – тип 39.

B$1/$2
Бонус:
$1 – тип ресурса
$2 – кол-во ресурса

N$
Номер погреба (0…31)


Ресейвер MA

Опции MA: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер MA (характеристики монстров)

!!MA:XXXX; - общее изменение характеристик монстров определенного типа для всех монстров на карте этого типа. Для всех команд можно установить, проверить и получить значения.
Примечание: не устанавливайте цену золотом (номер ресурса - 6) на 0. Если вы установите более одного доп. ресурса (0...5), будет использоваться только первый. Если вы хотите изменить второй ресурс (в дополнение к золоту) с первого на второй, установите предыдущий ресурс на 0.
Пример:
C1/2/3 - установить цену в 3 руды (золото+руда)
C1/2/0 C1/05 - установить цену в 5 дерева и 0 руды (золото+дерево)

A#/$
 Монстр # имеет атаку $

B#/$
 Монстр # (заклинатель) может колдовать свое заклинание $ раз за битву

C#1/#2/$
 Монстр # стоит : ресурс #2 в количестве $

D#/$
 Монстр # имеет защиту $

E#/$
 Монстр # имеет максимальный урон $

F#/$
 Монстр имеет боевую ценность $ (используется для ИИ)

G#/$
 Монстр # имеет скорость прироста $

H#/$
Максимальное количество монстра # на карте в начале игры равно $

I#/$
 Монстр # имеет ценность $ для ИИ

L#/$
 Монстр # имеет уровень $

M#/$
 Монстр # имеет минимальный урон $

N#/$
 Монстр # имеет $ выстрелов

O#/$
 Монстр # принадлежит замку $
Примечание: -1 = нейтрал

P#/$
 Монстр # имеет $ здоровья

R#/$
Монстр # имеет дополнительный прирост $
Комментарий: имеется ввиду прирост при постройке дополнительных зданий. К примеру, Бастион Грифонов дает +3 Грифона. Изменяя данное значение Грифонам, вы добьетесь изменения прироста после постройки Бастиона.

S#/$
 Монстр # имеет скорость $

U#/$
 Монстр # может улучшаться в монстра $.
$ = -2 – не улучшается
$ = -1 – использовать обычное улучшение
Комментарий

Вы можете установить ряд улучшений:
!#MA:U0/1 U1/2 U2/3 U3/4...
Это выглядит прекрасно и вы можете улучшать их всех. Если вы установите круговое улучшение двух существ, игрок сможет выбрать лучшее существо. Вы можете использовать круговую функцию (это быстрее) для прохода по всем существам и установки улучшений для каждого (в следующее существо).
В городе вы можете улучшать только то, что можете обычно там улучшить. Так, вы можете установить улучшение Копейщиков в другое существо, но сможете улучшить их только в Замке или форте на холме. Если вы установите улучшение Алебардщиков в другое существо, улучшить их сможете только в форте на холме, так как дальнейшее улучшение для них не разрешено в городах.

V#/$
Минимальное количество монстра # в начале игры на карте равно $

X#/$
Установить флаг $ монстру #. Используйте с большой осторожностью. .
Пример:
!?OB3/6/0;
!!IF:M^Теперь Лучники стреляют дважды^;
!!MA:X2/?i;
!!VRi:+32768;
!!MA:X2/i;


Ресейвер MC

Ресейвер MC (макросы)

!!MC#:S@Var@ - установить макрос. Используется для назначения текстового имени переменной.
Применимо к переменный f...t, v# и w#.
Замечание: сперва вы должны установить макрос инструкцией перед использованием макро-имени:
!#MCv100:S@Var100@;
Переменная v100 теперь имеет второе имя «Var100». Длина макро-имени ограничена восемью символами. Вы можете использовать имя длиннее, но только первые 8 символов будут использоваться для поиска переменной.
Вы можете изменить имя макроса в любое время, если вы установили его не в инструкции, а в ресейвере.
Тогда вы можете использовать макро-имя в любом месте, где вы можете использовать переменную. Он должен быть заключен в “$”.
Пример:
!!HE-1:P?$Var100$/?v1000/?v999;
!!IF&$Var100$=v1000/v100=5:…;
Вы можете установить макро-имя как переменную z.
Пример:
!!IF:M^Это %$игрок$ и его значение %$знач$^;
Для использования макро–имени в сообщении они заключается в $$ и впереди имеют знак %.


Ресейвер MF

Опции MF: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер MF (физическое повреждение)

!!MF:XXXX; - ресейвер для контроля получаемого стеком физического повреждения.
См. также: триггер MF
Комментарий
Вы можете проверить номер стека для получения детальной информации об этом стеке. Вы можете установить урон командой F$. Вы можете игнорировать урон полностью, используя команду E0.
Для симулирования способности блока с ERM, вы можете использовать триггер !?MF, подсчитать шанс срабатывания блока, отменить повреждение командой !!MF:E0, показать анимацию блока командой !!BM:V84 (а также установить флаг "отряд принял защитное положение" для большей реалистичности) и добавить соответствующее сообщение в лист ведения боя командой !!MM:Sz#.

D$
Текущий урон, который получит отряд

E$
Разрешить (1) или запретить (0) получение повреждения. Разрешено по умолчанию. Отмена будет означать, что стек не получит урона.

F$
Откорректированный урон, который получит стек

N$
Номер стека (0…41), получающего урон. Может использоваться для получения более детальной информации командой !!BM

W$
Проверить/получить тип атаки:
$ = 2 – выстрел башни
= 1 – ров
= 0 – другой


Ресейвер ML

Опции ML: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер ML (ветряная мельница)

!!ML#1/#2/#3:XXXX; - ветряная мельница в X Y L. Тип 112.

B$1/$2
Тип ресурса и количество
$1 – тип
$2 – кол-во


Ресейвер MM

Опции MM: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер MM (текст в битве)

!!MM:XXXX; - ресейвер для получения/установки/проверки текста в битве или получения позиции мыши на поле боя.
См. также: триггер MM
Пример

!?MM0;
!!MM:M?z5;
!!MM:D?i;
!!VRz10:S^Позиция: %Vi Сообщение: %Z5^;
!!MM:Mz10;
Сообщение будет показано, когда вы сдвинете мышь на поле боя.

D$
Получить/проверить текущую позицию (код) курсора
$ - номер позиции
Вы можете установить это значение, но ничего не произойдет.

Mz#
Установить/проверить/получить сообщение, показываемое в окне текста
z# - номер текстовой переменой для установки или записи текста сообщения.

Sz#
Добавить сообщение из текстовой переменной в текст битвы


Ресейвер MN

Опции MN: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер MN (шахты)

Примечание: Маяк и Шахта (и Заброшенная шахта) обладают одинаковыми контрольными словами, и маяк можно редактировать через !!MN. Его ресурс (MN:R) имеет номер 100. Если поставить номер 0..6, то маяк начнет приносить ресурсы, как шахта :) Охрана маяка игнорируется. Также интересно менять охрану заброшенной шахты - после стандартного сообщения о троглодитах будет происходить драка с заданными монстрами в заданных количествах. Если охрану убрать, то шахта берется без боя. А если поставить шахте ресурс 7, то при взятии будет выводиться сообщение про золото и картинка мифрила с подписью "-33652069". К сожалению, мифрил добавляться не будет.

!!MN#1/#2/#3:XXXX; - шахта в X Y L. Шахты - тип 53 и 220.

M#1/$2/$3
Изменить/проверить охранников
#1 – номер слота (0…6)
$2 – тип монстра (-1 – пустой слот)
$3 – кол-во монстров

O$
Установить/проверить хозяина
Игрок (0…7)
-2 = текущий игрок
-1 = никто

O$/1
То же, что и MN:O$, но без обновления

R$
Установить/проверить тип производимого ресурса (0…6)

R$/1
То же, что и MN:R$, но без обновления


Ресейвер MO

Опции MO: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер MO (монстр на позиции)

!!MO#1/#2/#3:XXXX; - параметры монстра в X Y L.
Расширение синтаксиса 1:
!!MO#1/#2/#3/#4:XXXX; - монстр в координатах X Y L, четвертый параметр используется для отмены проверки существования монстра в начале карты.
Расширение синтаксиса 2:
!!MO$:XXXX; - монстр в координатах: v[$], v[$+1], v[$+2]
Используется для изменения параметров монстров в определенной позиции.
Комментарий

Теперь команды MO#1/#2/#3 и MO#1/#2/#3/1 одинаковы по смыслу. В обоих случаях присутствие монстра на карте не обязательно, но формат остался для совместимости.
Команды M, B и A могут быть использованы лишь для измененных в редакторе монстров (сообщение, ресурс или артефакт). Вы не можете установить сообщение монстру, но вы можете изменить агрессивность, количество и т.п. Если вы попытаетесь это сделать, то получите сообщение об ошибке, для избегания этого используете статусы опций UN:P904 либо значения OB:C для получения контрольного числа, и обработки его значения. Помните, что вы можете настроить все параметры монстра, если он уже помещен на карту. Для всех монстров, помещаемых командой UN:I, вы можете применить любую команду.

A$
Установить/проверить/получить артефакт монстров в $

B#1/$2
Установить/проверить/получить кол-во ресурса #1 в $2 (м.б. отрицательным)

G$
Установить/проверить/получить кол-во монстров в $

M^Текст^
Установить послание. Длина текста не может быть длинней оригинального. Может содержать любые символы, кроме ^ и ;

M#
Установить текст из глобального события номер #

M-1
Не показывать сообщение, указанное в редакторе

Mz#
Установить/получить текст сообщения в текстовую переменную

M1/$
M1/-1
Установить и получить текстовые параметры.
Вы можете использовать эту команду, если команда M использовалась для установки послания.
M1/$ - номер текстовой переменной в $
M1/-1 – отменить (восстановить по умолчанию) сообщение

O#
Установить/проверить/получить, может ли увеличиваться отряд
# = 1 – кол-во не увеличивается
# < > 1 – кол-во увеличивается

R$/#
Установить/проверить/получить агрессивность
$ - уровень агрессии (установить/проверить/получить)
# - фантомный параметр (не используется, но нужен для различия от старого синтаксиса), может принимать любые значения
Уровни агрессии

0 – последователи (всегда присоединятся)
1…7 – дружелюбные
1…10 – нейтральные
4…10 - злобные
10– агрессивные (никогда не присоединятся)
Старый синтаксис: MO:R0 (присоединятся) или MO:R1 (не присоединятся).

U#
Установить/проверить/получить, может ли монстр сбежать.
# = 1 – не может
# < > 1 – может


Ресейвер MP

Опции MP: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер MP (mp3 – контроль)

!!MP:XXXX; - mp3 – контроль.
Используется для установки своего mp3-файл для проигрывания в игре
Список MP3-файлов игры

S
Играть звук
S#/^Имя_файла^
Имя_файла – название mp3-файла, или
S#/$
$ - номер текстовой переменной (z)
# - 1…199 (это номер вашего трека) (треки игры)
Комментарий: не включайте в название расширение ".mp3", оно добавится автоматически.
Принцип использования: при каком-либо действии в игре проигрывается определенная музыка (см. Список MP3), и заменять ее можно данным ресейвером. Например, Замку соответствует мелодия №1. Заменяем ее так:
!!MP:S1/^..\data\Code^; - и вместо музыки Замка там будет звучать ваш файл в папке MP3. Изменяйте путь к файлу, если нужно:
!!MP:S1/^Code^; - файл в основной папке Героев
!!MP:S1/^..\maps\code^; - файл в папке Maps
Стандартные mp3-треки работают корректно, а вот со своими наблюдаются неполадки. Очевидно, что у них должны быть какие-то ограничения, но они нигде не указаны.


Ресейвер MR

Опции MR: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер MR (сопротивление магии стеков)

!!MR:XXXX; - ресейвер для контроля сопротивления магии ERM. Вы можете вызвать этот ресейвер ТОЛЬКО из триггера !?MR.

D$
Базовый (без сопротивления) урон
Если вы измените его после триггера !?MR0, ваше значение будет использовано как базовый урон заклинания для подсчета сопротивления существа.

F$
Конечный (откорректированный) урон
Если вы проверите его в !?MR0, он должен равнять значению D. Установка данного значения в триггере !?MR0 не повлияет на урон, так как урон подсчитывается после данного триггера. Полезно использовать эту команду в триггере !?MR1. Этим путем вы можете игнорировать обычное WoG-сопротивление и установить свое значение.

M$
 Тип монстра
Обычно вы можете использовать это для получения номера существа, но также можете установить значение для "симуляции" сопротивления (фактически, сопротивляемость есть только у Големов и Элементалей)

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


Ресейвер MT

Опции MT: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер MT (обелиск)

!!MT#1/#2/#3:XXXX; - обелиск в X Y L. Обелиск – тип 57.

N$
Номер обелиска (0…31)


Ресейвер MW

Опции MW: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер MW (бродячие монстры)

!!MW#:XXXX; - используется для активирования или деактивирования взаимодействий с бродячими монстрами.
 # - номер бродячего монстра
Бродячие монстры имеют радиус поиска 20 (можно установить командой A4). В начале каждого хода бродячие монстры куда-то идут/атакуют.
См. также: триггер MW

Пример

ZVSE
!#TM1:S1/1/1/2;
!?TM1;
!!MW:P4/8/0/9/?v100; !!IF:M^v100:%V100^;
!!MWv100:A2/0/0/0A3/1/1/0/1/1/0;
!!MW:P1/8/0/10/?v110; !!IF:M^v110:%V110^;
!!MWv110:A2/10/10/0A3/1/1/1/0/1/0;
!?MW0;
!!IF:M^MW0:%V997^;
!?MW1;
!!IF:M^MW1:%V997^;

A1/x/y/l
Установить/проверить/получить (прыжок при установке) бродячего монстра в позицию X Y L

A2/x/y/l
Установить/проверить/получить точку назначения для бродячего монстра
Комментарий: для бродячего монстра, ищущего героя, x – это номер героя.

A3/$1/$2/$3/$4/$5/$6/$7
Менеджмент бродячих монстров
$1 - Установить/проверить/получить флаг: вызвать триггер (1) !?MW0 или нет (0), когда монстр достигнет точки назначения/перед атакой целевого героя.
$2 - Установить/проверить/получить флаг: вызвать триггер (1) !?MW1 или нет (0), если монстр был убит (когда бродячий монстр убит, он больше не имеет номера, и этот номер может быть установлен другому монстру при создании)
$3 - Установить/проверить/получить флаг: идти к точке назначения
$4 - Установить/проверить/получить флаг: ищет ли монстр какого-либо героя
$5 - Установить/проверить/получить флаг: будет ли монстр стоять после прибытия на точку/к герою. Сейчас монстры, достигшие, атаковавшие и победившие героя, становятся свободными. Если вы установите этот флаг, монстр останется стоять до следующей команды. Для свободных существ включенный данный флаг означает стоять на месте.
$6 - Установить/проверить/получить флаг: поиск определенного игрока (цвет)
Этот флаг используется только для свободных монстров. Если его установить, точка назначения должна содержать номер цвета игрока вместо X. Если он не -1 (все цвета), свободные бродячие монстры будут искать героев и замки только этого определенного игрока.
$7 - Установить/проверить/получить флаг: может двигаться по земле и/или воде
0 = обычно (только по пустому пространству)
1 = только по воде.
2 = может двигаться и там, и там

A4/#
Установить/проверить/получить радиус (#) для поиска (по умолчанию 20)

Cx/y/l/?$
Проверить, есть ли бродячий монстр в позиции
x/y/l – позиция для проверки
Переменная $ будет содержать номер бродячего монстра (1…) или 0, если его там нет.

E?$
Проверить на существование бродячего монстра #. Если не существует, $=0, если существует, $ = номеру бродячего монстра.

Mx/y/l/?$
Сделать монстра бродячим
x/y/l – локация с существующим монстром
$ - переменная примет значение номера бродячего монстра. Если $ равна 0, значит, бродячий монстр не был создан по какой-либо причине.
Вы также можете установить монстра через ресейвер MO (по позиции) после генерации бродячего монстра через !!MW:P.

Px/y/l/#/?$
Установить (сгенерировать) монстра на позиции
# - тип монстра
$ - в переменную занесется номер бродячего монстра (для дальнейших операций)
Для этой команды номер бродячего монстра (!!MW#) не нужен, т.к. он еще не известен.


Ресейвер OB

Опции OB: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер OB (объекты)

!!OB#1/#2/#3:XXXX; - ресейвер объекта в X Y L, используется для активирования, деактивирования, установки типа и других общих характеристик объекта в определенной позиции.
См. также: триггер OB
Комментарий

Этим ресейвером вы можете установить/проверить/получить тип объекта, его подтип и контрольное слово. Этого достаточно, чтобы создать копию любого объекта, хоть и разного на вид, но одинаковых по свойствам.
Когда объект отключается на карте, ERM ресейверы для соответствующего объекта будут выполняться при посещения объекта. Отключение отключает только обычные свойства объекта.
Будьте осторожны: не используйте эту команду для объектов с двумя входами (2 желтые клетки).

В: Как я могу проверить, человек или ИИ посещает объект?
О: Когда любой герой посещает объект, флаг 1000 устанавливается на 1 (истина), если это игрок, и на 0 (ложь), если это ИИ.
Пример:
!?OB...;
!!IF&1000:M^Игрок^;
!!IF&-1000:M^ИИ^;

B
Удалить подсказку по правому клику об объекте.

C$
Установить/проверить/получить контрольное число объекта.
Комментарий

Контрольное число - код объекта в игре, означающий некий внутренний параметр объекта. Например, обломки на воде могут хранить такие значения данной команды:
0 - ничего ценного
1 - 5 древесины
2 - 5 древесины, 200 золота
3 - 10 древесины, 500 золота
Плавучий Сундук:
0 - пустой
1 - 1500 золота
2 - 1000 золота и артефакт
Пример определения артефакта:
!!OB998:C?y1;
!!VRy1:&7;
!!VRv1&y1=2:Sy1 :8 &255 -1;
 Теперь v1 хранит номер артефакта, если он там есть
Пример установки артефакта:
!!OB998:Cx; где x - число артефакта. Расчет числа проводится по этой формуле:
8*z - 8190
, где z - номер артефакта. Полученное число вписываем вместо x, и теперь в сундуке 1000 золота и ваш артефакт.
Контрольное число тюрьмы равно номеру героя, заключенного в ней.

D#
Запретить игроку цвета # использовать этот объект

E#
Разрешить игроку цвета # использовать этот объект

H$
Задать подсказку (по правому клику мыши) для любого объекта. Установить сообщение в переменную z ($ - номер z-переменной)

M$1/$2/$3
Эта команда может отключить множество сообщений и вопросов для объекта в любое время:
$1 – какому игроку (-1 – для всех)
$2 – отменить (1) следующее сообщение при посещении
$3 – следующий статус $2 после виртуального или реального появления сообщения
Это не настоящая отмена, это АВТОответ (по умолчанию – «нет»). Все сообщения через IF – ресейвер будут показаны как обычно.
Пример:
!!OB1/2/0:M-1/1/0; - следующий посетитель любого цвета не получит сообщения/вопроса или других слов, будет выглядеть так, будто игрок нажал «нет».

R
Разрешить ВСЕМ игрокам использовать этот объект

S
Запретить ВСЕМ игрокам использовать этот объект

T$
Установить/проверить/получить тип объекта

U$
Установить/проверить/получить подтип объекта


Ресейвер OW

Опции OW: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер OW (параметры игрока)

!!OW:XXXX; - этот ресейвер может применять действия к конкретному игроку.
Используйте эту команду для применения действий к игроку, например, установки ресурсов, команд, кол-ва героев, контролируемых игроком, и время, которое может прожить игрок без города.
Если вы хотите дать или забрать деньги у игрока, можно использовать упрощенный синтаксис:
!!OW../6/d100; - дать 100 золота
!!OW../6/d-100; - забрать 100 золота

A#/$
Установить/проверить/получить активного героя
# - игрок (0…7, -1 – текущий)
$ - номер героя (0…155, -1 = не выбран)

C?$
Проверить/получить цвет текущего игрока
$ = 0…7
Можно только проверить или получить, но не установить.

D#1/#2
Установить кол-во дней, сколько может держаться игрок после потери последнего замка.
#1 – номер игрока или текущий (-1)
#2 – дней до проигрыша (0…127) или вечная жизнь (128…254)
Если вы установили 128…254, игрок не будет получать сообщения с предупреждением о потери последнего города. 255 устанавливает стандарт в 7 дней.
#1 = -2 - установить стандартное время до проигрыша (обычно = 7).
#2 = дни (0...127), (128...255)
Если вы установили 128...254, игроки будут получать сообщения о необходимости захвата замка лишь одну неделю.
Если вы установите 255, игроки будут получать сообщение каждый день.
Если вы захватили замок и потеряли его, устанавливается обычное количество, настроенное этой командой при # = -2.

G$1/$2
Проверить, перед данным ли ПК сидит игрок. Мультиплеерная команда.
$1 – игрок
$2 - проверить на игрока (1 = да, это я, 0 = нет, это другой игрок–человек)
Имеет смысл только для мультиплеерной игры. Конечно, главный синтаксис - это получение значения, но вы можете также и установить его (но мы бы рекомендовали не пытаться это сделать :-) Флаг 999 устанавливается на 1, если текущий игрок (активировавший триггер) - игрок "здесь", и 0, если игрок на другом компьютере. ИИ всегда получает значение 0. Если флаг 999 равен истине, вы можете быть уверены, что это человек и он "здесь". Этот флаг работает для всех триггеров.

H#1/$2/#3
Подсчитать и получить количество (номера) героев игрока.
#1 = игрок (-1 = текущий)
#2 = номер v-переменной для записи информации
#3 = тип
=0 - записать количество героев игрока в v[#2]
>0 - номер героя у игрока для записи его собственного номера в v[#2], если у игрока нет героя с таким номером, v[#2] не изменится.
Пример

!!OW:H1/99/0; - записать количество героев синего игрока в v99
!!OW:H1/100/1; - записать номер первого героя синего игрока в v100
!!OW:H1/10 1/2; - записать номер второго героя синего игрока в v101
!!OW:H1/10 2/3; - записать номер третьего героя синего игрока в v102
!!OW:H1/10 3/4; - записать номер четвертого героя синего игрока в v103

I#1/$2
Установить/проверить/получить ИИ
#1 = цвет
$2 = контроллер
= 1 – ИИ
= 0 – человек
Расширение синтаксиса:
I#1/$1/$2
#1 – цвет
$1 – ИИ/человек
= 1 – ИИ
= 0 – человек
$2 – игрок жив (0) или мертв (1)

K#1/#2/$
 Установить/проверить/получить статус палатки ключника
#1 – игрок (0…7, -1 = текущий)
#2 – номер палатки (0…7)
$ = посещена (1) или нет (0)
Пример:
!!OW:K3/4/1; - установить, что Зеленый посетил коричневую палатку
!!OW:K3/4/?v123; - проверить, посетил ли Зеленый коричневую палатку в v123

N#1/$2
Установить/проверить/получить активный город
#1 – хозяин (0…7, -1 – текущий)
$2 – номер города (0…47, -1 – не выбран)

N#1/#2/$
Получить номер замка, находящегося в слоте #2 таблицы замков
#1 – игрок (-1 – текущий)
#2 – номер слота (0…4)
$ - номер города (-1 – нет, 0…N – номер города)
Можно только проверить или получить номер города, показываемого в одном из пяти слотов справа. Нельзя установить данное значение.
Пример:
!!OW:N1/3/?y10; - получить номер города в третьем слоте Синего игрока и записать его в y10

N#1/#2/#3/#4
Двигать город в таблице замков
#1 – игрок
#2 – тип действия:
1 – двигать в самый верх
2 – сдвинуть вверх на одну позицию
3 – сдвинуть вниз на одну позицию
#3 – слот города в таблице городов (0…4)
#4 – фантомный параметр (0)

O#/$1/$2/$3/$4/$5/$6/$7/$8/$9/$10
Проверить количество всех активных героев
# - игрок (-1 – текущий)
$1 – кол-во героев
$2…$10 – номер героя, принадлежащего этому игроку (-1 = нет героя)
Позволяет вам проверить номера всех активных (максимум 8) героев игрока, показанных в таблице героев (слева от главного окна приключений). Они также могут быть установлены, если вы хотите изменить порядок героев в таблице. Если у игрока менее 8 героев, их значения будут равны -1.

O#1/#2/$
Установить/проверить номер активного героя в таблице героев. Вы можете получить номер героя, показанного в одном из 5 слотов.
#1 – игрок (-1 – текущий)
#2 – номер слота (0…4)
$ - номер героя (-1 - нет героя, 0…155)
Этим синтаксисом можно только проверить или получить, но не установить.

O#1/#2/#3/#4
Сдвинуть героя в таблице
#1 – игрок
#2 – тип действия:
1 = сдвинуть героя на самый верх
2 = сдвинуть героя на одну позицию вверх
3 = сдвинуть героя на одну позицию вних
#3 – слот героя (0…4)
#4 – фантомный параметр (0)

R#1/#2/$3
Установить/проверить/получить ресурсы
#1 – игрок (0…7, -1 = текущий)
#2 – тип ресурса
$3 – кол-во ресурса
Комментарий: не пытайтесь установить ресурсы по время загрузки карты (т.е. инструкциями или пост-инструкциями), иначе игра вылетит.

S#1/#2
Колдовать заклинание на карте приключений
#1 – вариант (сейчас 1 или 2)
Вариант 1:
#2 – номер заклинания (0….9). Будет наколдовано текущим героем.
Вариант 2:
#2 – фантомный параметр (скажем, 0). Открывается Книга Заклинаний этого героя. Это путь для симулирования наложения заклинания на карте (что-то типа «руны обелисков»).
Комментарий

1. Книга заклинаний не необходима, и герою необязательно знать заклинание
2. Уровень навыка всегда основывается на соответствующем элементальном навыке героя.
3. Баллы заклинаний забираются у героя при окончании колдования, но если у героя недостаточно маны, заклинание все равно будет выполнено (и не приведет в отрицательному кол-ву маны)
4. Герой все же должен иметь немного очков хода для кастования "Дверь Измерений" или "Городской портал" для их срабатывания.

T#1/$2
Установить/проверить/получить команды
#1 – игрок
$2 – команда (0…6, -1)
Примечание: заметьте, что если хозяин - нейтрал (значение хозяина объекта равно -1), не нужно проверять команду. Если вы все же проделаете это, то получите 0 (который в большинстве случаев означает команду с красным игроком. Если игрок не в команде, значение равно -1.

V#1/$1/$2
Установить/проверить/получить героев, доступных в таверне.
#1 – игрок (0..7, -1 = текущий)
$1 – левый герой в таверне (-1 – нет)
$2 – правый герой в таверне (-1 – нет)
Мы не можем гарантировать, что все будет работать корректно, если вы установите одного героя нескольким игрокам.

W#1/$1
Установить/проверить/получить номер города под контролем игрока (в таблице городов)
#1 – игрок
$1 – номер города (0…47)

W#1/#2/$1
Установить/проверить/получить номер города в таблице
#1 – игрок
#2 – номер города в таблице городов (0…47)
$1 – номер города на карте (0…47)


Ресейвер PM

Опции PM: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер PM (пирамиды и новые объекты)

!!PM#1/#2/#3:XXXX; - пирамида или Новый объект в #1/#2/#3. Вы можете использовать команду V для «привлечения» ИИ к новым объектам (в т.ч. Сфинкс).
Расширенный синтаксис:
!!PM$:XXXX; - пирамида или Новый объект в v$/v($+1)/v($+2)
Вы можете установить этот бит и ждать прихода ИИ. Данный ресейвер имеет двойное назначение. Он используется для установки заклинания, получаемого после разгрома стражей пирамиды, но также может быть использован для привлечения ИИ к объекту, или наоборот, не давать ИИ посетить его.
ИИ посетит пирамиду (новый объект), если:
1. Он имеет достаточно армии для победы над стражниками
2. Он имеет мудрость эксперта
3. Если этот НЕ посещен любым игроком
4. Если этот объект НЕ посещен этим игроком.
Мы не можем контролировать первые 2 пункта, но может установить последние два.

P#1/$1
Установить/проверить/получить флаг «посещено игроком»
#1 – цвет посетителя
$1 – Статус:
0 – не посещено
1 – посещено

S$
Установить/проверить/получить бонусное заклинание
$ - номер заклинания

V$
Установить/проверить/получить флаг «не посещено»
0 = посещено
1 = не посещено


Ресейвер PO

Опции PO: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер PO (параметры квадратов)

!!PO#1/#2/#3:XXXX; - установить/проверить квадрат в X Y L. Используется для установки или проверки информации любого квадрата карты.
Расширенный синтаксис:
!!PO$:XXXX; - X Y L соответственно равны v[$], v[$+1], v[$+2]
Используется для установки информации о любом квадрате карты. Может быть полезен, если вы хотите контролировать количество героев или игроков, могущих посетить объект (за бонусом и т.п.). Все команды, за исключением разве что подсчета, нужны лишь для удобства; они все могут быть использованы для хранения любых числовых данных.
Пример

!?OB63/3; - триггер для каждой "Разрушенной башни" на карте, x=v998, y=v999, l=v1000
!!FU100:P; - вызвать функцию 100

!?FU100; - функция 100
!!HE-1:O?y1 N?y2; - y1=хозяин, y2=номер
!!OB998:T?y3 U?y4; - y3=тип объекта, y4=подтип объекта
!!PO998:Hy2 Oy1 Ty3 Sy4; - установить хозяина, последнего посетителя, тип и подтип объекта.
Этим путем можно подсчитать все объекты определенного типа.
!!PO0/0/0:C63/3/0/-1/-1;
Теперь v1 хранит количество объектов типа 63 и подтипа 3, посещенных Оррином (0), независимо от его хозяина.
См. также: дополнительная информация по ресейверу PO

B#/$
Установить/проверить/получить большое целое значение (-2147483648…2147483647). Вы можете установить 2 значения.
# - номер значения (0…1)
$ - число (установить/проверить/получить)

C$1/$2/$3/$4/$5
Подсчитать все объекты.
$1 – тип (-1 – не имеет значения)
$2 – подтип (-1 – не имеет значения)
$3 – герой (-1 – не имеет значения)
$4 – хозяин (-1 – не имеет значения)
$5 – пользовательское число (-1 – не имеет значения)
Результат запишется в v1.

H$
Установить/проверить/получить номер героя (0…255)
Замечание: в начале игры это значение равно 255 для всех квадратов.

N$
Установить/проверить/получить пользовательское число (0…15)

O$
Установить/проверить/получить хозяина (-8…8)
Замечание: в начале игры это значение равно -1 для всех квадратов

S$
Установить/проверить/получить подтип объекта (или любой номер) (0…255)

T$
Установить/проверить/получить тип объекта (или любой номер) (0…255)

V#/$
Установить/проверить/получить целое значение (-32768…32767). Вы можете установить до 4 значений.
# - номер значения для установки (0…3)
$ - значение для установки/проверки/получения


Ресейвер QW

Опции QW: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер QW (журнал)

!!QW:XXXX; - контроллер журнала заданий. Позволяет вам добавлять, удалять или изменять текст в новом Журнале (папирусе). Он просто дополнение к уже существующему, и не заменяет оригинальный.
Чтобы посмотреть свой журнал, игрок должен кликнуть на кнопке "Журнал" в окне героя, либо рядом с опциями приключений. Журнал не заменяется, а дополняется.

Вы можете использовать его не только для квестов, но и для любого текста: дать подсказку, или же сделать какую-либо шутку.

A#1/#2/#3/$4
Позволяет вам добавить, изменить или удалить строку в Журнале.
#1 – уникальный номер, установленный для этой строки
#2 – номер героя
-1 – текущий
-2 – любой (все герои)
#3 – хозяин
-1 – текущий
-2 – любой (все игроки)
$4 – номер z-переменной с текстом
-1 – удалить этот текст (проверить/установить/получить)


Ресейвер SC

Опции SC: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер SC (ученый)

!!SC#1/#2/#3:XXXX; - ученый в X Y L. Ученый – тип 81.

L$
 Заклинание

P$
 Первичный навык

S$
 Вторичный навык

T$
Тип бонуса:
0 – первичный навык
1 – вторичный навык
2 – заклинание


Ресейвер SG

Опции SG: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер SG (знак или бутылка)

!!SG#1/#2/#3:XXXX; - знак или бутылка в X Y L. Знак – тип 91, бутылка – тип 59.

M#
M^…^
Установить любое сообщение (# - номер z-переменной)

M-1
Восстановить обычный текст (по умолчанию).


Ресейвер SK

Опции SK: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер SK (скелет)

!!SK#1/#2/#3:XXXX; - скелет (труп) в X Y L. Скелет – тип 22.

A$
Номер артефакта

N$
Номер скелета (0…31)

S$
Есть артефакт или нет
$ = 1 – есть
$ = 0 – нет


Ресейвер !!SN

Опции SN: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер SN (звуки игры)

!!SN:XXXX; - этот ресейвер позволяет вам проиграть внешний или внутренний звуковой файл почти любого типа.
Внимание! Если вы попытаетесь проиграть звук, сработает триггер !?SN. Вы можете заменить звуковое событие игрока с помощью ERM.
Есть некоторые ограничения. Первое: звуковые файлы не могут быть длиннее 10 секунд. Файлы с большей продолжительностью будут звучать только первые 10 секунд. Во-вторых, когда игра пробует проиграть звук, она проверяет, играется ли этот же звук сейчас. Если да, запускается другая копия. Если нет, звук производится снова. Максимально допустимая длина имени - первые 12 символов, предполагая, что файл DOS, базируется на 8.3 и находится в папке DATA. Так, если вы ожидаете, что звук будет проигрываться редко, это вообще не проблема, иначе - убедитесь в этом.
Пример:
Вот короткий обзор, как изменить звуки для объектов.
Например, мы можем изменить звук при посещении камня знаний.
Сначала нам нужен файл с новым звуком. Мы будем использовать звуковой файл, названный для примера 1.wav. Тогда нам нужен "скрытый" файл для избежания сообщения "ресурс не найден" (вы можете найти файл ZQUIET.WAV в папке DATA).
Теперь разместите немного камней знаний на карту и добавьте скрипт:

*************
ZVSE
 !?OB100; посещается ли камень знаний?
!!VRz10:S^..\data\1.wav^; внешний WAV или 82M файл
!!SN:Pz10; играть!
!?SN;  триггер звука
!!SN:S?z-10; установить имя проигрываемого файла
!!VRi:S0; !!VRz-9:S^Gazebo.wav^; !!VRi&z-10=z-9:S1;  камень знаний?
!?SN&i=1; продолжать, если это камень знаний
!!VRz-10:S^ZQUIET.WAV^; ничего, просто тишина
!!SN:Sz-10; тишина...
*************

Список звуков

Некоторые звуки не будут вызывать триггер !?SN, такие как:

- колдование других заклинаний на карте, кроме просмотра воздуха и земли
- постройка здания в городе,
- копание (в поисках Грааля)
- начало битвы
- звук битвы
- активация чит-кодов
- будучи *рядом* с жилищем (например, пение монастыря, шум караульной и т.п.) или любой ЛЮБОЙ другой объект (например, ветряная мельница) где вы можете слышать проигрываемый звуковой файл [Большинство жилищ из Клинка Армагеддона (например, Чародеев, Ржавых драконов), и WoG-жилищ (вместе с 8 уровнем), все имеют тот же самый звук, как Бараки.]
- звук телепорта
- бег лошади героя
- клик мышью (например, на "Просмотр королевства")

Pz#
Проиграть звуковой файл с именем в z#.

S$
Установить/проверить/получить имя проигрываемого звукового файла в z-переменную.


Ресейвер SP

Опции SP: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер SP (магический источник)

!!SP#1/#2/#3:XXXX; - магический источник в X Y L. Магический источник – тип 48.

N$
Номер магического источника (0…31)

S$
Полный или пустой
$ = 1 – полный
$ = 0 – пустой


Ресейвер SR

Опции SR: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер SR (святыня магии)

!!SR#1/#2/#3:XXXX; - святыня магии в X Y L. Святыня магии – тип 88, 89, 90.

S$
Установить/проверить/получить заклинание $ для любой святыни


Ресейвер SS

Опции SS: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер SS (поддержка заклинаний)
Только TE или выше

!!SS#:XXXX; - позволяет вам менять параметры заклинания #.

A$
Установить сокращенное название
$ - текстовая переменная.
См. комментарий ниже.

C#/$
Установить/проверить/получить кол-во маны.
# = уровень (0...3, зависит от знания школы магии)
$ = кол-во маны для колдовства.

D#/$
Установить/проверить/получить описание
# = уровень (0...3, зависит от знания школы магии)
$ = текстовая переменная.
См. комментарий ниже

E#/$
Установить/проверить/получить номер эффекта
# = уровень (0...3, зависит от знания школы магии)
$ = эффект
Различные магии имеют разные эффекты

F$
Установить/проверить/получить флаги.
$ = флаги

1 - боевое заклинание
2 - заклинание карты приключений
4 - имеет ограничение времени
8 - заклинание существ
16 - цель - один отряд
32 - цель - один стреляющий отряд
64 - имеет массовое воздействие на уровне эксперта
128 - цель - любое место
256 - цель - препятствие
512 - заклинание с уроном
1024 - заклинание разума
2048 - дружественное и имеет масс. воздействие
4096 - нельзя накладывать на боевые машины
8192 - заклинание от артефакта
16384 - защищающее заклинание
32768 - ИИ (метеоритный дождь, Волшебная стрела, Ледяная молния, Удар молнии, Взрыв, Кольцо холода, Огненный шар, Гром Титанов, не Цепная молния, не Инферно)
65536 - ИИ (воздействие по площади)
131072 - ИИ (Армагеддон, уничтожить нежить, Волна Смерти)
262144 - ИИ (Благословение, проклятье, жажда крови, точность, слабость, Каменная кожа, разрушающий луч, Молитва, Радость, Печаль, Удача, Неудача, Ускорение, Медлительность, Палач, Бешенство, Клон, слепота, Телепорт, Контрудар, Берсерк, Щит, Воздушный щит, Огненный щит, защита от Воздуха/огня/воды/земли, Антимагия, Снятие заклинаний, Зеркало, Лечение)
524288 - ИИ (количество/принадлежность существ может измениться)
1048576 - ИИ (Вызвать лодку, Полет, Хождение по воде, Дверь измерений, Городской портал, Землетрясение, Гром Титанов)

H#/$
Установить/проверить/получить шанс появления в городе
# = тип города
$ = шанс появления

I#/$
Установить/проверить/получить значимость для ИИ
# = уровень (0...3, зависит от знания школы магии)
$ = значение для ИИ

L$
Установить/проверить/получить уровень заклинания
$ = уровень

N$
Установить/проверить/получить название заклинания
$ = текстовая z-переменная

O$
Установить/проверить/получить тип цели
$ = тип
=1 - цель - дружественный отряд
=-1 - цель - вражеский отряд
= 0 - любая точка

P$
Установить/проверить/получить силу магии
Разные заклинания используют это значение по разному

S$
Установить/проверить/получить биты школ магии
$ = флаг
Используются только первые 4 бита .
1 = школа магии Воздуха
2 = школа магии Огня
4 = школа магии Воды
8 = школа магии Земли

W$
Установить/проверить/получить звуковой файл заклинания
$ = z-переменная с именем файла
См. комментарий ниже

X$
Установить/проверить/получить индекс Def-анимации
$ = индекс

Комментарии к опциям A, N, D, W:
Вы можете не получать стандартное имя файла, но можете установить его (и проверить позже) через z-переменные.
Вы можете использовать стандартные z-переменные [1...1000] или статические из файла ERT [>1000].
Если вы установите имя и затем проверите его, вы получите номер z-переменной установленного имени.
Если вы не установили имя, вы получите 0.


Ресейвер ST

Опции ST: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер ST (камень знаний)

!!ST#1/#2/#3:XXXX; - камень знаний в X Y L. Камень знаний – тип 100.

N$
Номер камня знаний


Ресейвер SW

Опции SW: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер SW (лебединый пруд)

!!SW#1/#2/#3:XXXX; - лебединый пруд в X Y L. Лебединый пруд – тип 14.
Комментарий: данный ресейвер бесполезен. Номера у озера не существует. Удача всегда +2, независимо, что вы хотите туда записать - игра не сменит количество.

B$
Значение удачи (1…3)

N$
Номер пруда (0…31)


Ресейвер SY

Опции SY: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер SY (верфь)

!!SY#1/#2/#3:XXXX; - верфь в X Y L. Верфь – тип 87.

O$
Установить/проверить/получить хозяина (0…7, -1)
Если установить некорректные значения (8...255), флаг может окраситься в самые необычные цвета, но обычно - в белый.

P$1/$2
Установить точку на карте, где появится лодка при покупке. Обычно это x+1 и y+1 от правого угла верфи. Вы можете поставить точку не только на воде. Если точка вне карты, вы не можете купить лодку.
Если лодка покупается дистанционно, правым кликом по верфи, то эти параметры игнорируются и лодка строится в ближайшей водной клетке.


Ресейвер TL

Опции TL: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер TL (контроль лимита хода)
Только TE или выше

!!TL:XXXX; - осуществляет ограничение хода, поддерживает мультиплеерные игры.
См. также: триггер TL

C#
Включить тиканье таймера
# = 1 - запустить таймер
# = 0 - остановить тиканье
Работает последняя команда. Вы можете приостановить 10 раз, но запустить один раз, и он заработает.

E$
Включить "показ остатка времени"
$ = 1 - включено
$ = 0 - выключено
Если вы включили его, будет показываться остаток секунд постоянно, а не последние 10 секунд, как обычно.

T#/$
Получение времени

# | $ - установить/проверить/получить
0 | текущее время в мс
1 | текущее время в с
2 | стартовое время в мс
3 | стартовое время в с
4 | время паузы в мс
5 | время паузы в с
6 | длина хода в мс
7 | длина хода в с

Когда игрок получает контроль, текущее время записывается в "стартовое время". Затем каждую секунду движок проверяет:
текущее_время - стартовое_время < длины_хода
Если ложно, ход кончается.
Если вы попадаете в бой, таймер останавливается. В этот момент текущее время записывается в "время паузы".
Пока "время паузы" не 0, ход продолжается.


Ресейвер TM

Опции TM: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер TM (таймеры)

!!TM#:XXXX; - это установки для ERM – таймера
 # - номер таймера (1-100)
Эта команда - эквивалент событиям в теле карты. Она может быть использована для повтора любого ERM-кода через определенный интервал (или только раз), срабатывать и останавливаться в определенное время. Этот ресейвер имеет свое тело, начинающееся с триггера !?TM$, где $ - число от 1 до 100, означающее номер таймера.
Будьте осторожны, если вы разрешаете таймер для нескольких цветов. Если этот таймер показывает сообщение, вы будете получать его дважды или более раз. Чаще всего эта команда используется для установки таймера через инструкцию, чем ресейвер.
Пример:
!#TM1:S1/999/7/255; - установить таймер 1 на срабатывание каждые 7 дней, начиная с первого, для всех игроков (255), срок действия неограничен (999)
См. также: триггер TM

D$
Запретить игрокам цвета $ активировать этот таймер

E$
Разрешить игрокам цвета $ активировать этот таймер

S$1/$2/$3/$4
Установить/проверить/получить установки таймера
$1 – день первого появления
$2 – день последнего появления
$3 – интервал (в днях)
$4 – игроки, для которых активирован таймер (0 – запретить всем игрокам)
Пример:
Таймер для красного, коричневого и зеленого игрока = 8+4+1 = 13 (0 запретит таймер всем цветам)


Ресейвер TR

Опции TR: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер TR (настройка территорий)

!!TRx/y/l:XXXX; - установить тип земли или изменить проходимость квадрата в позиции X Y L. Используется для установки типа или изменения проходимости квадрата.

E$
Квадрат – как вход (желтый квадрат) или нет
$ = 0 – желтый квадрат
$ = 1 – нет желтого квадрата

G?$
Тип земли поверх почвы. Можно только ПОЛУЧИТЬ или ПРОВЕРИТЬ.
Возможные земли

21 Проклятая земля
46 Поляны магов
227 Святая земля
224 Дьявольский туман
222 Клеверное поле
225 Попутный ветер
228 Прозрачные пруды
226 Огненные поля
231 Скалистая земля
229 Магические облака

P$
Установить/проверить/получить проходимость квадрата (красный квадрат)
$ = 1 – означает, что проходим
$ = 0 – не проходим

T$1/$2/$3/$4/$5/$6/$7/$8
Установить/проверить/получить тип почвы
$1 – тип почвы
$2 – подтип почвы
$3 – тип реки
$4 – подтип реки
$5 – тип дороги
$6 – подтип дороги
$7 – тип зеркала
$8 – битовая маска доступности
Значения см. ниже

V$
Установить/проверить/получить видимость квадрата (побитно).
Похоже на UN:S или UN:H, но для определенного квадрата. Например, если квадрат видят красный, синий и фиолетовый игрок, то значение будет 1+2+32=35.
Монстры тоже имеют видимость вокруг себя; их бит - 256. К примеру, установив всем квадратам вокруг монстра флаг 255 (всем, кроме 256 - монстров), напасть на монстра можно будет лишь прямой атакой (обычно радиус атаки - одна клетка, но вы "ослепили" монстров)

1. Типы почв

Номер | Образ | Название
0 |  | Грязь
1 |  | Песок
2 |  | Трава
3 |  | Снег
4 |  | Болото
5 |  | Скалы
6 |  | Подземелье
7 |  | Лава
8 |  | Вода
9 |  | Пропасть
2. Подтипы почв

3. Тип реки

01 = чистая
02 = замерзшая
03 = мутная
04 =
лавовая
4. Конфигурация реки
Номер | Картинка | Номер | Картинка
00 |  | 07 |
01 |  | 08 |
02 |  | 09 |
03 |  | 10 |
04 |  | 11 |
05 |  | 12 |
06 |

5. Типы дорог

01 = грязевая
02 = гравийная
03 = каменная

6. Конфигурация дорог
Номер | Картинка | Номер | Картинка
0 |  | 9 |
1 |  | 10 |
2 |  | 11 |
3 |  | 12 |
4 |  | 13 |
5 |  | 14 |
6 |  | 15 |
7 |  | 16 |
8 |  |  |

Для версии 3.58f, TE: К сожалению, похоже, что здесь закралась ошибка кода, потому что для любого типа дороги (0...13) появляется один и тот же фрагмент: . Поэтому невозможно сделать дорогу через ERM, если только сильно извилистую, диагональную, используя различные зеркала :).
Но вы можете изменять тип уже нарисованной дороги так: !!TR...:Td/d/d/d/тип_дороги/d/d/d; - и указанный в координатах фрагмент дороги превратится в фрагмент указанного типа.
Для поздних версий (Феникс, Эра): все работает, как нужно

7. Зеркало

Биты: 76543210
--CcBbAa ("-" означает не имеет значения)
a - вертикальное зеркало для почвы
A - горизонтальное зеркало для почвы
b - вертикальное зеркало для реки
B - горизонтальное зеркало для реки
c -вертикальное зеркало для дороги
C -горизонтальное зеркало для дороги

Скажем, вот наш квадрат
Зеркало 0
Так он будет выглядеть, если используется зеркало 0
Зеркало 1
Затем установим первый бит (зеркало = 1). Это зеркало отражает квадрат вертикально:
Зеркало 2
Или установим второй бит (зеркало = 2). Квадрат отразится горизонтально:
Зеркало 3
Или установим оба бита (зеркало = 3 [2+1] ). Квадрат отразится вертикально и горизонтально.

То же самое и с зеркалами дорог и рек.
Горизонтальное зеркало для рек = 4
Вертикальное зеркало для рек = 8
Зеркало обоих типов для рек = 12 [8+4]
Горизонтальное зеркало для дорог = 16
Вертикальное зеркало для дорог = 32
Зеркало обоих типов для дорог = 48 [32+16]
Вы можете комбинировать все зеркала.
Скажем, горизонтальное зеркало для почвы, вертикальное зеркало для реки и зеркало обоих типов для дороги = 57 [1+8+16+32]

8. Битовая маска доступа
Биты: 76543210
???E??UP ("?" означает нет информации)
P - проходимый квадрат
U - непроходимый квадрат
E - вход
Эти биты могут быть установлены индивидуально через команды TR:P и TR:E


Ресейвер UN

Опции UN: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер UN (универсальная команда)

!!UN:XXXX; - универсальная команда. Используется для изменений в карте и/или игре.

A#/$
Установить/проверить/получить доступность артефакта на карте:
# - номер артефакта
$ - значение (можно получить)
1 – артефакт запрещен
0 – артефакт разрешен

A#1/#2/$
Установить/проверить/получить информацию про артефакт
#1 – номер артефакта
#2 – тип информации
= 1 – цена
= 2 – позиция на теле
= 3 – тип (класс)
= 4 – номер комбо-артефакта
= 5 – часть комбо-артефакта
= 8 – дает заклинание или нет
= 9 – имя артефакта
= 10 – описание артефакта
$ - значение
Комментарий

1. Цена: Артефакт можно продать в торговцах артефактами за 1/5 установленной цены, если вы не обладаете дополнительными торговцами. Грааль и новые WoG-артефакты имеют цену 0.
2. Позиция на теле: если вы помещаете артефакт на некорректную позицию с помощью ERM, дополнительные параметры никуда не исчезнут. Например, вы установили, что Сандалии Святого надевают на голову вместо ног, вы получите все параметры +2 (и потеряете их, когда снимите).
Если герой имеет уже надетый артефакт и вы измените слот артефакта через ERM, артефакт останется полностью функциональным до его снятия, далее его одеть можно будет только в измененный слот.
3. Тип: Это значение определяет класс артефакта – нет класса (книга заклинаний, боевые машины и Грааль) (1), сокровище (2), ценный (4), важный (8) и реликт (16), которые включают комбо-артефакты и три новых ВоГ-артефакта. Другие значения могут быть установлены для получения смешанного класса (или своего).
4. Номер комбо-артефакта: каждая комбинация имеет свой номер. Первый комбо-артефакт, Альянс Ангелов, имеет номер 0, и последний, Рог Изобилия - 11. Не-комбо-артефакты имеют значение -1.Внимание: если вы ставите стандартным сборным артефактам (вроде Альянса Ангелов) это значение на -1 (что это НЕ комбо-артефакт), то они не будут добавлять что-либо к параметрам героя, но сохранят свои дополнительные свойства (вроде Молитвы или иммунитета к магии до 4го уровня)
5. Часть комбо-артефакта: если артефакт – один из составных частей, значение будет номером комбо-артефакта. И если артефакт не часть комбо, значение будет -1.
8. Дает заклинание: это значение установлено на 0 для большинства артефактов 1 для артефактов типа Томов магии, Шляпы оратора, Шляпы капитана – то, что по умолчанию дает заклинания. Сейчас невозможно проверить, какое заклинание добавляется, однако, небольшая проверка всех заклинания героя перед экипировкой и после позволяет их вычислить.
Установка этого значения на 0 (если по умолчанию 1) отменяет получение заклинаний.
9. Имя артефакта: этим можно установить имя артефакта. $ - номер z-переменной, содержащей имя артефакта. Значение 0 восстанавливает оригинально название. Часто используемый трюк с этой опцией - переименование артефактов и использование их картинок с другим описанием в диалоговых окнах.
10. Описание артефакта: этим можно установить описание артефакта. $ - номер z-переменной, содержащей описание артефакта. Значение 0 воостанавливает оригинальное значение.

A#/$/#1/#2[/#3/#4/#5/#6/#7/#8/#9/#10/#11/#12/#13/#14]
Менеджер комбо-артефактов. Построить/удалить комбо артефакт:
# - номер комбо (0…31)
$ - установить/проверить/получить номер комбо-артефакта
#1 – часть 1
#2 – часть 2
#3 – часть 3 (опционально)
…
…
#14 – часть 14 (опционально)
Результат: комбо-артефакт создан. Если успешно, флаг 1 устанавливается на 1.
Комментарий

1. Вы можете использовать синтаксис инструкции (!#UN:A).
2. Все комбо-артефакты записываются в специальную таблицу. Эта таблица вмещает до 32 записей. Так что возможно установить до 32 комбо-артефактов. Все стандартные комбо уже записаны в таблице (первые 12 строк)
3. $ = номеру артефакта, который появится при сборке.
4. Вы можете проверить, пуста строка таблицы комбо-артефактов или нет:
!!UN:A5/?v100/0/0;
Получить номер комбо-артефакта в строке 5 комбо-таблицы в v100. Два нуля в конце нужны для корректной работы команды. В синтаксисе проверки и получения дополнительный параметры (нули) игнорируются. Пустая строка комбо-таблицы даст значение 0. Так, если в приведенном выше примере, v100 = 0, строка пуста и может быть использована. Вы можете удалить комбо-артефакт без добавления нового. Используйте номер комбо-артефакта 0 для этого.
Пример:
!!UN:A5/0/0/0; - первый нуль удаляет информацию о комбо из пятой строки таблицы. Следующие два нуля нужны для корректной работы команды.
5. Важно! Только артефакты с номером менее 160 могут быть частью составного артефакта, хотя все артефакты могут быть использованы в качестве собранного.

B#/$
Провести операции над новыми сундуками и Мифрилом
# - тип
0 – Мифрил
1...6 - новые сундуки
7...10 - камни Силы
$ - действие (0-стандарт, 1 – особое)
Новые сундуки

тип 101, подтип 1
тип 101, подтип 2
тип 101, подтип 3
тип 101, подтип 4
тип 101, подтип 5
тип 101, подтип 6
Новый ресурс
Мифрил, тип 79, подтип 7.
Для всех новых сундуков (тип 101, подтип 1...4) стандартная операция означает стандартный сундук сокровищ. Расширенное действие ничего не дает герою-посетителю. В любом случае, сундук исчезает после его посещения. Для мифрила (тип 79, подтип 7) стандартная операция означает, что когда вы (или ИИ) возьмете его, вы получите случайный ресурс, кроме дерева и руды и в количестве, установленном в редакторе (для золота, как всегда, *100). Расширенное действие для мифрила означает, что он будет добавляться к имеющемуся количеству Мифрила игрока. Вы можете установить или проверить кол-во мифрила командой !!OW:R#/7/$;. Оба действия работают и для ИИ, и для человека. ИИ считает мифрил золотом, вне зависимости, берет он его или нет.
Камни Силы

тип 101, подтип 7
тип 101, подтип 8
тип 101, подтип 9
тип 101, подтип 10

Камни силы работают так:
1) Не-WoGифицированная WoG-карта без ERM, WoG-опции установлены: Командиры отключены, *или* Не-WoGифицированная карта с опцией "Командиры" включены с помощью ERM, Камни силы отключены ERM (!#UN:P3/0; и !#UN:B7/0; !#UN:B8/0; !#UN:B9/0; !#UN:B10/0;). *Или* WoGифицированная карта с отключенными командирами через WoG-опции, Камни силы разрешены или запрещены. Результат: Камни силы работают, как обычные сундуки сокровищ.
2) Не-WoGифицированная WoG-карта без ERM, WoG-опции установлены на "Командиры разрешены", *или* Не-WoGифицированная WoG-карта с разрешенными командирами с помощью ERM (!#UN:P3/0;), Камни силы разрешены ERM или НЕ запрещены ERM (!#UN:B7/1; и т.д.) *или WoGифицированная карта с разрешенными командирами в WoG-опциях, Камни силы разрешены или запрещены. Результат, если командир героя жив: командир получает бонус от Камня силы. Результат, если командир героя мертв: вопрос о разрушении камня.
3) Не-WoGифицированная WoG-карта с отключенными командирами с помощью ERM, (!#UN:P3/1;). Результат: Камни силы работают как более ценные сундуки сокровищ (до 7500 золота/7000 опыта)

C#1/#2/$3
Прочитать/записать участок памяти, начиная с адреса #1, длиной #2 в/из переменную $3.
Пример использования
Функции с использованием команды

D#1/#2/#3
Сделать квадрат воды доступным для героя.
#1 – X
#2 – Y
#3 – L
Расширение синтаксиса:
D#1/#2/#3/$
Поместить/удалить путь (бревна) на воде
$ = 1 - поместить (добавить проходимость пешком)
$ = 0 – не помещать (удалить проходимость пешком)
Комментарий

Квадрат с бревном недоступен для лодки, но доступен для ходьбы. Если не поместить бревно, квадрат становится обычным (т.е. доступным для лодки). Если выставить проходимость для лодки (x/y/l/0) квадрату-не-воде, игра выходит в черный экран. Если установить проходимость пешком на квадрате-не-воде, вместо него появится квадрат с водой и плавающим на ней бревном. В его описании будет написано "Болото (можно копать)", и при раскопке на нем появится болотистая ямка. На данный момент единственная команда, которая опускаемый четвертый параметр принимает как значение 1 (хотя все другие как 0).

E#1/#2/#3
Проверить, можно ли поместить объект в координаты
#1 – X
#2 – Y
#3 – L
Осуществляет проверку на возможность помещения одноклеточного объекта в эти координаты. Если возможно, флаг 1 будет равен лжи, если нет, истине.
Пример
!!UN:E1/2/0;
!!IF&1:M^Сюда нельзя поместить объект^;
!!IF&-1:M^Сюда можно поместить объект^;

F$1/$2/$3/$4/$5
Вызвать пожар (если возможно)
$1 – X координата
$2 – Y координата
$3 – L (0-поверхность, 1-подземелье)
$4 – dX
$5 – dY
dX, dY: имеем прямоугольник. Верхний левый угол с координатами x и y... А нижний правый, допустим, x2 и y2... Тогда
dX=x2-x
dY=y2-y
Комментарий

Пока что данная команда возможна лишь для одного объекта - дерева. Этот объект можно найти в редактор карт -> замки -> последний элемент. Вы можете увидеть действие этого скрипта, когда разрушите город Горыныча.
Мы хотели сделать больше таких объектов (больше деревьев), но не успели. Мы можем сделать динамическую анимацию горения деревьев, затопления и чего-либо еще. Все готово, но объектов нет. Деревья около замка автоматически загораются при его разрушении.

G0/#1/#2/#3
Установить текст вторичного навыка
#1 – номер навыка (0…27)
#2 – тип текста (0…3)
0 = имя навыка
1 = базовый уровень (описание)
2 = продвинутый уровень (описание)
3 = экспертный уровень (описание)
$3 – номер z-переменной (1…1000) или 0
0 = восстановить оригинальный текст.
Комментарий

похоже на изменение имени и описания артефакта.
Вы должны установить z-переменную с соответствующим текстом (вы можете использовать только глобальные z-переменные z1...z1000). Если вы измените текст использованной здесь z-переменной, он немедленно станет новым текстом навыка. Так что не используйте эти переменные для других дел.
Пример:
!#VRz10:S^Новое имя^;
!#VRz11:S^Новое описание^;

!$LE7/5/0;
!!UN:G0/2/0/10;
!!UN:G0/2/1/11;

!$LE8/5/0;
!!UN:G0/2/1/0;

Данный скрипт установит имя и описание навыка Логистики на новые, если вы посетите локальное событие 7/5/0. Оригинальное описание базового уровня Логистики будет восстановлено после посещения локального события в 8/5/0.

G1/#1/#2/$
Изменить имя монстра
#1 – номер монстра
#2 – тип текста
0 – имя одного монстра
1 – имя нескольких монстров
2 – специальный текст (описание)
$ - z-переменная (или ее номер), содержащая новый текст
0 – восстановить по умолчанию

G2/#1/#2/#3
Позволяет вам установить текст и картинку специализации героя.
#1 – номер героя
#2 – что установить
0 - Имя специальности ("Грифоны" у Эдрика)
1 - "Большое" имя специальности ("Бонус существ: Грифоны" у Эдрика)
2 – описание
3 – картинку
#3 – это:
- номер z-переменной (0 – восстановить по умолчанию), если #2=2
- номер картинки (0-356), если #2 = 3

Картинки 0-155 соответствуют специализации героя того же номера, например, картинка драг. камней соответствует специальности Сауруга, номер 111, значит, и картинка будет под таким же номером.

H#1/#2/#3/#4/#5
Скрыть часть карты (область – круг)
#1 – X
#2 – Y
#3 – L
#4 – игрок
#5 – радиус
Комментарий

Область будет скрыта для всех, кроме указанного игрока. Проверки на корректность номера игрока нет, т.е. игра обрабатывает значения вроде ±5678765 без ошибок (результат - закрытый участок для всех игроков 0...7).

I#1/#2/#3/#4/#5/#6
Поместить объект
#1 – X
#2 – Y
#3 – L
#4 – тип объекта
#5 – подтип объекта
#6 – обновить?
1 – да
0 – нет
Эта команда очень полезна, но есть несколько ограничений. Некоторые объекты нельзя поставить этой командой, т.к. они нуждаются в предварительной настройке в редакторе, и некоторые вообще не будут работать и могут вызвать нестабильность игры.
Для всех синтаксисов обычно следует обновление автоматически, если только скрипт не запрещает этого.
Дополнительный синтаксис:
I#1/#2/#3/#4/#5/#6/#7/#8/#9
#1…#5 – см. выше
#6 – тип объекта 2
#7 – подтип объекта 2
#8 – почва
#9 – обновить?
1 – да
0 – нет
Это означает, что появится объект/подтип, который будет выглядеть как объект2/подтип2. Используйте эту команду с указанием нужной почвы для помещения объектов, сделанных под почву.
Дополнительно о команде UN:I

Эти объекты будут работать корректно без дополнительных настроек. Многие могут быть настроены специальным ресейвером объекта, если пожелаете.

Артефакт (тип=5, подтип=0-143) - ресейвер !!AR
Лодка (тип=8, подтип=0-2)
Вуаль Тьмы (тип=15, подтип = 0)
Жилище существ (тип=17, подтип=0-88 и 20, подтип=0-1) - ресейвер !!DW
Гарнизон (тип=33, подтип=0 для стандартного, =1 для антимагического, =2 для перпендикулярного, =3 для антимагического перпендикулярного) - ресейвер !!GR
Грааль (тип=36, подтип=0) - при помещении нескольких Граалей, учитывается только последний помещенный, таким методом можно обойти ограничение в 9 клеток от края карты.
Маяк (тип=42, подтип=0-7 для цвета игрока или -1 для нейтрального) - ресейвер !!MN (как и для шахт)
Башня Марлетто (тип=23, подтип=0)
Двусторонний монолит (тип=45, подтип=0-7)
Шахта (тип=53, подтип=0-7) - ресейвер !!MN
Монстр (тип=54, подтип=0-196) - ресейвер !!MO
Океанская бутыль (тип=59, подтип=0) - ресейвер !!SG (как для знаков)
Обсерватория красного дерева (тип=58, подтип=0)
Ресурс (тип=79, подтип=0-6) - ресейвер !!AR (как для артефактов)
Святилище (тип=80, подтип=0)
Верфь (тип=87, подтип=0-7 по цвету игрока или -1 для нейтрального) - ресейвер !!SY
Знак (тип=91, подтип=0) - ресейвер !!SG
Свиток заклинания (тип=93, подтип=0-69) - ресейвер !!AR
Замок (тип=98, подтип=0-8) - ресейвер !!CA
Университет (тип=104, подтип=0) - ресейвер !!UR
Хижина ведьмы (тип=113, подтип=0-27) - ресейвер !!WH

Эти объекты потребуют дополнительной настройки через определенный ресейвер для корректной работы:

Костер (тип=12, подтип=0) - ресейвер !!FR (при помещении ресурс не задан)
Лебединый пруд (тип=14, подтип=0) - ресейвер !!SW (имеет нулевой номер при помещении)
Труп (скелет) (тип=22, подтип=0) - ресейвер !!SK (при помещении не имеет артефакта?)
Событие (тип=26, подтип=0) - ресейвер !!LE - если событие помещено этой командой (I), оно будет разрешено для всех игроков и не будет отменено после посещения.
Погреб (тип=39, подтип=0) - ресейвер !!LN (при помещении не имеет ресурса)
Камень знаний (тип=100, подтип=0) - ресейвер !!ST (имеет нулевой номер при помещении)
Святыня магии (тип=88,89,90, подтип=0) - ресейвер !!SR (при помещении учат заклинанию "Вызов корабля")
Магический источник (тип=48, подтип=0) - ресейвер !!SP (считается посещенным при помещении)
Мистический сад (тип=55, подтип=0) - ресейвер !!GD (считается посещенным при помещении)
Обелиск (тип=57, подтип=0) - ресейвер !!MT (имеет нулевой номер при помещении)
Пирамида (тип=63, подтип=0) - ресейвер !!PM (считается посещенным при помещении)
Ученый (тип=81, подтип=0) - ресейвер !!SC (при помещении учит +1 атаки)
Потерпевший кораблекрушение (тип = 86, подтип=0) (используйте OB:C для настройки артефакта, при помещении у него Книга Заклинаний)
Сундук сокровищ (тип=101, подтип=0) - ресейвер !!CH (значение B=0 при помещении)
Дерево знаний (тип=102, подтип=0) - ресейвер !!KT (учит бесплатно, имеет нулевой номер при помещении)
Вагон (тележка) (тип=105, подтип=0) - ресейвер !!WG (при помещении находка не задана)
Гробница воина (тип=108, подтип=0) - ресейвер !!WT (при помещении артефакт не задан)
Водяная мельница (тип=109, подтип=0) - ресейвер !!WM (при помещении не имеет золота)
Ветряная мельница (тип=112, подтип=0) - ресейвер !!ML (при помещении не имеет ресурса)

Эти объекты не будут работать корректно и могут вызвать нестабильность игры, вылет карты или другие проблемы при помещении:

Пустышка (тип = 1) - игра вылетит при попытке помещения объекта
Якорь (тип = 3) - игра вылетит при попытке помещения объекта
Ящик Пандоры (тип=6) - игра вылетит при посещении объекта
Черный Рынок (тип=7) - игра вылетит при посещении объекта
Герой (тип=34) (используйте команду HE:P для помещения героя на карту)
Рынок времени (тип=50) - игра вылетает при попытке помещения объекта
Тюрьмы (тип=62) - видимых проблем не создает, при посещении объявляется, что герой был освобожден королем, и тюрьма исчезает.
Хижина провидца (тип=83) - игра вылетает при наведении мышью на объект или при посещении, НО вы можете корректно поместить объект (см. ниже)
Страж задания (тип=215)
Гарнизон (тип = 219) - гарнизон просто не работает

Некоторые объекты имеют разные модели для разной почвы. Для их помещения используйте синтаксис UN:Ix/y/l/T/S/T/S/tr; где x/y/l - координаты, T - тип объекта, S - подтип, tr - почва, на которой находится нужный объект. Пример:
!!UN:I25/25/0/12/0/12/0/0; - поместить обычный костер
!!UN:I26/25/0/12/0/12/0/3; - поместить костер с текстурами снега
!!UN:I24/25/0/12/0/12/0/1; - поместить костер с текстурами песка

Костер покинутого лагеря (тип = 12) - имеет вариации для песка, снега, подземелья, лавы.
Лебединый пруд (тип = 14) - имеет вариации для грязи, травы и болота
Фонтан удачи (тип = 30) - имеет заснеженную вариацию
Форт на холме (тип = 35) - имеет заснеженную вариацию
Волшебный Колодец (тип = 49) - имеет заснеженную вариацию
Шахты (тип = 53) - имеют вариации для разных почв
Обелиск (тип = 57) - имеет вариации цвета для каждой почвы
Обсерватория Красного дерева (тип = 58) - имеет снежную вариацию
Хижина провидца (тип = 83, подтип 0-2) - с помощью данного синтаксиса вы можете поместить ее, но она будет заброшена провидцем, почва не влияет на внешний вид.
Склеп (тип = 84) - имеет вариацию со снегом (по умолчанию) и без
Знак (тип = 91) - имеет вариации для разных почв
Рынок (тип = 99) - имеет вариации для грязи, скал
Водяная мельница (тип = 109) - имеет вариации для травы и для снега (по умолчанию)
Ветряная мельница (тип = 112) - имеет вариации для травы (по умолчанию) и для снега

J#
J0/#/$
Запретить заклинание
# - номер заклинания (0…69)
$ - разрешить/запретить
0 – разрешить
1 – запретить
Комментарий

Этот запрет работает только для гильдий магов и пирамид, но вы можете проверить значение, установленное здесь, для любого ERM-скрипта. Так как магические гильдии и пирамиды генерируют заклинание в начале карты (перед полной загрузкой), мы советуем использовать эту команду как инструкцию.
Для святынь Магии запрет не работает, т.к. используются другие внутренние механизмы. Однако вы можете изменить заклинание святыни проверкой через ресейвер SR.

J1/$1/?$2
Установить/получить ограничение уровнем и опытом.
$1 – уровень ограничен $1 (установить/проверить/получить)
$2 – опыт для этого уровня
Комментарий

Опыт автоматически устанавливается для этого уровня.
Пример:
!!UN:J1/35/?y10; - здесь мы установим потолок в 35 уровней и запомним число опыта до 35го уровня в y10.
!!UN:J1/?y1/d J1/30/?y2 J1/y1/d; - найдем количество опыта, которое будет при получении 30 уровня, не изменяя ограничения на уровень и опыт (т.е. мы можем динамически находить нужные числа, не прибегая к таблице)

J2/$
Установить/проверить/получить сложность, выбранную игроком (0...4)

J3
Эта команда позволяет вам установить путь к файлу, содержащему настройки WoG'ификации.
Пример

!#UN:J3/^МойФайлНастроек^;
Путь может содержать папку или абсолютный путь, как эти:
- ^МоиОпции.xxx^ - файл в папке героев
- ^maps\опции.yyy^ - файл в папке Maps
- ^C:\xxx.yyy^ - файл на диске C

J4/$
Установить/проверить/получить радиус «раздумий» ИИ
$ = 32000 в Дыхании Смерти по умолчанию
= 4096 – текущее в WoG
Комментарий

Это не количество квадратов, анализируемых ИИ. Это общий радиус ИИ, основанный на его очках хода и почве. Для травы, один квадрат тратит 100 очков. Значение не сохраняется при сохранении игры. Если значение слишком мало, герой ИИ будет просто стоять на месте, не двигаясь вообще.

J5/$
Разрешить/запретить «автосохранение»
$ = 1 – разрешить
$ = 0 – запретить
Комментарий

Статус "запретить" не сохраняется в файле игры, так что если вам нужно восстановить отмену, поместите эту команду после триггера !?GM0. В большинстве случаев мы рекомендуем не отключать автосохранение, так как оно может стать точкой восстановления игры, если что-либо пойдет не так.

J6/#/$
Генерировать случайный артефакт определенного уровня.
# - установить класс
= -1 – случайный
= 1 – внеклассовый (Грааль и WoG-артефакты)
= 2 – сокровище
= 4 – ценный
= 8 – важный
= 16 – реликт
$ - получить/проверить номер артефакта.
Пример:
!!UN:J6/16/?v10; - получить случайный реликт в v10.
Комментарий

Функция генерирует только разрешенные артефакты. Артефакты 1го класса включают в себя Грааль, Книгу заклинаний, Свиток заклинания и все боевые машины. Вы можете генерировать артефакт из нескольких классов, например 18 = реликты и сокровища. Сгенерированные артефакты в одном и том же триггере не повторятся.

J7/#/$
Установить/проверить/получить артефакт, продаваемый в торговцах артефактами.
# - номер слота (0…6)
$ - номер артефакта в слоте
Комментарий

Вы можете установить, получить или проверить артефакт. «-1» значит отсутствие артефакта. Данная команда не работает на Черный рынок
Пример:
!!UN:J7/3/?v10; - получить артефакт в слоте 3
!!UN:J7/v5/v20; - установить артефакт v20 в слот v5

J8/$1/$2
J8/$1/^Текст^
Команда, проверяющая существование внешних файлов
$1 – место поиска
$2 – номер z-переменной или ^текст^ с именем файла.
Флаг 1 установится на истину, если файл существует, иначе - на ложь.
Места для поиска

0 – в папке героев
1 – в Data
2 – в Maps
3 – в Random maps
4 – в Games
5 – в Data/S
6 – в Data/P
7 – в Data/ZVS/LIB1.res
8 – в Data/ZVS/CMP.res
9 – в ERM_HELP
10 – полный путь, указанный в z-переменной либо в ^текст^

J9/$1/$2
Команда копирует путь к папке героев
$1 – место (откуда брать путь) (см. UN:J8)
$2 – номер z-переменной, куда его записать.
Пример: скопируем путь в z10. Пусть Герои у нас установлены в C:\HOMM\WOG, команда UN:J9/2/10.
Получаем в z10 следующий текст: «C:\HOMM\WOG\»

J10
Текст будет скопирован в WOGERMLOG.TXT. Эту команду можно использовать в любое время (записать все ненулевые переменные в файл)

J11/$
Установить/проверить/получить поведение мыши при клике правой кнопкой на вражеском стеке в бою.
Только ТЕ или выше
0 - окно остается на экране (WoG-style).
1 - окно закрывается при отпускании кнопки мыши (SoD-style)
Информация о команде сохраняется в игре.

K#/$
Установить параметры «новой недели»
K1/$ - запретить ($ = 1) все «неделя …» (монстров/бесов) или разрешить ($ = 0)
K2/$ - установить сообщение при наступлении новой недели в текстовую переменную $
Примечание: эта команда НЕ отменяет появление недели/месяца бесов, если в Инферно построен Бог Огня.

L#1/#2/#3/#4
Переместить взгляд на позицию
#1 – X
#2 – Y
#3 – L
#4 – время ожидания (1000 = 1 секунда)
Комментарий

Пример кода - обычный Глаз Мага, открывающий карту, но данная команда лишь переносит взгляд. Так же, если вы используете эту команду в триггере объекта, имеющего стандартные, не ERM функции, может открыться окно обмена между героем и его фантомным клоном. Во избежание этого отключайте свойства объекта командой OB:S, и после выполнения этого ресейвера включайте обратно (если нужно).

L#1/#2/$
Установить/проверить/получить посещен ли обелиск.
#1 – номер игрока (0…7)
-2 = для всех
-1 = для текущего
#2 – номер обелиска (-1, 0…47)
-1 = все
$ - обелиск посещен (1) или нет (0)

M#/$
Установить параметры «Месяц …»
M0 – обычный, неизмененный месяц
M1 – запретить месяца монстров
M2/$ - установить месяц монстра $
M3 – установить месяц чумы
Примечание: месяц Беса, если в Инферно построен Грааль, эта команда НЕ отменяет.

N
Узнать название:
N0/z#/$ - имя артефакта ($ = номер)
N1/z#/$ - имя заклинания ($ = номер)
N2/z#/$1/$2 – имя здания ($2) в городе $1 (0-8)
N3/z#/$1/$2 – имя монстра ($1) (одиночного: $2=0, нескольких: $2 = 1)
N4/z#/$ - имя вторичного навыка ($ = номер)
Эта команда позволяет вам получить имя артефакта, заклинания, строения, монстра или вторичного навыка по его номеру и занести его в z-переменную для дальнейшего использования в сообщениях.
Пример

!#UN:N0/z100/5;
!#UN:N1/z101/6;
!#UN:N2/102/7/1;
!#UN:N3/103/8/0;
!#UN:N3/104/8/1;
!#IF:M^=%Z100=%Z101=%Z102=%Z103=%Z104=^;

N5/#1/#2/#3/#4
Записать z-переменную в общую секцию файла wog.ini :
#1 - номер z-переменной для записи
#2 - номер опции (любое положительное значение)
#3 - опциональный параметр - номер z-переменной для записи в пользовательскую секцию
#4 - опциональный параметр - номер z-переменной, хранящей имя файла (без части ".INI"), можно с абсолютным путем.
Примечание: если вы используете параметр 4, вы должны использовать параметр 3.
N6/#1/#2//#3/#4
Прочитать z-переменную из общей секции файла wog.ini :
#1 - номер z-переменной для сохранения текста
#2 - номер опции (любое положительное значение)
#3 - опциональный параметр - номер z-переменной для использования пользовательской секции вместо общей.
#4 - опциональный параметр - номер z-переменной, хранящей имя файла (без части ".INI"), можно с абсолютным путем.
Примечание: если вы используете параметр 4, вы должны использовать параметр 3.
Комментарий
Вы можете сохранять и загружать глобальные или местные z-переменные. Номер опции должен быть уникален для процедуры сохранения или загрузки (один номер опции на z-переменную). Так, если вы сохранили z-переменную как опцию 123456, вы можете загрузить сохраненное значение в любую другую z-переменную, используя ту же опцию 123456.
Значение не сохраняется при сохранении игры, но записывается во внешнем INI файле (wog,ini, если параметр 4 опущен). Вы можете использовать эту команду без проблем как инструкцию. Так, для записи переменной z-1, названной "Главная_переменная", в файл "Мой.var" в папку GAMES (секция "MyLocalSettings") с опцией 4, используйте:
!!VRy1:S4;
!!VRz-1:S^Главная_переменная^;
!!VRz-2:S^MyLocalSettings^;
!!VRz-3:S^GAMES\My.var^;
!!UN:N5/z-1/y1/-2/-3;

O$1/$2/$3
Удалить объект
$1 – X
$2 – Y
$3 – уровень
Дополнительный синтаксис:
O$1/$2/$3/h
Удалить объект в X/Y/L и описание (если было установлено)
h = 1 – удалить описание
h = 0 – не удалять
Для предыдущего синтаксиса O$1/$2/$3 описание не удаляется (h=0)
Комментарий

В обоих случаях X, Y, уровень означает правый нижний угол объекта.
Существует несколько таблиц для каждого объекта на карте. И перекрестные ссылки не всегда существуют. Обычно Герои используют поиск по координатам. Когда вы удаляете объект, некоторые таблицы остаются (храня информацию о удаленном объекте). Если вы затем добавляете новый объект в то же место, новая информация будет добавлена в таблицу. Но затем, когда игре понадобится получить информацию о этом новом объекте, она начнет поиск в таблице по позиции. Очевидно, что сначала будет найдена информация о старом (удаленном) объекте. Я рекомендую настроить старый объект, удалить его, поместить новый и снова настроить.
Помните, что эта проблем возможна для объектов одного типа и не в каждом случае.

P$
Установить поведение жилищ 8го уровня
$ = 1 – жилище 8го уровня (после найма не работает)
$ = 0 – как обычное
Комментарий

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

P#/$
Установка WoG-опций
# - номер опции
$ - статус опции
Некоторые опции:
# = 0 – поведение жилищ 8го уровня (см. выше)
# = 1 – опыт стрелковых башен: как в SoD (1) или как в WoG (0)
# = 2 – можно оставлять монстров на карте (1 – нельзя, 0 – можно)
# = 3 – командиры: 1 – запретить, 0 – разрешить.
Комментарий

Сейчас, если карта имеет внутренние скрипты и не имеет команды !#U:P3/#, карта запускается в условиях WoG 3.56 (без командиров и т.п.). Но если карта имеет данную команду (не важно, !#UN:P3/0 или !#UN:P3/1), карта принимается как новая и запускается в условиях WoG 3.57 (так, все внутренние особенности WoG устанавливаются из файла настроек WoGификации или командами !#UN:P). Сейчас исправлена проблема с невозможностью включить командиров инструкцией !#UN:P3/0 при использовании в триггере таймера.
# = 4 – разрушение замков: запретить (1) или разрешить (0)
# = 5 – WoGифицировать: нет (0), все карты формата WoG (1), все карты любого формата (2)
# = 6 – герои начинают с командирами или нет (0 – с, 1 – без (должен быть нанят)
Комментарий
Чтобы командир нанимался в городе за 100 золотых, вместо автоматического получения героем в начале игры, нужно использовать UN:P6/1 перед командой UN:P3/0.

# = 7 – жилища копят существ: 0 – нет, 1 – да
# = 8 – жилища копят охранников: 0 – нет, 1 – да
# = 9 – создание Сильванских Кентавров: 1 - разрешено, 0 - нет
Комментарий
Если включено, Сильванские кентавры могут быть бесплатно созданы с помощью Ctrl+левый клик по отряду Капитанов-Кентавров или Благородных Эльфов окне героя (ни в каком другом окне). Равное число Кентавров и Эльфов будет заменено равным количеством Сильванских Кентавров. Т.е. 10 Благородных Эльфов плюс 10 Капитанов-Кентавров = 10 Сильванских кентавров.
Замечание: Сильванские кентавры начинают с 0 опыта и не сохраняют никакого опыта от имеющегося у кентавров ил эльфов перед комбинацией.

# = 10 – оставленные отряды будут присоединятся обратно (1) или нет (0)
Комментарий
Если активно, отряды, оставленные правым кликом, присоединятся обратно к герою, если он нападет на них. Замечание: весь опыт отряда будет потерян при оставлении существ.

WoGифицированные и не WoGифицированные WoG карты без скриптов будут использовать опции WoG выше.
Не-WoGифицированные WoG-карты со скриптами будут иметь отключенных командиров по умолчанию. Для их включения вы должны использовать !!UN:P3/0 после начала карты. Установка этой команды инструкцией (!#UN:P3/0) НЕ разрешит командиров на этой карте.
Для установки командиров-наемников за 1000 золота используйте команду UN:P6/1 перед командой UN:P3/0. Вы можете вставить обе команды в одну строку:
!!UN:P6/1 P3/0;
# = 900 – опыт стеков: 0 – выключен, 1 – включен
# = 901 – система опыта стеков:
0 – каждое существо получает полное количество опыта;
1 – высокое деление: существа малого уровня получают больше опыта, чем существа большого уровня;
2 - низкое деление: существа высокого уровня получают больше опыта, чем существа малого уровня;
3 - делится поровну между всеми существами
Комментарий

Сейчас система опыта по умолчанию 0. Другие опции были использованы ранее, для нахождения лучшей для использования. Хоть и отвергнутые, они остались в игре, так что любой может поэкспериментировать с данной опцией. Если вы решили использовать альтернативную систему, возможно, понадобится также установить более высокий множитель командой EA:H для игроков-людей, и EA:A (также, возможно, EA:S и/или EA:T) для игроков-компьютеров, т.к. опыт начнет делиться между всеми существами в бою, и будет существенно меньше.

# = 902 – можно выбрасывать артефакты на карту: 0 – нет, 1 – да
Комментарий
Вы можете использовать старую опцию 2 и новую 902 вместе:

Номер опции |  | Эффект
Статус
2 | 902 |
0 | 0 | можно оставлять войска
0 | 1 | можно оставлять войска или артефакты
1 | 0 | нельзя оставлять ничего
1 | 1 | можно оставлять артефакты

# = 903 – чит-коды и чит-меню: 0 – разрешить, 1 – запретить
Комментарий

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

# = 904, 905 – установки появлений сообщений об ошибке. Если 1, любое сообщение об ошибке не будет появляться, но опция 905 в любом случае установится на 1. Если опция 904 = 0, сообщение будет показано, и опция 905 установится на 1. Более того, если сообщение отменено, выполнение скрипта не будет прекращено (в секции текущего триггера). Так, вы можете использовать "рискованные" команды.
Пример
!?FU...
...
!!UN:P904/1 P905/0; отменить сообщение о ошибке
!!HE-1:N?v99; получить номер героя в v99
!!UN:P905/?i;
!!FU&i>0:E; выйти, если ошибка
Если вы используете стандартную версию
!?FU...
...
!!HE-1:N?v99;
 ошибка появится, если герой не участвует в триггере.
# = 906 – получение существами опыта: 0 – могут получить, 1 – не могут.
Примечание: если вы установите эту опцию на 1, а система опыта будет включена, существа не будут получать опыт в битвах, но вы сможете установить опыт через ERM.

Q#
Выиграть или проиграть игру для ТЕКУЩЕГО игрока
# = 0 – проиграть
# = 1 – выиграть
Расширенный синтаксис:
Если вы используете второй фантомный параметр, победа или проигрыш игры выполняется другими функциями. Используйте в случае неработоспособности предыдущего
Пример

!!UN:Q0/1; - проигрыш текущего игрока
!!UN:Q1/1; - победа текущего игрока

R#
Обновить экран
# = 1 – обновить карту, экран героя и роя (все с правой стороны)
# = 2 – обновить строку ресурсов
# = 3 – см. R3/#
# = 4 – обновить экран города
Комментарий

Четвертая команда должна использоваться только в экране города, иначе игра вылетит.

R3/#
Обновить экран героя внутри триггера !?CM2
Эта команда работает только после триггера !?CM2, пока показывается окно героя. Попытка использовать эту команду в другом месте вызовет вылет игры.
# - номер героя (-1 = текущий)

R4/#
Обновить экран города
Комментарий

Команда должна использоваться только в экране города, иначе игра вылетит.

R5/$1/$2
Установить вид курсора
$1 – тип мыши
$2 – подтип мыши
Комментарий

Покажите любой диалог для обратного превращения курсора в стрелку. Если вы установили любой курсор, он будет возвращен на обычный после команды UN:R7.

R6/$
Ждать
$ - время в мс (1000 = 1 секунда)

R7/$1/$2
R7/$1
Курсор мыши: скрытие и деактивирование
$1 – показать (0) или скрыть (1) курсор
$2 – разрешить (0) или запретить (1) изменения курсора
Комментарий

Когда вы посещаете любой объект (например, рыболовный колодец), триггер !?OB начинает работу, курсор исчезает. Так что, если ваш скрипт достаточно длинный, вы можете настроить курсор в виде песочных часов вручную. Затем, чтобы вернуть курсор по умолчанию, нужно сделать что-либо следующее:
- начать новую игру
- загрузить игру
- любое сообщение (можно с ERM)
- любой расширенный диалог WoG
Так, для рыболовного колодца может быть так:
!!UN:R5/1/1;
!!UN:R7/0/1;
Затем, если вы покажете сообщение или вопрос:
!!IF:...
снова отменяем курсор:
!!UN:R5/1/1;
!!UN:R7/0/1;
в конце скрипта вы можете включить курсор:
!!UN:R7/0/0;

S#1/#2/#3/#4/#5
Открыть (показать) часть карты (круглую область)
#1 – X
#2 – Y
#3 – L
#4 – игрок
#5 – радиус
Комментарий

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

T#1/#2/#3/$
Установить монстра для найма в замке
#1 – тип города (0…8)
#2 – уровень (0…6)
#3 – базовый (0) или улучшенный (1)
$ - тип монстра
Комментарий

Команда работает в городах, включительно ИИ. Вы можете установить команду как инструкцию. Помните, что вы можете усилить "притягательность" существа для ИИ установкой ИИ значения командой !!MA:I. Дополнительные ресурсы предполагаются только для жилища 7го уровня.

U#1/#2/?$
Сосчитать все объекты на карте
#1 – тип объекта
#2 – подтип объекта (-1 – любой)
$ - количество объектов типа #1, подтипа #2 (только проверить или получить)
Пример
!!UN:U54/i/?n;
В переменной n теперь хранится кол-во объектов типа 54 и подтипа i.
Комментарий

Если вы подсчитываете города, то помните, что в начале игры счетчик не учитывает случайные города (т.к. они имеют номер 77, а не 98). Будьте внимательны.

U#1/#2/#3/#4
Получить координаты объекта
#1 – тип объекта
#2 – подтип объекта (-1 – любой)
#3 – номер объекта (1…последний объект; -1 – с первого объекта, -2 – с последнего объекта)
#4 – v-переменная с коодинатами: v[#4]=X; v[#4+1] = Y; v[#4+2] = L
Пример:
!!UN:U54/i/3/324; - v324, v325, v326 теперь содержат координаты объекта типа 54, подтипа i и под номером 3.
Комментарий

все объекты считаются:
слева направо, сверху вниз; поверхность, а потом подземелье.
Наглядно:
0 1 3 6
2 4 7
5 8
9
Техника быстрого поиска
Если вы используете синтаксис поиска объекта UN:Uтип/подтип/номер/номер_переменной, вы можете установить номер на -1. Это означает, что поиск объекта будет вестись, основываясь на координатах предыдущего найденного объекта того же типа.
В стандартном синтаксисе (номер = 1...) UN:U проверяет все объекты такого типа до нахождения искомого номера. Это долгий процесс на больших картах, особенно если это часто встречающийся объект.
С новым синтаксисом (номер = -1) координаты возвращаются в v[номер_переменной]/v[номер_переменной+1]/v[номер_переменной+2], и поиск следующего объекта ведется не с начала карты, а с последнего найденного. Поясняю - процесс идет быстрее, но требует вашего не вмешательства в переменные с координатами последнего найденного объекта.
Пример 1
**********
Этот скрипт работает нормально
!!UN:U53/-1/1/1; (получить координаты шахты 1: v1/v2/v3)...
!!VRv1:S99; (изменить v1 на что-либо)
...
!!UN:U53/-1/2/1; (получить координаты шахты 2: v1/v2/v3)
...
**********
Этот скрипт работает неправильно! v1 была изменена
!!UN:U53/-1/1/1; (получить координаты шахты 1: v1/v2/v3)
...
!!VRv1:S99; (изменить v1 на что-либо)
...
!!UN:U53/-1/-1/1; (получить координаты следующей шахты (2): v1/v2/v3)
...
**********
Этот скрипт работает нормально
!!UN:U53/-1/1/1; (получить координаты шахты 1: v1/v2/v3)
... (v1/v2/v3 НЕ изменялись)
!!UN:U53/-1/-1/1; (получить координаты следующей шахты (2): v1/v2/v3)
... (v1/v2/v3 НЕ изменялись)
!!UN:U53/-1/-1/1; (получить координаты следующей шахты (3): v1/v2/v3)
...
**********
Этот скрипт работает нормально
!!VRv1:S-1; (начать поиск с первого объекта на карте)
!!UN:U53/-1/-1/1; (получить координаты следующей шахты (1): v1/v2/v3)
... (v1/v2/v3 НЕ изменялись)
!!UN:U53/-1/-1/1; (получить координаты следующей шахты (2): v1/v2/v3)
... (v1/v2/v3 НЕ изменялись)
!!UN:U53/-1/-1/1; (получить координаты следующей шахты (3): v1/v2/v3)
...

Пример 2
***************
ZVSE

 !#TM1:S1/999/1/1; установить таймер 1 для красного

!?TM1;
!!UN:U16/-1/?v100;
!!VRv1:S-1;
!!IF:M^Найдено %V100 банков существ. Теперь пройдемся через все:^;
!!DO123/1/v100/1:P;

!!IF:M^Пелена окутывает вас...^;
!!UN:H72/72/1/1/100; закрыть для красного

!!VRv1:S-2;
!!IF:M^Теперь в обратном порядке^;
!!DO124/1/v100/1:P;

 !?FU123;
!!UN:U16/-1/-1/1;
!!UN:Sv1/v2/v3/0/3; Открыть для красного
!!UN:Lv1/v2/v3/100; Передвинуть взгляд на 100 мс

!?FU124;
!!UN:U16/-1/-2/1;
 !!UN:Sv1/v2/v3/0/3; открыть для красного
!!UN:Lv1/v2/v3/100; передвинуть взгляд на 100 мс
***************
Скрипт прокрутит перед вами все банки существ в обычном и обратном порядке.

V?$1/?$2
Получить версию WoG и используемого ERM.
$1 – версия WoG (3.58 = 358)
$2 – версия ERM (2.81 = 281)
Комментарий

Вы можете только проверить или получить значение, но не установить.
Используйте команду инструкцией для проверки на наличие у игрока нужной версии и затем покажите сообщение для игрока о устаревшей версии дополнения, если она такова. Это лучше, чем если игрок пройдет половину карты перед тем, как наткнется на некорректный для данной версии скрипт и не закончит карту.
Пример:
!#UN:V?y1/?y2;
!#IF|y1<358/y2<280:M^Для работы этой карты нужен WoG не старее 3.58 и версией ERM не старее 2.80. Пожалуйста, обновите свои файлы.^;

V?$1/?$2/?$3/?$4/?$5
Получить версию WoG и используемого ERM. Продвинутый синтаксис
$1 – версия WoG
$2 – версия используемого ERM
$3 – один или более людей в игре
= 1 – человек один
= 2 – больше одного
$4 – один или более PC в игре
= 0 – один PC
= 1 – больше одного
$5 – тип игры
= 0 – один игрок
= 1 – IPX
= 2 – TCP/IP
= 3 – Hot Seat
= 4 – Direct Connect
= 5 – модем
Расширенный синтаксис:
V?$1/?$2/$?3/?$4/?$5/?$6/?$7
$1…$5 – см. выше
$7 – чит-меню: активировано (1) или отключено (0)
$8 – использование читов: было (1) или нет (0)
Комментарий

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

W#1/#2/#3/#4/#5
Сделать линию воды доступной для героя.
#1 – X1
#2 – Y1
#3 – X2
#4 – Y2
#5 – L
Дополнительный синтаксис:
W#X1/#Y1/#X2/#Y2/#L/$
Поместить/удалить путь (бревна) на воде
$ - поместить (1) или убрать (0)
Комментарий

Эта линия недоступна для лодки.

X?$1/?$2
Получить размер карты
$1 – номер переменной, куда занесется размер (X=Y)
$2 – равно 0, если один уровень, и 1, если 2 уровня (подземелье/поверхность).
Можно только проверить или получить.
Пример

!#UN:X?i/?j;
!#VRz1:S^только один уровень^;
!#VRz1&j=1:S^два уровня^;
!#IF:M^Карта имеет %Z1 и размер X=%Vi Y=%Vj^;


Ресейвер UR

Опции UR: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер UR (университет)

!!UR#1/#2/#3:XXXX; - университет в X Y L. Университет - тип 104.

S$1/$2/$3/$4
Предлагаемые навыки. $1 = номеру первого навыка и т.д.


Инструкция VC

Опции VC: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Инструкция VC (контроль переменных)

Используется для регистрации флагов, переменных, функций (FU) и кругов функций (DO), используемых в скрипте.
Этим можно сохранить используемые значение во внешний файл: ERMVarsUsed.LOG для последующего использования.
Внимание: этот ресейвер должен использоваться как инструкция (!#VC), иначе этот синтаксис не будет иметь смысла.

Комментарии и примечания

Заметьте, что операция записи и сохранения запускается только когда ERM компилятор выполняет эти команды, т.е. в процессе WoGификации карты, перед первым днем. Так, вам нужно лишь начать игру для записи всех использованных переменных.
Вы можете использовать B и E парами более одного раза дл анализа разных частей скрипта. Эффект будет тот же.

Пример: переменная v10 и v12 будут записаны, а v11 - пропущена:
!#VC:C B; очистить список, начать запись
!!VRv10:...; используем переменную v10
!#VC:E; останавливаем запись
!!VRv11:...; используем переменную v11
!#VC:B; начинаем запись
!!VRv12:...; используем переменную v12
!#VC:E W C; останавливаем запись, записываем файл ERMVarsUsed.LOG, очищаем список
Как вы видите, очистка списка производится в начале и в конце операции.

Вы также можете несколько раз использовать секции Y и N.
Пример:
!#VC:C B;
!!VRv10:...;
!!VRv11:...;
!#VC:Y;
!!VRv11:...;
!!VRv12:...;
!#VC:N;
!!VRv12:...;
!!VRv14:...;
!#VC:Y;
!!VRv14:...;
!#VC:N;
!!VRv13:...;
!#VC:E W C;
Эти переменные будут обозначены как повторяющиеся: v11 и v14;
и обычные переменные: v10,v12,v13
(v12 не обозначается как перекрестная ссылка, т.к. не использовался перед поверкой.)

Инструкция VC позволяет вам регистрировать данные типы элементов:
1. флаги : 1...1000
2. v-переменные: v1...v10000
3. w-переменные: w1...w100
4. z-переменные: z1...z1000
Помечается:
- 'p' если использован(а) как параметр;
- '&' если использован(а) в секции &;
- '|' если использован(а) в секции |;
- '*' если повторяющийся;
5. Таймеры: TM1...TM100
- помечаются 't', если триггер был найден
- помечается 'r', если ресейвер или инструкция были найдены
6. Функции/круги функций: FU1...FU30000, DO1...DO30000
- помечаются 't', если триггер (сама функция) была найдена
- помечается 'r', если ресейвер или инструкция, вызывающие функцию, были найдены
- отмечается 'd', если ресейвер или инструкция, вызывающие круги функций, были найдены

VC не может записывать косвенные переменные вроде:
!!VRvx10:...
Номер переменной неизвестен в данное время, потому что x10 неопределенна в данный момент.
Это значит, что если вы хотите проверить свой скрипт, и если в нем были использованы такие косвенные переменные, то вам придется проверять его вручную, линию за линией. Чтобы избежать такой работы в будущем, в начале можно инициализировать все нужные переменные, например:
!#VR...:S0;
в начале скрипта, чтобы записать эту переменную

Вы можете записывать переменные от нескольких файлов скрипта. Скажем, вы можете поместить !#VC:CB; в файл script00.erm и !#VC:EWC; в script40.erm, и вы получите полный список переменных во всех скриптах от 0 до 40.
Log-файл создается при загрузке карты и называется "ERMVarsUsed.log". Если файл с таким именем уже существует, он будет перезаписан.

Мы рекомендуем использовать опции Y и N для записи переменных/таймеров/функций, использующихся в вашем скрипте и в других.
Для этого вы должны установить номер для вашего скрипта больший, чем у других скриптов, записать переменные во всех остальных скриптах, и использовать секции Y и N в вашем скрипте.
Пример:
У вас есть скрипты 0,1,2,3,4,5...50 и нужно проверить ваш скрипт на совпадающие переменные.
1. Установить номер вашего скрипта, например, script99.erm (условие вполнено: 99 > 50).
2. Добавить "начать запись" в начало первого скрипта (script00.erm):
!#VC:CB;
3. Добавить "начать проверку на повторяющиеся переменные" в начало вашего скрипта (script99.erm):
!#VC:Y;
4. Добавить "остановить проверку на повторяющиеся переменные" в конце вашего скрипта (script99.erm):
!#VC:N;
5. Добавить "остановить запись и записать" в конец вашего скрипта (script99.erm):
!#VC:EWC;
Так, если ваш скрипт использует переменные/таймеры/функции, которые уже использовались в предыдущих скриптах, они будут отмечены в log-файле '*'.
Если вы хотите сделать ту же операцию для внутренних скриптов карты, установить номер скрипта как день события и делать вышесказанное.

B
Начать регистрацию использованных переменных

C
Очистить список используемых переменных ERM

E
Прекратить регистрацию переменных

N
Остановить проверку секции

W
Записать переменные в "ERMVarsUsed.log"

Y
Начать проверку секции


Ресейвер VR

Опции VR: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер VR (переменные)

!!VR@:XXXX; - менеджмент переменных. Используется для действий с переменными (установка, сравнение, математические действия).
См. также: флаги и переменные

Логические операции: И, ИЛИ, XOR; арифметические операции, команды над текстовыми переменными, переменные в сообщениях, соединение текстовых переменных

C$1/$2/$3/$4/$5/$6/$7/$8/$9/$10/$11/$12/$13/$14/$15/$16
Установить/проверить v-переменные
$ - значение для v-переменной @
$1 – установить/проверить первую v-переменную (@)
$2 – установить/проверить вторую v-переменную (@+1)
$3 - установить/проверить третью v-переменную (@+2)
…
!!VR$:C$1/$2/$3… до 16 параметров.
Пример

!!VRv123:C23/v15/?i/y4;
Результат:
v123 = 23; v124 = v15; i = v125; v126 = y4
Пример от Donald:
Можно использовать эту команду для составления таблицы; это простой метод получения случайного заклинания. К примеру:
!!VRv600:C0/3/5/15/27/31/32/35/37/41/42/43/46/53/54; - таблица номеров заклинания первого уровня
!!VRy1:S600 R14;случайное число 600-614
!!VRv1:Svy1; теперь v1 хранит случайное заклинание первого уровня

Rx
Генерировать случайное значение от 0 до x (включительно) и ДОБАВИТЬ его к текущему значению.
Пример:
!!VRi:R25; - будет сгенерированно случайное число от 0 до 25 включительно и добавлено к текущему значению i.

R#/$
Установить генератор случайных чисел на одно значение.
# - фантомный параметр (не используется)
$ - номер случайного числа в генераторе для синхронизации.
Если вы не уверены, что генератор случайных чисел в одинаковой позиции на обоих компьютерах, вы можете просто перезапустить их на один ритм.

S#
Установить переменную @ на # (здесь и ниже # может означать имя другой переменной)

T$
Генерировать случайное значение от 0 до $ и добавить его к текущему значению переменной. Значение базируется на значении времени.
При использовании этой команды, если вы сгенерируете два или более значения за один ресейвер, они могут быть равными, поэтому в таких ситуациях используйте опцию R.

Логические битовые операции
&$
И [1&1=1; 1&0=0; 0&1=0; 0&0=0]
& - логическая операция И над битами переменной и может быть использована для проверки, был ли установлен определенный бит. Например, проверим, есть ли в v1 5ый бит (16):
!!VRv1:&16;
v1 будет установлена на 16, если 5ый бит существует, и на 0, если не существует. Эта команда может быть очень полезна при проверке на флаги монстров.
Пример

!!BRx16:F?i; - записать флаг в переменную i
!!VRi:&33554432; - посмотреть, существует ли бит «ждать»
!!IF&i>0:M^Этот стек ожидает^;
Вы также можете удалить определенный бит без удаления остальных бит в переменной. Для этого используйте отрицательное число минус один. Например, для удаления 5ого бита (16), используйте -17:
!!VRv1:&-17;

|$
ИЛИ [1|1=1; 1|0=1; 0|1=1; 0|0=0]
«|» - логическая операция ИЛИ над битами переменных и может быть использована для установки определенного бита без изменения других бит. Например, установим 6ой бит (32) для v1:
!!VRv1:|32;
Если v1 уже имеет этот бит, ничего не изменится. Если нет, бит будет установлен. Это может быть полезно для добавления новых флагов монстрам, если вы не знаете, какие флаги они уже имеют, и фактически, это единственный полностью безопасный синтаксис для этого действия.

X$
Выполняет логическое исключающее ИЛИ над битами переменной
Например, X-1 инвертирует биты переменной.
Для проверки разницы между двумя переменными используйте синтаксис: VR@:X$, где @ - переменная, являющаяся одной из переменных для сравнения и также получающая результат сравнения.$ - вторая переменная для сравнения.
Пример

Скажем, v1=163 (10100011) и v2=106 (01101010). Тогда
!!VRv1:Xv2; v2 все еще 106
10100011
01101010
XOR ----------
11001001
Итак, v1=201 (11001001)

Арифметические операции с переменными.
+#
Добавить # к переменной
-#
Отнять # от переменной
Пример:
!!VRi:-1 +v15; - отнять единицу и прибавить v15
*#
Умножить переменную на #
:#
Разделить переменную на # (не пытайтесь разделить на 0)
%#
Установить переменную на значение остатка от деления на #

Команды с текстовыми переменными
!!VRz#
Есть следующие текстовые переменные:
z1…z1000. Они могут быть изменены (любая переменная) для использования.

H#
Установить, содержит ли z-переменная пустое значение или нет.
# - номер флага для сохранения результата
= 1 – если там текст
= 0 – если переменная пуста
Все знаки вроде пробела, новых строк будут игнорированы и расценены как пустые.
Пример

!!VRz100:S^Здорово!^;
!!VRz101:S^^;
!!VRz102:S^ ^;
!!VRz100:H300; - флаг 300 = 1
!!VRz101:H301; - флаг 301 = 0
!!VRz102:H302; - флаг 302 = 0

M#
!!VRz#:M1/z#1/#2/#3
Получить подтекст из переменной z#1 и установить его в z#
z# - переменная, куда сохранять результат
z#1 – переменная – исходник
#2 – позиция, откуда начинать копирование (0 – по умолчанию) (в символах)
#3 – длина подтекста для копирования (в символах)
Пример

!!VRz1:S^Давайте попытаемся скопировать этот текст^;
!!VRz2:M1/z1/8/10;
Получим: z2 = «попытаемся»

!!VRz#:M2/z#1/#2
Получить слово #2 из переменной z#1 и установить его в z#
z# - переменная, куда сохранится слово
z#1 – переменная – исходник
#2 – номер слова (по умолчанию – 0)
Комментарий

Разделители: пробелы, точки, запятые, знаки табуляции, новые строки.
Пример:
«Переменная, которая содержит. И еще много слов»
Мы получим следующие слова:
0 -> «Переменная»
1 -> «которая»
2 -> «содержит»
3 -> «И»
4 -> «еще»
5 -> «много»
6 -> «слов»

!!VRz#:M3/#1/#2
!!VRz#:M3/#1
Конвертирует число в текст.
z# - переменная, которая будет содержать результат
#1 – любое число (переменная) для конвертирования
#2 – система исчисления (по умолчанию – 10)
Пример

!!VRz1:M3/123; - z1 = «123»
!!VRz1:M3/123/10; - z1 = «123» (как и выше)
!!VRz1:M3/-123; - z1 = «-123»
!!VRz1:M3/127/16; - z1 = «0x7F» (шестнадцатеричная система счисления)

!!VR#:M4/?$
Получить длину текста
# - номер z-переменной
$ - любая числовая переменная (для записи длины)
В длину включаются пробелы.

!!VR#:M5/?$
Получить количество пробелов в начале текстовой переменной
# - z-переменная
$ - любая числовая переменная (для записи номера позиции)
Счет начинается с 0 (нет пробелов). Если переменная (текстовая) пуста, позиция равна -1.

!!VR#:M6/?$
Получить номер последнего символа (не пробела)
# - z-переменная
$ - любая числовая переменная (для записи номера позиции)
Счет начинается с 0. Если переменная пуста, позиция равна 0.
Пример

!!VRz10:S^  Абв Где   ^; - текст
!!VRz10:M4/?y5; - получить длину в y5
!!VRz10:M5/?y6; - получить порядковый номер первого символа (не пробел)
!!VRz10:M6/?y7; - получить порядковый номер последнего символа (не пробел)
Итого: y5 = 12, y6 = 2, y7 = 8.

!!VR$:Vz#
Конвертировать текст в целое значение или значение с плавающей запятой.
$ - любая переменная для интегрирования (f…t, v#, w#, x#, y#) или с плавающей запятой (e)
z# - переменная-исходник (z)
Вы можете использовать синтаксис …е… (инженерский стандарт чисел с плавающей запятой). Если значение не может быть конвертировано, то устанавливается на 0. Знаки пробела игнорируются.
Пример

«123» -> 123
«+123» -> 123
«-123» -> -123
«.325» -> 0.325
«-1.25e+1» -> -12.5 (-1.25 * 10^1)

S^Текст^
Установить текст текстовой переменной.

S#
Копировать текст из переменной z# в эту.

U#
Подтекстный поиск в z-переменных.
Вы можете использовать оба синтаксиса:
!!VRz#1:Uz#2 или !!VRz#1:U^Текст^
Поиск слова из переменной z#2 или слова ^Текст^ в переменной z#1 и установка флага 1 на ИСТИНА, если найдено. z-переменная в обоих случаях может быть любого типа (обычная, локальная, ERT). Эта команда может быть с легкостью ERT-ифицированна.
Комментарий

не зависит от регистра. Так «Меч» будет найден и в «мЕЧ». Пробелы игнорируются, так что «Привет », « привЕт» и « ПривЕт » - все будут значить просто "привет". Но эта команда не пропускает пробелы, если после них идет какой-либо текст. Так что
«привет, это я» и «привет, это я» будут различными.
Пример: здесь вы получите два сообщения : «да!» и «опять да!»
ZVSE
!#VRz100:S^  Меч

^;
!#VRz200:S^
Это Текст про_меч

^;
!#VRz200:Uz100;
!#IF&1:M^Да!^;
!#VRz200:U^

МеЧ
^;
!#IF&1:M^Снова да!^;

Показать переменную в текстовом сообщении

%Vf…%Vt
Показать «быструю» переменную
%V1…%V1000
Показать обычную переменную
%W1…%W200
Показать переменную героя
%X1...%X16
Показать параметр
%F1…%F1000
Показать состояние флага
%Y1…%Y100
Показать локальную переменную

Совмещение текстовых переменных
+#
Соединить текстовую переменную z# с текущей (добавляется в конец)
+^текст^
Соединить текстовую переменную z# с определенным текстом (добавляется в конец)


Ресейвер WG

Опции WG: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер WG (вагон, тележка)

!!WG#1/#2/#3:XXXX; - повозка в X Y L. Повозка – тип 105.

A$
 Номер артефакта

B$
Бонус: артефакт или ресурс
$ = 1 – артефакт
$ = 0 – ресурс

R$1/$2
Тип ресурса и количество:
$1 – тип
$2 – значение

S$
Есть бонус или нет:
$ = 1 – есть
$ = 0 – нет.


Ресейвер WH

Опции WH: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер WH (хижина ведьмы)

!!WH#1/#2/#3:XXXX; - хижина ведьмы в X Y L. Хижина ведьмы – тип 113.

S$
Установить/проверить/получить навык (0…27)


Ресейвер WM

Опции WM: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер WM (водяное колесо)

!!WM#1/#2/#3:XXXX; - водяная мельница в X Y L. Водяная мельница – тип 109.

B$
Количество золота
Указанное число умножается на 500. При значении 0 мельница считается посещенной


Ресейвер WT

Опции WT: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ресейвер WT (гробница воина)

!!WT#1/#2/#3:XXXX; - гробница воина в X Y L. Гробница воина – тип 108.

A$
Номер артефакта

S$
Есть артефакт (1) или нет (0)


Триггер AE

Триггер AE (одевание/снятие артефакта)

Снятие или одевание артефакта
!?AE0; - срабатывает при снятии артефакта
!?AE1; - срабатывает при одевании артефакта

Триггер срабатывает, когда игрок снимает/надевает артефакт, или когда артефакт берется и автоматически одевается.
Этот триггер может быть полезен для скриптов для артефактов, для добавление/отнимания первичных навыков героя или вторичного навыка.
Текущий герой (!!HE-1) – герой-хозяин артефакта.
v998 содержит номер артефакта
v999 содержит номер позиции (слота), куда наделся артефакт.

Комментарий:
Эта команда не работает для рюкзака.
Если вы измените один артефакт на другой, сработает несколько дополнительных триггеров. Вот они:
 1. AE0 (нач. артефакт)
2. AE1 (нач. артефакт)
3. AE0 (нач. артефакт)
4. AE1 (новый артефакт)
5. AE0 (новый артефакт)
6. AE1 (новый артефакт)
Так что будьте внимательны, и помните, что этот триггер не работает на рюкзак.


Триггер BA

Триггер BA (битва)

Данный триггер срабатывает в случае битвы
!?BA0; - в начале битвы
!?BA1; - в конце битвы
!?BA50; - в начале мультиплеерной битвы в роли защитника
!?BA51; - в конце мультиплеерной битвы в роли защитника

Сетевой сервис: !?BG и !?BF срабатывают на обеих сторонах и если переменные одинаковы, эффекты на обеих сторонах тоже идентичны. Только действия игрока не синхронизируются, и BA0/BA50 и триггеры BA1/BA51 делают различия.
Новые триггеры BA:
# = 52 - вызывается в начале битвы на обеих сторонах
# = 53 - вызывается в конце битвы на обеих сторонах
Мы получаем такое начало битвы:
1. Если атакующий за этим ПК (или не-МП игра), вызывается BA0
2. Если за этим ПК защитник, вызывается BA50
3. Вызывается BA52.
Конец битвы:
1. Если атакующий за этим ПК (или не-МП игра), вызывается BA1
2. Если за этим ПК защитник, вызывается BA51
3. Вызывается BA53.

Это значит, что если вы хотите иметь одинаковый код для BA0 и BA50, вам просто нужно сделать секцию с триггером BA52.

ПРИМЕЧАНИЕ Если вы хотите протестировать скрипт в МП-игре, вы не сможете сделать этого в первый ход (день 1).
Вы должны пропустить один день для получения одинаковых параметров всеми игроками.
 Для установок битвы используйте ресейвер !!BA.
Примечание: вы можете использовать внутренние ссылки на героев (копии информации):
!!HE-10:... применяет изменения к копии информации атакующего героя.
!!HE-20:... применяет изменения к копии информации защищающегося героя.


Триггер BF

Триггер BF (поле боя)

!?BF;- вызывается во время подготовки поля боя, прямо перед самой битвой.
Может быть использовано с ресейвером !!BF для установки настроенного поля боя. Не срабатывает в отсутствии в бою игроков-людей.


Триггер BG

Триггер BG (действие в битве)

!?BG#; - этот боевой триггер срабатывает при каждом действии стека или героя (колдовство, бегство или сдача).
!?BG0; - вызывается перед действием
!?BG1; - вызывается после действия

Переменная v997 хранит номер текущего раунда:
v997=0 – первый раунд (после тактической расстановки)
v997=1 – второй раунд
v997=2 – третий раунд
…

Комментарий: вы можете использовать этот триггер с ресейвером !!BG для поиска номера стека монстра (!!BG:N) и использовать этот номер для изменений установок монстра (!!BM). Также, если герой убегает с поля боя, сначала срабатывает триггер !?BG0; и затем, после нажатия на ОК в окне потерь, срабатывает !?BG1.


Триггер BR

Триггер BR (ход битвы)

!?BR#; - этот боевой триггер срабатывает в начале каждого раунда битвы (для первого раунда он срабатывает дважды).

Переменная v997 хранит номер текущего раунда:
# = -1 - "нулевой" раунд (перед тактической расстановкой)
# = 0 – первый раунд (после тактической расстановки)
# = 1 – второй раунд
# = 2 – третий раунд
…
Комментарий: стартовые ходы (-1, 0) идут в "темной" зоне и вы не можете показать никакое сообщение, пока не сможете что-либо сделать.
Примечание: новый раунд начинается между !?BG0 и !?BG1.


Триггер CM

Триггер CM (клик мыши)

!?CM#; - триггер, вызывающийся при клике мышкой.
!?CM0; - вызывается при клике на карте приключений
!?CM1; - вызывается при клике в окне замка
!?CM2; - вызывается при клике в окне героя
!?CM3; - вызывается при клике в окне обмена между героями
!?CM4; - вызывается при клике на поле боя
!?CM5; - вызывается при нажатии левой кнопки на карте приключений

Комментарий:
Вы можете использовать команду !!CM:P только в триггерах, где # = 0 или # = 5 (!?CM; !?CM0; !?CM5;)
Какой-то из этих триггеров должен предшествовать ресейверу !!CM.


Триггер CO

Триггер CO (командиры)

!?CO#; - контроль над командирами.
!?CO0; - вызывается перед открытием окна командира
!?CO1; - вызывается после закрытия окна командира
!?CO2; - вызывается после покупки командира в городе
!?CO3; - вызывается после воскрешения командира в города

Переменные и флаги работают как обычно: флаг 1000 хранит статус ИИ (если = 0, значит, это компьютерный игрок), флаг 999 показывает, ходит ли сейчас игрок за этим компьютером, текущего героя-хозяина можно настроить через !!HE-1:...; командира через !!CO-1:...; переменные v998, v999, v1000 хранят координаты текущего героя.


Триггер DL

Триггер DL (элемент диалога)
Только TE и выше

!?DL; - >Триггер настроенного диалога.
Срабатывает при любом действии мышки или клавиатуры (пока не поддерживается) на любом элементе диалога
Примечания: при срабатывании триггера устанавливаются следующие переменные:
v998 = номер диалога
v999 = номер элемента
v1000 = действие
Возможные действия:
12 - нажата левая кнопка мыши
13 - отпущена левая кнопка мыши
14 - нажата правая кнопка мыши
См. также: ресейвер DL


Триггер FU

Триггер FU (функция)

!?FU#; - функция номер # (1…30000), вызывается ресейвером !!FU.
Код, идущий после этого триггера, становится кодом функции.

Пример:
!?FU25000; - триггер
!!IF:M^Это код функции 25000, и вы увидите это сообщение когда вызовете функцию 25000!^; - код функции
!#FU25000:P; - строка-вызов функции


Триггер GE

Триггер GE (глобальное событие)

!?GE#; - триггер, срабатывающий при появлении Глобального события номер #.
Номер должен следовать в самом начале текста события (заголовок не важен).
Это число НЕ отразится на тексте события, пока используется триггер на это событие.
Пример:
Текст «123Вот ты где!» будет выглядеть как «Вот ты где!» с номером 123.
Для изменения свойств глобального события используйте ресейвер !!GE


Триггер GM

Триггер GM (сохранение/загрузка)

!?GM#; - триггер на сохранение и загрузку игры.
!?GM0; - вызывается после загрузки сохраненной игры, но перед показом карты
!?GM1; - вызывается до сохранения игры, но после выбора слота сохранения.

Пример:
ZVSE
 !?GM0;
!!IF:M^Загружено^;
!?GM1;
!!IF:M^Сохранение...^;
Комментарий: !?GM1 вызывается также каждый раз при автосохранении (т.е. каждый день после нажатия кнопки "Завершить ход"). Автосохранение можно отменить командой UN:J5. Обычно это не рекомендуется, т.к. автосохранение является "спасением" игрока в случае какой-либо ошибки.


Триггер HE

Триггер HE (посещение героя)

!?HE#; - срабатывает при посещении (атаке или визите) определенного героя номер # (0...155, см. таблицу героев)
Для изменения параметров героя используйте ресейвер !!HE


Триггер HL

Триггер HL (получение уровня героем)

!?HL#; - триггер, срабатывающий при получении героем нового уровня.
 # - номер героя (-1 – любой)
Если вы используете !?HL-1 и !?HL5 (например), сначала сработает !?HL-1, а затем !?HL5.
Для изменения предложенных вторичных и первичных навыков используйте ресейвер !!HL.


Триггер HM

Триггер HM (шаг героя)

!?HM#; - контроль над каждым шагом героя.
 # - номер героя (-1 – любой)
Триггер вызывается перед каждым шагом героя (не после). Вы можете проверить месторасположение героя из переменных v998, v999, v1000. Движение не может быть отменено. На данный момент этот триггер выясняет следующее: текущего героя (!!HE-1), его координаты (v998, v999, v1000 = X Y L), также флаг 1000 устанавливается на 1, если ходит игрок или на 0, если ИИ. Если вы используете !?HM-1; и !?HM5; (например) то сначала будет действовать HM-1, а потом HM5.
Пример:
!?HM-1; - триггер
!!IF:M^Движение!^; - сообщение при перемещении любого героя
!?HM0; - триггер
!!IF:M^Двигается Оррин!^; - сообщение при перемещении Оррина


Триггер IP

Триггер IP (поддержка сетевой игры)

!?IP#; - мультиплеерная поддержка
Если один герой игрока атакует другого героя игрока, произойдут следующие действия:
а) Триггер !?BA0 включится для атакующего игрока

б) Триггер !?IP0 включится для атакующего игрока

в) Передача информации защищающемуся игроку:
- информация о атакующем герое
- информация о командире атакующего героя
- установленные v-переменные v9001-v10000
- все потенциальные изменения параметров монстров.

г) вся отправленная информация принимается защищающимся игроком

д) Триггер !?IP1 включается для защищающегося игрока

е) Триггер !?BA0 включается для защищающегося игрока

Теперь место битвы.

Если атакующий игрок выигрывает, то конец.

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

б) герой защищающегося игрока и командир получают уровни

в) Триггер !?IP2 включается для защитившегося игрока

г) передача информации атакующему игроку:
- значения вторичных навыков защитившегося героя (все 28), уровень и опыт
- информация о командире защитившегося героя (полностью)
- установленные v-переменные v9001-v10000

д) Триггер !?BA1 включается для защитившегося игрока

е) Атаковавший игрок ждет окончания получения уровней защитившимся

ж) вся информация принимается атакующим игроком

з) Триггер !?IP3 включается для атакующего игрока

и) Триггер !?BA1 включается для атакующего игрока.


Триггер LE

Триггер LE (локальное событие)

!?LE#1/#2/#3; - срабатывает при посещении локального события в определенных координатах, событие не изменяется, используется лишь как триггер.
 #1/#2/#3 = X Y L соответственно
В указанной точке ДОЛЖНО существовать событие.

Пост-триггер LE

!$LE#1/#2/#3; - локальное событие, пост-триггер. Этот триггер работает как !?LE, но после посещения события.

Пример:
ZVSE
!?LE10/10/0; - триггер
!!IF:M^Триггер !?LE сработал, до инициализации свойств события, настроенных в редакторе^; - сообщение при срабатывании триггера
!$LE10/10/0; - пост-триггер
!!IF:M^Сработал пост-триггер !$LE, уже после выполнения настроенных в редакторе свойств события^; - сообщение при срабатывание пост-триггера

См. также: ресейвер LE


Триггер

Триггер MF (физическое повреждение)

!?MF#; - срабатывает при нанесении физического урона в битве (перед самим действием)
!?MF1; - срабатывает перед нанесением урона. Ресейвер MF может быть использован для изменения урона, получаемого стеком (или обнулить урон вообще!).
См. также: ресейвер MF
Комментарий: триггера !?MF0; или !?MF; не существует. При использовании такого синтаксиса ERM-поддержка отключается.


Триггер MG

Триггер MG (колдовство на карте)

!?MG#; - триггер при наложении заклинаний на карте.
!?MG0; - срабатывает до наложения
!?MG1; - срабатывает после наложения

Действия:
- игрок нажимает «колдовать заклинание»
- срабатывает !?MG0;
- открывается волшебная книга для выбора заклинания.
- накладывается заклинание
- срабатывает !?MG1; (номер заклинания заносится в v997)

Пример:
ZVSE
!?MG0; - триггер
!!IF:M^Магия готова для использования^; - ресейвер для триггера
!?MG1; - триггер
!!VRy-10:Sv997; - установка номера заклинания в v997
!!IF:M^Магия была использована. Номер заклинания: %Y-10^; - ресейвер для триггера

Комментарий: данный триггер неактивен для ИИ-игроков. Если даже каст заклинания отменен, !?MG1 все равно сработает, равно как и вернет номер заклинания.


Триггер MM

Триггер MM (текст в битве)

!?MM0; (!?MM;) - триггер для контроля над текстом в битве
Комментарий: данный триггер срабатывает при попытке WoG показать текст-подсказку в текстовом поле (например, "Лететь сюда")
Также данный триггер !?MM0; срабатывает только ДО выбора действия. Так, например, если я колдую заклинание, подсказки при выборе цели не запускают триггера !?MM0;
Как только цель определена и заклинание наколдовано, !?MM0 запускается до следующего действия.
!?MM1; – вы можете запустить ERM-код, когда игрок двинет указателем мыши в окне города. Триггер срабатывает при наведении на объект и при уходе с него. Также данный триггер следует только после обычного описания (стандартного текста подсказки).
!?MM2; – срабатывает в окне карты приключений, при каждом клике левой кнопкой мыши (где угодно).
См. также: ресейвер !!MM


Триггер MR

Триггер MR (сопротивление магии)

!?MR#; - боевой триггер для сопротивления магии с ERM
!?MR0; - срабатывает перед подсчетом сопротивления
!?MR1; - срабатывает после подсчитывания сопротивления
Порядок действия такой:
- мы имеем базовый урон заклинания (M S D)
- срабатывает !?MR0; (M S D F[=D])
- WoG подсчитывает корректированный урон из-за стандартного сопротивления существа (S M D->F)
- срабатывает !?MR1; (M S D F)
- конец коррекции (F)
Здесь M – тип монстра, S – номер заклинания, D – базовый урон, F – откорректированный урон (см. !!MR).
Стандартная функция WoG`а коррекции урона подсчитывает F от D и возвращает его.
Для существа без сопротивления F=D
!?MR2; - Триггер для сопротивления магии стиля Гномов.
Срабатывает при вычислении сопротивления магии по стилю Гномов.
Вы можете использовать !!MR и другие ресейверы. !!MR:N; !!MR:M; работают как прежде (описано в триггерах !?MR0 и !?MR1). !!MR:F; используется как процентный показатель (0...100) шанса на срабатывание заклинания.
Пример:
ZVSE
!?MR2;
!!MR:F100; - все существа полностью иммунны ко всем заклинаниям.
Замечание: !?MR2 никогда не срабатывает для отрядов под Антимагией;
При касте Массовой Дружественной магии MR2 не срабатывает на дружественных существ, на которых враг наложил гипноз. А также не срабатывает на существ противника, на которых мы наложили гипноз, при касте Массовой Враждебной магии.
MR2 не перехватывает массовое Снятие Заклинаний и некоторые другие заклинания.


Триггер MW

Триггер MW (бродячие монстры)

!?MW#; - триггер для бродячих монстров
!?MW0; - вызывается при достижении точки назначения или героя.
Комментарий: он будет вызван на следующий ход, после достижения точки или атаки героя. Вызывается только если установлен соответствующий флаг. v997 содержит номер бродячего монстра - вызывателя триггера.
!?MW1; - вызывается, когда бродячий монстр погибает.
Комментарий: он вызывается в ход после смерти монстра. Срабатывает только если установлен соответствующий флаг. v997 содержит номер убитого бродячего монстра.
См. также: ресейвер !!MW


Триггер OB

Триггер OB (объекты)

!?OB#1; - триггер при посещении любого объекта определенного типа.
Расширение синтаксиса 1:
!?OB#1/#2; - триггер при посещении любого объекта определенного типа и подтипа.
Расширение синтаксиса 2:
!?OB#1/#2/#3; - триггер при посещении объекта в определенной точке. Работает для любого объекта с «входом» (желтой клеткой в редакторе).
#1/#2/#3 - соответственно X Y L
Примечание: этот триггер включает монстров, артефакты и ресурсы, но не героев (для героев используйте триггер !?HE)
Важно: принципы поиска триггера объекта:
!?OB#1; - сработает при посещении объекта типа #1
!?OB#1/#2; - сработает при посещении объекта типа #1 и подтипа #2
!?OB#1/#2/#3; - сработает при посещении объекта в определенной точке.
Вы также можете получить координаты объекта без их указания, т.к. при посещении любого объекта его координаты заносятся в v998, v999, v1000 соответственно как X Y L.
Пример:
!?OB101; - любой сундук с сокровищами на карте
!!CH998:…; - изменить опции посещаемого сундука.

Пост-триггер OB

!$OB#1; - пост-триггер для любого объекта типа #1
!$OB#1/#2; - пост-триггер для любого объекта типа #1 и подтипа #2.
!$OB#1/#2/#3; - пост-триггер для объекта в определенной точке.
Принцип действия триггера как и у обычного триггера !?OB...;, но данный триггер срабатывает после выполнения стандартных свойств объекта. Например, пост-триггер используется в жилище, срабатывая после покупки любого существа. Пост-триггер для замка сработает после конца битвы, если замок был атакован.
См. также: таблица объектов, ресейвер !!OB


Триггер PI

Триггер PI (пост-инструкция)

!?PI; - пост-инструкция. Данный триггер срабатывает немного позже выполнения инструкций, но до выполнения основных настроек карты. Другая особенность данного триггера - он срабатывает только при начале новой карты, не при загрузке игры (как и инструкции).
Пример:
ZVSE
!#IF:M^Инструкция^;
!?PI;
!!IF:M^Пост-инструкция^;

Когда вы начнете карту, вы получите два сообщения: «Инструкция» и затем «пост-инструкция». Когда появляется первое сообщение, карта почти не имеет установок, а при появлении второго сообщения почти все установки карты будут выполнены. Если вы загрузите сохраненную игру, вы не получите никаких сообщений.


Триггер SN

Триггер SN (звук)

!?SN; - триггер, срабатывающий при воспроизведении любого звука (WAV, M82, но не MP3!).
Триггер срабатывает каждый раз, когда игра пытается воспроизвести звук.
См. также: ресейвер !!SN


Ресейвер TH

Триггер TH (городской муниципалитет)

!?TH#; - срабатывает при входе в муниципалитет города (префектуру, капитолий, городской холл)
!?TH0; - срабатывает при входе
!?TH1; - при выходе

Комментарий:
1. Вы можете использовать триггер TH1 для проверки построенного здания в городе.
2. Вы также можете использовать этот триггер для переустановки флага строительства с помощью команды CA:R для получения дополнительных строений в этот день.

См. также: ресейвер !!CA


Ресейвер TH

Триггер TL (таймер реального времени)
Только TE или выше

!?TL#; - Таймер реального времени
# = 0 - срабатывает каждую секунду
# = 1 - срабатывает каждые 2 секунды
# = 2 - срабатывает каждые 5 секунд
# = 3 - срабатывает каждые 10 секунд
# = 4 - срабатывает каждые 60 секунд
Пример:
Чтобы увидеть, как это работает, используйте следующий код:
!?TL0;
    !!IF:L^Тикнула 1 секунда^;
    !?TL1;
    !!IF:L^Тикнуло 2 секунды^;
    !?TL2;
    !!IF:L^Прошло 5 секунд^;
    !?TL3;
    !!IF:L^Уже 10^;
    !?TL4;
    !!IF:L^Прошло 60 секунд^;


Триггер TM

Триггер TM (таймер)

!?TM#; - триггер для кода таймера. Срабатывает при срабатывании таймера номер #.
 # = номер таймера (1…100)
Для установки таймера используйте ресейвер !!TM.