Finding movement speed

Post your topics and discussions here that you can't find a good section for.
Post Reply
User avatar
patka
Table Makers
Table Makers
Posts: 510
Joined: Sun Jul 05, 2020 11:09 am
Reputation: 725

Finding movement speed

Post 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.

User avatar
MBRKiNG
Table Makers
Table Makers
Posts: 335
Joined: Fri Feb 23, 2018 5:13 pm
Reputation: 579

Re: Finding movement speed

Post by MBRKiNG »

Hero::xSpeedScale float val (default) 1

Litus.Physic.PhysicObj:doMoveX+4d - D9 5F 64 - fstp dword ptr [edi+64]
Last edited by MBRKiNG on Thu Feb 20, 2025 11:27 am, edited 1 time in total.

User avatar
Send
Table Makers
Table Makers
Posts: 1302
Joined: Fri Feb 02, 2018 5:58 pm
Reputation: 1147

Re: Finding movement speed

Post 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>
Last edited by Send on Thu Mar 06, 2025 12:25 pm, edited 1 time in total.

User avatar
patka
Table Makers
Table Makers
Posts: 510
Joined: Sun Jul 05, 2020 11:09 am
Reputation: 725

Re: Finding movement speed

Post 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.

User avatar
Send
Table Makers
Table Makers
Posts: 1302
Joined: Fri Feb 02, 2018 5:58 pm
Reputation: 1147

Re: Finding movement speed

Post 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.

User avatar
patka
Table Makers
Table Makers
Posts: 510
Joined: Sun Jul 05, 2020 11:09 am
Reputation: 725

Re: Finding movement speed

Post 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.

User avatar
MBRKiNG
Table Makers
Table Makers
Posts: 335
Joined: Fri Feb 23, 2018 5:13 pm
Reputation: 579

Re: Finding movement speed

Post 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>


User avatar
patka
Table Makers
Table Makers
Posts: 510
Joined: Sun Jul 05, 2020 11:09 am
Reputation: 725

Re: Finding movement speed

Post 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!

User avatar
patka
Table Makers
Table Makers
Posts: 510
Joined: Sun Jul 05, 2020 11:09 am
Reputation: 725

Re: Finding movement speed

Post 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

User avatar
Chris.O
Noobzor
Noobzor
Posts: 5
Joined: Fri May 31, 2024 10:09 am
Reputation: 1

Re: Finding movement speed

Post by Chris.O »

Game use Unity Engine! You can try Search Class or Methode example movement or speed :D

Post Reply

Who is online

Users browsing this forum: No registered users