По приросту в ордах.
Массив структур TownHordeBuildings, 6887F0, восемнадцать (по две на город) 16-битных структур
Code:
dword id_unit; //номер дегрейда
word amount; //количество прироста
word level; //уровень
dword upg_id_unit; //номер апгрейда
word upg_amount; //количество прироста
word upg_level; //уровень+7
На старте заполнены только поля id_unit и amount, все остальное автоматически заполняется в sub_005BE360 на старте
у неактивных вторых орд там -1 и 0, если подставить до старта id_unit и amount - оно заполнится автоматически
Кажется, по ордам все.
feanor, возникло пара вопросов:
1. Прирост Орды дают правильный, а вот тип нанимаемого существа -нет.
2. При постройке орды 24 (25) здание 4 уровня существ пропадает (33, 40), но постоенное здание орды в экране города не отображается (те что 24, 25). Как я понял за это отвечает цикл по адресу 0х004EBA28. Я пытаюсь въехать, но это еще не мой уровень. Я понимаю, что нужно поставить хук по 0х004EBBCE и расширить кусок функции. В общем нужен окрыляющий пинок))
upd:
Quote:Табличка-битмап замещающих строений (орды и братство меча) строится в 004EB810, ближе к концу, по структуре сомнительнейшего вида.
(такая же как и для дерева строений)
млин, ты же это и описал...
Quote:но постоенное здание орды в экране города не отображается (те что 24, 25).
а ты его спрайт-то добавил в таблицу приоритетов? ну и там имя-координаты-деф-маска-обводка
Нет не добавил. Мля.....
Странно, хотя дефы есть в лоде, но все равно вылет с сообщением о том, что нет дефа. TBELHrd3(4).def
Quote:имя
Имя куда-то в exe нужно прописывать?
ага, увидел куда нужно имя дефа записать.
Получается, что нужно по адресам 0х00643654 и 0х00643658 положить указатели на "TbElHrd3" и "TbElHrd4".
Ух блин. А как это сделать?
Для масок и обводок разберусь по аналогии
чоб и готовыми не воспользоваться.
но можно и
*(int*)0x643654 = (int)"TbELHrd3";
*(int*)0x643658 = (int)"TbELHrd3";
*(int*)0x68A9BC = (int)"ToELhrd3";
*(int*)0x68A9C0 = (int)"ToELhrd3";
(у меня орда требует апгрейд, поэтому я воткнул один спрайт для обоих вариантов, на всякий случай)
Заработало!

Осталось указать тип нанимаемых существ. А то и там и там 1 уровень нанимается
Quote:Осталось указать тип нанимаемых существ. А то и там и там 1 уровень нанимается
лол, ток щас заметил, что у меня тоже какая-то фигня
впрочем, ожидаемо, хуки на определение грейда я еще не ставил
думаю, ручное прописывание в вышеупомянутую таблицу спасет
Так, с ордами закончено.
Еще один вопос: маску строительства ГМ5 я запретил. Теперь нужно, чтобы после строительства ГМ4 она оформлялась желтей подсветкой, а не серой как сейчас. Где копать?

gamecreator, подскажи как найти адрес в сорцах WoG'a по вот этому (строка 4882 в Monsters.cpp)
Code:
if(tp==158){ // феникс
SetMonMagic(mon,0x1D,1000,1,0); // огненный щит
SetMonMagic(mon,55,1000,3,0); // палач
}
Хочу избавиться от них
И я так понимаю, что "char Ytown = *(char*)(c->esi+4); if (Ytown == 8) " можно было описать как-то проще