Current time: 22.04.2024, 13:41 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Вопросы по моддингу
» (обсуждаем моддинг здесь)
Author Message
wessonsm Offline

Posts: 779
Post: #1336

igrik, я плохо плаваю в этих адресах.
А зачем присваивать x2 значение -1, если следующей командой мы его переписываем?
!!VRx2:S-1;
!!UN:Cy2/4/?x2;
30.06.2020 13:29
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2270
Post: #1337

(30.06.2020 13:16)igrik Wrote:  У ХЕРОМАНТА это BASE
У Кавалериста это H3Main
У Сава/Бараторча это o_GameMgr

BASE - терминология Славы из исходников WoG, перекочевавшая и в MoP. Так же как и в IDA базу от WoG Team. Поэтому исторически сложившееся понятие "базового адреса" применяю до сих пор (старовер я).

H3Main - такое же странное название базовой структуры, ну это выбор Кавалериста (его структуры больше для профи, ибо совершенно не откомментированы, мне в них сложно что-то найти).

o_GameMgr - более соответствует реальности, но намеренная кастратность геройских структур, представленная моддерам для платформы HD-мода, меня не прельщает (Бараторч тогда отвечал, что вырезал всё, что не использует HD-мод, но это просто нежелание делиться наработками по структурам от Hota Crew).

Увы, разобщённость сообщества моддеров приносит свои плоды.

(30.06.2020 13:16)igrik Wrote:  на самом деле я в который раз удивляюсь твоей способности "помогать не помогая"

Только подсказываю. На ERM должны учится делать сами.
(This post was last modified: 30.06.2020 14:02 by XEPOMAHT.)
30.06.2020 13:59
Find all posts by this user Quote this message in a reply
RoseKavalier Offline

Posts: 118
Post: #1338

Unfortunately 0x699538 is not a manager as some other classes from heroes3; otherwise we could deduce its name easily.
"Game" makes sense to me, as it holds data pertaining to the game. Without lack of a name for certain, I just went with "Main" as alternative for wog's "Base".
Base should be reserved for BaseMgr 0x699550 that handles all managers...which I poorly named Executive after Wog sources... rename was in fact done on source not long ago.
I renamed a lot of things recently and continue to do so... I know h3api is large and not the best documented, so far I went with a descriptive approach which was not something that could be said of many wog sources. There are plans for thorough documentation when time permits...

For mapeditor there is less doubt for names (although uncertainty remains) as it was compiled with RTTI giving us a lot of class names.
Question remains whether to part away from historical names or not.
e.g.
nwc vs common use
CSprite = Def
CSpriteFrame = DefFrame
(This post was last modified: 30.06.2020 18:34 by RoseKavalier.)
30.06.2020 18:29
Find all posts by this user Quote this message in a reply
Ben Offline

Posts: 59
Post: #1339

(30.06.2020 18:29)RoseKavalier Wrote:     There are plans for thorough documentation when time permits...

Не трать зря время, на всех не угодишь. Никакие комментарии не помогут, если человек не занимается практикой. Если же занимается - то извлечь из H3API огромную пользу не составит труда. Большинство наименований структур и полей, что называется "self-explanatory", тем более что, насколько я понимаю, ты потратил немалое время именно на подбор наиболее подходящих названий/наименований.
30.06.2020 18:51
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #1340

(30.06.2020 13:29)wessonsm Wrote:  igrik, я плохо плаваю в этих адресах.
А зачем присваивать x2 значение -1, если следующей командой мы его переписываем?
!!VRx2:S-1;
!!UN:Cy2/4/?x2;
стандартная инициализация в нейтральное значение, обнуление типа.
это правило хорошего тона опытного скриптера, как я себе это представляю.
30.06.2020 19:07
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16488
Post: #1341

Bes, если далее сразу же перезапись, то можно не инициализировать. Однако вреда не будет. Бывает, строку удалишь, а дальше случайные баги.


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

Posts: 2270
Post: #1342

(30.06.2020 18:29)RoseKavalier Wrote:  Unfortunately 0x699538 is not a manager as some other classes from heroes3; otherwise we could deduce its name easily.

Мне почему-то казалось, что отличие менеджера от обычной структуры - в способе инициализации при загрузке и выгрузке (и соответственно в разных методах расширения: для менеджера всегда патчится функция, которая его создаёт, чистит и уничтожает, а для обычной структуры просто тупо переносится память). То, что имя не сохранилось - скорее всего оно просто не нужно при отладке игры. Тот же менеджер битвы обзывают то CombatManager, то BattleManager, то ещё какие-то абырвалги, и вроде ничего (главное - расписанная структура, а имя - побочный продукт).

Также менеджер всегда имеет базовый адрес, по которому игра его видит. У BASE базовый адрес так же имеется.
30.06.2020 20:39
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2814
Post: #1343

(30.06.2020 13:29)wessonsm Wrote:  А зачем присваивать x2 значение -1, если следующей командой мы его переписываем?
!!VRx2:S-1;
!!UN:Cy2/4/?x2;
Это я на автомате написал. Конечно строки с обнулением в данном случае не нужно)

(30.06.2020 20:39)XEPOMAHT Wrote:  
(30.06.2020 18:29)RoseKavalier Wrote:  Unfortunately 0x699538 is not a manager as some other classes from heroes3; otherwise we could deduce its name easily.
Тот же менеджер битвы обзывают то CombatManager, то BattleManager
Кавалерист говорит о том, что каждый из существующих игровых менеджеров имеет своё название (текстовое поле), видимо нужное для более простой отладки и понимания в какой момент какой порядок менеджеров используется.

Менеджер->0x14 = char mng_name[28];


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

Posts: 2270
Post: #1344

(01.07.2020 18:31)Bes Wrote:  
igrik Wrote:

Можно обратиться к исходникам MoP, где есть список менеджеров:

Code:
define advManager     dword [6992B8h]
define MouseManager     dword [6992B0h]
define COMBAT_MANAGER     dword [699420h]
define swapManager     dword [6A3D90h]
define townManager     dword [69954Ch]
define heroWindowManager dword [6992D0h]

По ним BASE так же не менеджер, а просто кусок динамической памяти:

Code:
BASE               equ dword [699538h]; Базовый адрес динамической памяти Героев

Но по хотовским сорцам BASE уже в списке менеджеров, поэтому тут не известно чему верить:

Code:
// Менеджреры игры. Несколько из них ещё не распознаны.
// _bool32_ __cdecl sub_4EE1D0() - инициализация менеджеров. По ней распознан их размер.

// Some Mgr по 0x699550, размер: 16

// Менеджер ввода, управляющий событиями ввода.
struct _InputMgr_; // Размер: 2400
#define o_InputMgr (*(_InputMgr_**)0x699530)

// Менеджер мыши.
struct _MouseMgr_; // Размер: 144
#define o_MouseMgr (*(_MouseMgr_**)0x6992B0)

// Менеджер окна программы.
struct _WndMgr_; // Размер: 96
#define o_WndMgr (*(_WndMgr_**)0x6992D0)

// Менеджер звука.
struct _SoundMgr_; // Размер: 216
#define o_SoundMgr (*(_SoundMgr_**)0x699414)

// Some Mgr по 0x69941C, размер: 2260

// Менеджер игры.
struct _GameMgr_; // Размер: 321488
#define o_GameMgr (*(_GameMgr_**)0x699538)

// Менеджер карты приключений.
struct _AdvMgr_; // Размер: 952
#define o_AdvMgr (*(_AdvMgr_**)0x6992B8)

// Менеджер битвы.
struct _BattleMgr_; // Размер: 82156
#define o_BattleMgr (*(_BattleMgr_**)0x699420)

// Менеджер окна города.
struct _TownMgr_; // Размер: 472
#define o_TownMgr (*(_TownMgr_**)0x69954C)

// Some Mgr по 0x6992D4, размер: 112

// Some Mgr по 0x6992DC, размер: 1
01.07.2020 19:13
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2814
Post: #1345

(01.07.2020 19:13)XEPOMAHT Wrote:  По ним BASE так же не менеджер, а просто кусок динамической памяти

Но по хотовским сорцам BASE уже в списке менеджеров, поэтому тут не известно чему верить
В данном случае я склонен больше верить хотовским сорцам, и считаю что _GameMgr_ это всё же менеджер, учитывая то как и где он создаётся.


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

Posts: 1468
Post: #1346

Да мне-то что верить. Я даже не знаю, почему они называются менеджерами, а не какими-нибудь супервайзерами. Ab
Хотя вот для этих:
Code:
define advManager     dword [6992B8h]
define MouseManager     dword [6992B0h]
define COMBAT_MANAGER     dword [699420h]
define swapManager     dword [6A3D90h]
define townManager     dword [69954Ch]
define heroWindowManager dword [6992D0h]
я скопировал оригинальные имена данных... сущностей. Игра сама их так и называет.


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
01.07.2020 23:31
Find all posts by this user Quote this message in a reply
RoseKavalier Offline

Posts: 118
Post: #1347

Base/Main/Game also lacks virtual table... one can say it manages memory and it can even be called BaseMgr, MainMgr, GameMgr... but it is not a manager in the sense of nwc code ~ the class is not derived from BASEMGR (0x44D200) whereas the others are (and some other). There are also has subsequent initializations to temporary memory when you are in campaign dialogs or choosing a new map, all things that make it different from the others. In the big picture the impact is ~~0 when suitable name is used.

Random map creation also uses a central structure, which is simply named "random_map_generator" according to mapeditor 96-copy

Game Data/Details/Info/... is the most representative name I can think of; base and main are good candidates as well albeit less informative.
02.07.2020 02:32
Find all posts by this user Quote this message in a reply
planetavril Offline

Posts: 87
Post: #1348

someone manages to fix this plugin to unlink disabled buildings so that it works with connected typhon:
Sblocked Buildings
(This post was last modified: 02.07.2020 02:57 by planetavril.)
02.07.2020 02:56
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2270
Post: #1349

(02.07.2020 02:56)planetavril Wrote:  someone manages to fix this plugin to unlink disabled buildings so that it works with connected typhon

1. Без исходников - никак. Просите Феанора (вроде бы его, раз утащили с H3:SW).
2. Данные, которые меняют эти плагины, можно изменить и без плагинов с помощью бинарного патча / UN:C / напрямую в exe. Включая запрет строений - всё это табличные данные и ни грамма кода.
02.07.2020 11:08
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16488
Post: #1350

igrik, в теме UN:C налево и направо идёт установка ссылок на ERT-строки, но их память не гарантируется постоянной (F12, перезагрузка, вызов функции обновления), да и сам формат устарел. Если убрать из ВоГ скриптов z-переменные, я бы лучше остановился на функции AllocZVar, FreeZVar. Давно хотел такой менеджер сделать, да почти вся память была занята тем, чему место в !!VRs^...^


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.07.2020 01:32
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