Current time: 25.10.2020, 09:50 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 123
Post: #226

Огромное спасибо!
Буду разбираться.

UPDATE: Hordes заработали. Правда для чего нужно
using guessed type int HordeBuildings[4],
я не понял. Работает без него.


- Как я сегодня балагурю?
- Вы прекрасны, сир! (с)
(This post was last modified: 10.04.2014 23:30 by Arseniy.)
10.04.2014 11:51
Find all posts by this user Quote this message in a reply
Arseniy Offline

Posts: 123
Post: #227

#define o_GameMgr (*(_GameMgr_**)0x699538)
Я не понимаю, что делать с вот этим вот.
Вот мой код:
Quote:int ptr;
int result = ReadProcessMemory(_handle, LPCVOID(6919480), &ptr, 4, (SIZE_T*)&_readBytes);
int ptr2;
result = ReadProcessMemory(_handle, LPCVOID(ptr), &ptr2, 4, (SIZE_T*)&_readBytes);
int mapSize;
result = ReadProcessMemory(_handle, LPCVOID(ptr2 + 129904 + 212), &mapSize, 4, (SIZE_T*)&_readBytes);
Что я делаю не так?


- Как я сегодня балагурю?
- Вы прекрасны, сир! (с)
(This post was last modified: 11.04.2014 13:01 by Arseniy.)
11.04.2014 12:54
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 570
Post: #228

Code:
int advManager;
int result = ReadProcessMemory(_handle, LPCVOID(0x699538), &advManager, 4, (SIZE_T*)&_readBytes);
int gameMap;
result = ReadProcessMemory(_handle, LPCVOID(ptr+0x1FB70), &gameMap, 4, (SIZE_T*)&_readBytes);
int mapSize;
result = ReadProcessMemory(_handle, LPCVOID(ptr2 + 212), &mapSize, 4, (SIZE_T*)&_readBytes);

При этом, если делать из-под процесса игры, лучше использовать

Code:
int advManager = *(int*)0x699538;
int gameMap= *(int*)(advManager+0x1FB70);
int mapSize= *(int*)(gameMap+212);
или говнокодом
Code:
int mapSize = *(int*)((*(int*)((*(int*)0x699538)+0x1FB70))+212);

А еще лучше структуры, своеописанные или готовый заголовочник
(This post was last modified: 11.04.2014 16:43 by feanor.)
11.04.2014 13:59
Find all posts by this user Quote this message in a reply
Arseniy Offline

Posts: 123
Post: #229

Спасибо! Код игроменеджера у меня не заработал, заработал следующий через адвенчерменеджер:
Quote:int advManager;
ReadProcessMemory(_handle, LPCVOID(0x6992B8), &advManager, 4, (SIZE_T*)&_readBytes);
int gameMap;
ReadProcessMemory(_handle, LPCVOID(advManager + 92), &gameMap, 4, (SIZE_T*)&_readBytes);
int mapSize;
ReadProcessMemory(_handle, LPCVOID(gameMap + 212), &mapSize, 4, (SIZE_T*)&_readBytes);
Из процесса игры было бы делать проще, но я пока не разобрался с патчером, поэтому прописываю мод при запущенной игре из своего ехе.


- Как я сегодня балагурю?
- Вы прекрасны, сир! (с)
11.04.2014 17:41
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 570
Post: #230

Quote:Из процесса игры было бы делать проще, но я пока не разобрался с патчером
зачем патчер?
12.04.2014 01:18
Find all posts by this user Quote this message in a reply
Arseniy Offline

Posts: 123
Post: #231

Ну я использую конфигурацию 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, а из него параметры монстра?


- Как я сегодня балагурю?
- Вы прекрасны, сир! (с)
(This post was last modified: 12.04.2014 06:52 by Arseniy.)
12.04.2014 06:37
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 570
Post: #232

Quote:Про последние два в документации ничего толкового не написано и я не нашел какого-то обобщенного типа вроде Object, в котором может содержаться указатель на любой объект (героя, шахту и т.д.)
Это тип и подтип объекта.

Quote:Ну я использую конфигурацию Heroes 3 Complete Edition + HD Mod, как я понимаю, чтобы модифицировать ехе в данном случае, нужно api патчера использовать, чтобы потом все срослось.
Совершенно не обязательно. Патчер, в общем-то, нужен только ради удобства написания хуков.
Дллки HD-мод может подгружать и так.
12.04.2014 16:11
Find all posts by this user Quote this message in a reply
Arseniy Offline

Posts: 123
Post: #233

Я понял, что Dword SetUp; // +0 относится только к тому, получают ли игроки за убийство монстра, если на этой клетке монстр, ресурсы.
Самый главный вопрос остается открытым : как получить указатель на тот объект, который лежит в конкретной клетке карты, если в _MapItem_ этого указателя нет?
Допустим, по _MapItem_ стало ясно, что в этой клетке лежит город сопряжение. Как получить указатель на именно то актуальное сопряжение, которое там находится?


- Как я сегодня балагурю?
- Вы прекрасны, сир! (с)
12.04.2014 19:28
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 570
Post: #234

Quote:Допустим, по _MapItem_ стало ясно, что в этой клетке лежит город сопряжение. Как получить указатель на именно то актуальное сопряжение, которое там находится?

Code:
inline _int_  FindTownIdByXYZ(_int_ x, _int_ y, _int_ z) {return CALL_4(_int_, __thiscall, 0x4BB530,this, x, y, z);} //номер города по координатам, от gameMgr. И таки да, в оригинале это делается перебором

inline _Town_*  GetTown(_int_ town_id) {return ((_Town_*)(*(_ptr_*)(((_ptr_)this) + 0x21614) + 360 * town_id));} //указатель по номеру
004BB5C0 - номер двеллинга по координатам
12.04.2014 23:56
Find all posts by this user Quote this message in a reply
Arseniy Offline

Posts: 123
Post: #235

Можешь мне скинуть именно те исходники, что у тебя?
У меня опенсорсные Сергея Роженко с ГитХаба : https://github.com/GrayFace/wog
В них нет никакой обобщающей структуры ни геймменеджера, ни адвенчерменеджера (есть только их упоминания), нет тех функций, которые ты скинул.
По тем ссылкам, которые ты приводил ранее, ссылки на исходники битые.


- Как я сегодня балагурю?
- Вы прекрасны, сир! (с)
13.04.2014 07:43
Find all posts by this user Quote this message in a reply
axignom99 Offline

Posts: 95
Post: #236

Доброго времени суток,направьте плз.Хочу заменить в башне големов на модели скаченных гномов,подскажите как это сделать не удаляя из игры големов,и где лежат файлы со статами и названиями существ и зданий.Спасибо .
(This post was last modified: 11.06.2014 20:07 by axignom99.)
11.06.2014 20:04
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 4406
Post: #237

(11.06.2014 20:04)axignom99 Wrote:  где лежат файлы со статами и названиями существ и зданий.Спасибо .
советую глянуть http://forum.df2.ru/index.php?showtopic=16223

что до замены без удаления...
ставите ERA
и кидаете ссылку на ваших новых гномов...
сделаем вам мини-мод для удобной замены моделей големов (уточните потом каких именно заменять)



Image: 237506073ac7.gif
11.06.2014 20:33
Visit this user's website Find all posts by this user Quote this message in a reply
axignom99 Offline

Posts: 95
Post: #238

bes спасибо за отзывчивость,не могли бы вы дать свой скайп или еще какой нибудь контакт ,будет проще объяснить .http://makshuvalov.narod.ru/index/sushhestva_gumanoidy/0-35 Дворфы отсюда ,а заменить Големов все четыре грейда в башне(Каменные,Стальные,Золотые,и Алмазные).
12.06.2014 01:16
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 4406
Post: #239

Image: dwarf1.gif Image: dwarf2.gif Image: dw1.gif Image: dw2.gif

Эти?



Image: 237506073ac7.gif
12.06.2014 11:44
Visit this user's website Find all posts by this user Quote this message in a reply
axignom99 Offline

Posts: 95
Post: #240

Почти 3 грейд идет стрелок,будет выбор либо более слабый но стрелок,либо более сильный но ближник.Необходимо переименовать фабрику големов в стальгорн.И если возможно связаться через ТС или скайп,то дайте пожалуйста данные.Есть несколько вопросов которые неплохо было бы обсудить .
12.06.2014 18:18
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-2020 MyBB Group