Current time: 22.11.2024, 13:31 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Исследование героев
» туториал(ы)
Author Message
Berserker Offline
Administrators

Posts: 16657
Post: #331

Quote:Так в HE:E при установке уровня окна и не должны вроде появляться.
Конечно не должны. А в x2 - мусор по ходу.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
10.02.2011 01:18
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #332

Sav, ты не понял. Не о том речь. При срабатывании хука все переменные перемещаются нормально и выдают верные значения. Но отображается лишь одно окно (даже если герой получил 3 уровня) и герою накидываются уровни до 34.

(10.02.2011 01:16)Sav Wrote:  Откуда появляются значения в переменных LevelUp_HeroNumber и LevelUp_HeroLevel?
Из указателей. Дело не в этом.


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
10.02.2011 03:35
Visit this user's website Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #333

(10.02.2011 01:18)Berserker Wrote:  
Quote:Так в HE:E при установке уровня окна и не должны вроде появляться.
Конечно не должны. А в x2 - мусор по ходу.

Почему же мусор? Показывает, какого уровня достиг герой.


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
10.02.2011 04:05
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #334

Уровни до 34 накидываются всегда или только при использовании HE:E?
10.02.2011 14:04
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #335

Всегда. А HE:E было призвано исправить ситуацию, сменив уровень героя на тот, которого он достигает. Но ситуация не меняется. Я бы пошел иным путем: устанавливал бы значение в ассемблере, но я никак не могу найти указатель на реальный уровень героя (а не получаемый).
При вводе чита woggandalfwhite все проходит нормально, кстати. Получаемый уровень соответствует реальному.


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
10.02.2011 14:49
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #336

А зачем ты восстанавливаешь так много кода? Хуку же одного call хватает, чтобы больше ничего не затирать.
10.02.2011 15:03
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #337

Sav, не понял. Можешь пояснить? Или показать, как должен выглядеть мой код?


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
10.02.2011 15:13
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #338

    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
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #339

Sav, спасибо, помогло. Теперь всегда буду ставить хук на CALL.
З.Ы. X2 - и впрямь мусор. Точнее, не совсем мусор, но не то, что нужно. Не совсем то я искал. Ab

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

Извиняюсь, таки соврал. Нужное. Это уровень, которого достигнет герой, когда закончит щелкать по окошкам, выбирая новые навыки. Ab


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 10.02.2011 18:11 by GhostManSD.)
10.02.2011 18:07
Visit this user's website Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #340

Допустим, в адресе 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
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #341

mov eax, byte ptr [A]
(This post was last modified: 11.02.2011 00:32 by Sav.)
11.02.2011 00:31
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #342

А если надо закинуть второй байт? 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
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #343

Да. Кроме того можно использовать не весь eax (4 байта), а только его четвертинку al:
mov al, [A]
11.02.2011 00:45
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #344

A - константа?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
11.02.2011 01:08
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #345

Sav, спасибо, работает!


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
11.02.2011 01:09
Visit this user's website 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-2024 MyBB Group