как при деактивации скрипта вернуть первоначальное значение переменной
-
Здравствуйте, подскажите пожалуйста как при деактивации скрипта вернуть "Максимальное кол-во здоровья" к изначальному.
[ENABLE] aobscanmodule(INJECT,CryGame.dll,39 B3 A0 00 00 00 0F 8E A9) alloc(newmem,$1000) label(code) label(return) newmem: mov [ebx+E0],#1000 //Максимальное кол-во здоровья(изначально #255) push [ebx+E0] pop [ebx+A0] //Текуще кол-во здоровья code: cmp [ebx+000000A0],esi jmp return INJECT: jmp newmem nop return: registersymbol(INJECT) [DISABLE] INJECT: db 39 B3 A0 00 00 00 unregistersymbol(INJECT) dealloc(newmem)
-
Можно попробовать вынести макс. значение жизней за пределы скрипта. И сначала поменять значение и только потом уже отключать скрипт.
-
Можно сделать так: один скрипт - базовый, который изменяет максимальное количество здоровья, а второй скрипт устанавливает флаг включен/отключен.
Вот как получится:[ENABLE] aobscanmodule(INJECT,CryGame.dll,39 B3 A0 00 00 00 0F 8E A9) alloc(newmem,$1000) alloc(bEnableMaxHealth,4) label(code) label(label_a) label(label_b) label(return) newmem: cmp byte ptr [bEnableMaxHealth],01 jne label_a mov [ebx+E0],(int)1000 jmp label_b label_a: mov [ebx+E0],(int)255 label_b: push [ebx+E0] pop [ebx+A0] code: cmp [ebx+000000A0],esi jmp return INJECT: jmp newmem nop return: registersymbol(INJECT) registersymbol(bEnableMaxHealth) [DISABLE] INJECT: db 39 B3 A0 00 00 00 unregistersymbol(*) dealloc(*)
А второй скрипт будет такой:
[ENABLE] bEnableMaxHealth: db 01 [DISABLE] bEnableMaxHealth: db 00
Вот его ты и будешь использовать для изменения максимального количества здоровья и возвращения исходного значения.
-
Большое спасибо, всё получилось)
-