Current time: 25.09.2021, 23:23 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 15388
Post: #751

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: 110
Post: #752

(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: 903
Post: #753

Друзья, подскажите пожалуйста, где можно узнать в каком "статусе" находятся стены? Изначально у них статус 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: 903
Post: #754

Нашел я в исходниках вога вот такой вот интересный список патчей, как думаете, имеет смысл попытаться на его основе добавить героев?
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: 1450
Post: #755

(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: 903
Post: #756

XEPOMAHT, хорошо )


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

Posts: 628
Post: #757

Насчет героев вообще была умеренно всратая идея: у нас же в игре все равно не может быть больше 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: 1450
Post: #758

(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: 389
Post: #759

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


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

Posts: 15388
Post: #760

Щиты снайперов и иже с ним прочие 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: 15388
Post: #761

Флаг 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
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2021 MyBB Group