Current time: 30.11.2024, 12:17 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Замена Сопряжения
» готовый туториал
Author Message
feanor Offline

Posts: 624
Post: #31

По приросту в ордах.
Массив структур 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
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 624
Post: #32

И таки да, все
Image: FnGt3KR3uZE.jpg
02.01.2016 04:18
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #33

Ух ты!)) Шикарно!


game bug fixes extended.dll || My Plugins || My GitHub
03.01.2016 19:31
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #34

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
(This post was last modified: 07.01.2016 02:39 by igrik.)
07.01.2016 00:11
Visit this user's website Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 624
Post: #35

Quote:но постоенное здание орды в экране города не отображается (те что 24, 25).
а ты его спрайт-то добавил в таблицу приоритетов? ну и там имя-координаты-деф-маска-обводка
(This post was last modified: 07.01.2016 03:10 by feanor.)
07.01.2016 02:55
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #36

Нет не добавил. Мля.....
Странно, хотя дефы есть в лоде, но все равно вылет с сообщением о том, что нет дефа. TBELHrd3(4).def
Quote:имя
Имя куда-то в exe нужно прописывать?


game bug fixes extended.dll || My Plugins || My GitHub
(This post was last modified: 07.01.2016 03:13 by igrik.)
07.01.2016 03:01
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #37

ага, увидел куда нужно имя дефа записать.

Получается, что нужно по адресам 0х00643654 и 0х00643658 положить указатели на "TbElHrd3" и "TbElHrd4".
Ух блин. А как это сделать?
Для масок и обводок разберусь по аналогии


game bug fixes extended.dll || My Plugins || My GitHub
(This post was last modified: 07.01.2016 03:33 by igrik.)
07.01.2016 03:16
Visit this user's website Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 624
Post: #38

чоб и готовыми не воспользоваться.

но можно и
*(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
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #39

Заработало! Dance3
Осталось указать тип нанимаемых существ. А то и там и там 1 уровень нанимается


game bug fixes extended.dll || My Plugins || My GitHub
07.01.2016 03:47
Visit this user's website Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 624
Post: #40

Quote:Осталось указать тип нанимаемых существ. А то и там и там 1 уровень нанимается
лол, ток щас заметил, что у меня тоже какая-то фигня
впрочем, ожидаемо, хуки на определение грейда я еще не ставил

думаю, ручное прописывание в вышеупомянутую таблицу спасет
07.01.2016 03:50
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #41

Code:
// уровни нанимаемых монстров орды для Конфлы
*(char*)0x68A3C4 = 1; // 18
*(char*)0x68A3C5 = 8; // 19

*(char*)0x68A3D8 = 3; // 24
*(char*)0x68A3D9 = 10; // 25


game bug fixes extended.dll || My Plugins || My GitHub
07.01.2016 13:40
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #42

Так, с ордами закончено.
Еще один вопос: маску строительства ГМ5 я запретил. Теперь нужно, чтобы после строительства ГМ4 она оформлялась желтей подсветкой, а не серой как сейчас. Где копать?
Image: AcisjfJ2csc.jpg


game bug fixes extended.dll || My Plugins || My GitHub
07.01.2016 13:53
Visit this user's website Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 624
Post: #43

В районе 00460F2F.
07.01.2016 16:17
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #44

вуаля
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
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #45

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
(This post was last modified: 07.01.2016 21:59 by igrik.)
07.01.2016 21:57
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group