Berserker
Posts: 16657
|
|
10.02.2011 01:18 |
|
GhostManSD
Posts: 1054
|
Sav, ты не понял. Не о том речь. При срабатывании хука все переменные перемещаются нормально и выдают верные значения. Но отображается лишь одно окно (даже если герой получил 3 уровня) и герою накидываются уровни до 34.
(10.02.2011 01:16)Sav Wrote: Откуда появляются значения в переменных LevelUp_HeroNumber и LevelUp_HeroLevel?
Из указателей. Дело не в этом.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
10.02.2011 03:35 |
|
GhostManSD
Posts: 1054
|
(10.02.2011 01:18)Berserker Wrote: Quote:Так в HE:E при установке уровня окна и не должны вроде появляться.
Конечно не должны. А в x2 - мусор по ходу.
Почему же мусор? Показывает, какого уровня достиг герой.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
10.02.2011 04:05 |
|
Sav
Posts: 2180
|
Уровни до 34 накидываются всегда или только при использовании HE:E?
|
|
10.02.2011 14:04 |
|
GhostManSD
Posts: 1054
|
Всегда. А HE:E было призвано исправить ситуацию, сменив уровень героя на тот, которого он достигает. Но ситуация не меняется. Я бы пошел иным путем: устанавливал бы значение в ассемблере, но я никак не могу найти указатель на реальный уровень героя (а не получаемый).
При вводе чита woggandalfwhite все проходит нормально, кстати. Получаемый уровень соответствует реальному.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
10.02.2011 14:49 |
|
Sav
Posts: 2180
|
А зачем ты восстанавливаешь так много кода? Хуку же одного call хватает, чтобы больше ничего не затирать.
|
|
10.02.2011 15:03 |
|
GhostManSD
Posts: 1054
|
Sav, не понял. Можешь пояснить? Или показать, как должен выглядеть мой код?
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
10.02.2011 15:13 |
|
Sav
Posts: 2180
|
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.
Как это точно сделать - не знаю (нет кода игры перед глазами).
Здесь не видно связи с твоей ошибкой, но иногда при исправлении понятных недочётов исправляются и непонятные ошибки
|
|
10.02.2011 15:41 |
|
GhostManSD
Posts: 1054
|
Sav, спасибо, помогло. Теперь всегда буду ставить хук на CALL.
З.Ы. X2 - и впрямь мусор. Точнее, не совсем мусор, но не то, что нужно. Не совсем то я искал.
(10.02.2011 18:07)GhostManSD Wrote: З.Ы. X2 - и впрямь мусор. Точнее, не совсем мусор, но не то, что нужно. Не совсем то я искал.
Извиняюсь, таки соврал. Нужное. Это уровень, которого достигнет герой, когда закончит щелкать по окошкам, выбирая новые навыки.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 10.02.2011 18:11 by GhostManSD.)
|
|
10.02.2011 18:07 |
|
GhostManSD
Posts: 1054
|
Допустим, в адресе A идет значение (по дампу) [01 00 00 04 00 08 1F 00]. Могу ли я загнать в EAX только начало этого значения, т.е. (в данном случае) 01?
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 11.02.2011 00:04 by GhostManSD.)
|
|
10.02.2011 23:55 |
|
Sav
Posts: 2180
|
mov eax, byte ptr [A]
(This post was last modified: 11.02.2011 00:32 by Sav.)
|
|
11.02.2011 00:31 |
|
GhostManSD
Posts: 1054
|
А если надо закинуть второй байт? mov eax, byte ptr [A+1]?
Error 45: Operand types do not match.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 11.02.2011 00:43 by GhostManSD.)
|
|
11.02.2011 00:38 |
|
Sav
Posts: 2180
|
Да. Кроме того можно использовать не весь eax (4 байта), а только его четвертинку al:
mov al, [A]
|
|
11.02.2011 00:45 |
|
GhostManSD
Posts: 1054
|
Sav, спасибо, работает!
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
11.02.2011 01:09 |
|