| 
 
				Места и нюансы срабатывания событий и некоторых хуков
Описано еще не всё, исправления дополнения можно выкладывать в эту тему, буду добавлять в пост
 
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)
 выполнение действий отрядов начиная с получения хода
OnBattleRegeneratePhaseOnBattleStackObtainsTurn
 отряд выполняет спец. действие, например похищение маны призраками
 отряд получает ход и подсвечивается обводкой
 Хук в 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)
 выполнение действия как и для отряда человека
 выполнение действий отрядов начиная с получения хода
 
 
 |