^
thanks for testing!
yea stance should hold 0 when you stand still, 2 when moving... etc. if it's showing ??, that means the player identification I implemented is flawed.
anyway, try this one below to see if it works, apart from skipping the player identification, the functionality is slightly different as well:
when activated, you can do a perfect evade by
holding Alt and attack, or
holding Alt and evade. then you can continue to use the perfect evade attack you want.
copy and paste the following ONto the table:
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>47199</ID>
<Description>"Perfect Evade .2"</Description>
<Options moHideChildren="1"/>
<LastState Activated="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(somePlayerInfoBaseFetchAOB,NieRAutomata.exe,48 8B 17 48 8B CF FF ** ** 48 85 C0)
registersymbol(somePlayerInfoBaseFetchAOB)
label(somePlayerInfoBase)
registersymbol(somePlayerInfoBase)
alloc(newmem2,2048,somePlayerInfoBaseFetchAOB) //"NieRAutomata.exe"+640054)
label(returnhere2)
label(originalcode2)
label(exit2)
newmem2: //this is allocated memory, you have read,write,execute access
//place your code here
mov [somePlayerInfoBase],rdi
originalcode2:
mov rdx,[rdi]
mov rcx,rdi
exit2:
jmp returnhere2
///
somePlayerInfoBase:
///
somePlayerInfoBaseFetchAOB: //"NieRAutomata.exe"+640054:
jmp newmem2
nop
returnhere2:
///***************************************************///
aobscanmodule(playerStanceWriteAOB,NieRAutomata.exe,89 FA 89 83 ** ** ** ** 8B 83)
registersymbol(playerStanceWriteAOB)
label(wEvadeMoveKeyPressed)
registersymbol(wEvadeMoveKeyPressed)
label(somePlayerInfo)
registersymbol(somePlayerInfo)
alloc(newmem,2048,playerStanceWriteAOB) //"NieRAutomata.exe"+2F43A92)
label(returnhere)
label(originalcode)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov [somePlayerInfo],rbx
//cmp edi,6
//je @f
//test edi,edi
//jz @f
cmp edi,10
je @f
cmp edi,12
je @f
jmp originalcode
@@:
//mov rdx,somePlayerInfoBase
//cmp [rdx],rbx
//jne @f
cmp word ptr [wEvadeMoveKeyPressed],1
jne @f
//mov word ptr [wEvadeMoveKeyPressed],2
mov edi,13
@@:
originalcode:
mov edx,edi
mov [rbx+00000990],eax
exit:
jmp returnhere
///
wEvadeMoveKeyPressed:
dd 0
somePlayerInfo:
///
playerStanceWriteAOB: //"NieRAutomata.exe"+2F43A92:
jmp newmem
nop
nop
nop
returnhere:
///***************************************************///
label(bEndThread_evadeMove_keylistener_mem)
registersymbol(bEndThread_evadeMove_keylistener_mem)
alloc(evadeMove_keylistener_mem,2048,"NieRAutomata.exe")
registersymbol(evadeMove_keylistener_mem)
createthread(evadeMove_keylistener_mem)
label(keylistenerstart)
label(keylistenerend)
label(keylistenerexit)
evadeMove_keylistener_mem:
sub rsp,28
keylistenerstart:
mov rcx,12 //ALT key
push rcx
call GetAsyncKeyState
add rsp,08
shr ax,#15
//cmp ax,1
//jne @f
//cmp word ptr [wEvadeMoveKeyPressed],2
//je keylistenerend
mov [wEvadeMoveKeyPressed],ax
jmp keylistenerend
@@:
xor ax,ax
mov [wEvadeMoveKeyPressed],ax
keylistenerend:
mov rcx,#100
call Sleep
cmp dword ptr [bEndThread_evadeMove_keylistener_mem],1
jne keylistenerstart
keylistenerexit:
add rsp,28
mov dword ptr [bEndThread_evadeMove_keylistener_mem],2
ret
///
bEndThread_evadeMove_keylistener_mem:
dd 0
///
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
//obtained from SubBeam's ACS script - start//
{$lua}
if( syntaxcheck == false ) then --actual execution
local starttime = getTickCount()
if readInteger( "bEndThread_evadeMove_keylistener_mem" ) == 0 then --could be 2 already
writeInteger( "bEndThread_evadeMove_keylistener_mem", 1 ) --tell the thread to kill itself
end
while( getTickCount() < starttime + 1000 ) and ( readInteger( "bEndThread_evadeMove_keylistener_mem" ) ~=2 ) do --wait till it has finished
sleep( 20 )
end
if( getTickCount() > starttime + 1000 ) then --could happen when the window is shown
showMessage( 'Disabling the thread failed!' )
error( 'Thread disabling failed!' )
end
sleep( 1 )
end
{$asm}
//obtained from SubBeam's ACS script - end//
//bEndThread_evadeMove_keylistener_mem:
//dd 1
///***************************************************///
dealloc(newmem2)
somePlayerInfoBaseFetchAOB: //"NieRAutomata.exe"+640054:
db 48 8B 17 48 8B CF
//Alt: mov rdx,[rdi]
//Alt: mov rcx,rdi
unregistersymbol(somePlayerInfoBase)
///***************************************************///
dealloc(newmem)
playerStanceWriteAOB: //"NieRAutomata.exe"+2F43A92:
db 89 FA 89 83 90 09 00 00
//Alt: mov edx,edi
//Alt: mov [rbx+00000990],eax
unregistersymbol(somePlayerInfo)
unregistersymbol(wEvadeMoveKeyPressed)
///***************************************************///
unregistersymbol(bEndThread_evadeMove_keylistener_mem)
dealloc(evadeMove_keylistener_mem)
unregistersymbol(evadeMove_keylistener_mem)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>47200</ID>
<Description>"Alt + any Attack / Alt + Evade"</Description>
<Options moHideChildren="1"/>
<LastState Value="" RealAddress="00000000"/>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>47201</ID>
<Description>"stance"</Description>
<ShowAsHex>1</ShowAsHex>
<VariableType>4 Bytes</VariableType>
<Address>somePlayerInfoBase</Address>
<Offsets>
<Offset>670</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
thanks again for testing~