Cтруктура командира
HEX-конвертер:
Смещение Описание // +00 dd = Доступность // +04 dd = Жив или мёртв // +08 dd = Номер героя хозяина (ну и номер командира) // +0C dd = Тип командира // +10 dd = Тип героя // +14 dd = Опыт в прошлых битвах // +18 dd = Если установить 1 = первичные навыки не будут изменяться с продвижением командира по уровням // Если установить 0 = здоровье и урон будут автоматически прибавляться вместе с уровнем командира (CO:P) // +1C dd = Атака // +20 dd = Защита // +24 dd = Здоровье // +28 dd = Урон // +2C dd = Сила магии // +30 dd = Скорость // +34 dd = Сопротивление // +38 dd = Уровень Атаки // +3C dd = Уровень Защиты // +40 dd = Уровень Здоровья // +44 dd = Уровень Урона // +48 dd = Уровень Сила магии // +4C dd = Уровень Скорости // +50 dd = Уровень Сопротивления _word_ arts[10][8]; // +54 = Номер артефакта; Кол-во проведённых с ним битв _char_ name[32]; // +F4 = Имя // +114 dd = Старый опыт героя // +118 dd = Текущий опыт // +11C dd = Текущий уровень (при отображении добавляем +1) specBon[2]; // +120 dd = Особые бонусы (сумма битов); Запрещённые бонусы (сумма битов)
// функция получения адреса структуры командира
inline _Npc_* GetNpc(_int_ hero_id) {return ((_Npc_ *)(0x28620C0 + 296 * hero_id));}
// функция получения строк из командирского текстовика znpc00.txt:
inline char* Get_ITxt(int StrNum, int ItemNum) {return CALL_3 (char*, __cdecl, 0x77710B, StrNum, ItemNum, 0x2860724);}
// функция получения Имени и Биографии из файла znpc00.txt:
inline char* Get_ITxtBio(int StrNum, int ItemNum) {return CALL_3 (char*, __cdecl, 0x77710B, StrNum, ItemNum, 0x286072C);}
// функция получения силы первичного командирского навыка:
inline int Get_NpcSkillPower(_Npc_* npc, int skill_id) {return CALL_2 (int, __thiscall, 0x769460, npc, skill_id);}