Перейти к содержанию

[Dishonored]Неправильная работа супер-прыжка


Рекомендуемые сообщения

Всем привет.

У меня возникла такая проблема, что при использовании скрипта на супер-прыжок персонаж вместо того чтобы подпрыгнуть вверх, прыгает вниз и в итоге оказывается под землёй.

Скорее всего я неправильно написал сам скрипт так, что если знаете что не так, то помогите.

↓Скрипт↓

Спойлер

{ Game   : Dishonored.exe
  Version: 
  Date   : 2020-01-19
  Author : MrNeumiller

  This script does blah blah blah
}



[ENABLE]



aobscanmodule(SuperJump,Dishonored.exe,F3 0F 10 8E CC 00 00 00 F3 0F 5C 55 B4) // should be unique
alloc(newmem,$1000)



label(code)
label(key)
label(return)



newmem:
  cmp [key],#1
  jne code
  add dword ptr [esi+CC],(float)500
  mov [key],#0
  jmp code



key:
  dd 0



code:
  movss xmm1,[esi+000000CC]
  jmp return



SuperJump:
  jmp newmem
  nop 3
return:



registersymbol(SuperJump)
registersymbol(key)



[DISABLE]



SuperJump:
  db F3 0F 10 8E CC 00 00 00



unregistersymbol(SuperJump)
unregistersymbol(key)
dealloc(newmem)



{
// ORIGINAL CODE - INJECTION POINT: "Dishonored.exe"+2C0B5D

"Dishonored.exe"+2C0B2D: F3 0F 11 55 EC                 -  movss [ebp-14],xmm2
"Dishonored.exe"+2C0B32: 75 7D                          -  jne Dishonored.exe+2C0BB1
"Dishonored.exe"+2C0B34: 0F 2F 05 F8 50 13 01           -  comiss xmm0,[Dishonored.exe+D350F8]
"Dishonored.exe"+2C0B3B: 76 74                          -  jna Dishonored.exe+2C0BB1
"Dishonored.exe"+2C0B3D: F3 0F 59 C1                    -  mulss xmm0,xmm1
"Dishonored.exe"+2C0B41: 0F 28 D8                       -  movaps xmm3,xmm0
"Dishonored.exe"+2C0B44: 0F 2F 1D 34 6C 03 01           -  comiss xmm3,[Dishonored.exe+C36C34]
"Dishonored.exe"+2C0B4B: 76 64                          -  jna Dishonored.exe+2C0BB1
"Dishonored.exe"+2C0B4D: F3 0F 10 96 C4 00 00 00        -  movss xmm2,[esi+000000C4]
"Dishonored.exe"+2C0B55: F3 0F 10 86 C8 00 00 00        -  movss xmm0,[esi+000000C8]
// ---------- INJECTING HERE ----------
"Dishonored.exe"+2C0B5D: F3 0F 10 8E CC 00 00 00        -  movss xmm1,[esi+000000CC]
// ---------- DONE INJECTING  ----------
"Dishonored.exe"+2C0B65: F3 0F 5C 55 B4                 -  subss xmm2,[ebp-4C]
"Dishonored.exe"+2C0B6A: F3 0F 5C 45 B8                 -  subss xmm0,[ebp-48]
"Dishonored.exe"+2C0B6F: F3 0F 5C 4D BC                 -  subss xmm1,[ebp-44]
"Dishonored.exe"+2C0B74: F3 0F 5E E3                    -  divss xmm4,xmm3
"Dishonored.exe"+2C0B78: 0F 28 DC                       -  movaps xmm3,xmm4
"Dishonored.exe"+2C0B7B: F3 0F 59 DA                    -  mulss xmm3,xmm2
"Dishonored.exe"+2C0B7F: F3 0F 11 5D D0                 -  movss [ebp-30],xmm3
"Dishonored.exe"+2C0B84: 8B 4D D0                       -  mov ecx,[ebp-30]
"Dishonored.exe"+2C0B87: F3 0F 59 C4                    -  mulss xmm0,xmm4
"Dishonored.exe"+2C0B8B: F3 0F 11 45 D4                 -  movss [ebp-2C],xmm0
}

 

Заранее спасибо!

Ссылка на комментарий
Поделиться на другие сайты

33 минуты назад, MrNeumiller сказал:

У меня возникла такая проблема

addss dword ptr [esi+CC],(float)500

накатывать надо... это тебе не целое число.  Первый раз вижу такую реализацию прыжка :) 

Ссылка на комментарий
Поделиться на другие сайты

24 минуты назад, MrNeumiller сказал:

Cheat engine не может это скомпилировать поэтому я не знаю, что делать.?

Ну так я и не говорил, что надо делать именно так :lol: я имел введу, что писать туда над через addss

 

 

Ссылка на комментарий
Поделиться на другие сайты

19 минут назад, LIRW сказал:

Ну так я и не говорил

Ну это я понял, но суть остаётся неизменна как не крути этот скрипт невозможно скомпилировать.

Вообще думаю что-то типа этого сделать:

addss xmm0,(float)500

P.S Это не сработало.:lol:

Изменено пользователем MrNeumiller
Добавление кода.
Ссылка на комментарий
Поделиться на другие сайты

14 минут назад, MrNeumiller сказал:

Вообще думаю что-то типа этого сделать:

так не пишется.. а зачем тебе add ? 

mov dword ptr [esi+CC],(float)500  // так пиши.. попрет

Так извиняюсь... перепутал:lol:  у тебя функция то не верная... 

На вот тебе его, пылился всё равно.

Спойлер

[ENABLE]

aobscanmodule(Jumpe,Dishonored.exe,F3 0F 10 87 BC 01 00 00 F3 0F * * * * * 8B 48 7C) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
mov [edi+000001BC],(float)100
code:
  movss xmm0,[edi+000001BC]
  jmp return

Jumpe:
  jmp newmem
  db 90 90 90
return:
registersymbol(Jumpe)

[DISABLE]

Jumpe:
  db F3 0F 10 87 BC 01 00 00

unregistersymbol(Jumpe)
dealloc(newmem)

 

 

Ссылка на комментарий
Поделиться на другие сайты

10 минут назад, LIRW сказал:

а зачем тебе add

Ну просто если использовать add, то к координате Y будет добавляться 500, но если ставить значение через mov, то будет выходить так. Например, я нахожусь внизу и координата Y=-500 (Такое возможно сам видел),а это значит что если я впишу туда просто 500, то меня подкинет так что я разобьюсь, но часто у персонажа координата Y=2000,а из этого можно понять, что я улечу под землю.

А вообще мне нужно хотя бы чтоб вверх подкидывало или поднимало через скрипт,но чёртов cheat engine не хочет мне помогать в этом.:mellow:

Изменено пользователем MrNeumiller
Текст сместился.
Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, MrNeumiller сказал:

А вообще мне нужно хотя бы чтоб вверх подкидывало

Я тебе дал правильный прыжок место. Он прыгает как над. или всё же тебе надо что бы вверх подымало персонажа ? вот именно подымало ? 

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, LIRW сказал:

На вот тебе его, пылился всё равно.

Спасибо! Это подходящий вариант, правда смещение у меня другое, но не в этом суть, мне осталось немного доработать скрипт и всё будет работать идеально!

P.S Получился вот такой страшный скрипт.

Спойлер

[ENABLE]

 

aobscanmodule(Elevator,Dishonored.exe,F3 0F 10 80 CC 00 00 00 8D 55) // should be unique
alloc(newmem,$1000)

 

label(code)
label(key)
label(more)
label(more2)
label(more3)
label(return)

 

newmem:
  cmp [key],#1
  jne more
  mov [eax+CC],(float)100
  mov [key],#0
  jmp code

 

more:
  cmp [key],#2
  jne more2
  mov [eax+CC],(float)500
  mov [key],#0
  jmp code

 

more2:
  cmp [key],#3
  jne more3
  mov [eax+CC],(float)1000
  mov [key],#0
  jmp code

 

more3:
  cmp [key],#4
  jne code
  mov [eax+CC],(float)1500
  mov [key],#0
  jmp code

 

key:
dd 0

 

code:
  movss xmm0,[eax+000000CC]
  jmp return

 

Elevator:
  jmp newmem
  nop 3

return:

 

registersymbol(Elevator)
registersymbol(key)

 

[DISABLE]

 

Elevator:
  db F3 0F 10 80 CC 00 00 00

 

unregistersymbol(Elevator)
unregistersymbol(key)
dealloc(newmem)
 

 

Изменено пользователем MrNeumiller
Добавление P.S
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Хоть этой теме уже неделя я напишу, что лучше для создания подобия лифта использовать поинтер на Y координату.

P.S Тему можно закрывать. 

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...
В 19.01.2020 в 21:34, MrNeumiller сказал:

 

P.S Получился вот такой страшный скрипт.

 

а как поменять  вместо #1 на # букву типа #Space          ?

Ссылка на комментарий
Поделиться на другие сайты

27 минут назад, MrNeumiller сказал:

Можно просто перевести из String в 4 byte (Быстро и без нервотрёпки).

я просто убрал # и работает

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.