Ben80 писал(а):
Попробовал ваш код, к сожалению, после обновления HD мода он тоже не работает.
Объявления |
---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаBen80 писал(а): Попробовал ваш код, к сожалению, после обновления HD мода он тоже не работает. |
Re: Как создать плагин для HD модаas239 писал(а): Ben80 писал(а): Попробовал ваш код, к сожалению, после обновления HD мода он тоже не работает. Переделал код так и он заработал:
Насколько это надежный вариант? Правильно ли я выбрал последовательность байт для проверки? ИЗМ: А если сделать прерывание цикла, то не работает, почему?
Кажется понял, это последовательность еще где-то встречается, но последняя нужная. Во вложении плагин, если кто-то еще может, проверьте, пожалуйста, работает ли перестройка ГМ с первого уровня.
|
Re: Как создать плагин для HD модаas239 писал(а): Не знаю, правильно ли. Было бы полезно для вас, если бы вы точно ответили на вопрос, почему мой код не сработал - потому ли, что сигнатура изменилась, чего опасался AlexSpl, либо потому что я просто где-то допустил грубую ошибку. То, что с брейком не работает, возможно, указывает на то, что такая сигнатура встречается несколько раз, при этом нужной оказывается конкретно последняя такая сигнатура. Насчет approxDllSize - в коде RoseKavalier, показано как опереровать точным размером Dll,а не как у меня. Конечно, это гораздо правильнее. |
Re: Как создать плагин для HD модаBen80 писал(а): as239 писал(а): Не знаю, правильно ли. Было бы полезно для вас, если бы вы точно ответили на вопрос, почему мой код не сработал - потому ли, что сигнатура изменилась, чего опасался AlexSpl, либо потому что я просто где-то допустил грубую ошибку. То, что с брейком не работает, возможно, указывает на то, что такая сигнатура встречается несколько раз, при этом нужной оказывается конкретно последняя такая сигнатура. Насчет approxDllSize - в коде RoseKavalier, показано как опереровать точным размером Dll,а не как у меня. Конечно, это гораздо правильнее. Да сигнатура изменилась, у нас совпадают только 4 байта, вот рабочий код на текущей версии HD-мода:
От правок похоже никуда не деться, но плюс этого кода в том, что при изменении сигнатуры в HD-моде, изначальная логика перестройки не ломается. |
Re: Как создать плагин для HD модаБыло бы интересно узнать, что по этому поводу думает RoseKavalier.
Он, конечно, писал по этому поводу, и даже код давал, но было б здорово, если бы попроще объяснил |
Re: Как создать плагин для HD модаНикто не знает как в коде igrik по обмену между героями в городе - после выхода из города, опять войти в него, как это делал AlexSpl?
Код igrik:
Пусть мелькает окно, главное что этот код без патчинга dll. |
|
Re: Как создать плагин для HD мода@AlexSpl
7.0 solved it, thanks for suggestion! @as239 Hero exchange in town problem was solved, igrik should have working version. If you need the second needle in a DLL then it may not be the best needle, but this can still be accomplished by setting a condition to find #n match. 4 bytes for a needle needs to be very specific. Better use a few more bytes, e.g. the one I posted earlier:
Use memmem to find address directly by passing needle, sizeof(needle) and correct it with offset. Or look in general area for the correct spot to patch. |
Re: Как создать плагин для HD мода@RoseKavalier
I'm trying to use your code, but I have 2 problems: 1. How to convert HW_SOD_DLL to unsigned char? ( error C2664: 'memmem' : cannot convert parameter 1 from 'DWORD' to 'unsigned char *' ) 2. How to use result of memmem()?
|
Re: Как создать плагин для HD модаБыл огромный завал на работе, поэтому я не отписывался по результату.
Вот упрощенный код обмена героями в замке. Огромное спасибо RoseKavalier, за помощь!
|
|
Re: Как создать плагин для HD модаas239 писал(а): I'm trying to use your code, but I have 2 problems: 1. How to convert HW_SOD_DLL to unsigned char? ( error C2664: 'memmem' : cannot convert parameter 1 from 'DWORD' to 'unsigned char *' ) 2. How to use result of memmem()? 1. Cast to unsigned char, (unsigned char*)HW_SOD_DLL (or modify GetDllInfo) 2. memmem() gives out the address found (e.x. 0x5472025) or 0 if the needle is not found.
In a few weeks (when things are ready) I will release some code to make this simpler. In old SoD_SP it's kind of a mess like this, new SoD_SP is better! |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7