Page 1 of 1
Finding movement speed
Posted: Thu Feb 20, 2025 10:21 am
by patka
What is the easiest way to determine movement speed in a game? I am making a table for Vigil: The Longest Night, but I can't find the movement speed. The game engine is Unity, but there is nothing to indicate that. There is an item in the game that increases movement speed, but I can't find the increased value.
Re: Finding movement speed
Posted: Thu Feb 20, 2025 11:17 am
by MBRKiNG
Hero::xSpeedScale float val (default) 1
Litus.Physic.PhysicObj:doMoveX+4d - D9 5F 64 - fstp dword ptr [edi+64]
Re: Finding movement speed
Posted: Thu Feb 20, 2025 11:19 am
by Send
patka wrote: ↑Thu Feb 20, 2025 10:21 am
What is the easiest way to determine movement speed in a game? I am making a table for Vigil: The Longest Night, but I can't find the movement speed. The game engine is Unity, but there is nothing to indicate that. There is an item in the game that increases movement speed, but I can't find the increased value.
Checked out the game. Speed is held in
Litus.Physic.PhysicObj. Specifically at
Litus.Physic.PhysicObj:doMoveX, which is shared with all other entities.
So, if you go to
Night.Hero:isStandOrIdle or any method constantly accessing Night.Hero, and write a value to xSpeedScale, you're good to go.
Working script that only affects the Player.
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>4</ID>
<Description>"Enable Movement Modifier"</Description>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>
[ENABLE]
//Send@FearlessRevolution
aobscanregion(hero_movement,Night.Hero:isStandOrIdle,Night.Hero:isStandOrIdle+24,8B 45 08 8B 80 80 01 00 00 8B 0D)
alloc(newmem,$1000)
registersymbol(speedscale)
label(code return speedscale)
newmem:
push ecx
mov ecx,[speedscale]
mov [eax+64],ecx
code:
pop ecx
mov eax,[ebp+08]
mov eax,[eax+00000180]
jmp return
speedscale:
dd (float)2
hero_movement:
jmp newmem
nop 4
return:
registersymbol(hero_movement)
[DISABLE]
hero_movement:
db 8B 45 08 8B 80 80 01 00 00
unregistersymbol(*)
dealloc(*)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>5</ID>
<Description>"Set Hero Speed"</Description>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Float</VariableType>
<Address>speedscale</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Re: Finding movement speed
Posted: Thu Feb 20, 2025 11:31 am
by patka
MBRKiNG wrote: ↑Thu Feb 20, 2025 11:17 am
Hero::xSpeedScale float val (default) 1
Litus.Physic.PhysicObj:doMoveX+4d - D9 5F 64 - fstp dword ptr [edi+64]
I found this one, but when I change it, it jumps back to 1. When I freeze it on higher value, the character is runs stutteringly.
Re: Finding movement speed
Posted: Thu Feb 20, 2025 11:32 am
by Send
patka wrote: ↑Thu Feb 20, 2025 11:31 am
...
Write directly to the xSpeedScale offset held in Night.Hero. Example above your post. Litus.Physic.PhysicObj:doMoveX is constantly writing the value of 1 to every entity.
Re: Finding movement speed
Posted: Thu Feb 20, 2025 11:57 am
by patka
Send wrote: ↑Thu Feb 20, 2025 11:32 am
patka wrote: ↑Thu Feb 20, 2025 11:31 am
...
Write directly to the xSpeedScale offset held in Night.Hero. Example above your post. Litus.Physic.PhysicObj:doMoveX is constantly writing the value of 1 to every entity.
Sorry ,but i don't really understand this part. I'm quite new at this. I'll figure it out somehow, I don't want to bother anybody about it.
Re: Finding movement speed
Posted: Thu Feb 20, 2025 11:58 am
by MBRKiNG
patka wrote: ↑Thu Feb 20, 2025 11:31 am
MBRKiNG wrote: ↑Thu Feb 20, 2025 11:17 am
Hero::xSpeedScale float val (default) 1
Litus.Physic.PhysicObj:doMoveX+4d - D9 5F 64 - fstp dword ptr [edi+64]
I found this one, but when I change it, it jumps back to 1. When I freeze it on higher value, the character is runs stutteringly.
try this one
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>105191</ID>
<Description>"xSpeedScale"</Description>
<Options moHideChildren="1"/>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>define(address,Litus.Physic.PhysicObj:work+1b4 )
define(bytes,D9 00 D9 43 50)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000)
label(mSpeed)
label(code)
label(return)
registersymbol(mSpeed)
newmem:
code:
fld dword ptr [eax]
fld dword ptr [ebx+50]
movss xmm7,[mSpeed]
movss [ebx+64],xmm7
jmp return
mSpeed:
dq (float)1
address:
jmp newmem
return:
[DISABLE]
address:
db bytes
dealloc(*)
unregistersymbol(*)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>105192</ID>
<Description>"Current Speed"</Description>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Float</VariableType>
<Address>mSpeed</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Re: Finding movement speed
Posted: Thu Feb 20, 2025 12:04 pm
by patka
MBRKiNG wrote: ↑Thu Feb 20, 2025 11:58 am
patka wrote: ↑Thu Feb 20, 2025 11:31 am
MBRKiNG wrote: ↑Thu Feb 20, 2025 11:17 am
Hero::xSpeedScale float val (default) 1
Litus.Physic.PhysicObj:doMoveX+4d - D9 5F 64 - fstp dword ptr [edi+64]
I found this one, but when I change it, it jumps back to 1. When I freeze it on higher value, the character is runs stutteringly.
try this one
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>105191</ID>
<Description>"xSpeedScale"</Description>
<Options moHideChildren="1"/>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>define(address,Litus.Physic.PhysicObj:work+1b4 )
define(bytes,D9 00 D9 43 50)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000)
label(mSpeed)
label(code)
label(return)
registersymbol(mSpeed)
newmem:
code:
fld dword ptr [eax]
fld dword ptr [ebx+50]
movss xmm7,[mSpeed]
movss [ebx+64],xmm7
jmp return
mSpeed:
dq (float)1
address:
jmp newmem
return:
[DISABLE]
address:
db bytes
dealloc(*)
unregistersymbol(*)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>105192</ID>
<Description>"Current Speed"</Description>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Float</VariableType>
<Address>mSpeed</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Thank you very much. It works perfectly!
Re: Finding movement speed
Posted: Thu Feb 20, 2025 12:43 pm
by patka
Can this also be done by jumping and air dash? There is one for 'bRefreshDoubleJump' and 'bRefreshAirDash'. It defaults to 1, if I double jump it will be 0. I cannot freeze this either, because it does not work
Re: Finding movement speed
Posted: Thu Mar 06, 2025 12:10 pm
by Chris.O
Game use Unity Engine! You can try Search Class or Methode example movement or speed
