Список ЕРМ триггеров и именованных событий - Berserker - 14.02.2020 05:16
Список ЕРМ триггеров и именованных событий
Code:
BA0 OnBeforeBattle
BA1 OnAfterBattle
BR OnBattleRound
BG0 OnBeforeBattleAction
BG1 OnAfterBattleAction
MW0 OnWanderingMonsterReach
MW1 OnWanderingMonsterDeath
MR0 OnMagicBasicResistance
MR1 OnMagicCorrectedResistance
MR2 OnDwarfMagicResistance
CM0 OnAdventureMapRightMouseClick
CM1 OnTownMouseClick
CM2 OnHeroScreenMouseClick
CM3 OnHeroesMeetScreenMouseClick
CM4 OnBattleScreenMouseClick
CM5 OnAdventureMapLeftMouseClick
AE0 OnUnequipArt
AE1 OnEquipArt
MM0 OnBattleMouseHint
MM1 OnTownMouseHint
MP OnMp3MusicChange
SN OnSoundPlay
MG0 OnBeforeAdventureMagic
MG1 OnAfterAdventureMagic
TH0 OnEnterTownHall
TH1 OnLeaveTownHall
IP0 OnBeforeBattleBeforeDataSend
IP1 OnBeforeBattleAfterDataReceived
IP2 OnAfterBattleBeforeDataSend
IP3 OnAfterBattleAfterDataReceived
CO0 OnOpenCommanderWindow
CO1 OnCloseCommanderWindow
CO2 OnAfterCommanderBuy
CO3 OnAfterCommanderResurrect
BA50 OnBeforeBattleForThisPcDefender
BA51 OnAfterBattleForThisPcDefender
BA52 OnBeforeBattleUniversal
BA53 OnAfterBattleUniversal
GM0 OnAfterLoadGame
GM1 OnBeforeSaveGame
PI OnAfterErmInstructions
DL OnCustomDialogEvent
HM OnHeroMove
HL OnHeroGainLevel
BF OnSetupBattlefield
MF1 OnMonsterPhysicalDamage
TL0 OnEverySecond
TL1 OnEvery2Seconds
TL2 OnEvery5Seconds
TL3 OnEvery10Seconds
TL4 OnEveryMinute
FU77001 OnSavegameWrite
FU77002 OnSavegameRead
FU77003 OnKeyPressed
FU77004 OnOpenHeroScreen
FU77005 OnCloseHeroScreen
FU77006 OnBattleStackObtainsTurn
FU77007 OnBattleRegeneratePhase
FU77008 OnAfterSaveGame
FU77010 OnBeforeHeroInteraction
FU77011 OnAfterHeroInteraction
FU77012 OnStackToStackDamage
FU77013 OnAICalcStackAttackEffect
FU77014 OnChat
FU77015 OnGameEnter
FU77016 OnGameLeave
FU77017 OnRemoteEvent
FU77018 OnEveryDay
FU77019 OnBeforeBattlefieldVisible
FU77020 OnBattlefieldVisible
FU77021 OnAfterTacticsPhase
FU77022 OnCombatRound
FU77023 OnOpenRecruitDlg
FU77024 OnCloseRecruitDlg
FU77025 OnRecruitDlgMouseClick
FU77026 OnTownHallMouseClick
FU77027 OnKingdomOverviewMouseClick
FU77028 OnRecruitDlgRecalc
FU77029 OnRecruitDlgAction
FU77030 OnLoadHeroScreen
FU77031 OnBuildTownBuilding
FU77032 OnOpenTownScreen
FU77033 OnCloseTownScreen
FU77034 OnSwitchTownScreen
FU77035 OnPreTownScreen
FU77036 OnPostTownScreen
FU77037 OnPreHeroScreen
FU77038 OnPostHeroScreen
Только для плагинов/Lua:
N - number/ID
FU1..FU29999 OnErmFunction N
TM1..TM100 OnErmTimer N
HE0..HE198 OnHeroInteraction N
HM0..HM198 OnHeroMove N
HL-1 OnHeroGainLevel
HL0..HL198 OnHeroGainLevel N
LE OnLocalEvent X/Y/Z
OB OnAfterVisitObject X/Y/Z
OB OnAfterVisitObject Type/Subtype
OB OnBeforeVisitObject X/Y/Z
OB OnBeforeVisitObject Type/Subtype
RE: Список ЕРМ триггеров и именованных событий - Algor - 15.02.2020 02:30
Места и нюансы срабатывания событий и некоторых хуков
Описано еще не всё, исправления дополнения можно выкладывать в эту тему, буду добавлять в пост
OnTownMouseHint
ПОСЛЕ вывода любой подсказки в экране города, НЕ работает в экранах замка/городского холла/рынка/таверны/жилищ и пр.
OnEnterTownHall
ПЕРЕД входом в городской холл из экране города
OnLeaveTownHall
ПОСЛЕ выхода в экран города из экрана городского холла
при постройке здания срабатывает ПОСЛЕ OnBuildTownBuilding и отрисовки здания в экране города
OnBuildTownBuilding
после постройки здания и закрытия экрана городского холла, но до отрисовко здания в экране города
OnSwitchTownScreen
перед переключением на другой город из окна города. Срабатывают: OnSwitchTownScreen, OnPostTownScreen, OnPreTownScreen.
События OnOpenTownScreen, OnCloseTownScreen при переключении НЕ срабатывают
OnOpenTownScreen, OnPreTownScreen
перед открытием окна города, срабатывают в порядке: OnOpenTownScreen, OnPreTownScreen до появления окна города на экране
OnPostTownScreen, OnCloseTownScreen
после закрытия окна города (после исчезновения с экрана) срабатывают в порядке: OnPostTownScreen, OnCloseTownScreen
OnOpenHeroScreen, OnLoadHeroScreen, OnPreHeroScreen
перед открытием окна героя срабатывают в порядке: OnOpenHeroScreen, OnLoadHeroScreen, OnPreHeroScreen до появления окна героя на экране
срабатывают также при просмотре героя в таверне или из окна встречи героев
OnPostHeroScreen, OnCloseHeroScreen
после закрытия окна героя (после исчезновения с экрана) срабатывают в порядке: OnPostHeroScreen, OnCloseHeroScreen
срабатывают также при просмотре героя в таверне или из окна встречи героев
При переключении между героями ВНУТРИ окна героя отрабатывают события OnPostHeroScreen, OnLoadHeroScreen, OnPreHeroScreen. События OnCloseHeroScreen и OnOpenHeroScreen не отрабатывают.
OnHeroMove
при движении героя, срабатывает ПЕРЕД каждым шагом героя
OnHeroGainLevel
перед повышением уровня героя, но после повышения уровня и закрытия окна командира. Если повышается сразу на несколько уровней - перед каждым повышением
Хук в 5090553 [диалог повышения уровня героя без выбора втор. навыков]
Хук в 5090672 [диалог повышения уровня героя с 1 втор.навыком]
Хук в 5090948 [диалог повышения уровня героя с 2 втор.навыками]
перед открытием окна диалога повышения уровня героя с соответствующим количеством предлагаемых вторичных навыков
OnEquipArt
при надевании артефакта, срабатывает даже до OnAfterErmInstructions (PI) при получении героями стартовых артефактов
OnUnequipArt
при снятии артефакта
НАЗВАНИЯ СОБЫТИЙ OnEquipArt и OnUnequipArt НА ДАННЫЙ МОМЕНТ ПЕРЕПУТАНЫ !!!
OnOpenCommanderWindow
перед открытием окна командира из окна героя (до появления окна командира на экране)
OnCloseCommanderWindow
после закрытия (исчезновения с экрана) окна командира
если командиры отключены или командир не нанят, OnOpenCommanderWindow и OnCloseCommanderWindow не отрабатывают
OnAfterCommanderBuy
после покупки командира при посещении города
OnAfterCommanderResurrect
после воскрешение мертвого командира при посещении города. НЕ срабатывает при воскрешении командира Шлемом бессмертия
OnBeforeHeroInteraction
перед встречей героев (перед появлением окна встречи)
OnAfterHeroInteraction
после встречи героев (после исчезновения окна встречи)
OnOpenRecruitDlg
перед открытием диалога найма существ. НЕ срабатывает при открытии кузницы
OnRecruitDlgRecalc
перед открытием диалога найма существ
перед изменением нанимаемого количества в диалоге найма существ
после нажатии кнопки найма и OnRecruitDlgAction
OnRecruitDlgAction
при нажатии кнопки найма в диалоге найма существ, ДО закрытия диалога
OnCloseRecruitDlg
после закрытия диалога найма существ. НЕ срабатывает при закрытии кузницы
OnCustomDialogEvent
ПЕРЕД активацией любого события в пользовательском DL-диалоге
OnEverySecond, OnEvery2Seconds, OnEvery5Seconds, OnEvery10Seconds, OnEveryMinute
События начинают срабатывать сразу после инициализации ERM и отработки инструкций
Сомневаюсь в целесообразнисти их использования
OnEveryDay
в начале нового игрового дня (включая день 1) для каждого игрока до TM1 и TM2
Распространенный WoG-таймер !?TM1;
в начале нового игрового дня (включая день 1) для каждого игрока после OnEveryDay и до и TM2
Распространенный WoG-таймер !?TM2;
в начале нового игрового дня (включая день 1) для каждого игрока после OnEveryDay и TM1
OnGameEnter
при входе в игру после OnEveryDay, TM1, TM2 или после загрузки сохраненной игры и показа карты.
OnSavegameRead
после выбора загружаемого сохранения и инициализации ERM в окне загрузки до показа карты, перед чтением файла сохранения
OnAfterLoadGame
после чтения файла сохранения в окне загрузки до показа карты после OnSavegameRead
OnBeforeSaveGame
перед сохранением игры после ввода имени сохранения и закрытия диалога выбора сохранки, но до создания файла
OnSavegameWrite
после создания файла сохранения (~160КБ), но до записи данных
OnAfterSaveGame
после записи всех данных в файл сохранения, но до сообщения "<имя сохранки> удалось сохранить"
OnAfterErmInstructions
непосредственно перед показом карты при старте НОВОЙ игры, при загрузке сохраненной игры НЕ срабатывает
OnGameLeave
после подтверждения выхода в главное меню (новая игра, загрузить игру). НЕ срабатывает при закрытии окна "крестиком"/через Alt+F4
OnMp3MusicChange
при изменении ФОНОВОЙ мелодии (mp3-темы)
если мелодия не менялась, просто пошел повтор, событие НЕ срабатывает
после воспроизведения звукового эффекта (например, звук движения героя, звук отстроенного здания), НЕ срабатывает после звука "щелчок" на элементах
OnSoundPlay
в начале воспроизведения мелодии (wav-Звуки), например, при проигрывании мелодий посещаемых объектов - камень знания и пр.
НЕ срабатывает на звук "щелчок" на элементах и прочие подобные звуковые эффекты
OnKeyPressed
при нажатии любой клавиши на клавиатуре
OnAdventureMapRightMouseClick
ПКМ на карте приключений
OnAdventureMapLeftMouseClick
ЛКМ на карте приключений
OnBattleScreenMouseClick
любой клик в экране боя
OnTownMouseClick
любой клик в ГЛАВНОМ экране города
OnTownHallMouseClick
любой клик в экране ЗАМКА
НЕ срабатывает не в экране городского холла
OnRecruitDlgMouseClick
любой клик в экране найма существ. НЕ срабатывает в экране кузницы
OnKingdomOverviewMouseClick
любой клик в экране обзора королевства
OnHeroScreenMouseClick
любой клик в экране героя
OnHeroesMeetScreenMouseClick
любой клик в экране встречи героев
OnChat
перед входом в строку чата И перед отправкой написанного в окно игры. При выводе сообщений через IF:L НЕ срабатывает
Хук в 6027880 [расчет дохода города]
при выборе города в списке
при входе/выходе из обзора королевства
при входе в город
ПОСЛЕ выхода в экран города из экрана городского холла (до OnLeaveTownHall), экранов Замка, жилищ (после OnCloseRecruitDlg)
НЕ срабатывает ПОСЛЕ выхода в экран города из экрана рынка
при постройке здания срабатывает до выхода из экрана городского холла И ДВАЖДЫ после отрисовки здания в экране города и OnLeaveTownHall
Хук в 5011264 [AddGoldForArt]
срабатывает при входе в обзора королевства (AddResForArt не срабатывает)
Хук в 4950687 [AddResForArt]
в начале каждого дня каждого игрока в следующем порядке: AddResForArt, расчет дохода города, AddGoldForArt. Не срабатывают для первого дня первого игрока
Подготовка к бою
Хук в 7710213 [перед битвой перед BA0]
OnBeforeBattle (BA0)
OnBeforeBattleUniversal (BA52)
OnBeforeBattlefieldVisible
OnBattleRound (BR) (round -1)
OnSetupBattlefield (BF)
появление поля боя
OnBattlefieldVisible
OnCombatRound
сообщение "Тактическая фаза"
выполнение действий отрядов начиная с получения хода (расстановка)
нажатие кнопки "Начать битву"
OnAfterTacticsPhase
OnCombatRound
OnBattleRound (BR) (round 0)
выполнение действий отрядов начиная с получения хода
Хук в 7710213 [перед битвой перед BA0]
OnBeforeBattle (BA0)
OnBeforeBattleUniversal (BA52)
OnBeforeBattlefieldVisible
OnBattleRound (BR) (round -1)
OnSetupBattlefield (BF)
OnAfterTacticsPhase
OnBattleRound (BR) (round 0)
появление поля боя
OnBattlefieldVisible
OnCombatRound
OnBattleRound (BR) (round 0), да, еще раз нулевой раунд
выполнение действий отрядов начиная с получения хода
OnBeforeBattleAction (BG0) для последнего действующего отряда в раунде
OnCombatRound
OnBattleRound (BR) (round n+1)
выполнение действий отрядов начиная с получения хода
Действия отрядов
OnBattleRegeneratePhase
OnBattleStackObtainsTurn
отряд выполняет спец. действие, например похищение маны призраками
отряд получает ход и подсвечивается обводкой
Хук в 4609014 [после фазы регенерации; проверки на мораль, страх; и после установки активного стека]
OnAfterBattleAction (BG1) - не срабатывает для самого первого действия первого отряда в бою
выбор и выполнение действия
OnBeforeBattleAction (BG0)
анимация + звук перемещения отряда, если перемещение
выполнение действий отрядов начиная с получения хода
наведение курсора на врага
OnStackToStackDamage (срабатывает 2/3 раза для рукопашников/стрелков соответственно)
выводится подсказка с оценкой урона, который может быть нанесен
клик атаки
OnBeforeBattleAction (BG0)
анимация + звук выстрела/подхода/подлета
OnStackToStackDamage
OnMonsterPhysicalDamage (MF1)
анимация + звук атаки нападающим и получения урона целью
Хук в 4455129 [после выстрела] или Хук в 4462998 [после атаки]
начало контратаки, если есть
OnStackToStackDamage
OnMonsterPhysicalDamage (MF1)
анимация + звук атаки нападающим и получения урона целью
Хук в 4462998 [после атаки]
конец контратаки
анимация возврата для гарпий
если атака/контратака уничтожила последний отряд какой-либо стороны:
отображение окна результатов боя
нажатие кнопки "ок" в окне результатов боя
OnAfterBattleAction (BG1)
получение уровня командиром/героем, если получено достаточно опыта
OnAfterBattle (BA1)
OnAfterBattleUniversal (BA53)
выполнение действий отрядов начиная с получения хода
OnStackToStackDamage x2/x3 + OnAICalcStackAttackEffect (срабатывает для каждой потенциальной цели, даже если она недосягаема)
OnAICalcStackAttackEffect
OnBeforeBattleAction (BG0)
выполнение действия как и для отряда человека
выполнение действий отрядов начиная с получения хода
RE: Список ЕРМ триггеров и именованных событий - Berserker - 15.02.2020 02:50
Работа колоссальная, огромное спасибо! Позже перенесём обсуждение в отдельную тему.
Quote:OnEverySecond, OnEvery2Seconds, OnEvery5Seconds, OnEvery10Seconds, OnEveryMinute
События начинают срабатывать сразу после инициализации ERM и отработки инструкций
Сомневаюсь в целесообразнисти их использования
Введены в турнирную версию для реализации Таймера хода. Некоторые злостные модеры (Jim Vogan) их использовали для всевозможных хаков. У Валерия тоже в модах есть. Я их недолюбливаю.
Quote:OnCloseTownScreen, OnPostTownScreen
после закрытия окна города (после исчезновения с экрана) срабатывают в порядке: OnCloseTownScreen, OnPostTownScreen
Не верно. OnPostTownScreen, затем OnCloseTownScreen. Таким образом Open/Close на уровне диалога оборачивают все события. Pre/Post уже «внутри».
RE: Список ЕРМ триггеров и именованных событий - Berserker - 15.02.2020 03:00
Quote:OnMp3MusicChange
при изменении мелодии, до OnSoundPlay
OnSoundPlay
в начале воспроизведения мелодии, после OnMp3MusicChange, если мелодия менялась
События никак не связаны. wav-Звуки отдельно (SoundPlay), mp3-темы отдельно.
Quote:OnTownHallMouseClick
любой клик в экране ЗАМКА
НЕ срабатывает не в экране городского холла
Точно: в форте/замке.
RE: Список ЕРМ триггеров и именованных событий - Algor - 15.02.2020 11:22
(15.02.2020 02:50)Berserker Wrote: Позже перенесём обсуждение в отдельную тему.
Нафиг? Просто удалим после потери актуальности.
Я вижу эту тему именно как справочник. Возможно, потом просто включишь в поставку Эры как часть какого-нить хэлпа.
(15.02.2020 02:50)Berserker Wrote: Некоторые злостные модеры (Jim Vogan) их использовали для всевозможных хаков. У Валерия тоже в модах есть. Я их недолюбливаю.
[по секрету] мне тоже Джим с Валерой не нравятся ... 
(15.02.2020 02:50)Berserker Wrote: Не верно. OnPostTownScreen, затем OnCloseTownScreen. Таким образом Open/Close на уровне диалога оборачивают все события. Pre/Post уже «внутри».
Мда, замылился я вчера. Поправил, спасибо.
(15.02.2020 03:00)Berserker Wrote: События никак не связаны. wav-Звуки отдельно (SoundPlay), mp3-темы отдельно.
Поправил и дополнил описание.
(15.02.2020 03:00)Berserker Wrote: Quote:OnTownHallMouseClick
любой клик в экране ЗАМКА
НЕ срабатывает не в экране городского холла
Точно: в форте/замке.
Надо поправить название, пока не разошлось по модам. OnFortMouseClick?
И, кстати, для городского холла тоже был бы полезный ивент - думаю не надо объяснять, для чего.
RE: Список ЕРМ триггеров и именованных событий - daemon_n - 15.02.2020 13:27
(15.02.2020 02:30)Algor Wrote: Экран города
OnPostTownScreen, OnCloseTownScreen
после закрытия окна города (после исчезновения с экрана) срабатывают в порядке: OnPostTownScreen, OnCloseTownScreen
Berserker, Algor, спасибо большое за тему и работу с ней
RE: Список ЕРМ триггеров и именованных событий - PerryR - 15.02.2020 14:11
Very good topic!
Earlier I was crawling between ERA changelog and different mods to discover new triggers.
This should be a thing of the past now
RE: Список ЕРМ триггеров и именованных событий - Algor - 15.02.2020 16:20
Добавил "Срабатывание событий в бою" во второй пост.
Точнее, начал добавлять, т.к. там еще уйма нюансов - касты, мины/огнестены, мультцелевые атаки, мораль, активация спец.способностей, особенности осадной битвы, битва против героя, мультиплейер...
Не знаю, когда продолжу, короче. Если кто-то возьмется продолжить - вот скрипт для облегчения тестирования (для хуков требуется FUN.erm из ES):
RE: Список ЕРМ триггеров и именованных событий - Archer30 - 04.09.2021 09:40
Berserker, could you update the post to the latest, please? I wish to know about the timing of some new events like OnBattleReplay, OnBattleActionEnd
RE: Список ЕРМ триггеров и именованных событий - daemon_n - 04.09.2021 14:05
Archer30, OnBeforeBattleReplay - When "Replay" Bttn pressed (or right after)
OnBattleReplay - when Replay started (and you can see BF)
RE: Список ЕРМ триггеров и именованных событий - Archer30 - 04.10.2021 04:14
Thanks!
I wonder if there is also a guide for the paramers of ERA triggers. For example, x1 from OnPreTownScreen and OnOpenTownScreen = Town ID
RE: Список ЕРМ триггеров и именованных событий - Berserker - 04.10.2021 11:16
Hi. Simply CTRL+F in era ii changelog.txt and era iii changelog.txt. If there are x-parameters for triggers, they are specified.
RE: Список ЕРМ триггеров и именованных событий - Archer30 - 04.10.2021 11:51
Berserker, thanks!
RE: Список ЕРМ триггеров и именованных событий - Archer30 - 17.10.2021 08:03
Missing OnAfterErmInited from the list. The timing of the trigger is later than OnAfterErmInstructions but sooner than OnStartOrLoad.
The order of execution
Despite is is supported only with Era Erm Framework, but it would be handy to have all those events/triggers listed in this thread
RE: Список ЕРМ триггеров и именованных событий - Bes - 19.10.2021 11:58
Событие OnBattleActionEnd происходит сразу после действия в бою, но перед проверкой, закончена ли битва, перед выбором следующего активного стека и перед началом нового раунда или автозакрытием рва.
Порядок событий
|
Описание событий
|
OnBeforeBattleAction
OnBattleActionEnd
OnBattleRound
OnBeforeBattleStackTurn
OnBattleStackObtainsTurn
OnAfterBattleAction
|
Начало совершения действия (атака, колдовство, ожидание, побег…) !?BG0
Окончание совершения действия
[если все походили] Начало нового раунда
До хода отряда (до фазы регенерации)
При получении хода отрядом
После действия (!?BG1)
|
(24.07.2021 00:01)Berserker Wrote: (23.07.2021 22:01)Algor Wrote: Не хватает описания последовательности триггеров для каста героя. И пока не очень понятно, как это будет работать с !!BG:A0; Ну и всякие нюансы, типа "до или после отлета гарпий/воскрешения фениксов" и т.п. тоже останутся на самопроработку.
При касте героя отряд хода не теряет. OnBattleActionEnd срабатывает, дальше сразу OnAfterBattleAction.
Гарпия уже ударила и вернулась. Фениксы воскрешаются ещё в функции каста заклинания. Так что действие заканчивается как раз перед проверкой на конец боя и определением, кто будет ходить следующим и нужно ли завершать раунд.
!!BG:A0 завершится срабатыванием OnBattleActionEnd, после чего снова !?BG0 с новым действием.
После окончания боя, когда пользователь нажимает кнопку "Отмена", генерируется OnBeforeBattleReplay. Боевое состояние сбрасывается и генерируется событие OnBattleReplay, в котором вы можете вернуть глобальные переменные в предбоевое состояние, потому что OnBeforeBattleUniversal не будет вызываться дважды.
|