Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаНужно смотреть, что возвращает GetString(). Если указатель на строку в памяти, то всё ОК, если же адрес самой строки, то тогда сложнее.
|
Re: Как создать плагин для HD модаПосмотрите пример плагина подмены описаний. Там мы меняем указатель. И строки берутся из нашей DLL, а не из памяти игры.
Как вариант, перенаправлять о_LoadTxt(filename), ибо это точно указатель. |
Re: Как создать плагин для HD модаВот эту нужно хукать для BldgSpec.txt - sub_5B9850. Можно хук на эпилог, сразу после цикла - 0x5B98D7.
Аналогично для HeroSpec.txt - sub_4D7410. Здесь после цикла нет 5 байтов без retn, но я надеюсь патчер retn тоже обрабатывает корректно. |
Re: Как создать плагин для HD модаЯ не проверял, но стек патчер должен восстанавливать, а в нём как раз адрес возврата. Хотя у этой функции два retn, если не считать первого, когда функция возвращает, что загрузка прошла неуспешно. Может быть, чуть повыше нужно ставить хук.
|
Re: Как создать плагин для HD модаМне кажется, что можно просто o_LoadTXT("HeroSpec.txt")->GetString(index) = {наша строка} с хуком здесь - 0x4D7421.
Нельзя Последний раз редактировалось AlexSpl 28 май 2020, 16:08, всего редактировалось 1 раз.
|
|
Re: Как создать плагин для HD модаYou can always Hihook if there isn't enough room for LoHook. However 4D747C seems to have 5 bytes of opcode and then 15 or bytes of padding for the next function so plenty safe.
Throwing out this possibility which lets the game handle its own memory... Hook text loading functions (e.g. HiHook(0x5B9855, CALL_, THISCALL_, ...)) and use the fact that its memory management is simply a vector of char* tokens from a single buffer. I've added LPCSTR& operator[] access to text files which is not yet available but it's something like this:
And then you could simply do
For text tables ...
|
Re: Как создать плагин для HD модаА как работать с "H3TextFile"?
В любом месте где хочу, так:
Или только по определенным адресам? И я не очень понимаю процесс. При запуске txt файлы загружаются в память, это как раз те адреса, которые выше давали. Но как потом получить эти тексты при старте игры? |
Re: Как создать плагин для HD модаМожно самому не загружать, а изменять указатели на уже загруженные строки. Например, для BldgSpec.txt указатели на названия по адресу 0x6A543C, указатели на описания - 0x6A7874.
Если я правильно посчитал, то у Necromancy Amplifier индекс 48. Например, указатель на описание - 0x6A7874 + 48 * 4. |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1