некототрое время назад выяснилось что плагин arsenal.dll не дружит с ХД 3.0, причем в реализации этого плагина применены сильно неправославные решения (меняет в процессе игры код игры)
неплохо было бы если б этот плагин заранее был включен в очередной феникс (после проверки разумеется)
(полных) исходников не прилагаю, но для приблизительного понимания как реализовано текст основного .cpp файла:
Code:
_bool_ no_update_advman = 0;
void Start()
{
Hook::Create(CALL, SHT, 0x5510DE, N_AdvMan_UpdateInfoPanel);
Hook::Create(LOWLEVEL, 0x5D3D4A, L_ShowTownBlacksmith);
}
__LL_call L_ShowTownBlacksmith(Hook* hook)
{
_TownMan_* this_ = (_TownMan_*)hook->ebx;
if (this_->town->down_hero_id != -1)
{
no_update_advman = 1;
int p = 4000;
_ptr_ a = THISCALL_10(0x551860, o_New(188), o_Game->GetHero(this_->town->down_hero_id), 146, &p, 147, &p, 148, &p, -1, 0);
THISCALL_2(0x4B0770, *(_ptr_*)0x699550, a);
o_Delete(a);
no_update_advman = 0;
return NO_EXEC_DEFAULT;
}
else
return EXEC_DEFAULT;
}
void __stdcall N_AdvMan_UpdateInfoPanel(Hook* hook, _AdvMan_* this_, _bool_ even_if_on_top, _bool_ redraw, _bool_ redraw_screen)
{
if (no_update_advman) return;
THISCALL_4(hook->default_func, this_, even_if_on_top, redraw, redraw_screen);
}