Ресивер UN (универсальная команда)
!!UN:XXXX;
- универсальная команда. Используется для изменений в карте и/или игре.
A#/$
Установить/проверить/получить доступность артефакта на карте:
# – номер артефакта $ = 1 – артефакт запрещён $ = 0 – артефакт разрешён
Комментарий: запрет не работает при генерировании артефакта на карте (взамен "случайного" артефакта). Однако, можно попробовать запретить через !#UN:A#/3/0;
A#1/#2/$
Установить/проверить/получить информацию про артефакт.
#1 – номер артефакта #2 – тип информации = 1 – цена = 2 – позиция на теле = 3 – тип (класс) = 4 – номер комбо-артефакта = 5 – часть комбо-артефакта = 7 – артефакт WoG = 8 – даёт заклинание или нет = 9 – имя артефакта = 10 – описание артефакта $ - значениеКомментарий (показать)
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.
Комментарий (показать)
B#/$
Провести операции над новыми сундуками и Мифрилом.
# – тип 0 – Мифрил 1..6 – новые сундуки 7..10 – камни Силы $ – действие (0 = стандартое, 1 = особое)
Давайте рассмотрим подробнее каждый тип по отдельности:
Новый ресурс (показать)
тип 101, подтип 1 | тип 101, подтип 4 | ||||
тип 101, подтип 2 | тип 101, подтип 5 | ||||
тип 101, подтип 3 | тип 101, подтип 6 |
  |   |   |   | |||||
тип 101 подтип 7 |
тип 101 подтип 8 |
тип 101 подтип 9 |
тип 101 подтип 10 |
Камни силы работают так:
C#1/#2/$
Команда производит запись/чтение напрямую по адресам оперативной памяти:
#1 – базовый адрес #2 – кол-во байт (1, 2, 4) $ – значениеРасширение синтаксиса:
#1 – базовый адрес (всегда используется GetRealAddr) #2 – смещение в байтах #3 – кол-во байт $ – значениеКомментарий (показать)
Структуры – массивы данных в памяти игры, для удобного хранения информации и чтения/записи программным кодом. Большинство ERM-команд изменяют данные внутри этих структур (таблиц).UN:C автоматически поддерживает перемещённые структуры, то есть структуры, которые плагины перенесли в другое место памяти. Для этого нужно всегда указывать начало структуры в качестве базового адреса и корректное смещение (прибавить/убавить). Команда подставит новый базовый адрес и прибавит смещение.
См. также: Работа с памятью, Готовые решения с использованием команды, Библиотека нестандартных ф-ций.
D#1/#2/#3
Сделать квадрат воды доступным для героя.
#1 – X
#2 – Y
#3 – L
Расширение синтаксиса:
D#1/#2/#3/$
Поместить/удалить путь (бревна) на воде
$ = 1 – поместить
(добавить проходимость пешком)
$ = 0 – не помещать (удалить
проходимость пешком)
Комментарий (показать)
E#1/#2/#3
Проверить, можно ли поместить объект в координаты
#1 – X
#2 – Y
#3 – L
Осуществляет проверку на возможность помещения одноклеточного объекта в эти
координаты. Если возможно, флаг 1 будет равен лжи, если нет, истине.
Пример (показать)
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 – восстановить оригинальный текстКомментарий (показать)
G1/#1/#2/$
Изменить имя монстра.
#1 – номер монстра #2 – тип текста 0 – имя монстра в ед.ч. 1 – имя монстра во мн.ч. 2 – специальный текст (описание) $ - z-переменная (или её номер), содержащая новый текст 0 – восстановить исходный текст (по умолчанию)
G2/#1/#2/#3
Позволяет вам установить текст и картинку специализации героя.
#1 – номер героя #2 – что установить 1 - малую картинку (видна в окне встречи героев, и т.п) 2 – описание 3 – картинку #3 – это: – номер z-переменной (0 – восстановить по умолчанию), если #2 = 2 – номер картинки (0..356), если #2 = (1 или 3)
H#1/#2/#3/#4/#5
Скрыть часть карты (область – круг)
#1 – X
#2 – Y
#3 – L (уровень)
#4 –
игрок
#5 – радиус
Комментарий (показать)
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 (показать)
Перед тем, как проверять, ставится ли на карту объект при помощи ERM, нужно удостовериться, что его def-файл есть в Lod'е, а объект прописан в zobjcts.txt.
Впрочем, для теста можно просто поменять тип и подтип какому-нибудь объекту.
Тип для ВСЕХ объектов может лежать в пределах 4 байт (-2147483648…+2147483647), а подтип - в пределах 2 байт (-32768…32767). Установка подсказок работает нормально на отрицательных подтипах.
Если превысить значение подтипа, то возможны два варианта:
Если поставить инструкцией, то на карте появится случайный монстр в случайном кол-ве. :-)
Если пост-инструкцией или позднее - то случайный монстр из редактора карт (тип=71, подтип=0, со входом, активен, но не монстр - ерунда, в общем).
Список объектов, которые будут работать корректно без дополнительных настроек. Многие
могут быть настроены специальным ресивером объекта, при желании.
· Артефакт (тип=5, подтип=0..143) - ресивер !!AR
· Лодка (тип=8, подтип=0..2)
· Вуаль Тьмы (тип=15, подтип = 0)
· Жилище существ (тип=17, подтип=0..88 и 20, подтип=0..1) - ресивер
!!DW
· Гарнизон (тип=33, подтип=0 (обычный), =1 (антимагический), =2 (перпендикулярный), =3 (антимагический перпендикулярный) - ресивер !!GR
Подтипов 2 и 3 нет в стандартной игре. Для помещения будет верно: · Обычный - 33/0 · Обычный перпендикулярный - 219/0 · Антимагический - 33/1 · Антимагический перпендикулярный - 219/1 | |
Все гарнизоны помещаются нормально. Тип 219 неактивен при помещении, однако достаточно сменить тип на 33 (см. OB:T) и всё будет в порядке. Сама игра меняет тип перпендикулярным гарнизонам при загрузке карты, а тип 219 ей нужен для инициализации. Гарнизоны с подтипом > 1 воспринимаются как обычные. |
Эти объекты НЕ будут работать корректно и могут вызвать нестабильность игры, вылет карты или другие проблемы при помещении:
· Пустышка (тип = 1) - игра вылетит при попытке помещения объекта
· Якорь (тип = 3) - ресивер !!PA (игра вылетит при попытке помещения объекта)
· Ящик Пандоры (тип=6) - игра вылетит при посещении объекта
· Чёрный рынок (тип=7) - игра вылетит при посещении объекта
· Герой (тип=34) - используйте команду HE:P для помещения героя на карту
· Тип 50 - объект изначально отсутствует в игре
· Тюрьма (тип=62) - видимых проблем не создаёт, при посещении объявляется, что герой был освобождён королём, и тюрьма исчезает.
· Хижина провидца (тип=83) - игра вылетает при наведении мышью на объект или при посещении, НО вы можете корректно поместить объект (см. ниже)
· Страж прохода (тип=215)
· Гарнизон (тип = 219) - гарнизон просто не работает (см. выше о причине)
Некоторые объекты имеют разные модели для разной почвы. Для их помещения используйте синтаксис…
где x/y/l - координаты, T - тип
объекта, S - подтип, tr - почва, на которой находится нужный объект.
Пример:
· Костёр покинутого лагеря (тип = 12) - имеет вариации для песка, снега, подземелья, лавы.
· Лебединое озеро (тип = 14) - имеет вариации для грязи, травы и болота
· Фонтан удачи (тип = 30) - имеет заснеженную вариацию
· Форт на холме (тип = 35) - имеет заснеженную вариацию
· Волшебный колодец (тип = 49) - имеет заснеженную вариацию
· Шахты (тип = 53) - имеют вариации для разных почв
· Обелиск (тип = 57) - имеет вариации цвета для каждой почвы
· Обсерватория красного дерева (тип = 58) - имеет снежную вариацию
· Хижина провидца (тип = 83, подтип 0-2) - с помощью данного синтаксиса вы можете поместить её, но она будет заброшена провидцем, почва не влияет на внешний вид.
· Склеп (тип = 84) - имеет вариацию со снегом (по умолчанию) и без
· Знак (тип = 91) - имеет вариации для разных почв
· Рынок (тип = 99) - имеет вариации для грязи, скал
· Водяная мельница (тип = 109) - имеет вариации для травы и для снега (по умолчанию)
· Ветряная мельница (тип = 112) - имеет вариации для травы (по умолчанию) и для снега
J#
J0/#/$
Запретить заклинание.
# – номер заклинания (0..69) $ – разрешить (0) или запретить (1)Комментарий (показать)
J1/$1/?$2
Установить/получить ограничение уровнем и опытом.
$1 – уровень ограничен $1 (установить/проверить/получить)
$2 – опыт для этого уровня (только получить)
Комментарий (показать)
Если вам необходимо убрать в игре сообщение об ограничении опыта, используйте следующий код:
J2/$
Установить/проверить/получить сложность, выбранную игроком (0..4)
J3
Эта команда позволяет вам установить путь к файлу, содержащему настройки
WoG'ификации.
Пример (показать)
Расширение синтаксиса:
J3/^:clear:^
Отключает все WoG-опции и устанавливает игровое правило "Использование правил, отмеченных ниже".
J4/$
Установить/проверить/получить радиус «раздумий» ИИ
$ = 32000 в Дыхании Смерти по
умолчанию
= 4096 –
текущее в WoG
Комментарий (показать)
J5/$
Разрешить/запретить «автосохранение»
$ = 1 – разрешить
$ = 0 – запретить
Комментарий (показать)
J6/#/$
Генерировать случайный артефакт определённого уровня.
# – установить класс = -1 – случайный = 1 – внеклассовый (Грааль и WoG-артефакты) = 2 – сокровище = 4 – ценный = 8 – важный = 16 – реликт $ – получить/проверить номер артефакта.Комментарий (показать)
J7/#/$
Установить/проверить/получить артефакт, продаваемый у торговца артефактами.
# – номер слота (0..6)
$ – номер артефакта в слоте
Комментарий (показать)
J8/$1/$2
J8/$1/^Текст^
Команда, проверяющая существование внешних файлов
$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 следующий текст:
J10
Занести переменные в WOGERMLOG.TXT
Эту команду можно использовать в любое время (записать все ненулевые переменные в файл)
J11/$
Установить/проверить/получить поведение мыши при клике на вражеском стеке в бою.
$ = 0 – окно остаётся на экране (WoG-style).
$ = 1 – окно закрывается при отпускании кнопки мыши (SoD-style)
Информация о команде сохраняется в игре.
J13/$
Обнуление командиров (в зависимости от текущего состояния WoG-опций 3 и 6).
K#/$
Установить параметры «Новой недели»
K1/$ – запретить ($ = 1) все «Неделя …» (монстров/бесов) или разрешить ($ = 0)
K2/$ – установить сообщение при наступлении новой недели в текстовую переменную $
Комментарий (показать)
L#1/#2/#3/#4
Переместить взгляд на позицию
#1 – X
#2 – Y
#3 – L
#4 – время ожидания (1000 = 1
секунда)
Комментарий (показать)
L#1/#2/$
Установить/проверить/получить посещён ли обелиск?
#1 – номер игрока (0..7) -2 = для всех -1 = для текущего #2 – номер обелиска (0..47; -1 = все) $ – обелиск посещён (1) или нет (0)
См. также: ресивер !!MT
M#[/$]
Установить параметры «Месяц …»
M0 – обычный, неизменённый месяц
M1 – запретить месяца монстров *2 и /2
M2/$ – установить месяц
монстра $*2
M3 – установить месяц чумы (все существа /2)
Замечание: месяц Беса, если в Инферно построен Грааль, эта команда НЕ отменяет (но есть иной выход - см. здесь).
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-переменную для дальнейшего
использования в сообщениях.
Пример (показать)
N5/#1/#2/#3/#4
Записать z-переменную в общую секцию INI-файла:
#1 – номер z-переменной для записи #2 – номер опции (любое положительное значение) #3 – опциональный параметр - номер z-переменной для записи в пользовательскую секцию #4 – опциональный параметр - номер z-переменной, хранящей имя файла (без части ".INI"), можно с абсолютным путём. Примечание: если вы используете параметр #4, вы должны использовать параметр #3.
N6/#1/#2//#3/#4
Прочитать z-переменную из общей секции INI-файла:
#1 – номер z-переменной для сохранения текста #2 – номер опции (любое положительное значение) #3 – опциональный параметр - номер z-переменной для использования пользовательской секции вместо общей. #4 – опциональный параметр - номер z-переменной, хранящей имя файла (без части ".INI"), можно с абсолютным путём. Примечание: если вы используете параметр #4, вы должны использовать параметр #3.
Комментарий (показать)
$1 – X $2 – Y $3 – L (уровень) Дополнительный синтаксис: O$1/$2/$3[/#4/#5] Удалить объект в X/Y/L и описание (если было установлено) #4 – удалить описание? 1 – да 0 – нет (по умолчанию) #5 - обновить? 1 – да (по умолчанию) 0 – нетКомментарий (показать)
P$
Установить поведение жилищ 8го уровня
$ = 1 – жилище 8го уровня (после найма не работает)
$ = 0 – как обычное
Комментарий (показать)
P#/$
Установка WoG-опций
# - номер опции
$ - статус опции
Некоторые опции:
# = 0 – поведение жилищ 8го уровня (см. выше)
# = 1 – опыт стрелковых башен: как в SoD (1) или как в WoG (0)
# = 2 – можно оставлять монстров на карте (1 – нельзя, 0 – можно)
# = 3 – командиры: 1 – запретить, 0 – разрешить.
Комментарий (показать)
WoGифицированные и не WoGифицированные WoG карты без скриптов будут использовать
опции WoG выше.
Не-WoGифицированные WoG-карты со скриптами будут иметь отключенных командиров по
умолчанию. Для их включения вы должны использовать !!UN:P3/0 после начала карты.
Установка этой команды инструкцией - !#UN:P3/0 - НЕ разрешит командиров на этой карте.
Для установки командиров-наёмников за 1000 золота используйте команду UN:P6/1 перед командой UN:P3/0. Вы можете вставить обе команды в одну строку:
# = 900 – опыт стеков: 0 – выключен, 1 – включен
# = 901 – система опыта стеков:
0 – каждое существо получает полное кол-во опыта;
1 – высокое деление:
существа малого уровня получают больше опыта, чем существа большого уровня;
2 - низкое деление: существа высокого уровня получают больше опыта, чем существа
малого уровня;
3 - делится поровну между всеми существами
Комментарий (показать)
# = 902 – можно выбрасывать артефакты на карту: 0 – нет, 1 – да
Комментарий (показать)
Номер опции |
Эффект | |
Статус |
||
2 |
902 | |
0 | 0 | можно оставлять войска |
0 | 1 | можно оставлять войска или артефакты |
1 | 0 | нельзя оставлять ничего |
1 | 1 | можно оставлять артефакты |
# = 903 – чит-коды и чит-меню: 0 – разрешить, 1 – запретить
Комментарий (показать)
Q#
Выиграть или проиграть игру для ТЕКУЩЕГО игрока
# = 0 – проиграть
# = 1 – выиграть
Расширенный синтаксис:
Q#/1
Если вы используете второй фантомный параметр, победа или проигрыш игры выполняется другими функциями.
Используйте в случае неработоспособности предыдущего.
Пример (показать)
R#
Обновить экран
# = 1 – обновить карту и экран героя (всё с правой стороны)
# = 2 – обновить строку ресурсов
# = 3 – обновить внутри окна героя.
Подробнее…
!!UN:R3/#; - обновить экран героя # (-1 – для текущего).
Команда работает ТОЛЬКО пока открыто окно героя (т.е. внутри триггера !?CM2).
Попытка использовать эту команду в другом месте вызовет вылет игры.
R5/$1/$2
Установить вид курсора
$1 –
тип курсора
$2 – подтип курсора
Комментарий (показать)
R6/$
Ждать
$ – время в мс (1000 = 1 секунда)
R7/$1/$2
R7/$1
Курсор мыши: скрытие и деактивирование
$1 – показать (0) или скрыть (1) курсор
$2 – разрешить (0) или запретить (1) изменения курсора
Комментарий (показать)
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)
$ – тип монстра
Комментарий (показать)
U#1/#2/?$
Сосчитать все объекты на карте
#1 –
тип объекта
#2 –
подтип объекта (-1 – любой)
$ – кол-во объектов типа
#1, подтипа #2 (только проверить или получить)
Комментарий (показать)
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
Пример:
Комментарий (показать)
0 | 1 | 3 | 6 |
2 | 4 | 7 | |
5 | 8 | ||
9 |
V?$1/?$2
Получить версию WoG и используемого ERM.
$1 – версия WoG (3.58 = 358)
$2 – версия ERM (2.81 = 281)
Замечание: для ERA версия игры = 400, версия ERM = [версия ERA] × 1000
Комментарий (показать)
V?$1/?$2/?$3/?$4/?$5
Получить версию WoG и используемого ERM. Продвинутый синтаксис:
$1 – версия WoG $2 – версия используемого ERM $3 – один или более людей в игре = 1 – человек один = 2 – больше одного $4 – один или более ПК в игре = 0 – один ПК = 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 – см. выше $6 – чит-меню: активировано (1) или отключено (0) $7 – использование читов: было (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 (подземелье/поверхность).
Можно только проверить или получить.
Пример (показать)