Current time: 27.11.2024, 16:29 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Исследование героев
» туториал(ы)
Author Message
daemon_n Offline
Administrators

Posts: 4343
Post: #751

Итак. Снова сутки за героями, но исследовал вот что:

Вопросы, что я себе задал, мол, как поймать "фазу ожидания" существа (Click to View)
А вот и ответ, который пришёл мне в голову - прошу подтвердить:
Есть флаг ожидания у существа
!!BM0:F?i; записать значения флагов первого стека в переменную i
!!VRi:&33554432; проверить на ожидание
!!IF&i>0:M^Стек ждет лучшего момента для действия^;
   
Но он возвращает "истину", пока нет всеобщей фазы ожидания, которая определяется через:
!!UN:C6919200/4/?y10;
!!VRy11:Sy10 +81380;
!!UN:Cy11/1/?y8;

То есть, чтобы узнать, в ожидании отряд или нет, когда настала всеобщая фаза ожидания, надо сделать проверку на саму фазу, сделать проверку на флаг "завершённое действие" и на флаг "защиты". То есть флаг &33554432 проверять надо всегда с нюансамиYes


Image: widget.png?style=banner2

Новейший Heroes Launcher
22.01.2021 03:25
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #752

Quote:!!UN:C6919200/4/?y10;
!!VRy11:Sy10 +81380;
!!UN:Cy11/1/?y8; проверка на фазу ожидание
Спасибо за исследование! В Эре 3.3 можно будет написать так:
!!UN:C(COMBAT_MANAGER)/(UNC_INT)/?(combatMan:y) C(combatMan)/(STRUCT_COMBATMAN_IS_WAITING_PHASE)/(UNC_UINT8)/?(isWaitingPhase:y);


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
22.01.2021 15:23
Find all posts by this user Quote this message in a reply
RoseKavalier Offline

Posts: 118
Post: #753

(10.02.2021 19:34)XEPOMAHT Wrote:  Теперь знаю что такое SPLICE_, спасибо что объяснили.

Show, don't tell)

LoHook - register access (HookContext)
Image: kkmLLpM.png

Hihook - arguments access, no register access
Image: xzDUJrR.png

Image: 8gbMkaB.png

Image: ZqmbkSe.png

Image: y2isiLk.png
(This post was last modified: 12.02.2021 22:39 by RoseKavalier.)
12.02.2021 22:39
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1349
Post: #754

Друзья, подскажите пожалуйста, где можно узнать в каком "статусе" находятся стены? Изначально у них статус 2 (возможно, кстати, не у всех), если наполовину поломаны - 1, если можно пройти - 0.
Неактуально, я все нашел сам. Оставлю информацию здесь, чтобы другие могли найти тоже.

Смещения в менеджере битвы:
Code:
INT32 fortWallsHp[18]; // +13F60 (hit points of town walls)
INT32 fortWallsAlive[18];// +13FA8


Создал новый глобальный мод: WoG Ultra Edition
(This post was last modified: 13.02.2021 18:40 by Raistlin.)
13.02.2021 18:40
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1349
Post: #755

Нашел я в исходниках вога вот такой вот интересный список патчей, как думаете, имеет смысл попытаться на его основе добавить героев?
Code:
{0x40247D+1,DS0(0x5534),2},{0x40247D+3,DS0(HMTable),4},{0x40315B+1,DS0(0x553C),2​},{0x40315B+3,DS0(HMTable),4},
  {0x4035DF+1,DS0(0x551C),2},{0x4035DF+3,DS0(HMTable),4},{0x40625B+1,DS0(0x45​0C),2},{0x40625B+3,DS0(HMTable),4},
  {0x406284+1,DS0(0x450C),2},{0x406284+3,DS0(HMTable),4},{0x4062A6+1,DS0(0x45​0C),2},{0x4062A6+3,DS0(HMTable),4},
  {0x4062BB+1,DS0(0x450C),2},{0x4062BB+3,DS0(HMTable),4},{0x407B19+1,DS0(0x45​34),2},{0x407B19+3,DS0(HMTable),4},
  {0x407FFA+1,DS0(0x4504),2},{0x407FFA+3,DS0(HMTable),4},{0x4080EC+1,DS0(0x4D​0C),2},{0x4080EC+3,DS0(HMTable),4},
  {0x408BFA+1,DS0(0x453C),2},{0x408BFA+3,DS0(HMTable),4},{0x408E2B+1,DS0(0x45​3C),2},{0x408E2B+3,DS0(HMTable),4},
  {0x408EA2+1,DS0(0x4504),2},{0x408EA2+3,DS0(HMTable),4},{0x409097+1,DS0(0x55​0C),2},{0x409097+3,DS0(HMTable),4},
  {0x409261+1,DS0(0x4504),2},{0x409261+3,DS0(HMTable),4},{0x409A8A+1,DS0(0x45​04),2},{0x409A8A+3,DS0(HMTable),4},
  {0x409B7C+1,DS0(0x4504),2},{0x409B7C+3,DS0(HMTable),4},{0x40A7F4+1,DS0(0x45​1C),2},{0x40A7F4+3,DS0(HMTable),4},
  {0x40A9C9+1,DS0(0x4504),2},{0x40A9C9+3,DS0(HMTable),4},{0x40AF7C+1,DS0(0x4D​0C),2},{0x40AF7C+3,DS0(HMTable),4},
  {0x40AFF5+1,DS0(0x4D0C),2},{0x40AFF5+3,DS0(HMTable),4},{0x40B126+1,DS0(0x55​34),2},{0x40B126+3,DS0(HMTable),4},
  {0x40BBD4+1,DS0(0x4534),2},{0x40BBD4+3,DS0(HMTable),4},{0x40DF86+1,DS0(0x45​04),2},{0x40DF86+3,DS0(HMTable),4},
  {0x40E0F4+1,DS0(0x553C),2},{0x40E0F4+3,DS0(HMTable),4},{0x40E4AD+1,DS0(0x45​04),2},{0x40E4AD+3,DS0(HMTable),4},
  {0x40E583+1,DS0(0x4514),2},{0x40E583+3,DS0(HMTable),4},{0x40E607+1,DS0(0x4D​3C),2},{0x40E607+3,DS0(HMTable),4},
  {0x40E9A4+1,DS0(0x5504),2},{0x40E9A4+3,DS0(HMTable),4},{0x40EC31+1,DS0(0x45​3C),2},{0x40EC31+3,DS0(HMTable),4},
  {0x40F10B+1,DS0(0x4D0C),2},{0x40F10B+3,DS0(HMTable),4},{0x40FCA8+1,DS0(0x4D​0C),2},{0x40FCA8+3,DS0(HMTable),4},
  {0x40FDBA+1,DS0(0x4D34),2},{0x40FDBA+3,DS0(HMTable),4},{0x41024A+1,DS0(0x4D​34),2},{0x41024A+3,DS0(HMTable),4},
  {0x412CE0+1,DS0(0x4504),2},{0x412CE0+3,DS0(HMTable),4},{0x413784+1,DS0(0x45​14),2},{0x413784+3,DS0(HMTable),4},
  {0x414555+1,DS0(0x4534),2},{0x414555+3,DS0(HMTable),4},{0x41652D+1,DS0(0x45​34),2},{0x41652D+3,DS0(HMTable),4},
  {0x4165BA+1,DS0(0x551C),2},{0x4165BA+3,DS0(HMTable),4},{0x4167DF+1,DS0(0x55​1C),2},{0x4167DF+3,DS0(HMTable),4},
  {0x4168D0+1,DS0(0x4D04),2},{0x4168D0+3,DS0(HMTable),4},{0x416FAB+1,DS0(0x55​1C),2},{0x416FAB+3,DS0(HMTable),4},
  {0x41711D+1,DS0(0x4D34),2},{0x41711D+3,DS0(HMTable),4},{0x41763E+1,DS0(0x4D​3C),2},{0x41763E+3,DS0(HMTable),4},
  {0x417B74+1,DS0(0x4D3C),2},{0x417B74+3,DS0(HMTable),4},{0x418DE1+1,DS0(0x45​1C),2},{0x418DE1+3,DS0(HMTable),4},
  {0x418E4C+1,DS0(0x4D04),2},{0x418E4C+3,DS0(HMTable),4},{0x419182+1,DS0(0x55​04),2},{0x419182+3,DS0(HMTable),4},
  {0x4192D4+1,DS0(0x4D04),2},{0x4192D4+3,DS0(HMTable),4},{0x41943D+1,DS0(0x4D​04),2},{0x41943D+3,DS0(HMTable),4},
  {0x4199F5+1,DS0(0x450C),2},{0x4199F5+3,DS0(HMTable),4},{0x41C4EE+1,DS0(0x55​34),2},{0x41C4EE+3,DS0(HMTable),4},
  {0x41C63C+1,DS0(0x4D34),2},{0x41C63C+3,DS0(HMTable),4},{0x41C6B2+1,DS0(0x55​34),2},{0x41C6B2+3,DS0(HMTable),4},
  {0x41C7A4+1,DS0(0x4D34),2},{0x41C7A4+3,DS0(HMTable),4},{0x41C862+1,DS0(0x55​34),2},{0x41C862+3,DS0(HMTable),4},
  {0x41C943+1,DS0(0x4534),2},{0x41C943+3,DS0(HMTable),4},{0x41CA56+1,DS0(0x45​1C),2},{0x41CA56+3,DS0(HMTable),4},
  {0x41D034+1,DS0(0x4534),2},{0x41D034+3,DS0(HMTable),4},{0x41D259+1,DS0(0x55​34),2},{0x41D259+3,DS0(HMTable),4},
  {0x41D544+1,DS0(0x5534),2},{0x41D544+3,DS0(HMTable),4},{0x428175+1,DS0(0x4D​34),2},{0x428175+3,DS0(HMTable),4},
  {0x429807+1,DS0(0x5504),2},{0x429807+3,DS0(HMTable),4},{0x42986C+1,DS0(0x55​04),2},{0x42986C+3,DS0(HMTable),4},
  {0x42B13F+1,DS0(0x4504),2},{0x42B13F+3,DS0(HMTable),4},{0x42BB00+1,DS0(0x45​1C),2},{0x42BB00+3,DS0(HMTable),4},
  {0x42DEE8+1,DS0(0x4534),2},{0x42DEE8+3,DS0(HMTable),4},{0x42EFB6+1,DS0(0x45​04),2},{0x42EFB6+3,DS0(HMTable),4},
  {0x42F6F7+1,DS0(0x4534),2},{0x42F6F7+3,DS0(HMTable),4},{0x43145A+1,DS0(0x45​04),2},{0x43145A+3,DS0(HMTable),4},
  {0x4315CA+1,DS0(0x5504),2},{0x4315CA+3,DS0(HMTable),4},{0x431633+1,DS0(0x55​0C),2},{0x431633+3,DS0(HMTable),4},
  {0x4316EA+1,DS0(0x450C),2},{0x4316EA+3,DS0(HMTable),4},{0x4317EB+1,DS0(0x45​04),2},{0x4317EB+3,DS0(HMTable),4},
  {0x431EE9+1,DS0(0x4D04),2},{0x431EE9+3,DS0(HMTable),4},{0x432048+1,DS0(0x55​0C),2},{0x432048+3,DS0(HMTable),4},
  {0x4331A3+1,DS0(0x4504),2},{0x4331A3+3,DS0(HMTable),4},{0x433B02+1,DS0(0x4D​0C),2},{0x433B02+3,DS0(HMTable),4},
  {0x4518D1+1,DS0(0x451C),2},{0x4518D1+3,DS0(HMTable),4},{0x453193+1,DS0(0x4D​0C),2},{0x453193+3,DS0(HMTable),4},
  {0x4534D6+1,DS0(0x450C),2},{0x4534D6+3,DS0(HMTable),4},{0x453552+1,DS0(0x4D​04),2},{0x453552+3,DS0(HMTable),4},
  {0x47F11D+1,DS0(0x4D0C),2},{0x47F11D+3,DS0(HMTable),4},{0x47F1DB+1,DS0(0x45​3C),2},{0x47F1DB+3,DS0(HMTable),4},
  {0x47F4B9+1,DS0(0x451C),2},{0x47F4B9+3,DS0(HMTable),4},{0x47F69A+1,DS0(0x55​3C),2},{0x47F69A+3,DS0(HMTable),4},
  {0x47FB87+1,DS0(0x4D0C),2},{0x47FB87+3,DS0(HMTable),4},{0x47FF58+1,DS0(0x45​34),2},{0x47FF58+3,DS0(HMTable),4},
  {0x4801BA+1,DS0(0x4D0C),2},{0x4801BA+3,DS0(HMTable),4},{0x4803CA+1,DS0(0x4D​0C),2},{0x4803CA+3,DS0(HMTable),4},
  {0x480644+1,DS0(0x4D0C),2},{0x480644+3,DS0(HMTable),4},{0x4806D2+1,DS0(0x45​04),2},{0x4806D2+3,DS0(HMTable),4},
  {0x480B0A+1,DS0(0x4D0C),2},{0x480B0A+3,DS0(HMTable),4},{0x480FFA+1,DS0(0x45​0C),2},{0x480FFA+3,DS0(HMTable),4},
  {0x48124A+1,DS0(0x4D34),2},{0x48124A+3,DS0(HMTable),4},{0x4812E5+1,DS0(0x55​0C),2},{0x4812E5+3,DS0(HMTable),4},
  {0x4814CC+1,DS0(0x4D04),2},{0x4814CC+3,DS0(HMTable),4},{0x4817CA+1,DS0(0x55​04),2},{0x4817CA+3,DS0(HMTable),4},
  {0x48181C+1,DS0(0x453C),2},{0x48181C+3,DS0(HMTable),4},{0x48190E+1,DS0(0x4D​0C),2},{0x48190E+3,DS0(HMTable),4},
  {0x48197E+1,DS0(0x4504),2},{0x48197E+3,DS0(HMTable),4},{0x481AAC+1,DS0(0x55​1C),2},{0x481AAC+3,DS0(HMTable),4},
  {0x483C46+1,DS0(0x4D0C),2},{0x483C46+3,DS0(HMTable),4},{0x483C89+1,DS0(0x55​04),2},{0x483C89+3,DS0(HMTable),4},
  {0x483CCE+1,DS0(0x5534),2},{0x483CCE+3,DS0(HMTable),4},{0x483F8B+1,DS0(0x45​04),2},{0x483F8B+3,DS0(HMTable),4},
  {0x4860E8+1,DS0(0x451C),2},{0x4860E8+3,DS0(HMTable),4},{0x486BB0+1,DS0(0x55​34),2},{0x486BB0+3,DS0(HMTable),4},
  {0x487652+1,DS0(0x550C),2},{0x487652+3,DS0(HMTable),4},{0x4896AC+1,DS0(0x45​04),2},{0x4896AC+3,DS0(HMTable),4},
  {0x48971B+1,DS0(0x5504),2},{0x48971B+3,DS0(HMTable),4},{0x49A2EA+1,DS0(0x4D​04),2},{0x49A2EA+3,DS0(HMTable),4},
  {0x49B0DD+1,DS0(0x4D04),2},{0x49B0DD+3,DS0(HMTable),4},{0x49D446+1,DS0(0x4D​04),2},{0x49D446+3,DS0(HMTable),4},
  {0x49D4AC+1,DS0(0x5504),2},{0x49D4AC+3,DS0(HMTable),4},{0x49E03F+1,DS0(0x55​04),2},{0x49E03F+3,DS0(HMTable),4},
  {0x49E088+1,DS0(0x550C),2},{0x49E088+3,DS0(HMTable),4},{0x4A249F+1,DS0(0x4D​34),2},{0x4A249F+3,DS0(HMTable),4},
  {0x4A3CAC+1,DS0(0x5534),2},{0x4A3CAC+3,DS0(HMTable),4},{0x4AA735+1,DS0(0x4D​3C),2},{0x4AA735+3,DS0(HMTable),4},
  {0x4AAD33+1,DS0(0x4D14),2},{0x4AAD33+3,DS0(HMTable),4},{0x4AAE0C+1,DS0(0x55​1C),2},{0x4AAE0C+3,DS0(HMTable),4},
  {0x4AAF6D+1,DS0(0x551C),2},{0x4AAF6D+3,DS0(HMTable),4},{0x4AAFFB+1,DS0(0x55​1C),2},{0x4AAFFB+3,DS0(HMTable),4},
  {0x4B262B+1,DS0(0x4504),2},{0x4B262B+3,DS0(HMTable),4},{0x4B9CCB+1,DS0(0x45​3C),2},{0x4B9CCB+3,DS0(HMTable),4},
  {0x4BA767+1,DS0(0x5534),2},{0x4BA767+3,DS0(HMTable),4},{0x4BA7BB+1,DS0(0x4D​34),2},{0x4BA7BB+3,DS0(HMTable),4},
  {0x4BA8C6+1,DS0(0x4514),2},{0x4BA8C6+3,DS0(HMTable),4},{0x4BA939+1,DS0(0x55​14),2},{0x4BA939+3,DS0(HMTable),4},
  {0x4BA99F+1,DS0(0x450C),2},{0x4BA99F+3,DS0(HMTable),4},{0x4BAA05+1,DS0(0x4D​0C),2},{0x4BAA05+3,DS0(HMTable),4},
  {0x4BC922+1,DS0(0x451C),2},{0x4BC922+3,DS0(HMTable),4},{0x4BFDA7+1,DS0(0x45​04),2},{0x4BFDA7+3,DS0(HMTable),4},
  {0x4BFF35+1,DS0(0x4D0C),2},{0x4BFF35+3,DS0(HMTable),4},{0x4C0044+1,DS0(0x45​34),2},{0x4C0044+3,DS0(HMTable),4},
  {0x4C676F+1,DS0(0x550C),2},{0x4C676F+3,DS0(HMTable),4},{0x4C709C+1,DS0(0x4D​3C),2},{0x4C709C+3,DS0(HMTable),4},
  {0x4C70EF+1,DS0(0x5534),2},{0x4C70EF+3,DS0(HMTable),4},{0x4C7160+1,DS0(0x45​34),2},{0x4C7160+3,DS0(HMTable),4},
  {0x4C76D6+1,DS0(0x550C),2},{0x4C76D6+3,DS0(HMTable),4},{0x4C7767+1,DS0(0x4D​0C),2},{0x4C7767+3,DS0(HMTable),4},
  {0x4C8036+1,DS0(0x4D34),2},{0x4C8036+3,DS0(HMTable),4},{0x4C809E+1,DS0(0x55​34),2},{0x4C809E+3,DS0(HMTable),4},
  {0x4C8178+1,DS0(0x4504),2},{0x4C8178+3,DS0(HMTable),4},{0x4C81C2+1,DS0(0x45​04),2},{0x4C81C2+3,DS0(HMTable),4},
  {0x4C820A+1,DS0(0x4504),2},{0x4C820A+3,DS0(HMTable),4},{0x4C8247+1,DS0(0x45​04),2},{0x4C8247+3,DS0(HMTable),4},
  {0x4C82A5+1,DS0(0x553C),2},{0x4C82A5+3,DS0(HMTable),4},{0x4C839F+1,DS0(0x4D​04),2},{0x4C839F+3,DS0(HMTable),4},
  {0x4C8830+1,DS0(0x551C),2},{0x4C8830+3,DS0(HMTable),4},{0x4C9EA5+1,DS0(0x55​0C),2},{0x4C9EA5+3,DS0(HMTable),4},
  {0x4CAB9E+1,DS0(0x4D34),2},{0x4CAB9E+3,DS0(HMTable),4},{0x4CAC54+1,DS0(0x45​0C),2},{0x4CAC54+3,DS0(HMTable),4},
  {0x4DE57C+1,DS0(0x4504),2},{0x4DE57C+3,DS0(HMTable),4},{0x4DE61A+1,DS0(0x55​0C),2},{0x4DE61A+3,DS0(HMTable),4},
  {0x4E18C5+1,DS0(0x4504),2},{0x4E18C5+3,DS0(HMTable),4},{0x4E1AD7+1,DS0(0x45​14),2},{0x4E1AD7+3,DS0(HMTable),4},
  {0x4E7715+1,DS0(0x4D0C),2},{0x4E7715+3,DS0(HMTable),4},{0x4E7FB5+1,DS0(0x4D​14),2},{0x4E7FB5+3,DS0(HMTable),4},
  {0x4E86D8+1,DS0(0x550C),2},{0x4E86D8+3,DS0(HMTable),4},{0x4E87BC+1,DS0(0x4D​0C),2},{0x4E87BC+3,DS0(HMTable),4},
  {0x4E87D6+1,DS0(0x553C),2},{0x4E87D6+3,DS0(HMTable),4},{0x4E8ABF+1,DS0(0x4D​0C),2},{0x4E8ABF+3,DS0(HMTable),4},
  {0x4E8AD9+1,DS0(0x553C),2},{0x4E8AD9+3,DS0(HMTable),4},{0x4F1A4B+1,DS0(0x45​0C),2},{0x4F1A4B+3,DS0(HMTable),4},
  {0x4F26A6+1,DS0(0x5504),2},{0x4F26A6+3,DS0(HMTable),4},{0x4F313A+1,DS0(0x55​04),2},{0x4F313A+3,DS0(HMTable),4},
  {0x4F318F+1,DS0(0x4D0C),2},{0x4F318F+3,DS0(HMTable),4},{0x4F4A11+1,DS0(0x4D​1C),2},{0x4F4A11+3,DS0(HMTable),4},
  {0x4F53B3+1,DS0(0x4D34),2},{0x4F53B3+3,DS0(HMTable),4},{0x4F540C+1,DS0(0x55​34),2},{0x4F540C+3,DS0(HMTable),4},
  {0x4F5481+1,DS0(0x5534),2},{0x4F5481+3,DS0(HMTable),4},{0x4FD243+1,DS0(0x45​04),2},{0x4FD243+3,DS0(HMTable),4},
  {0x4FD2A5+1,DS0(0x4504),2},{0x4FD2A5+3,DS0(HMTable),4},{0x4FD2F3+1,DS0(0x45​04),2},{0x4FD2F3+3,DS0(HMTable),4},
  {0x4FD37E+1,DS0(0x4504),2},{0x4FD37E+3,DS0(HMTable),4},{0x4FD4A1+1,DS0(0x45​04),2},{0x4FD4A1+3,DS0(HMTable),4},
  {0x50609B+1,DS0(0x4504),2},{0x50609B+3,DS0(HMTable),4},{0x5060EC+1,DS0(0x4D​1C),2},{0x5060EC+3,DS0(HMTable),4},
  {0x513AC9+1,DS0(0x4504),2},{0x513AC9+3,DS0(HMTable),4},{0x513CE7+1,DS0(0x45​04),2},{0x513CE7+3,DS0(HMTable),4},
  {0x51C90D+1,DS0(0x4D34),2},{0x51C90D+3,DS0(HMTable),4},{0x51CBB3+1,DS0(0x45​34),2},{0x51CBB3+3,DS0(HMTable),4},
  {0x51D5B6+1,DS0(0x4514),2},{0x51D5B6+3,DS0(HMTable),4},{0x51F3C0+1,DS0(0x55​34),2},{0x51F3C0+3,DS0(HMTable),4},
  {0x51F687+1,DS0(0x450C),2},{0x51F687+3,DS0(HMTable),4},{0x51FA10+1,DS0(0x45​0C),2},{0x51FA10+3,DS0(HMTable),4},
  {0x51FAAD+1,DS0(0x4504),2},{0x51FAAD+3,DS0(HMTable),4},{0x51FB29+1,DS0(0x55​04),2},{0x51FB29+3,DS0(HMTable),4},
  {0x52137B+1,DS0(0x5534),2},{0x52137B+3,DS0(HMTable),4},{0x52163E+1,DS0(0x45​0C),2},{0x52163E+3,DS0(HMTable),4},
  {0x521741+1,DS0(0x5534),2},{0x521741+3,DS0(HMTable),4},{0x5217A9+1,DS0(0x45​34),2},{0x5217A9+3,DS0(HMTable),4},
  {0x52189C+1,DS0(0x4504),2},{0x52189C+3,DS0(HMTable),4},{0x5218D4+1,DS0(0x45​04),2},{0x5218D4+3,DS0(HMTable),4},
  {0x52210B+1,DS0(0x550C),2},{0x52210B+3,DS0(HMTable),4},{0x5222BD+1,DS0(0x45​0C),2},{0x5222BD+3,DS0(HMTable),4},
  {0x52297F+1,DS0(0x4D04),2},{0x52297F+3,DS0(HMTable),4},{0x522AD7+1,DS0(0x4D​0C),2},{0x522AD7+3,DS0(HMTable),4},
  {0x525741+1,DS0(0x5504),2},{0x525741+3,DS0(HMTable),4},{0x5257FB+1,DS0(0x45​34),2},{0x5257FB+3,DS0(HMTable),4},
  {0x525950+1,DS0(0x4D04),2},{0x525950+3,DS0(HMTable),4},{0x525E87+1,DS0(0x4D​04),2},{0x525E87+3,DS0(HMTable),4},
  {0x526526+1,DS0(0x5514),2},{0x526526+3,DS0(HMTable),4},{0x5267F5+1,DS0(0x55​04),2},{0x5267F5+3,DS0(HMTable),4},
  {0x526C00+1,DS0(0x4504),2},{0x526C00+3,DS0(HMTable),4},{0x526F42+1,DS0(0x45​04),2},{0x526F42+3,DS0(HMTable),4},
  {0x526FC0+1,DS0(0x4534),2},{0x526FC0+3,DS0(HMTable),4},{0x5270E7+1,DS0(0x45​34),2},{0x5270E7+3,DS0(HMTable),4},
  {0x527E84+1,DS0(0x450C),2},{0x527E84+3,DS0(HMTable),4},{0x52A1C9+1,DS0(0x45​34),2},{0x52A1C9+3,DS0(HMTable),4},
  {0x52A8AD+1,DS0(0x4D04),2},{0x52A8AD+3,DS0(HMTable),4},{0x52B1A4+1,DS0(0x55​14),2},{0x52B1A4+3,DS0(HMTable),4},
  {0x52B36F+1,DS0(0x551C),2},{0x52B36F+3,DS0(HMTable),4},{0x52B48F+1,DS0(0x4D​1C),2},{0x52B48F+3,DS0(HMTable),4},
  {0x52B5D7+1,DS0(0x451C),2},{0x52B5D7+3,DS0(HMTable),4},{0x557096+1,DS0(0x55​04),2},{0x557096+3,DS0(HMTable),4},
  {0x5683A6+1,DS0(0x4D1C),2},{0x5683A6+3,DS0(HMTable),4},{0x569DB0+1,DS0(0x45​34),2},{0x569DB0+3,DS0(HMTable),4},
  {0x56A896+1,DS0(0x450C),2},{0x56A896+3,DS0(HMTable),4},{0x56E478+1,DS0(0x45​04),2},{0x56E478+3,DS0(HMTable),4},
  {0x56E579+1,DS0(0x453C),2},{0x56E579+3,DS0(HMTable),4},{0x56E9A4+1,DS0(0x45​3C),2},{0x56E9A4+3,DS0(HMTable),4},
  {0x5721A8+1,DS0(0x4504),2},{0x5721A8+3,DS0(HMTable),4},{0x5722A9+1,DS0(0x45​3C),2},{0x5722A9+3,DS0(HMTable),4},
  {0x572471+1,DS0(0x4514),2},{0x572471+3,DS0(HMTable),4},{0x582654+1,DS0(0x55​1C),2},{0x582654+3,DS0(HMTable),4},
  {0x582866+1,DS0(0x451C),2},{0x582866+3,DS0(HMTable),4},{0x5AEEFB+1,DS0(0x55​0C),2},{0x5AEEFB+3,DS0(HMTable),4},
  {0x5AEF23+1,DS0(0x550C),2},{0x5AEF23+3,DS0(HMTable),4},{0x5BE40F+1,DS0(0x45​04),2},{0x5BE40F+3,DS0(HMTable),4},
  {0x5BE4A8+1,DS0(0x550C),2},{0x5BE4A8+3,DS0(HMTable),4},{0x5BE689+1,DS0(0x45​04),2},{0x5BE689+3,DS0(HMTable),4},
  {0x5BE7BE+1,DS0(0x4D0C),2},{0x5BE7BE+3,DS0(HMTable),4},{0x5BE7EF+1,DS0(0x55​0C),2},{0x5BE7EF+3,DS0(HMTable),4},
  {0x5BE87B+1,DS0(0x450C),2},{0x5BE87B+3,DS0(HMTable),4},{0x5BE89B+1,DS0(0x45​3C),2},{0x5BE89B+3,DS0(HMTable),4},
  {0x5BE9A6+1,DS0(0x4D0C),2},{0x5BE9A6+3,DS0(HMTable),4},{0x5BF5A7+1,DS0(0x45​04),2},{0x5BF5A7+3,DS0(HMTable),4},
  {0x5BF5EE+1,DS0(0x5504),2},{0x5BF5EE+3,DS0(HMTable),4},{0x5BFD42+1,DS0(0x55​04),2},{0x5BFD42+3,DS0(HMTable),4},
  {0x5BFD69+1,DS0(0x4D0C),2},{0x5BFD69+3,DS0(HMTable),4},{0x5BFE0F+1,DS0(0x45​0C),2},{0x5BFE0F+3,DS0(HMTable),4},
  {0x5C173D+1,DS0(0x4D0C),2},{0x5C173D+3,DS0(HMTable),4},{0x5C17D2+1,DS0(0x45​14),2},{0x5C17D2+3,DS0(HMTable),4},
  {0x5C188B+1,DS0(0x4504),2},{0x5C188B+3,DS0(HMTable),4},{0x5C69E5+1,DS0(0x55​04),2},{0x5C69E5+3,DS0(HMTable),4},
  {0x5C6A12+1,DS0(0x5504),2},{0x5C6A12+3,DS0(HMTable),4},{0x5C7253+1,DS0(0x4D​3C),2},{0x5C7253+3,DS0(HMTable),4},
  {0x5C7291+1,DS0(0x5514),2},{0x5C7291+3,DS0(HMTable),4},{0x5C7373+1,DS0(0x55​3C),2},{0x5C7373+3,DS0(HMTable),4},
  {0x5C76A1+1,DS0(0x4504),2},{0x5C76A1+3,DS0(HMTable),4},{0x5C76C1+1,DS0(0x45​04),2},{0x5C76C1+3,DS0(HMTable),4},
  {0x5C7E0A+1,DS0(0x4D04),2},{0x5C7E0A+3,DS0(HMTable),4},{0x5C7EED+1,DS0(0x45​04),2},{0x5C7EED+3,DS0(HMTable),4},
  {0x5C9BED+1,DS0(0x4504),2},{0x5C9BED+3,DS0(HMTable),4},{0x5CE99D+1,DS0(0x45​3C),2},{0x5CE99D+3,DS0(HMTable),4},
  {0x5CE9C1+1,DS0(0x553C),2},{0x5CE9C1+3,DS0(HMTable),4},{0x5D1D62+1,DS0(0x45​34),2},{0x5D1D62+3,DS0(HMTable),4},
  {0x5D2238+1,DS0(0x550C),2},{0x5D2238+3,DS0(HMTable),4},{0x5D31E6+1,DS0(0x45​04),2},{0x5D31E6+3,DS0(HMTable),4},
  {0x5D3209+1,DS0(0x5504),2},{0x5D3209+3,DS0(HMTable),4},{0x5D3238+1,DS0(0x45​04),2},{0x5D3238+3,DS0(HMTable),4},
  {0x5D33DD+1,DS0(0x4504),2},{0x5D33DD+3,DS0(HMTable),4},{0x5D34EF+1,DS0(0x45​34),2},{0x5D34EF+3,DS0(HMTable),4},
  {0x5D3513+1,DS0(0x5534),2},{0x5D3513+3,DS0(HMTable),4},{0x5D4499+1,DS0(0x4D​04),2},{0x5D4499+3,DS0(HMTable),4},
  {0x5D4516+1,DS0(0x4504),2},{0x5D4516+3,DS0(HMTable),4},{0x5D7DA9+1,DS0(0x4D​04),2},{0x5D7DA9+3,DS0(HMTable),4},
  {0x5D7E84+1,DS0(0x5534),2},{0x5D7E84+3,DS0(HMTable),4},{0x5D80C3+1,DS0(0x45​0C),2},{0x5D80C3+3,DS0(HMTable),4},
  {0x5D843F+1,DS0(0x550C),2},{0x5D843F+3,DS0(HMTable),4},{0x5D8480+1,DS0(0x55​04),2},{0x5D8480+3,DS0(HMTable),4},
  {0x5D84F3+1,DS0(0x4504),2},{0x5D84F3+3,DS0(HMTable),4},{0x5D853E+1,DS0(0x55​0C),2},{0x5D853E+3,DS0(HMTable),4},
  {0x5D8773+1,DS0(0x553C),2},{0x5D8773+3,DS0(HMTable),4},{0x5D8862+1,DS0(0x45​04),2},{0x5D8862+3,DS0(HMTable),4},
  {0x5D89D6+1,DS0(0x4D0C),2},{0x5D89D6+3,DS0(HMTable),4},{0x5D8AAB+1,DS0(0x55​04),2},{0x5D8AAB+3,DS0(HMTable),4},
  {0x5DE4AB+1,DS0(0x553C),2},{0x5DE4AB+3,DS0(HMTable),4},{0x5DE50D+1,DS0(0x45​04),2},{0x5DE50D+3,DS0(HMTable),4},
  {0x5DEF1D+1,DS0(0x4504),2},{0x5DEF1D+3,DS0(HMTable),4},{0x5DF3DF+1,DS0(0x45​34),2},{0x5DF3DF+3,DS0(HMTable),4},
  {0x5DF460+1,DS0(0x550C),2},{0x5DF460+3,DS0(HMTable),4},{0x5EA231+1,DS0(0x45​0C),2},{0x5EA231+3,DS0(HMTable),4},
  {0x5EA3AE+1,DS0(0x450C),2},{0x5EA3AE+3,DS0(HMTable),4},{0x5EA4A8+1,DS0(0x4D​14),2},{0x5EA4A8+3,DS0(HMTable),4},
  {0x5F1B9D+1,DS0(0x4D3C),2},{0x5F1B9D+3,DS0(HMTable),4},{0x5F1D0B+1,DS0(0x4D​0C),2},{0x5F1D0B+3,DS0(HMTable),4},
  {0x5F1DE1+1,DS0(0x453C),2},{0x5F1DE1+3,DS0(HMTable),4},{0x5F1F68+1,DS0(0x45​04),2},{0x5F1F68+3,DS0(HMTable),4},
  {0x5F7835+1,DS0(0x5504),2},{0x5F7835+3,DS0(HMTable),4},{0x5F78DA+1,DS0(0x55​34),2},{0x5F78DA+3,DS0(HMTable),4},
  {0x5F7CDA+1,DS0(0x5534),2},{0x5F7CDA+3,DS0(HMTable),4},

  {0x40E5FB+2,DS0(0x4D04),2},{0x40E5FB+4,DS0(&HMTable[0].y),4},
  {0x417B7B+2,DS0(0x4D0C),2},{0x417B7B+4,DS0(HMTable),4},
  {0x4199ED+2,DS0(0x4514),2},{0x4199ED+4,DS0(HMTable),4},
  {0x4814D3+1,DS0(0x4D04),2},{0x4814D3+3,DS0(&HMTable[0].RefData1),4},
  {0x483C3E+2,DS0(0x4D04),2},{0x483C3E+4,DS0(&HMTable[0].Owner),4},
//  {0x4B6638+2,DS0(0x45C3),2},{0x4B8638+4,DS0(&HMTable[0].Owner),4},
  {0x4B8AC4+1,DS0(0x3D),1},{0x4B8AC4+2,DS0(&HMTable[0].Owner),4},
  {0x4BB183+1,DS0(0x1D),1},{0x4BB183+2,DS0(&HMTable[0].Spec),4}, //BB183 Spec
  {0x4BB305+1,DS0(0x05),1},{0x4BB305+2,DS0(&HMTable[0].Spec),4}, //BB305 Spec
  {0x4BB49C+1,DS0(0x05),1},{0x4BB49C+2,DS0(&HMTable[0].Spec),4}, //BB49C Spec
  {0x4BD0AB+1,DS0(0x3D),1},{0x4BD0AB+2,DS0(HMTable),4},
  {0x4BE501+1,DS0(0x3D),1},{0x4BE501+2,DS0(HMTable),4},
  {0x4BEF6E+1,DS0(0x05),1},{0x4BEF6E+2,DS0(HMTable),4},
  {0x4BF5A6+2,DS0(0x05),1},{0x4BF5A6+3,DS0(&HMTable[0].y),4},
  {0x4BF860+1,DS0(0x05),1},{0x4BF860+2,DS0(&HMTable[0].y),4},
  {0x4BF946+2,DS0(0x4504),2},{0x4BF946+4,DS0(&HMTable[0].Owner),4},
  {0x4BFB47+1,DS0(0x35),1},{0x4BFB47+2,DS0(HMTable),4},
  {0x4C6D0F+1,DS0(0x4D04),2},{0x4C6D0F+3,DS0(&HMTable[0].RefData1),4},
  {0x4C6D16+1,DS0(0x4D0C),2},{0x4C6D16+3,DS0(&HMTable[0].RefData1),4},
  {0x4C7920+1,DS0(0x3D),1},{0x4C7920+2,DS0(&HMTable[0].Owner),4}, // ?
  {0x4C7D8F+1,DS0(0x05),1},{0x4C7D8F+2,DS0(&HMTable[0].RefData1),4},
  {0x4C7EF7+1,DS0(0x35),1},{0x4C7EF7+2,DS0(&HMTable[0].SpPoints),4},
  {0x4C83D4,DS0(0x90C003),3},
// не надо! {0x4C83DA+1,DS0(0x0D),1},
    {0x4C83DA+2,DS0(HMTable),4},
// не надо! {0x4C83E0,DS0(0xA0),1},
    {0x4C83E0+1,DS0(&HMTable[0].PSkill[3]),4},
// не надо! C8422
    {0x4C8422+3,DS0(&HMTable[0].SpPoints),4},
  {0x4C89DF+1,DS0(0x05),1},{0x4C89DF+2,DS0(&HMTable[0].RefData1),4},
  {0x4C9408+1,DS0(0x1C),1},
  {0x4C9415,DS0(0x90DB03),3},
// не надо! C941D
    {0x4C941D+2,DS0(&HMTable[0].Ct[0]),4},
// не надо! {0x4C94BD+1,DS0(0x0D),1},
    {0x4C94BD+2,DS0(HMTable),4},
// не надо! {0x4C94E3+1,DS0(0x0D),1},
    {0x4C94E3+2,DS0(HMTable),4},
  {0x4CD8E6+2,DS0(0x4504),2},{0x4CD8E6+4,DS0(&HMTable[0].Owner),4},
  {0x4CD9D2+2,DS0(0x4D0C),2},{0x4CD9D2+4,DS0(&HMTable[0].Owner),4},
  {0x4CDE34+1,DS0(0x05),1},{0x4CDE34+2,DS0(HMTable),4},
  {0x4CE4F9+1,DS0(0x15),1},{0x4CE4F9+2,DS0(HMTable),4},
  {0x4DA466+1,DS0(0x5D04),2},{0x4DA466+3,DS0(&HMTable[0].RefData2),4},
  {0x4F4ED8+1,DS0(0x4514),2},{0x4F4ED8+3,DS0(&HMTable[0].Ct[0]),4},
  {0x526FC7+1,DS0(0x4504),2},{0x526FC7+3,DS0(&HMTable[0].Movement),4},
  {0x58D579+1,DS0(0x5504),2},{0x58D579+3,DS0(&HMTable[0].Name[0]),4},
  {0x58D697+1,DS0(0x4504),2},{0x58D697+3,DS0(&HMTable[0].Name[0]),4},
  {0x5BE681+2,DS0(0x4514),2},{0x5BE681+4,DS0(&HMTable[0].Owner),4},
  {0x62C9C3,DS0(0xB8),1},{0x62C9C3+1,DS0(HMTable),4},
  {0x62CB5F,DS0(0xB8),1},{0x62CB5F+1,DS0(HMTable),4},


  {0x4BB1EC+2,DS0(HERNUM),4},{0x4BB252+2,DS0(HERNUM),4},{0x4BB36F+2,DS0(HERNU​M),4},
  {0x4BB500+2,DS0(HERNUM),4},{0x4BD1CB+3,DS0(HERNUM),4},{0x4BE51D+1,DS0(HERNU​M),4},
  {0x4BE597+3,DS0(HERNUM),4},{0x4BEF9A+2,DS0(HERNUM),4},{0x4BF61E+2,DS0(HERNU​M),4},
  {0x4BF8D8+2,DS0(HERNUM),4},{0x4BFBA1+2,DS0(HERNUM),4}, // 4C2CCF 4CAADB инициализация из _THero_
  {0x4C81DE+2,DS0(HERNUM),4},{0x4C8222+2,DS0(HERNUM),4},{0x4C825F+2,DS0(HERNU​M),4},
  {0x4C89E5+1,DS0(HERNUM),4},{0x4CDE53+3,DS0(HERNUM),4},


Создал новый глобальный мод: WoG Ultra Edition
21.02.2021 01:32
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #756

(21.02.2021 01:32)Raistlin Wrote:  Нашел я в исходниках вога вот такой вот интересный список патчей, как думаете, имеет смысл попытаться на его основе добавить героев?

Попытайся. Он под чистый SoD без модов, если что.
21.02.2021 19:00
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1349
Post: #757

XEPOMAHT, хорошо )


Создал новый глобальный мод: WoG Ultra Edition
21.02.2021 20:24
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 624
Post: #758

Насчет героев вообще была умеренно всратая идея: у нас же в игре все равно не может быть больше 8*8 + 2*8 + 48 героев (8 в поле каждой фракции, 48 в гарнизонах замков, 2*8 в тавернах)

Так вот, зачем нам их добавлять актуально, убиваясь о все возможные битмапы (в хоте перенос между кампаниями фиксили чуть ли не до 1.4), допструктуры вога и все такое, если можно сделать пул и менять их динамически?
21.02.2021 22:36
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #759

(21.02.2021 22:36)feanor Wrote:  Так вот, зачем нам их добавлять актуально, убиваясь о все возможные битмапы (в хоте перенос между кампаниями фиксили чуть ли не до 1.4), допструктуры вога и все такое, если можно сделать пул и менять их динамически?

Это уже кастыли, затруднительно сказать, какие при этом повылазят глюки. Проще расширением существующих структур (что уже было сделано ещё в WoG 3.59 и портировано на все текущие троешные геройские платформы) и полной адаптацией кривостей воговского кода с воговскими скриптами (что давно пора сделать, а не заниматься тем, что уже кем-то сделано).
22.02.2021 00:15
Find all posts by this user Quote this message in a reply
Дьякон Offline

Posts: 395
Post: #760

Сюда продублирую. Структуры сноса строений при постройках:
0x839AA8 - имеет два dworda на каждое строение. Адрес для ЭРЫ.


Страус труп (с) Бьерн
26.06.2021 14:29
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #761

Щиты снайперов и иже с ним прочие wog-способности

Code:
static void _SetUpBeforeBattle2(void)
{
  #include "templ.h"
  int       i,j,tp;
  Byte     *bm=(Byte *)SUBB_BatMan;
  Byte     *mon;
//  _Hero_   *hp1=(_Hero_ *)*(Dword *)&bm[0x53CC];
//  _Hero_   *hp2=(_Hero_ *)*(Dword *)&bm[0x53D0];
  NMT_First=0; // Сброс для Санта Гремлина и других, кто иниц. после тактики
///////////  PlaceNPCAtBattleStart(bm);
//  CrExpBon::PrepareBFExpStructure(bm);
//  if(bm[0x13D68]==0){  // NO tactic phase
    *(int *)&((Byte *)bm)[0x13D6C]=0; // clear the turn index
//  }
  for(i=0;i<(21*2);i++){
    mon=&bm[0x54CC+0x548*i];
    *(int *)&mon[0x288]=0; // not being hypnotized
    *(int *)&mon[0xF4] =i/21; // initial side
    // 3.58 Tower skip
    if(i==20) continue; // 3.58
    if(i==41) continue; // 3.58
    mon=&bm[0x54CC+0x548*i];
//    AdjustStackParams(/*bm,*/mon,0); // 3.58 Creature experience
    CrExpBon::Apply(mon);
    tp=*(int *)&mon[0x34];
    if((tp>=174)&&(tp<=191)){
       AddMagic2NPC(mon,bm);
    }
    if(tp==152){ // титан
      SetMonMagic(mon,28,1000,3,0); // воздушный щит
    }
    if(tp==156){ // чудище
      *(int *)&mon[0x454]=2;
    }
    if(tp==158){ // феникс
      SetMonMagic(mon,0x1D,1000,1,0); // огненный щит
      SetMonMagic(mon,55,1000,3,0); // палач
    }
    if(tp==195){ // Hell Steed (fire horse)
      SetMonMagic(mon,0x1D,1000,1,0); // огненный щит
    }
    if((tp>=GODMONTSTRT)&&(tp<(GODMONTSTRT+GODMONTNUM))){ // бог
      *(int *)&mon[0x454]=0; // не отвечает на атаку
    }
    if(tp==164){ // огненный голем
      SetMonMagic(mon,31,1000,3,0); // защита от огня
    }
    if(tp==165){ // огненный голем
      SetMonMagic(mon,33,1000,3,0); // защита от земли
    }
    if(tp==166){ // огненный голем
      SetMonMagic(mon,30,1000,3,0); // защита от воздуха
    }
    if(tp==167){ // огненный голем
      SetMonMagic(mon,32,1000,3,0); // защита от воды
    }
    if(tp==169){ // белый монах
      SetMonMagic(mon,36,1000,3,0); // волшебное зеркало
    }
    if(tp==170){ // белый шутер
      SetMonMagic(mon,28,1000,3,0); // воздушный щит
    }
    if(tp==171){ // красный шутер
      SetMonMagic(mon,0x1D,1000,1,0); // огненный щит
    }
    if(tp==192){ // Centaur-Elf
      SetMonMagic(mon,49,1000,3,0); // Mirth
    }
    for(j=0;j<100;j++){
      if(MonsterOfWeek[j]==-1) break;
      if(tp==MonsterOfWeek[j]){ // монстр недели
        SetMonMagic(mon,48,1000,3,0); // воздушный щит
      }
    }
    CrExpBon::ApplySpell(mon,bm);
//    CrExpBon::ApplyMassSpell(mon);
    if(tp==0x95){        // башня
      _CastleSetup_ *cp;
      cp=(_CastleSetup_ *)*(Dword *)&bm[0x53C8];
      if(IsCastleSetup(cp)==1){ // замок
        SetTowerBunus(cp,mon);
/*
        int side=*(int *)&mon[0xF4]; // сторона
        _Hero_   *htmp;
        _Hero_   *hpo=(_Hero_ *)*(Dword *)&bm[0x53CC];
        _Hero_   *hpe=(_Hero_ *)*(Dword *)&bm[0x53D0];
        if(side!=0){ htmp=hpo; hpo=hpe; hpe=htmp; }
        if((hpo!=0)&&(HeroHasArt(hpo,0x8E))){ // свой
//          *(int *)&mon[0x4C]=99;
        }
*/
      }
    }

Code:
static void  _SetUpNewRound(void)
{
  #include "templ.h"
  int j;
  Byte *sgp,*bmp=(Byte *)SUNR_BatMan;
  Byte *mon=(Byte *)SUNR_Mon;
  int   tp=*(int *)&mon[0x34];
//  Byte     *bm=(Byte *)SUNR_BatMan;
//  _Hero_   *hp1=(_Hero_ *)*(Dword *)&bm[0x53CC];
//  _Hero_   *hp2=(_Hero_ *)*(Dword *)&bm[0x53D0];
  if((tp>=174)&&(tp<=191)){
     AddMagic2NPC(mon,bmp);
  }
  CrExpBon::Apply2(mon);
  if(tp==152){ // титан
    SetMonMagic(mon,28,1000,3,0); // воздушный щит
  }
  if(tp==156){ // чудище
    *(int *)&mon[0x454]=2; // отвечает дважды
  }
  if(tp==158){ // феникс
    SetMonMagic(mon,0x1D,1000,1,0); // огненный щит
    SetMonMagic(mon,55,1000,3,0); // палач
  }
  if(tp==195){ // Hell Steed (fire horse)
    SetMonMagic(mon,0x1D,1000,1,0); // огненный щит
  }
  for(j=0;j<100;j++){
    if(MonsterOfWeek[j]==-1) break;
    if(tp==MonsterOfWeek[j]){ // монстр недели
      SetMonMagic(mon,48,1000,3,0); // воздушный щит
    }
  }
  if((tp>=GODMONTSTRT)&&(tp<(GODMONTSTRT+GODMONTNUM))){ // бог
    *(int *)&mon[0x454]=0; // не отвечает на атаку
  }
  if(tp==164){ // огненный голем
    SetMonMagic(mon,31,1000,3,0); // защита от огня
  }
  if(tp==165){ // огненный голем
    SetMonMagic(mon,33,1000,3,0); // защита от земли
  }
  if(tp==166){ // огненный голем
    SetMonMagic(mon,30,1000,3,0); // защита от воздуха
  }
  if(tp==167){ // огненный голем
    SetMonMagic(mon,32,1000,3,0); // защита от воды
  }
  if(tp==169){ // белый монах
    SetMonMagic(mon,36,1000,3,0); // волшебное зеркало
  }
  if(tp==170){ // белый шутер
    SetMonMagic(mon,28,1000,3,0); // воздушный щит
  }
  if(tp==171){ // красный шутер
    SetMonMagic(mon,0x1D,1000,1,0); // огненный щит
  }
  if(tp==192){ // Centaur-Elf
    SetMonMagic(mon,49,1000,3,0); // Mirth
  }
  CrExpBon::ApplySpell(mon,bmp);
  for(j=0;j<SG_GuardsSet;j++){
   if(SG_GuardsSetUp[j].own_stack!=-1){
     sgp=&bmp[0x54CC+0x548*SG_GuardsSetUp[j].sg_stack];
     if((*(int *)&sgp[0x4C])<=0){
       sgp=&bmp[0x54CC+0x548*SG_GuardsSetUp[j].own_stack];
       *(int *)&sgp[0xC4]=SG_GuardsSetUp[j].own_speed;
     }
   }
}

Двоичные патчи для BinMagic:

Отключить щиты у арктического и лавового снайперов в начале боя
75E99C 0000007F
75E9BC 0000007F

Отключить щиты у арктического и лавового снайперов в начале каждого раунда
760854 0000007F
760874 0000007F


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
09.07.2021 01:11
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #762

Флаг 29 у отряда на поле боя говорит, что на отряде анимация жажды крови, а потому деф нужно отрисовывать с палитрой, смещённой к красному.
По смещению 1104 в структуре отряда лежит float (вещественное число) от 0 до 1.0, которое говорит, насколько нужно сдвинуть цвет каждого пикселя в цветовой модели HSV ближе к красному. 0 — ни на сколько, 0.8 — на 80%, 1.0 — полностью красный. Яркость и насыщенность тоже увеличиваются с увеличением значения поля. Если флаг установлен, то при отрисовке уже не проверяется флаг окаменения или клона. Потому при колдовстве жажды крови на клоне, клон временно рисуется без синих тонов.

Upd.
Флаг 30 означает коррекцию насыщенности в модели HSV. Если поле в структуре отряда 0x450 (float, 4 байта) < 1.0 значит умножение (*0 - полностью в серый тонах, на 0.5 — потерять половину насыщенности). Если > 1.0, то новая насыщенность = 1 - ((1 - старая насыщенность) / значение_поля)).

Если стоит флаг 29, то флаг 30 не обрабатывается.

В оригинале во время анимации окаменения значения изменяются от 1.0 до 0.0 с шагом 0.1 (шаг 0.1 и в жажде крови)


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
12.09.2021 02:22
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #763

Quote:Так, если в теле триггера !?MF1 считывать из памяти по адресу 42149568 значения (число, 4 байта), то мы сможем узнать какой именно тип физического повреждения наносится стеку.

Перечень данных для различных типов физ.повреждения:
Code:
4454752    Урон огненным шаром
4455011    Урон от стрельбы
4455746    Урон от смертельного облака
4456676    Урон от круговой атаки (включая атаку Церберами)
4458589    Урон от огненного щита
4460149    Урон от смертельного взгляда
4460621    Удар молнии
4461137    Урон от кислотной атаки
4462398    Урон от рукопашной
4462479    Урон дракона
4610404    Урон от стрелковых башен
4627096    Урон от рва
5902442    Урон от волны смерти
Странно, что здесь есть помимо всего прочего и урон от Волны смерти... исходя из этого есть предположение, что кто-то изначально в игре должен был ей атаковать, как монстро-абилкой. Unsure


Image: team-supermod.gif
07.11.2021 16:44
Visit this user's website Find all posts by this user Quote this message in a reply
void_17 Offline

Posts: 39
Post: #764

Ребят, я тут выложил в своем треде базу HD Edition:
http://wforum.heroes35.net/showthread.php?tid=6419
Там халявная дебажная инфа есть и можно восстановить код в тех местах, где загружается и обрабатывается новая графика HD Edition.
   Я скоро восстановлю RoE-вские типы и, впринципе, перед нами уже будет готовый код HD Edition. Можно написать плагин по этому коду, добавить перерисованных нейросетью файлов SoD или даже WoG и кинуть куда надо, чтобы плагин грузил. Как вам идея?

"Перенесено в корректную тему" @Администратор


IDA-База HOMM 3 Discord Server
16.12.2021 18:31
Find all posts by this user Quote this message in a reply
void_17 Offline

Posts: 39
Post: #765

Отличия оригинальных типов между RoE и HD Edition есть. Пока не могу сказать какие, но точно это связано с интерфейсом.


IDA-База HOMM 3 Discord Server
16.12.2021 18:40
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