Ресивер HE (опции героя)
!!HE#:XXXX; – герой с номером #. Герой - тип 34.
Каждый герой в игре имеет свой уникальный номер.
Расширение синтаксиса:
!!HE#1/#2/#3:XXXX; – герой в определённых координатах X Y L
!!HE-1:XXXX; – герой, активировавший триггер.
Данная команда существенно упрощает скрипт, так как вам не нужно при каждом вызове ресивера HE сохранять координаты героя.
Используется для изменения характеристик, войск, инвентаря, навыков, местоположения и просто всего, что можно вообразить, над героем.
Также позволяет наложить проклятье или благословение.
Комментарий: вы можете использовать косвенные ссылки на героев (копии информации):
См. также: триггер !?HE
A#
Получить/дать/убрать артефакт
# – номер артефакта
Если # > 0, артефакт будет добавлен
Если # < 0, артефакт будет удалён из всех слотов.
Замечание: полученный этой командой артефакт не будет одет автоматически, а будет помещён в рюкзак.
Если же рюкзак заполнен полностью (содержит 64 артефакта), то герой указанный командой артефакт не получит.
Пример (показать)
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 и вы получите тип города героя.
Дополнительно (показать)
Значение 18, 19, 20 установит внешний вид героя на лодку - тёмную, светлую и узкую соответственно. При значении 18 можно заходить в окно героя,
в случае 19 и 20 это приведёт к критической ошибке (даже простая наводка курсора на изменённого героя), вступление в битву тоже вызовет критическую ошибку во всех трех формах.
Класс 21,22 представляет собой след от движения лодки игрока, любые вызовы программы на получение класса героя закончатся вылетом игры
(наведение курсора, заход в окно героя и т.п.). Класс выше 23 - почти то же, что и 21, но со следующим по номеру флагом игрока поверх флага текущего.
В общем, идёт по DEF'ам из H3sprite.lod, добавляя/заменяя героя новой анимацией.
Пример:
Давайте узнаем, отталкиваясь от класса героя, кто он по жизни ;-)
Стоит отметить, что существует возможность изменения названия классов героев, используя возможности ERA.
Вот пример готовой функции от igrik'а: (показать)
B3/?$
Получить оригинальную биографию героя в текстовую переменную (z).
Эта команда всегда будет получать текст по умолчанию, независимо от того, изменяли ли вы текст биографии или нет.
Вы можете использовать только синтаксис получения, как например:
C0/#1/$2/$3
Изменить монстров
#1 – номер слота (0..6)
$2 – тип монстра
$3 – кол-во монстров
C1/#1/$2/$3
Изменить монстров: все монстры типа # будут изменены на
$2 – тип монстра
$3 – кол-во
Пример (показать)
Расширение синтаксиса для команд C0 и C1:
C#/#1/$2/$3/$4/$5
$4 – кол-во опыта (по умолчанию 0)
$5 – модификатор опыта (по умолчанию 0)
Поддерживаемые значения для $5:
Мод 0 (показать)
Опыт = [ОпытСтарых * кол-воСтарыхСуществ + ОпытНовых * кол-воНовых] / [кол-воСтарых + кол-воНовых]
Исключение: если стек ещё не получил опыта, опыт будет усреднён, как будто вы добавили их без смены типа (как мод 1, см. ниже).Замечание: не используйте параметр "d" для $4 с модом 0.
ОпытСтека = СтарыйОпыт+СтарыйОпыт+ДополнительныйОпыт.Так, если вы имели стек с 2000 опыта, и добавите таким методом 1000 опыта, получится 2000+2000+1000=5000.
НовыйОпыт = [СтарыйОпыт]*[ОпытНовыхСуществНа10Ранге] / [ОпытСтарыхСуществНа10Ранге + ЭкстраОпыт].
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
Пример (показать)
D
Вызвать диалог для улучшения армии героя (нет параметров)
E$
Установить/проверить/получить опыт героя в $
Таблица опыта героев
E$1/$2
Установить/проверить/получить опыт героя (дополнительный синтаксис)
$1 – очки опыта
$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 – знания
Вы можете использовать только синтаксис получения или проверки.
Пример (показать)
Команда отнимает только стандартные значения артефактов. Если артефакт был изменен с помощью скрипта, возможно некорректное получение значений.
Также вы можете установить значения, но ничего не произойдёт.
G$
Установить начальные очки передвижения героя
$ – начальные очки передвижения
Если вы установите параметры HE:W и HE:G одинаковыми, вы сможете копать Грааль.
H$1/$2/$3/$4
Установить армию нанимаемого героя.
$1 – номер слота (0, 1, 2)
$2 – тип монстра (-1 – нет монстра)
$3 – мин. кол-во монстров
$4 – макс. кол-во монстров (может быть равно $3 для определённого числа)
Команда может установить армию героя, которого нет в таверне на данный момент ни у одного из игроков.
В случае, если он находится в таверне, никаких изменений в его стартовой армии не произойдёт до следующей недели.
Пример (показать)
I$
Установить/проверить/получить кол-во маны.
Используйте параметр "d" для упрощения изменения, если вы хотите добавить или отнять ману.
Кол-во маны может быть отрицательным.
Пример (показать)
I$/1
То же, что и HE:I$, но без обновления. В стандартном синтаксисе вызывает обновление даже если вы делали проверку.
K
Немедленно убить героя (к примеру, при посещении колодца - упасть в него :) )
K1
То же, что и HE:K, но без обновления
L#^Портрет.pcx^
Установить портрет героя из внешних файлов
# = 1 – установить маленький портрет – файл.pcx
# = 2 – установить большой портрет – файл.pcx
Комментарии (показать)
Файл.pcx будет искаться в директории DATA, но вы можете изменить поддиректорию.
Например: ^p\name.pcx^ - в папке p директории DATA.
Или ^..\maps\1.pcx^ - в директории Maps в игровой папке.
ВАЖНО! Полная длина имени файла не может иметь более 12 символов (вместе с путём к папке: точки и слэши учитываются).
Вы также можете установить портрет из файла DATA\H3bitmap.lod, просто указав полное имя портрета.
Примеры:
Экран будет обновлен автоматически, если вы измените портрет героя.
Требования к картинке: 256 цветов; размеры: 58×64 (большой), 48×32 (малый)
Стоит отметить, что существует возможность получения портретов героя, используя возможности ERA.
Вот пример готовой функции для этого: (показать)
L0/$
Установить герою портрет, как у героя $
L3
Восстановить оригинальные портреты
Пример:
L4/$
Установить оба портрета из игры от героя $
L5/$1/$2
Установить портрет героя из переменной
$1 – текстовая переменная (z) для большой картинки (0 – не менять)
$2 – текстовая переменная (z) для маленькой картинки (0 – не менять)
M#1/$2
Установить/проверить/получить статус заклинания у героя
#1 – заклинание
$2 – значение (0 = удалить, 1 = дать (при проверке на присутствие 1 = есть, 0 = нет))
Комментарий (показать)
N?$
Проверить или получить номер героя.
Не пытайтесь установить номер героя. Это не сработает, или вызовет нестабильность.
O$
Установить/проверить/получить хозяина героя (0..7).
$ – номер игрока, контролирующего героя.
Если героя нет на карте, или он не нанят, хозяин -1.
Комментарии (показать)
P$1/$2/$3
Установить/проверить/получить координаты героя (если установить координаты, это будет что-то вроде телепорта).
Также вы можете "вытащить" в игру ненанятого героя, указав координаты его появления и затем назначив ему хозяина.
Расширение синтаксиса:
P$1/$2/$3/$4
Переместить героя противника (не вашего цвета) со звуком и операцией обновления:
если $4<>0 – переместить героя со звуком и обновлением (аля Телепорт)
если $4 = 0 – старый стиль (герой немедленно перемещается на точку)
Комментарии (показать)
R0/$
Установить/проверить/получить мораль героя (до следующей битвы)
R1/$
Установить/проверить/получить удачу героя (до следующей битвы)
R2/$
Установить/проверить/получить пол героя
$ = 0 – мужчина
$ = 1 – женщина
R3/$1
Установить/проверить/получить доступность героя в таверне для ВСЕХ игроков.
$1 – разрешить (1) или запретить (0) героя для найма
Расширение синтаксиса:
R3/$1/$2
Установить/проверить/получить доступность героя в таверне для каждого игрока.
$2 – игроки, которые могут нанять
$2 имеет значение, только если вы разрешили героя.
R4/$
Установить/проверить/получить возможность расстановки войск в начале боя при наличии тактики.
Пример команды - кнопка внизу справа в окне героя.
$=1 – разрешить
$=0 – запретить
R5/$
Установить максимум морали
$ = 0 – не установлена
$ = 1 – установлена
R6/$
Установить максимум удачи
$ = 0 – максимальная удача не дана
$ = 1 – максимальная удача дана
R7/$
Установить модификатор посещённого объекта, временно меняющего параметры героя.
$ = двоичное слово, битовая маска
Комментарий (показать)
R#1/$/#2
Команда обновления (для всех команд HE:R)
#1 – номер команды R
$ – значение
#2 – флаг обновления
= 0 – нет (по умолчанию)
= 1 – да
Экран приключений не обновляется автоматически после команд HE:R.
Если вы хотите обновить его, используйте этот синтаксис с флагом "обновить" (#2 = 1)
S$
Установить/проверить кол-во вторич.навыков для показа.
$ – кол-во навыков, которые будут показаны (0..8)
Если вы хотите показывать лишь один навык, сначала поменяйте его позицию в слот 1 и затем ограничьте кол-во показываемых навыков одним с помощью этой команды.
S#1/$2
Установить/проверить/получить вторичные навыки
#1 – номер навыка
$2 – уровень навыка (0 – нет, 1 – базовый, 2 – продвинутый, 3 – эксперт).
Вы можете установить все вторичные навыки (28) сразу, но показываться в экране героя будут только первые 8.
Дополнительно (показать)
Также, вы можете менять параметры навыка установкой иных значений от указанных в $2.
Расширенный синтаксис:
S$1/$2/1
$1 – номер в окне навыков героя (0 = нет, 1..8 = номер слота)
$2 – номер навыка (0..27)
Комментарий (показать)
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)
Пример (показать)
W$
Изменить/получить очки движения героя
$ – очки для изменения (W0, Wd-10, W?i, W>=100…)
Комментарий (показать)
W$/1
То же, что и HE:W$, но без обновления. В стандартном синтаксисе обновление вызывается даже если вы проводите проверку.
X#1/$2/$3/$4/$5/$6/$7
Изменить специальность героя. Установить/проверить/получить все спец. установки.
Типы специальностей (#1):
#1 = 0 – спец по вторичному навыку
Y$1/$2/$3/$4
Благословения и проклятья.
$1 – номер благословения/проклятья (1..65)
$2 – сила заклятья (не используется для слепоты и блокировки слота)
$3 – продолжительность в днях
$4 – что с ним сделать (0 – удалить, 1 – дать, 2 – добавить/убавить)
Комментарий (показать)
Z?$
Команда возвращает адрес памяти структуры указанного героя.
Пример (показать)