Ну я использую конфигурацию Heroes 3 Complete Edition + HD Mod, как я понимаю, чтобы модифицировать ехе в данном случае, нужно api патчера использовать, чтобы потом все срослось.
Или в винде можно запустить мой код в процессе игры просто через виндовозное api?
У меня тут еще вопрос появился. Я пока не разобрался, как организовано хранение объектов (героев, замков, существ) и их привязка к карте.
В _MapItem_ есть следующие поля, которые могут иметь к этому отношения:
Dword SetUp; // +0
...
int OType; // +1E
Word OSType; // +22
Как я понял, в первое кидается указатель на нейтральных монстров, если они есть, иначе 0, правильно?
Про последние два в документации ничего толкового не написано и я не нашел какого-то обобщенного типа вроде Object, в котором может содержаться указатель на любой объект (героя, шахту и т.д.)
Есть тип _Types_ для карты, но как я понял, он для препятствий.
В общем, мне нужно из клетки на карте вытащить, стоит ли там монстр, герой, есть ли в ней вход в замок, шахту и получить указатель на этот объект. Для героя, как я понимаю, он потом должен быть приведен к _THero_/_Hero_, для замка к _CastleSetup_.
Или из карты это вытащить нельзя и надо отдельно просматривать список городов и героев?
По структуре _CMonster_
Quote:struct _CMonster_{
unsigned Number :12; // +00 число
unsigned Agression : 5; // +0C 1C-присоединяется, 0A-кровожадное
unsigned NoRun : 1; // +12 не убегает 3.58 fix
unsigned NoMore : 1; // +11 не растет
unsigned SetUpInd : 8; // +13 номер в настройке объектов (P1+44)
unsigned _u1 : 4; // +1B
unsigned HasSetUp : 1; // +1F имеет настройку структуры монстра
};
Непонятны смыслы полей SetUpInd, _u1, HasSetUp. Как из нее получить номер монстра, тот же, что используется CRTRAITS.TXT, а из него параметры монстра?