Wake of Gods Forum | Форум Во Имя Богов

Full Version: Исследование героев
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Quote:Так в HE:E при установке уровня окна и не должны вроде появляться.
Конечно не должны. А в x2 - мусор по ходу.
Sav, ты не понял. Не о том речь. При срабатывании хука все переменные перемещаются нормально и выдают верные значения. Но отображается лишь одно окно (даже если герой получил 3 уровня) и герою накидываются уровни до 34.

(10.02.2011 01:16)Sav Wrote: [ -> ]Откуда появляются значения в переменных LevelUp_HeroNumber и LevelUp_HeroLevel?
Из указателей. Дело не в этом.
(10.02.2011 01:18)Berserker Wrote: [ -> ]
Quote:Так в HE:E при установке уровня окна и не должны вроде появляться.
Конечно не должны. А в x2 - мусор по ходу.

Почему же мусор? Показывает, какого уровня достиг герой.
Уровни до 34 накидываются всегда или только при использовании HE:E?
Всегда. А HE:E было призвано исправить ситуацию, сменив уровень героя на тот, которого он достигает. Но ситуация не меняется. Я бы пошел иным путем: устанавливал бы значение в ассемблере, но я никак не могу найти указатель на реальный уровень героя (а не получаемый).
При вводе чита woggandalfwhite все проходит нормально, кстати. Получаемый уровень соответствует реальному.
А зачем ты восстанавливаешь так много кода? Хуку же одного call хватает, чтобы больше ничего не затирать.
Sav, не понял. Можешь пояснить? Или показать, как должен выглядеть мой код?
    HookCode(POINTER($4DAC9B), @HookTrigger_LevelUp, C_HOOKTYPE_JUMP); // 90000
***
    // Restore default code
    MOV DataTemp, $59A890
    CALL DataTemp
    MOV EAX, DWORD PTR DS:[$69959C]
    MOVSX ECX, AX
***
    PUSH $4DACA7

Можно было бы сделать адресом хука адрес call-а и не восстанавливать ничего, кроме него.
И push-ить адрес call-а + 5.
Как это точно сделать - не знаю (нет кода игры перед глазами).
Здесь не видно связи с твоей ошибкой, но иногда при исправлении понятных недочётов исправляются и непонятные ошибки
Sav, спасибо, помогло. Теперь всегда буду ставить хук на CALL.
З.Ы. X2 - и впрямь мусор. Точнее, не совсем мусор, но не то, что нужно. Не совсем то я искал. Ab

(10.02.2011 18:07)GhostManSD Wrote: [ -> ]З.Ы. X2 - и впрямь мусор. Точнее, не совсем мусор, но не то, что нужно. Не совсем то я искал. Ab

Извиняюсь, таки соврал. Нужное. Это уровень, которого достигнет герой, когда закончит щелкать по окошкам, выбирая новые навыки. Ab
Допустим, в адресе A идет значение (по дампу) [01 00 00 04 00 08 1F 00]. Могу ли я загнать в EAX только начало этого значения, т.е. (в данном случае) 01?
mov eax, byte ptr [A]
А если надо закинуть второй байт? mov eax, byte ptr [A+1]?

Error 45: Operand types do not match.
Да. Кроме того можно использовать не весь eax (4 байта), а только его четвертинку al:
mov al, [A]
A - константа?
Sav, спасибо, работает!
Reference URL's