feanor
Posts: 624
|
По приросту в ордах.
Массив структур 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 - оно заполнится автоматически
Кажется, по ордам все.
(This post was last modified: 01.01.2016 23:52 by feanor.)
|
|
01.01.2016 23:22 |
|
igrik
Posts: 2819
|
|
03.01.2016 19:31 |
|
igrik
Posts: 2819
|
feanor, возникло пара вопросов:
1. Прирост Орды дают правильный, а вот тип нанимаемого существа -нет.
2. При постройке орды 24 (25) здание 4 уровня существ пропадает (33, 40), но постоенное здание орды в экране города не отображается (те что 24, 25). Как я понял за это отвечает цикл по адресу 0х004EBA28. Я пытаюсь въехать, но это еще не мой уровень. Я понимаю, что нужно поставить хук по 0х004EBBCE и расширить кусок функции. В общем нужен окрыляющий пинок))
upd: Quote:Табличка-битмап замещающих строений (орды и братство меча) строится в 004EB810, ближе к концу, по структуре сомнительнейшего вида.
(такая же как и для дерева строений)
млин, ты же это и описал...
game bug fixes extended.dll || My Plugins || My GitHub
|
|
07.01.2016 00:11 |
|
feanor
Posts: 624
|
Quote:но постоенное здание орды в экране города не отображается (те что 24, 25).
а ты его спрайт-то добавил в таблицу приоритетов? ну и там имя-координаты-деф-маска-обводка
(This post was last modified: 07.01.2016 03:10 by feanor.)
|
|
07.01.2016 02:55 |
|
igrik
Posts: 2819
|
|
07.01.2016 03:01 |
|
feanor
Posts: 624
|
чоб и готовыми не воспользоваться.
но можно и
*(int*)0x643654 = (int)"TbELHrd3";
*(int*)0x643658 = (int)"TbELHrd3";
*(int*)0x68A9BC = (int)"ToELhrd3";
*(int*)0x68A9C0 = (int)"ToELhrd3";
(у меня орда требует апгрейд, поэтому я воткнул один спрайт для обоих вариантов, на всякий случай)
(This post was last modified: 07.01.2016 03:35 by feanor.)
|
|
07.01.2016 03:34 |
|
igrik
Posts: 2819
|
|
07.01.2016 03:47 |
|
feanor
Posts: 624
|
Quote:Осталось указать тип нанимаемых существ. А то и там и там 1 уровень нанимается
лол, ток щас заметил, что у меня тоже какая-то фигня
впрочем, ожидаемо, хуки на определение грейда я еще не ставил
думаю, ручное прописывание в вышеупомянутую таблицу спасет
|
|
07.01.2016 03:50 |
|
igrik
Posts: 2819
|
|
07.01.2016 13:40 |
|
feanor
Posts: 624
|
|
07.01.2016 16:17 |
|
igrik
Posts: 2819
|
вуаля
Code:
int __stdcall Hota_GM5off(LoHook* h, HookContext* c)
{
char Ytown = *(char*)(c->esi+4);
if (Ytown == 8)
{
c->return_address = 0x460FB1;
return NO_EXEC_DEFAULT;
}
return EXEC_DEFAULT;
}
...
// не строить ГМ5
HotaOnEra->WriteLoHook(0x460FE0, (void*)Hota_GM5off);
game bug fixes extended.dll || My Plugins || My GitHub
|
|
07.01.2016 17:44 |
|
igrik
Posts: 2819
|
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) " можно было описать как-то проще
game bug fixes extended.dll || My Plugins || My GitHub
|
|
07.01.2016 21:57 |
|