BM+CE TABLE UPDATE [16/04/25]

Posts 1–15 of 109 · Page 1 of 8
BM+CE TABLE UPDATE [16/04/25]
Install Cheat engine

How Use that ?: 1,Create Text file, 2,copy past in , and rename 'Something.CT' , and u can open it

Table+LuaScript

Code:
<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>6358</ID>
      <Description>"KILGPT"</Description>
      <Color>FF0080</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>57</ID>
          <Description>"UseFull"</Description>
          <Options moHideChildren="1"/>
          <Color>008000</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>58</ID>
              <Description>"5%PotReturn"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,74 XX C7 45 F4 00 00 00 00 90 8B 46 10 8B 4D FC 8B 5E 14 89 45 F0 8D 45 F0 50 8D 45 E0 50) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 74

INJECT:
  db EB
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 74

unregistersymbol(INJECT)
dealloc(newmem)

</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>60</ID>
              <Description>"antiafk"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
aobscanmodule(AntiAFK,trove.exe,55 8B EC 83 E4 F8 D9 EE 83 EC 58)
alloc(newmem,$1000)
label(code)
label(return)
newmem:
code:
  ret
  push ebp
  mov ebp,esp
  and esp,-08
  jmp return
AntiAFK:
  jmp newmem
  nop
return:
registersymbol(AntiAFK)
[DISABLE]
AntiAFK:
  db 55 8B EC 83 E4 F8
unregistersymbol(AntiAFK)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>63</ID>
              <Description>"Insta Mining 0 - 300 laser All Blocks"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(Trover,trove.exe,DF F1 DD D8 72 61) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db DF F1
  jmp return

Trover:
  db DF F0
return:
registersymbol(Trover)

[DISABLE]

Trover:
  db DF F1

unregistersymbol(Trover)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>64</ID>
              <Description>"Lasermancy Geode (Omni Tool) - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(Beam,trove.exe,DF F1 DD D8 72 35 8D) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db DF F1
  jmp return

Beam:
  db DF F0
return:
registersymbol(Beam)

[DISABLE]
Beam:
  db DF F1

unregistersymbol(Beam)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>61</ID>
              <Description>"Auto Attack Basic"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,DF F1 DD D8 72 1F) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db DF F1

INJECT:
  db DF F0
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db DF F1

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>67</ID>
              <Description>"No Clip (need hotkey) - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,0F 84 F0 05 00 00 0F 28 45 E0 0F 28 65 D0) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 0F 84
  jmp return

INJECT:
  db 0F 87
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 0F 84

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>4</ID>
              <Description>"Map Extend(Scroll)"</Description>
              <Color>FFFFFF</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,77 XX B8 XX XX XX XX F3 0F 10 08 F3 0F 11 89 XX XX XX XX 8B 89 D0 00 00 00 85 C9 74 XX) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
db 77 05
jmp return

INJECT:
db EB
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
db 77 05

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
              <Hotkeys>
                <Hotkey>
                  <Action>Toggle Activation</Action>
                  <Keys>
                    <Key>17</Key>
                    <Key>77</Key>
                  </Keys>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>71</ID>
          <Description>"Usable"</Description>
          <Options moHideChildren="1"/>
          <Color>0080FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>59</ID>
              <Description>"Jump Speed"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(jump,trove.exe,0F 28 05 XX XX XX XX XX 29 40 40)
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 0F 28 05
  jmp return

jump:
  db 0F 28 0D
return:
registersymbol(jump)

[DISABLE]

jump:
  db 0F 28 05

unregistersymbol(jump)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>65</ID>
              <Description>"XRAY"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F3 0F 10 48 28 0F C6 C0 00 0F 28 D1 F3 0F 59 15 XX XX XX XX 0F 29 44 24 10) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 10 48
  jmp return

INJECT:
  db F3 0F 10 40
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 10 48

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>66</ID>
              <Description>"Fov Script"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(FOVV,trove.exe,F3 0F 10 41 28 F3 0F 59 05 XX XX XX XX 8B 4D F4) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 10 41 28 F3 0F 59 05
  jmp return

FOVV:
  db F3 0F 10 41 28 F3 0F 59 0D
return:
registersymbol(FOVV)

[DISABLE]

FOVV:
  db F3 0F 10 41 28 F3 0F 59 05

unregistersymbol(FOVV)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>68</ID>
              <Description>"No Clip Cam"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,0F 29 01 C7 41 34 00 00 00 00 0F) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  movaps [ecx],xmm0
  jmp return

INJECT:
  db 90 90 90

return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 0F 29 01

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>62</ID>
              <Description>"Easy Glide"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,D9 C9 DF F1 DD D8 76 24)
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db D9 C9

INJECT:
  db D9 C8
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db D9 C9

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>9</ID>
              <Description>"Glider Never Down"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
aobScanModule(MyCheat2, Trove.exe, D80DXXXXXXXXD9EED9C9DBF1DDD9)
assert(MyCheat2, D8 0D)
registerSymbol(MyCheat2)

alloc(newmem, 0x100)

label(code)
label(return)

label(SavedBytes)
registerSymbol(SavedBytes)

label(newValue)

newmem:
	code:
		fmul dword ptr [newValue]
		jmp return
	SavedBytes:
		readMem(MyCheat2, 6)
	newValue:
		dd (float)99

MyCheat2:
	jmp newmem
	nop
	return:

[DISABLE]

MyCheat2:
	readMem(SavedBytes, 6)

dealloc(newmem)
unregisterSymbol(MyCheat2)
unregisterSymbol(SavedBytes)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>34</ID>
              <Description>"Boat Speed"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,74 xx 57 FF 35 xx xx xx xx E8 xx xx xx xx 8B F8 85 FF 74 xx 6A 02 8B CF E8 xx xx xx xx 8B 17 8B CF FF xx xx) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 74

INJECT:
  db EB
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 74

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>56</ID>
          <Description>"Fancy"</Description>
          <Options moHideChildren="1"/>
          <Color>FFFF00</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>52</ID>
              <Description>"False break blocks - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(draco,trove.exe,80 7F xx 00 0F 84 xx xx xx xx 8B 4B 08 E8 xx xx xx xx FF 75 0C 8B 4D 10 8B F0 FF 75 08 8B 45 14 83 EC 0C 8B 3E 8B D4 6A 01 89 0A 8B CE 89 42 04 8B 45 18) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 80 7F 64 00
  jmp return

draco:
  db 80 7F 64 01
return:
registersymbol(draco)

[DISABLE]

draco:
  db 80 7F 64 00

unregistersymbol(draco)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>40</ID>
              <Description>"Utevo Lux - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F3 0F 11 45 F0 F3 0F 10 41 5C) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 11 45

INJECT:
  db F3 0F 11 4D
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 11 45

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>41</ID>
              <Description>"Giant Monsters"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F3 0F 10 44 24 14 0F C6 C0 00 0F 29 46) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  movss xmm0,[esp+14]


INJECT:
  movss xmm1,[esp+14]
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 10 44

unregistersymbol(INJECT)
dealloc(newmem)

</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>33</ID>
              <Description>"Monster/Object Red"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F3 0F 10 04 XX XX XX XX XX XX C1 C1 E8 08 83 E0 0F F3 0F 11 45 E0 F3 0F 10 04 XX XX XX XX XX 8B C1 C1 E8 04 83 E0 0F F3 0F 11 45 E4 83 E1 0F F3 0F 10 04 XX XX XX XX XX F3 0F 11 45 E8 F3 0F 10 04 XX XX XX XX XX F3 0F 11 45 EC 0F 28 45 E0 0F 29 07) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 10 04

INJECT:
  db F3 0F 10 0C
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 10 04

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>32</ID>
              <Description>"Monster/Object Green"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F3 0F 11 45 E4 83 E1 0F F3 0F 10 04 XX XX XX XX XX F3 0F 11 45 E8 F3 0F 10 04 XX XX XX XX XX F3 0F 11 45 EC 0F 28 45 E0 0F 29 07 8B C7 5F 5E 8B E5 5D 8B E3 5B) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 11 45

INJECT:
  db F3 0F 11 4D
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 11 45

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>31</ID>
              <Description>"Monster/Object Blue"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F3 0F 11 45 E8 F3 0F 10 04 XX XX XX XX XX F3 0F 11 45 EC 0F 28 45 E0 0F 29 07 8B C7 5F 5E 8B E5 5D 8B E3 5B) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 11 45

INJECT:
  db F3 0F 11 4D
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 11 45

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>30</ID>
              <Description>"Monster/Object White"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,0F 29 07 8B C7 5F 5E 8B E5 5D 8B) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 0F 29 07

INJECT:
  db 0F 29 0F
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 0F 29 07

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>28</ID>
              <Description>"Purple Chat Name"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F3 0F 2C C0 88 45 F9) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 2C C0

INJECT:
  db F3 0F 2C C1
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 2C C0

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>27</ID>
              <Description>"Green Chat Name"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F3 0F 2C C0 88 45 FA) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 2C C0

INJECT:
  db F3 0F 2C C1
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 2C C0

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>29</ID>
              <Description>"Blue Chat Name"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F3 0F 2C C0 88 45 F8) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 2C C0

INJECT:
  db F3 0F 2C C1
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 2C C0

unregistersymbol(INJECT)
dealloc(newmem)

</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>37</ID>
              <Description>"Lock Cam - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,74 05 8B 01 FF 50 0C 8B E5) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 74 05

INJECT:
  db EB 05

return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 74 05

unregistersymbol(INJECT)
dealloc(newmem)


</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>3</ID>
              <Description>"Zoom hack"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]


aobscanmodule(INJECT,trove.exe,F3 0F 11 5F 2C) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  movss [edi+2C],xmm3
  jmp return

INJECT:
  movss [edi+2C],xmm2
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 11 5F 2C

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>69</ID>
          <Description>"Work but not sure"</Description>
          <Options moHideChildren="1"/>
          <Color>FF8080</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>50</ID>
              <Description>"Super Atk Speed (Dont Move)"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,D9 C9 DD 56 38) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db D9 C9

INJECT:
  db D9 C8
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db D9 C9 DD 56 38

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>49</ID>
              <Description>"Super Atk Speed (Dont Move)2"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,D9 C9 DB F1 76 12) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db D9 C9

INJECT:
  db D9 C8
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db D9 C9

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>35</ID>
              <Description>"Speed 4x"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
aobScanModule(MyCheat1, Trove.exe, D80DXXXXXXXXD95DFC74XXF30F1086XXXXXXXXF30F5945FCF30F1145FC)
assert(MyCheat1, D8 0D)
registerSymbol(MyCheat1)

alloc(newmem, 0x100)

label(code)
label(return)

label(SavedBytes)
registerSymbol(SavedBytes)

label(newValue)

newmem:
	code:
		fmul dword ptr [newValue]
		jmp return
	SavedBytes:
		readMem(MyCheat1, 6)
	newValue:
		dd (float)0.4

MyCheat1:
	jmp newmem
	nop
	return:

[DISABLE]

MyCheat1:
	readMem(SavedBytes, 6)

dealloc(newmem)
unregisterSymbol(MyCheat1)
unregisterSymbol(SavedBytes)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>36</ID>
              <Description>"Speed 3x"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
aobScanModule(MyCheat1, Trove.exe, D80DXXXXXXXXD95DFC74XXF30F1086XXXXXXXXF30F5945FCF30F1145FC)
assert(MyCheat1, D8 0D)
registerSymbol(MyCheat1)

alloc(newmem, 0x100)

label(code)
label(return)

label(SavedBytes)
registerSymbol(SavedBytes)

label(newValue)

newmem:
	code:
		fmul dword ptr [newValue]
		jmp return
	SavedBytes:
		readMem(MyCheat1, 6)
	newValue:
		dd (float)0.3

MyCheat1:
	jmp newmem
	nop
	return:

[DISABLE]

MyCheat1:
	readMem(SavedBytes, 6)

dealloc(newmem)
unregisterSymbol(MyCheat1)
unregisterSymbol(SavedBytes)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>21</ID>
              <Description>"Speed 2x"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
aobScanModule(MyCheat1, Trove.exe, D80DXXXXXXXXD95DFC74XXF30F1086XXXXXXXXF30F5945FCF30F1145FC)
assert(MyCheat1, D8 0D)
registerSymbol(MyCheat1)

alloc(newmem, 0x100)

label(code)
label(return)

label(SavedBytes)
registerSymbol(SavedBytes)

label(newValue)

newmem:
	code:
		fmul dword ptr [newValue]
		jmp return
	SavedBytes:
		readMem(MyCheat1, 6)
	newValue:
		dd (float)0.2

MyCheat1:
	jmp newmem
	nop
	return:

[DISABLE]

MyCheat1:
	readMem(SavedBytes, 6)

dealloc(newmem)
unregisterSymbol(MyCheat1)
unregisterSymbol(SavedBytes)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>18</ID>
              <Description>"Slow Fall Gun (need hotkey) - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(slow1,trove.exe,F3 0F 10 05 XX XX XX XX F3 0F 11 45 FC D9 45 FC 8B E5 5D C3 D9 05 XX XX XX XX) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 10 05
  jmp return

slow1:
  db F3 0F 10 0D
return:
registersymbol(slow1)

[DISABLE]

slow1:
  db F3 0F 10 05

unregistersymbol(slow1)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>12</ID>
              <Description>"Inta Mining 300+ Laser &amp;gt; Normal Blocks / Nitro / Shape / cinabrio - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,77 02 8B C7 DD 00 DD 17 DF F1 DD D8 72 61) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 77 02
  jmp return

INJECT:
 db 72 02
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 77 02

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>53</ID>
              <Description>"No Animation Skills / Etc - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F3 0F 11 44 24 24 F3 0F 58 84 24 80 00 00 00 50 F3 0F 11 43 24 E8 XX XX XX XX 8D 44 24 34 50) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  movss [esp+24],xmm0
  jmp return

INJECT:
  movss [esp+24],xmm1

return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 11 44 24 24

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>39</ID>
              <Description>"Hitted all"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,F0 D9 C9 DF F1 DD D8 76) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F0 D9 C9

INJECT:
  db F0 D9 C8
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F0 D9 C9

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>70</ID>
          <Description>"Didnt Work ATM"</Description>
          <Options moHideChildren="1"/>
          <Color>0000FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>8</ID>
              <Description>"JumpMin"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(jumper,trove.exe,FF 46 3C 68)
alloc(newmem,$1000)

label(code)

newmem:

code:
  db FF 46

jumper:
 db FF 4E
 return:
registersymbol(jumper)

[DISABLE]

jumper:
  db FF 46

unregistersymbol(jumper)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>6</ID>
              <Description>"Anti Dismount"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(nodismount,trove.exe,74 XX 8B 07 8B CF 6A 00 6A 00 FF 50 60) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 74

nodismount:
  db EB

return:
registersymbol(nodismount)

[DISABLE]

nodismount:
  db 74

unregistersymbol(nodismount)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>5</ID>
              <Description>"Infinity Dogde"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(DODGE,trove.exe,DF F1 DD D8 73 12 56) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
db DF F1
jmp return

DODGE:
db DF F0
return:
registersymbol(DODGE)

[DISABLE]

DODGE:
db DF F1

unregistersymbol(DODGE)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>14</ID>
              <Description>"Fly Geode Boots - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,74 xx 8B 0D xx xx xx xx 89 48 40 8B 0D xx xx xx xx 89 48 44 C7 40 60 00 00 00 00 FF 35 xx xx xx xx) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 74

INJECT:
  db EB
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 74

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>25</ID>
              <Description>"No Clip Down"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,DE E9 DD 1C 24 E8 xx xx xx xx E8 xx xx xx xx 0F 28 07 0F 29 45 B0 F3 0F 10 45 B4 0F C6 C0 00 0F 29 45 B0) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db DE E9

INJECT:
  db DE E8
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db DE E9

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>20</ID>
              <Description>"Gun Freezy Air (on attack monster)"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(Gun2,trove.exe,55 8B EC 51 F3 0F 10 81 D8 00 00 00 0F 2F 05) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  push ebp
  mov ebp,esp
  push ecx
  movss xmm0,[ecx+000000D8]
  jmp return

Gun2:
  push ebp
  mov ebp,esp
  push ecx
  movss xmm0,[ecx+000000AC]
return:
registersymbol(Gun2)

[DISABLE]

Gun2:
  db 55 8B EC 51 F3 0F 10 81 D8 00 00 00

unregistersymbol(Gun2)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>19</ID>
              <Description>"Gun Hack No damage (need hotkey)  - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(Gun,trove.exe,F3 0F 10 89 D4 00 00 00 0F 57) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  movss xmm1,[ecx+000000D4]
  jmp return

Gun:
 movss xmm0,[ecx+000000AC]

return:
registersymbol(Gun)

[DISABLE]

Gun:
  db F3 0F 10 89 D4 00 00 00

unregistersymbol(Gun)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>42</ID>
              <Description>"Slow Fall Gun 2 (need hotkey) - Final"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(slow2,trove.exe,F3 0F 10 05 xx xx xx xx F3 0F 11 45 FC D9 45 FC 8B E5 5D C3 CC CC CC CC CC CC CC 8B 44 24 04 8B 4C 24 0C 8B 54 24 08) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db F3 0F 10 05
  jmp return

slow2:
  db F3 0F 10 0D
return:
registersymbol(slow2)

[DISABLE]

slow2:
  db F3 0F 10 05

unregistersymbol(slow2)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>51</ID>
              <Description>"Remove the taking damage animation (Yakup's mom)"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat



aobscanmodule(INJECT,trove.exe,8B 45 E0 2B 85 18 FF FF FF) // should be unique
alloc(newmem,$100)

label(code)
label(return)

newmem:

code:
  mov [ebp-000000E8],(int)1
  sub eax,[ebp-000000E8]
  jmp return

INJECT:
  jmp newmem
  nop 4
return:
registersymbol(INJECT)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INJECT:
  db 8B 45 E0 2B 85 18 FF FF FF

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>24</ID>
              <Description>"No Clip Super"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

aobscanmodule(INJECT,trove.exe,74 2D FF 73 14) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  db 74

INJECT:
  db EB

return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 74

unregistersymbol(INJECT)
dealloc(newmem)
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>6353</ID>
          <Description>"Position"</Description>
          <Options moHideChildren="1"/>
          <Color>00FF00</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>6354</ID>
              <Description>"y"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>008000</Color>
              <VariableType>Float</VariableType>
              <Address>"trove.exe"+011F9D40</Address>
              <Offsets>
                <Offset>84</Offset>
                <Offset>4</Offset>
                <Offset>C4</Offset>
                <Offset>28</Offset>
                <Offset>0</Offset>
              </Offsets>
              <Hotkeys>
                <Hotkey>
                  <Action>Increase Value</Action>
                  <Keys>
                    <Key>38</Key>
                  </Keys>
                  <Value>3</Value>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
            <CheatEntry>
              <ID>6355</ID>
              <Description>"z"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>008000</Color>
              <VariableType>Float</VariableType>
              <Address>"trove.exe"+011F9D40</Address>
              <Offsets>
                <Offset>88</Offset>
                <Offset>4</Offset>
                <Offset>C4</Offset>
                <Offset>28</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>6356</ID>
              <Description>"x"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>008000</Color>
              <VariableType>Float</VariableType>
              <Address>"trove.exe"+011F9D40</Address>
              <Offsets>
                <Offset>80</Offset>
                <Offset>4</Offset>
                <Offset>C4</Offset>
                <Offset>28</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>6357</ID>
          <Description>"Mastery"</Description>
          <Options moHideChildren="1"/>
          <Color>FF0000</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>1</ID>
              <Description>"Trove"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>"trove.exe"+011F9D40</Address>
              <Offsets>
                <Offset>D4</Offset>
                <Offset>10C</Offset>
                <Offset>C4</Offset>
                <Offset>28</Offset>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols>
    <SymbolEntry>
      <Name>xPerAddr</Name>
      <Address>1EAF3720</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>yPerAddr</Name>
      <Address>1EAF3724</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>zPerAddr</Name>
      <Address>1EAF3728</Address>
    </SymbolEntry>
  </UserdefinedSymbols>
  <LuaScript>getAutoAttachList().add("trove.exe")
local processName = "trove.exe"

local Collision = [[
aobscanmodule(noclip, Trove.exe, DC 67 68 C6)
registersymbol(noclip)
noclip:
  db DC 47
]]
local disableCollision = [[
noclip:
  db DC 67
]]

local Restriction = [[
aobscanmodule(u1, Trove.exe, 75 0B 6A 21 FF 15)
registersymbol(u1)
u1:
  db EB
]]
local disableRestriction = [[
u1:
  db 75
]]

local afkScript = [[
aobscanmodule(AntiAFK, trove.exe, 55 8B EC 83 E4 F8 D9 EE 83 EC 58)
alloc(newmem, $1000)
label(code)
label(return)
newmem:
code:
  ret
  push ebp
  mov ebp, esp
  and esp, -08
  jmp return
AntiAFK:
  jmp newmem
  nop
return:
registersymbol(AntiAFK)
]]
local disableAfkScript = [[
AntiAFK:
  db 55 8B EC 83 E4 F8
unregistersymbol(AntiAFK)
dealloc(newmem)
]]

local SuperMan = false
local base, dir_base = nil, nil

local skipBuffer = nil
local flyBuffer = nil


local bpAlwaysOn, afkCheck

local function getVKCode(txt)
  local t = {
    ["SPACE"] = VK_SPACE,
    ["3"]     = VK_3,
    ["4"]     = VK_4,
    ["F1"]    = VK_F1
  }
  return t[txt:upper()] or tonumber(txt)
end

local function isProcessAttached()
  return getProcessIDFromProcessName(processName) ~= 0
end

local function ensureProcessAttached()
  if not isProcessAttached() then
    openProcess(processName)
    return false
  end
  return true
end

local function applySuperManPatches()
  if bpAlwaysOn.Checked then
    if not SuperMan then
      SuperMan = true
      autoAssemble(Collision)
      autoAssemble(Restriction)
    end
  else
    if SuperMan then
      SuperMan = false
      autoAssemble(disableCollision)
      autoAssemble(disableRestriction)
    end
  end

  if afkCheck.Checked then
    autoAssemble(afkScript)
  else
    autoAssemble(disableAfkScript)
  end
end

local function validatePatches()
  if not getAddressSafe("noclip") then
    autoAssemble(Collision)
  end
  if not getAddressSafe("u1") then
    autoAssemble(Restriction)
  end
  if afkCheck.Checked and (not getAddressSafe("AntiAFK")) then
    autoAssemble(afkScript)
  end
end

local function updatePointers()
  local new_base = getAddressSafe("[[[[[[[trove.exe+01098418]+C]+28]+54]+88]+D0]+4]")
  local new_dir  = getAddressSafe("[[[[[trove.exe+01098418]+4]+24]+84]+0]")
  if new_base and new_dir then
    base = new_base
    dir_base = new_dir
  end
end

local function handleHotkeys()
  local now = getTickCount()
  for _, row in ipairs(rows) do
    local fontStr = "Fon" .. "t"
    local colorStr = "Co" .. "lor"
    row.enabled[fontStr][colorStr] = row.enabled.Checked and 0x00FF00 or 0xAAAAAA
    local keyCode = getVKCode(row.key.Text)
    local delay = tonumber(row.timer.Text) or 100
    if row.enabled.Checked and keyCode and isKeyPressed(keyCode) then
      if now - row.lastTick &gt;= delay then
        row.callback(row)
        row.lastTick = now
      end
    end
  end
end

local function applyMovementBuffers()
  if skipBuffer then
    writeFloat(base + 0x80, skipBuffer.x)
    writeFloat(base + 0x84, skipBuffer.y)
    writeFloat(base + 0x88, skipBuffer.z)
    skipBuffer = nil
  end
  if flyBuffer then
    writeFloat(base + 0xB0, flyBuffer.vx)
    writeFloat(base + 0xB4, flyBuffer.vy)
    writeFloat(base + 0xB8, flyBuffer.vz)
    flyBuffer = nil
  end
end

main = createForm(true)
main.Caption = ""
main.Width = 240
main.Height = 140
main.BorderStyle = "bsNone"
main.Position = "poDesigned"
main.Left = getScreenWidth() - main.Width
main.Top = 0
main.Color = 0x1C1C1C
main.Font.Name = "Segoe UI"
main.Font.Size = 9
main.PopupMode = "pmNone"
main.BorderIcons = "[biSystemMenu]"
main.BorderWidth = 1
main.FormStyle = "fsStayOnTop"

local topBar = createPanel(main)
topBar.setPosition(0, 0)
topBar.Width = main.Width
topBar.Height = 25
topBar.Color = 0x00FF00

local dragging, dragX, dragY = false, 0, 0
topBar.OnMouseDown = function(_, _, x, y)
  dragging = true
  dragX, dragY = x, y
end
topBar.OnMouseMove = function(_, x, y)
  if dragging then
    main.Left = main.Left + (x - dragX)
    main.Top = main.Top + (y - dragY)
  end
end
topBar.OnMouseUp = function() dragging = false end

local titleLabel = createLabel(topBar)
titleLabel.Caption = "KIL GPT"
titleLabel.setPosition(5, 5)
local fStr = "Fon" .. "t"
local cStr = "Co" .. "lor"
titleLabel[fStr][cStr] = 0x1C1C1C
titleLabel.Font.Name = "Segoe UI"
titleLabel.Font.Size = 9
titleLabel.Font.Style = "fsBold"
titleLabel.Transparent = true


local closeBtn = createButton(topBar)
closeBtn.Caption = "X"
closeBtn.setPosition(topBar.Width - 25, 0)
closeBtn.Width = 25
closeBtn.Height = 25
local fStr = "Fon" .. "t"
local cStr = "Co" .. "lor"
closeBtn[fStr][cStr] = 0xFF0000
closeBtn.Font.Style = "fsBold"
closeBtn.OnClick = function() main.hide() end

function styleText(e)
  e["Fon".."t"]["Co".."lor"] = 0x00FF00
  e.Font.Size = 8
  e.Font.Style = "fsBold"
end

function styleBox(e)
  e.Color = 0x1C1C1C
  e.BorderStyle = bsSingle
end

local headers = {"Use", "Power", "Timer", "Key", "On"}
local xPositions = {12, 62, 102, 147, 197}
for i, text in ipairs(headers) do
  local lbl = createLabel(main)
  lbl.Caption = text
  lbl.setPosition(xPositions[i], 30)
  styleText(lbl)
end

rows = {}
function addFunctionRow(name, key, delay, power, callback, enabledByDefault)
  local y = 50 + (#rows * 30)
  local row = {}
  row.label = createLabel(main)
  row.label.Caption = name
  row.label.setPosition(12, y + 3)
  styleText(row.label)

  row.power = createEdit(main)
  row.power.Text = tostring(power)
  row.power.setPosition(62, y)
  row.power.Width = 30
  styleText(row.power)
  styleBox(row.power)

  row.timer = createEdit(main)
  row.timer.Text = tostring(delay)
  row.timer.setPosition(102, y)
  row.timer.Width = 35
  styleText(row.timer)
  styleBox(row.timer)

  row.key = createEdit(main)
  row.key.Text = key
  row.key.setPosition(147, y)
  row.key.Width = 35
  styleText(row.key)
  styleBox(row.key)

row.enabled = createCheckBox(main)
row.enabled.setPosition(202, y + 2)
row.enabled.Checked = enabledByDefault or false
row.enabled["Fon".."t"]["Co".."lor"] = row.enabled.Checked and 0x00FF00 or 0xAAAAAA

  row.lastTick = 0
  row.callback = callback
  table.insert(rows, row)
end

function doSkip(row)
  if not base or not dir_base then return end
  local dist = tonumber(row.power.Text) or 3
  local x = readFloat(base + 0x80)
  local y = readFloat(base + 0x84)
  local z = readFloat(base + 0x88)
  local dx = readFloat(dir_base + 0x100)
  local dy = readFloat(dir_base + 0x104)
  local dz = readFloat(dir_base + 0x108)
  if x and dx then
    skipBuffer = {
      x = x + dx * dist,
      y = y + dy * dist,
      z = z + dz * dist
    }
  end
end

function doFly(row)
  if not base or not dir_base then return end
  local speed = tonumber(row.power.Text) or 50
  local dx = readFloat(dir_base + 0x100)
  local dy = readFloat(dir_base + 0x104)
  local dz = readFloat(dir_base + 0x108)
  if dx and dy and dz then
    flyBuffer = {
      vx = dx * speed,
      vy = dy * speed,
      vz = dz * speed
    }
  end
end

addFunctionRow("Skip", "4", 225, 3.5, doSkip, true)
addFunctionRow("Fly", "3", 50, 50, doFly, true)

bpAlwaysOn = createCheckBox(main)
bpAlwaysOn.setPosition(35, 110)
bpAlwaysOn.Checked = true
bpAlwaysOn.Width = 15
bpAlwaysOn.Height = 15

local supermanLabel = createLabel(main)
supermanLabel.Caption = "SuperMan"
supermanLabel.setPosition(55, 111)
supermanLabel["Fon".."t"]["Co".."lor"] = 0x00FF00
supermanLabel.Font.Size = 8
supermanLabel.Font.Style = "fsBold"

afkCheck = createCheckBox(main)
afkCheck.setPosition(130, 110)
afkCheck.Checked = true
afkCheck.Width = 15
afkCheck.Height = 15

local afkLabel = createLabel(main)
afkLabel.Caption = "Anti/Afk"
afkLabel.setPosition(150, 111)
afkLabel["Fon".."t"]["Co".."lor"] = 0x00FF00
afkLabel.Font.Size = 8
afkLabel.Font.Style = "fsBold"


local mainTimer = createTimer(nil)
mainTimer.Interval = 30
mainTimer.Enabled = true
mainTimer.OnTimer = function()
  if not ensureProcessAttached() then return end
  updatePointers()
  if not base or not dir_base then return end
  handleHotkeys()
  applyMovementBuffers()
end

local reattachTimer = createTimer(nil)
reattachTimer.Interval = 2500
reattachTimer.Enabled = true
reattachTimer.OnTimer = function()
  if not isProcessAttached() then return end
  validatePatches()
  applySuperManPatches()
end

main.OnClose = function() return caHide end
</LuaScript>
</CheatTable>
BM Update
Code:
[date]
LastUpdateSupport=16/04/25 by [Ali & KIŁ]
[skip]
Size=4
Base=0x1098418
xOffsets=0x0+0x28+0xE8+0x4+0x80
yOffsets=0x0+0x28+0xE8+0x4+0x84
zOffsets=0x0+0x28+0xE8+0x4+0x88
[acceleration]
Size=4
Base=0x1098418
xOffsets=0x0+0x28+0xE8+0x4+0xB0
yOffsets=0x0+0x28+0xE8+0x4+0xB4
zOffsets=0x0+0x28+0xE8+0x4+0xB8
[view]
Size=4
Base=0x1098418
xOffsets=0x4+0x24+0x84+0x0+0x100
yOffsets=0x4+0x24+0x84+0x0+0x104
zOffsets=0x4+0x24+0x84+0x0+0x108
[speed]
Size=4
Base=0x1098418
Offsets=0x0+0x28+0xE8+0x2DC+0x1E4
[camera_Distance]
Size=0x011B6420
Base=0x1098418
minOffset=0x4+0x38
maxOffset=0x4+0x3C
[cView]
Size=4
Base=0x1098418
Hight=0x4+0x28
Width=0x4+0x2C
[StatEncKey]
Size=4
Base=0x1098418
Offsets=0x0+0x28+0xE8+0x2DC+0x1EC
[InputBox]
Size=4
Base=0x11E5E70
Thank you very much !

Could u please make is so when we press the speed hotkey the script toggles without having to enter flying mode and also when we press 3 noclip starts happening until it is toggled again ?

Again thanks a lot !

PS. I got the following old code from an old script if u wanna update it, noclip still works but the rest is broken:

<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
<CheatEntries/>
<UserdefinedSymbols/>
<LuaScript> while getOpenedProcessID() == 0 do
openProcess("Trove.exe")
Sleep(1000)
end
local registerSymbols = [[
aobscanmodule(noclip,Trove.exe,DC 67 68 C6)
registersymbol(noclip)
aobscanmodule(u1,Trove.exe,75 0B 6A 21 FF 15)
registersymbol(u1)
aobscanmodule(u,Trove.exe,C6 46 04 00 85 FF 74 1E)
registersymbol(u)
aobscanmodule(n,Trove.exe,74 31 FF 73 14 8B 47 04 2B 07)
registersymbol(n)
aobscanmodule(autoAttack,Trove.exe,DF F1 DD D8 72 1F)
registersymbol(autoAttack)
]]
local bS = [[
noclip:
db DC 47
]]
local disablebS = [[
noclip:
db DC 67
]]
local uncapScript = [[
u1:
db EB
]]
local disableUncapScript = [[
u1:
db 75
]]
local antigravScript = [[
aobscanmodule(antiGravAOB,Trove.exe,F3 0F 11 45 FC D9 45 FC 8B E5 5D C3 D9 05 ???????? 8B E5 5D C3 D9 05 ???????? 8B E5 5D C3)
alloc(gravmem,$1000)
label(code)
label(return)
label(antigrav)

gravmem:

code:
movss xmm0,[antigrav]
movss [ebp-04],xmm0
jmp return

antigrav:
dd (float)-10000.0

antiGravAOB:
jmp gravmem

return:
registersymbol(antiGravAOB)
registersymbol(antigrav)
]]
local disableAntigravScript = [[
antiGravAOB:
db F3 0F 11 45 FC

unregistersymbol(antiGravAOB)
unregistersymbol(antigrav)
dealloc(gravmem)
]]

local noclipScript = [[
n:
db EB
]]
local disableNoclipScript = [[
n:
db 74
]]

local aaScript = [[
autoAttack:
db DF F0
]]
local disableAAScript = [[
autoAttack:
db DF F1
]]

autoAssemble(registerSymbols)
local bypass = false
local uncapFPS = true
local antigrav = false
local noclip = false
local aa = false
local isTeleporting = false

script = [[
aobscanmodule(ptrScan, Trove.exe, A1 ?? ?? ?? ?? 8B 40 ?? 85 C0 74 ?? 0F 28 ?? ?? EB 07 0F 28 05 ?? ?? ?? ?? 80)
registersymbol(ptrScan)
aobscanmodule(zoomScan, Trove.exe, 8B 0D ?? ?? ?? ?? 85 C9 74 0D A1)
registersymbol(zoomScan)
aobscanmodule(worldScan, Trove.exe, A1 ?? ?? ?? ?? 85 C0 74 07 C6 80 59 01 00 00 01 5D C2 04 00)
registersymbol(worldScan)
]]

autoAssemble(script)
local Base = getAddress("Trove.exe")

local ptrScanAddr = getAddress("ptrScan")
local pointerAddr = readInteger(ptrScanAddr + 1)
local offset = pointerAddr - Base
local basePtr = string.format("trove.exe+%X", offset)

local coordAddress = string.format("[[[[[[%s]+C]+28]+54]+88]+AC]+4", basePtr)
local camAddress = string.format("[[[[%s]+4]+24]+84]+0", basePtr)

xCoordAddr = string.format("[%s]+80", coordAddress)
yCoordAddr = string.format("[%s]+84", coordAddress)
zCoordAddr = string.format("[%s]+88", coordAddress)
xVelAddr = string.format("[%s]+B0", coordAddress)
yVelAddr = string.format("[%s]+B4", coordAddress)
zVelAddr = string.format("[%s]+B8", coordAddress)
xPerAddr = string.format("[%s]+100", camAddress)
yPerAddr = string.format("[%s]+104", camAddress)
zPerAddr = string.format("[%s]+108", camAddress)

registerSymbol('xCoordAddr', xCoordAddr)
registerSymbol('yCoordAddr', yCoordAddr)
registerSymbol('zCoordAddr', zCoordAddr)
registerSymbol('xVelAddr', xVelAddr)
registerSymbol('yVelAddr', yVelAddr)
registerSymbol('zVelAddr', zVelAddr)
registerSymbol('xPerAddr', xPerAddr)
registerSymbol('yPerAddr', yPerAddr)
registerSymbol('zPerAddr', zPerAddr)

local zoomScanAddr = getAddress("zoomScan")
local zoomPointerAddr = readInteger(zoomScanAddr + 2)
local zoomOffset = zoomPointerAddr - Base
local zoomBasePtr = string.format("trove.exe+%X", zoomOffset)
zoomAddr = string.format("[[[[%s]+30]+40]+D0]+50", zoomBasePtr)
--print(zoomScanAddr .. " " .. zoomPointerAddr .. " " .. zoomOffset .. " " .. zoomBasePtr .. " " .. zoomAddr)

local worldScanAddr = getAddress("worldScan")
local worldPointerAddr = readInteger(worldScanAddr + 1)
local worldOffset = worldPointerAddr - Base
local worldBasePtr = string.format("trove.exe+%X", worldOffset)
plrCountAddr = string.format("[[%s]+FC]+2C", worldBasePtr)

local captions = {
"loadding...",
"chloehook - basic",
"uhhh...",
"welcome",
"OwO",
"*wags tail*"
}

function getRandomCaption()
return captions[math.random(#captions)]
end

local form = createForm()
form.Caption = getRandomCaption()
form.Width = 660
form.Height = 330
form.FormStyle = 'fsSystemStayOnTop'
form.ShowInTaskBar = 'stAlways'
form.BorderStyle = 'bsSizeable'
form.AlphaBlend = true
form.AlphaBlendValue = 230
form.OnClose = function(form)
autoAssemble(disablebS)
autoAssemble(disableNoclipScript)
autoAssemble(disableAntigravScript)
autoAssemble(disableUncapScript)
autoAssemble(disableAAScript)
closeCE()
end

local lblStatus = createLabel(form)
lblStatus.Caption = "Opacity:"
lblStatus.Top = 215
lblStatus.Left = 500

local slider = createTrackBar(form)
slider.Top = 230
slider.Left = 450
slider.Width = 200
slider.Min = 0
slider.Max = 255
slider.Position = form.AlphaBlendValue



local lblX = createLabel(form)
lblX.Caption = "Destination X:"
lblX.Top = 20
lblX.Left = 10
local edtX = createEdit(form)
edtX.Top = lblX.Top
edtX.Left = 120
edtX.Width = 100

local lblY = createLabel(form)
lblY.Caption = "Destination Y:"
lblY.Top = 50
lblY.Left = 10
local edtY = createEdit(form)
edtY.Top = lblY.Top
edtY.Left = 120
edtY.Width = 100

local lblZ = createLabel(form)
lblZ.Caption = "Destination Z:"
lblZ.Top = 80
lblZ.Left = 10
local edtZ = createEdit(form)
edtZ.Top = lblZ.Top
edtZ.Left = 120
edtZ.Width = 100

local lblT = createLabel(form)
lblT.Caption = "Delay (ms):"
lblT.Top = 110
lblT.Left = 10
local edtT = createEdit(form)
edtT.Top = lblT.Top
edtT.Left = 120
edtT.Width = 100
edtT.Text = 25

local lblS = createLabel(form)
lblS.Caption = "Step:"
lblS.Top = 140
lblS.Left = 10
local edtS = createEdit(form)
edtS.Top = lblS.Top
edtS.Left = 120
edtS.Width = 100
edtS.Text = 4

local lblDist = createLabel(form)
lblDist.Caption = "Skip Distance:"
lblDist.Top = 170
lblDist.Left = 10
local edtDist = createEdit(form)
edtDist.Top = lblDist.Top
edtDist.Left = 120
edtDist.Width = 100
edtDist.Text = 4

local lblFly = createLabel(form)
lblFly.Caption = "Fly speed:"
lblFly.Top = 200
lblFly.Left = 10
local edtFly = createEdit(form)
edtFly.Top = lblFly.Top
edtFly.Left = 120
edtFly.Width = 100
edtFly.Text = 50

local lblSpeed = createLabel(form)
lblSpeed.Caption = "Speed:"
lblSpeed.Top = 230
lblSpeed.Left = 10

local edtSpeed = createEdit(form)
edtSpeed.Top = lblSpeed.Top
edtSpeed.Left = 120
edtSpeed.Width = 100
edtSpeed.Text = 50

local btnMove = createButton(form)
btnMove.Caption = "Teleport"
btnMove.Top = 260
btnMove.Left = 0
btnMove.Width = 50

local someBool = true

local smBool = createCheckBox(form)
smBool.Caption = "PID Check"
smBool.Left = 20
smBool.Top = btnMove.Top + 30
smBool.State = 1

local unfps = createCheckBox(form)
unfps.Caption = "CPU Usage Optimization"
unfps.Left = 20
unfps.Top = smBool.Top + 20
unfps.State = 0
unfps.OnChange = function()
uncapFPS = not uncapFPS
if uncapFPS then
autoAssemble(uncapScript)
else
autoAssemble(disableUncapScript)
end
end

local bpAlwaysOn = createCheckBox(form)
bpAlwaysOn.Caption = "Bypass Always On"
bpAlwaysOn.Left = 200
bpAlwaysOn.Top = smBool.Top
bpAlwaysOn.State = 0

local btnLoad = createButton(form)
btnLoad.Caption = "Save Pos"
btnLoad.Top = btnMove.Top
btnLoad.Left = 50
btnLoad.Width = 50

local btnAddWaypoint = createButton(form)
btnAddWaypoint.Caption = "Quick WP"
btnAddWaypoint.Top = btnMove.Top
btnAddWaypoint.Left = 100
btnAddWaypoint.Width = 50

local btnWaypoints = createButton(form)
btnWaypoints.Caption = "Waypoints"
btnWaypoints.Top = btnMove.Top
btnWaypoints.Left = 150
btnWaypoints.Width = 75

local waypoints = {}
waypointForm = createForm()
waypointForm.Caption = "Waypoints"
waypointForm.Height = 300
waypointForm.Width = 400
waypointForm.FormStyle = 'fsSystemStayOnTop'
waypointForm.ShowInTaskBar = 'stAlways'
waypointForm.BorderStyle = 'bsSizeable'
waypointForm.AlphaBlend = true
waypointForm.AlphaBlendValue = form.AlphaBlendValue

local waypointMemo = createMemo(waypointForm)
waypointMemo.Top = 10
waypointMemo.Left = 10
waypointMemo.Width = 380
waypointMemo.Height = 200
waypointMemo.ReadOnly = true

local lblSkipHotkey = createLabel(form)
lblSkipHotkey.Caption = "Skip Hotkey:"
lblSkipHotkey.Top = 20
lblSkipHotkey.Left = 250
local edtSkipHotkey = createEdit(form)
edtSkipHotkey.Top = lblSkipHotkey.Top
edtSkipHotkey.Left = 350
edtSkipHotkey.Width = 100

local lblTeleportHotkey = createLabel(form)
lblTeleportHotkey.Caption = "Teleport Hotkey:"
lblTeleportHotkey.Top = 50
lblTeleportHotkey.Left = 250




local edtTeleportHotkey = createEdit(form)
edtTeleportHotkey.Top = lblTeleportHotkey.Top
edtTeleportHotkey.Left = 350
edtTeleportHotkey.Width = 100

local lblSavePosHotkey = createLabel(form)
lblSavePosHotkey.Caption = "Save Pos Hotkey:"
lblSavePosHotkey.Top = 80
lblSavePosHotkey.Left = 250
local edtSavePosHotkey = createEdit(form)
edtSavePosHotkey.Top = lblSavePosHotkey.Top
edtSavePosHotkey.Left = 350
edtSavePosHotkey.Width = 100


local lblSpeedHotkey = createLabel(form)
lblSpeedHotkey.Caption = "Speed Hotkey:"
lblSpeedHotkey.Top = 110
lblSpeedHotkey.Left = 250
local edtSpeedHotkey = createEdit(form)
edtSpeedHotkey.Top = lblSpeedHotkey.Top
edtSpeedHotkey.Left = 350
edtSpeedHotkey.Width = 100

local lblSaveWPHotkey = createLabel(form)
lblSaveWPHotkey.Caption = "Save WP Hotkey:"
lblSaveWPHotkey.Top = 140
lblSaveWPHotkey.Left = 250
local edtSaveWPHotkey = createEdit(form)
edtSaveWPHotkey.Top = lblSaveWPHotkey.Top
edtSaveWPHotkey.Left = 350
edtSaveWPHotkey.Width = 100

local lblFlyHotkey = createLabel(form)
lblFlyHotkey.Caption = "Fly Hotkey:"
lblFlyHotkey.Top = 170
lblFlyHotkey.Left = 250
local edtFlyHotkey = createEdit(form)
edtFlyHotkey.Top = lblFlyHotkey.Top
edtFlyHotkey.Left = 350
edtFlyHotkey.Width = 100

local lblNcHotkey = createLabel(form)
lblNcHotkey.Caption = "Noclip Hotkey:"
lblNcHotkey.Top = 200
lblNcHotkey.Left = 250
local edtNcHotkey = createEdit(form)
edtNcHotkey.Top = lblNcHotkey.Top
edtNcHotkey.Left = 350
edtNcHotkey.Width = 100

local btnaahotkey = createButton(form)
btnaahotkey.Caption = "Auto Attack:"
btnaahotkey.Top = 230
btnaahotkey.Left = 250
btnaahotkey.OnClick = function()
aa = not aa
if aa then
autoAssemble(aaScript)
else
autoAssemble(disableAAScript)
end
end

local edtaahotkey = createEdit(form)
edtaahotkey.Top = btnaahotkey.Top
edtaahotkey.Left = 350
edtaahotkey.Width = 100


local lblStatus = createLabel(form)
lblStatus.Caption = "Module Status:"
lblStatus.Top = 20
lblStatus.Left = 500
lblStatus.Font.Size = 14

local lblFlyStatus = createLabel(form)
lblFlyStatus.Caption = "Fly:"
lblFlyStatus.Top = 50
lblFlyStatus.Left = lblStatus.Left

local lblSpeedStatus = createLabel(form)
lblSpeedStatus.Caption = "Speed:"
lblSpeedStatus.Top = 80
lblSpeedStatus.Left = lblStatus.Left

local lblNoclipStatus = createLabel(form)
lblNoclipStatus.Caption = "Noclip:"
lblNoclipStatus.Top = 110
lblNoclipStatus.Left = lblStatus.Left

local lblTeleportStatus = createLabel(form)
lblTeleportStatus.Caption = "Teleporting:"
lblTeleportStatus.Top = 140
lblTeleportStatus.Left = lblStatus.Left

local lblAAStatus = createLabel(form)
lblAAStatus.Caption = "Auto Attack:"
lblAAStatus.Top = 170
lblAAStatus.Left = lblStatus.Left

local lblBypassStatus = createLabel(form)
lblBypassStatus.Caption = "b:"
lblBypassStatus.Top = 200
lblBypassStatus.Left = lblStatus.Left

function getDocumentsFolder()
return os.getenv("USERPROFILE") .. "\\Documents"
end


local statusUpdateTimer = createTimer(nil, false)
statusUpdateTimer.Interval = 100
statusUpdateTimer.OnTimer = function()
lblFlyStatus.Fon*****lor = flyOn and 0x00FF00 or 0x0000FF
lblFlyStatus.Caption = "Fly: " .. (flyOn and "Active" or "Inactive")

lblSpeedStatus.Fon*****lor = speedOn and 0x00FF00 or 0x0000FF
lblSpeedStatus.Caption = "Speed: " .. (speedOn and "Active" or "Inactive")

lblNoclipStatus.Fon*****lor = noclip and 0x00FF00 or 0x0000FF
lblNoclipStatus.Caption = "Noclip: " .. (noclip and "Active" or "Inactive")

lblTeleportStatus.Fon*****lor = isTeleporting and 0x00FF00 or 0x0000FF
lblTeleportStatus.Caption = "Teleporting: " .. (isTeleporting and "Active" or "Inactive")

lblAAStatus.Fon*****lor = aa and 0x00FF00 or 0x0000FF
lblAAStatus.Caption = "Auto Attack: " .. (aa and "Active" or "Inactive")

lblBypassStatus.Fon*****lor = bypass and 0x00FF00 or 0x0000FF
lblBypassStatus.Caption = "Bypass: " .. (bypass and "Active" or "Inactive")
end

statusUpdateTimer.Enabled = true

local about = createButton(form)
about.Caption = "About"
about.Top = btnMove.Top + 30
about.Left = lblStatus.Left - 130
about.OnClick = function()
local aboutForm = createForm()
aboutForm.Caption = "About"
aboutForm.Width = 400
aboutForm.Height = 300
aboutForm.Position = poScreenCenter

local aboutMemo = createMemo(aboutForm)
aboutMemo.Align = alClient
aboutMemo.ReadOnly = true
aboutMemo.WordWrap = true
aboutMemo.ScrollBars = ssVertical
aboutMemo.Lines.Text = [[
**TP Destination XYZ Fields:**
Accepts both absolute and relative destinations. Use '~' for relative positions. For example, 'Destination X: ~1000' teleports you 1000 blocks east from your current position.

**Delay (ms):**
This field specifies the wait time between each teleportation step.
Default: 25

**Skip Distance:**
Used by the skip module, which teleports you the specified number of blocks in the direction you're facing.
Default: 4

**Hotkeys:**
Use Virtual Keycodes to map your hotkeys. See Keycodes (https://learn.microsof*****m/en-us/w...tual-key-codesⓘ) for reference.

**Map Overlay:**
Creates a semi-transparent overlay over the in-game map, allowing you to click and teleport to the desired location.

**Alt Bypass:**
Injects movement bypass into all running trove processes.

**CPU Usage Optimization:**
While disabled, your FPS will not be limited while tabbed out of the game, required for smooth teleportation.

~OwO~
]]
end

local altsBypassBtn = createButton(form)
altsBypassBtn.Caption = "Alt Bypass"
altsBypassBtn.Top = btnMove.Top + 30
altsBypassBtn.Left = lblStatus.Left - 30
altsBypassBtn.OnClick = function()
local trovePIDs = {}
local currentPID = getOpenedProcessID()

for pid, name in pairs(getProcessList()) do
if name:lower() == "trove.exe" and pid ~= currentPID then
table.insert(trovePIDs, pid)
end
end

for _, pid in ipairs(trovePIDs) do
openProcess(pid)
autoAssemble(registerSymbols)
autoAssemble(bS)
autoAssemble(uncapScript)
print("Opening PID " .. pid)
end

if currentPID then
openProcess(currentPID)
print("Returning to PID " .. currentPID)
end
end

local function updateWaypointList()
waypointMemo.Lines.Clear()
for i, wp in ipairs(waypoints) do
waypointMemo.Lines.Add(string.format("%d. %s (%.2f, %.2f, %.2f)", i, wp.name, wp.x, wp.y, wp.z))
end
end

btnAddWaypoint.OnClick = function()
local x, y, z = getPlayerCoordinates()

local function generateRandomString(length)
local chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw xyz0123456789'
local randomString = ''
for i = 1, length do
local randIndex = math.random(1, #chars)
randomString = randomString .. chars:sub(randIndex, randIndex)
end
return randomString
end

local function isUnique(name)
for _, waypoint in ipairs(waypoints) do
if waypoint.name == name then
return false
end
end
return true
end

local name
repeat
name = generateRandomString(5)
until isUnique(name)

table.insert(waypoints, {name = name, x = x, y = y, z = z})
updateWaypointList()
end

local btnCustomWaypoint = createButton(waypointForm)
btnCustomWaypoint.Caption = "Add Custom"
btnCustomWaypoint.Top = 220
btnCustomWaypoint.Left = 95
btnCustomWaypoint.Width = 75
btnCustomWaypoint.OnClick = function()
local input = inputQuery("Custom Waypoint", "Name;x;y;z", "")
if input then
local name, x, y, z = input:match("([^;]+);([^;]+);([^;]+);([^;]+)")
x, y, z = tonumber(x), tonumber(y), tonumber(z)
if name and x and y and z then
table.insert(waypoints, {name = name, x = x, y = y, z = z})
updateWaypointList()
else
showMessage("Invalid format. Name;x;y;z.")
end
end
end

btnWaypoints.OnClick = function()
waypointForm.show()
updateWaypointList()
end

local btnTeleportWaypoint = createButton(waypointForm)
btnTeleportWaypoint.Caption = "Teleport"
btnTeleportWaypoint.Top = 220
btnTeleportWaypoint.Left = 10
btnTeleportWaypoint.Width = 75
local waypointIndices = {}
local currentIndex = 1

local function parseInput(input)
local indices = {}
for part in string.gmatch(input, "[^;]+") do
if string.find(part, "-") then
local start, stop = string.match(part, "(%d+)%-(%d+)")
start, stop = tonumber(start), tonumber(stop)
if start and stop then
if start &lt; stop then
for i = start, stop do
table.insert(indices, i)
end
else
for i = start, stop, -1 do
table.insert(indices, i)
end
end
end
else
local num = tonumber(part)
if num then
table.insert(indices, num)
end
end
end
return indices
end

local function moveToNextWaypoint()
if currentIndex &lt;= #waypointIndices then
local index = waypointIndices[currentIndex]
if waypoints[index] then
local wp = waypoints[index]
local skipX = wp.x
local skipY = wp.y
local skipZ = wp.z
movePlayerTowardsAbsDestination(skipX, skipY, skipZ, tonumber(edtS.Text), tonumber(edtT.Text))
currentIndex = currentIndex + 1
end
end
end

btnTeleportWaypoint.OnClick = function()
local input = inputQuery("Teleport to Waypoints", "Enter waypoint numbers (1;2;4)/(1-4)/(1-4;6-2):", "")
if input then
waypointIndices = parseInput(input)
currentIndex = 1
if #waypointIndices &gt; 0 then
local pid = getOpenedProcessID()
if pid then
executeCodeLocal('SetForegroundWindow', pid)
moveToNextWaypoint()
end
end
end
end

local btnDeleteWaypoint = createButton(waypointForm)
btnDeleteWaypoint.Caption = "Delete"
btnDeleteWaypoint.Top = 250
btnDeleteWaypoint.Left = 180
btnDeleteWaypoint.Width = 75
btnDeleteWaypoint.OnClick = function()
local index = tonumber(inputQuery("Delete Waypoint", "Enter waypoint number to delete:", ""))
if index and waypoints[index] then
table.remove(waypoints, index)
updateWaypointList()
end
end
local btnDeleteAllWaypoints = createButton(waypointForm)
btnDeleteAllWaypoints.Caption = "Delete All"
btnDeleteAllWaypoints.Top = 250
btnDeleteAllWaypoints.Left = 265
btnDeleteAllWaypoints.Width = 75
btnDeleteAllWaypoints.OnClick = function()
for i = #waypoints, 1, -1 do
table.remove(waypoints, i)
end
updateWaypointList()
end
local btnSaveWaypoints = createButton(waypointForm)
btnSaveWaypoints.Caption = "Save"
btnSaveWaypoints.Top = 250
btnSaveWaypoints.Left = 10
btnSaveWaypoints.Width = 75
btnSaveWaypoints.OnClick = function()
local fileName = getDocumentsFolder() .. "waypoints.txt"
local file = io.open(fileName, "w")
if file then
for _, wp in ipairs(waypoints) do
file:write(string.format("%s,%.2f,%.2f,%.2f\n", wp.name, wp.x, wp.y, wp.z))
end
file:close()
end
end
local btnLoadWaypoints = createButton(waypointForm)
btnLoadWaypoints.Caption = "Load"
btnLoadWaypoints.Top = 250
btnLoadWaypoints.Left = 95
btnLoadWaypoints.Width = 75
btnLoadWaypoints.OnClick = function()
local fileName = getDocumentsFolder() .. "waypoints.txt"
local file = io.open(fileName, "r")
if file then
waypoints = {}
for line in file:lines() do
local name, x, y, z = line:match("([^,]+),([^,]+),([^,]+),([^,]+)")
if name and x and y and z then
table.insert(waypoints, {name = name, x = tonumber(x), y = tonumber(y), z = tonumber(z)})
end
end
file:close()
updateWaypointList()
end
end

waypointForm.OnClose = function()
closeAction = 0
waypointForm.Visible = false
end

updateWaypointList()
waypointForm.hide()

local timer = createTimer(nil, false)
local stepSize = tonumber(edtS.Text)
local currentX, currentY, currentZ
local destX, destY, destZ
local stepX, stepY, stepZ
local stepsRemaining
function getPlayerCoordinates()
local success, x, y, z = pcall(function()
local x = readFloat(xCoordAddr)
local y = readFloat(yCoordAddr)
local z = readFloat(zCoordAddr)

if not (x and y and z) then
error("One or more position records are missing")
end

return x, y, z
end)

if not success then
print("Error getting player coordinates: " .. tostring(x))
return nil, nil, nil
end

return x, y, z
end

function setPlayerCoordinates(x, y, z)
local success, error = pcall(function()
local posX = readFloat(xCoordAddr)
local posY = readFloat(yCoordAddr)
local posZ = readFloat(zCoordAddr)

if not (posX and posY and posZ) then
error("One or more position records are missing")
end

writeFloat(xCoordAddr, x)
writeFloat(yCoordAddr, y)
writeFloat(zCoordAddr, z)
end)

if not success then
print("Error setting player coordinates: " .. tostring(error))
return false
end

return true
end

local previousFlyOn = false
local previousNoclipActive = false

function stopTP()
timer.Enabled = false
flyOn = previousFlyOn
-- noclip.Active = previousNoclipActive
isTeleporting = false
end

local function isAnyVelocityNonZero()
return readFloat(xVelAddr) ~= 0 or readFloat(yVelAddr) ~= 0 or readFloat(zVelAddr) ~= 0
end

local function isAnyCoordNonNil()
return readFloat(xCoordAddr) ~= nil or readFloat(yCoordAddr) ~= nil or readFloat(zCoordAddr) ~= nil
end

function preciseSleep(ms)
if ms &lt;= 0 then return end

local start = os.clock()
local duration = ms / 1000
while os.clock() - start &lt; duration do end
end

function teleportStep()
local thread = createThread(function()
while isTeleporting do
if not isTeleporting then
stopTP()
return
end
if not isAnyCoordNonNil() then
stopTP()
return
end
currentX, currentY, currentZ = getPlayerCoordinates()
stepSize = tonumber(edtS.Text)
stepDelay = tonumber(edtT.Text)
local success, distance = pcall(function()
return math.sqrt((destX - currentX)^2 + (destY - currentY)^2 + (destZ - currentZ)^2)
end)

if not success or not distance or distance ~= distance then
stopTP()
return
end

if distance &gt; stepSize then
local success, error = pcall(function()
local directionX = (destX - currentX) / distance
local directionY = (destY - currentY) / distance
local directionZ = (destZ - currentZ) / distance

local newX = currentX + directionX * stepSize
local newY = currentY + directionY * stepSize
local newZ = currentZ + directionZ * stepSize

setPlayerCoordinates(newX, newY, newZ)
end)

if not success then
stopTP()
return
end
else
if not isTeleporting then
stopTP()
return
end
if not isAnyCoordNonNil() then
stopTP()
return
end
local success, error = pcall(function()
setPlayerCoordinates(destX, destY, destZ)
stopTP()
moveToNextWaypoint()
end)

if not success then
stopTP()
end
return
end
preciseSleep(stepDelay)
end
end)
end

function movePlayerTowardsAbsDestination(skipX, skipY, skipZ, stepSize, stepDelay)
if isTeleporting then
stopTP()
return
end

previousFlyOn = flyOn
-- previousNoclipActive = noclip.Active

destX = skipX
destY = skipY
destZ = skipZ

flyOn = true
-- noclip.Active = true
isTeleporting = true

teleportStep()
end

local followedPlayerName = nil

function followPlayer()
if not isTeleporting or not followedPlayerName then
stopTP()
return
end

if not isAnyCoordNonNil() then
stopTP()
return
end

currentX, currentY, currentZ = getPlayerCoordinates()
stepSize = tonumber(edtS.Text)
stepDelay = tonumber(edtT.Text)
local distance = math.sqrt((targX - currentX)^2 + (targY - currentY)^2 + (targZ - currentZ)^2)

if not distance or distance ~= distance then
stopTP()
return
end

if distance &gt; stepSize then
local directionX = (targX - currentX) / distance
local directionY = (targY - currentY) / distance
local directionZ = (targZ - currentZ) / distance

local newX = currentX + directionX * stepSize
local newY = currentY + directionY * stepSize
local newZ = currentZ + directionZ * stepSize

setPlayerCoordinates(newX, newY, newZ)
else
if not isTeleporting then
stopTP()
return
end
if not isAnyCoordNonNil() then
stopTP()
return
end
setPlayerCoordinates(targX, targY, targZ)
end
end

local overlay = createForm(true)
overlay.Width = 768
overlay.Height = 560
overlay.Left = (1920 - overlay.Width) / 2.02
overlay.Top = (1080 - overlay.Height) / 2.32
overlay.Caption = ''


overlay.AlphaBlend = true
overlay.AlphaBlendValue = 200
overlay.FormStyle = 'fsSystemStayOnTop'


btnoverlay = createButton(form)
btnoverlay.Caption = "Map Overlay"
btnoverlay.Top = btnMove.Top
btnoverlay.Left = lblStatus.Left - 30
btnoverlay.Width = 100

overlay.Hide()

function getGridSize(zoomValue)
local baseZoomValue = 2.0
local baseGridWidth = 800
local baseGridHeight = baseGridWidth / 1.3333333
local zoomRatio = 0.93
local widthRatio = 1.075

local zoomLevel = math.log(zoomValue / baseZoomValue) / math.log(zoomRatio)

local gridWidth = baseGridWidth * (widthRatio ^ zoomLevel)

local gridHeight = gridWidth / 1.3333333

return gridWidth, gridHeight
end

function mapToWorldCoordinates(x, y)
local playerX, playerY, playerZ = getPlayerCoordinates()
local zoomValue = readFloat(zoomAddr)
local gridWidth, gridHeight = getGridSize(zoomValue)

local scaleX = gridWidth / overlay.Width
local scaleZ = gridHeight / overlay.Height

local mapX = (x - overlay.Width / 2) * scaleX
local mapZ = (y - overlay.Height / 2) * scaleZ

local worldX = playerX + mapX
local worldZ = playerZ + mapZ

return worldX, playerY, worldZ
end

overlay.OnMouseDown = function(sender, button, x, y)
if button == 0 then
local worldX, worldY, worldZ = mapToWorldCoordinates(x, y)
movePlayerTowardsAbsDestination(worldX, worldY, worldZ, tonumber(edtS.Text), tonumber(edtT.Text))
elseif button == 1 then
local worldX, worldY, worldZ = mapToWorldCoordinates(x, y)
local name = inputQuery("Enter Waypoint Name", "Name:", "")
if name and name ~= "" then
table.insert(waypoints, {name = name, x = worldX, y = worldY, z = worldZ})
updateWaypointList()
end
end
end


function getPlayers(index)
local basePlrPtr = string.format("[[[%s]+FC]+00]+%X", worldBasePtr, (index * 4))
local name_addr = getAddress(string.format("[[%s]+1D0]+00", basePlrPtr))
local x_addr = getAddress(string.format("[[[%s]+C4]+04]+80", basePlrPtr))
local y_addr = getAddress(string.format("[[[%s]+C4]+04]+84", basePlrPtr))
local z_addr = getAddress(string.format("[[[%s]+C4]+04]+88", basePlrPtr))
local name = readString(name_addr)
local x = readFloat(x_addr)
local y = readFloat(y_addr)
local z = readFloat(z_addr)
return name, x, y, z
end

local refreshTimer = createTimer(overlay, false)
refreshTimer.Interval = 250

function renderPlayers()
overlay.Canvas.clear()
if not isAnyCoordNonNil() then
refreshTimer.Enabled = false
return
end

local playerCount = readInteger(plrCountAddr)
local playerX, playerY, playerZ = getPlayerCoordinates()
local zoomValueMap = readFloat(zoomAddr)

local gridWidth, gridHeight = getGridSize(zoomValueMap)

local scaleX = gridWidth / overlay.Width
local scaleZ = gridHeight / overlay.Height

for _, waypoint in ipairs(waypoints) do
local name, wx, wz = waypoint.name, waypoint.x, waypoint.z

local relativeX = (wx - playerX) / scaleX
local relativeZ = (wz - playerZ) / scaleZ

local screenX = (overlay.Width / 2) + relativeX
local screenY = (overlay.Height / 2) + relativeZ

if screenX &gt;= 0 and screenX &lt;= overlay.Width and screenY &gt;= 0 and screenY &lt;= overlay.Height then
local iconSize = 8
overlay.Canvas.Pen.Color = 0x00CCFF
overlay.Canvas.Pen.Width = 1
overlay.Canvas.Brush.Color = 0x000000
overlay.Canvas.Ellipse(screenX - iconSize / 2, screenY - iconSize - 2, screenX + iconSize / 2, screenY - 2)
overlay.Canvas.TextOut(screenX, screenY + 2, name)
end
end

for i = 0, playerCount - 1 do
local name, x, y, z = getPlayers(i)
local relativeX = (x - playerX) / scaleX
local relativeZ = (z - playerZ) / scaleZ

local screenX = (overlay.Width / 2) + relativeX
local screenY = (overlay.Height / 2) + relativeZ
if screenX &gt;= 0 and screenX &lt;= overlay.Width and screenY &gt;= 0 and screenY &lt;= overlay.Height then
local iconSize = 10
overlay.Canvas.Pen.Color = 0x00FF00
overlay.Canvas.Pen.Width = 1
overlay.Canvas.Brush.Color = 0x000000
overlay.Canvas.Ellipse(screenX - iconSize / 2, screenY - iconSize - 2, screenX + iconSize / 2, screenY - 2)
overlay.Canvas.TextOut(screenX, screenY + 2, name)
else
local centerX, centerY = overlay.Width / 2, overlay.Height / 2
local dx, dy = screenX - centerX, screenY - centerY
local angle = math.atan2(dy, dx)
local edgeX, edgeY
if math.abs(dx) &gt; math.abs(dy) then
if dx &gt; 0 then
edgeX = overlay.Width - 5
else
edgeX = 5
end
edgeY = centerY + (edgeX - centerX) * dy / dx
else
if dy &gt; 0 then
edgeY = overlay.Height - 5
else
edgeY = 5
end
edgeX = centerX + (edgeY - centerY) * dx / dy
end
overlay.Canvas.Pen.Color = 0x0000FF
overlay.Canvas.Pen.Width = 2
overlay.Canvas.Brush.Color = 0x000000
overlay.Canvas.MoveTo(edgeX, edgeY)
local arrowSize = 10
overlay.Canvas.LineTo(edgeX - arrowSize * math.cos(angle + math.pi / 4), edgeY - arrowSize * math.sin(angle + math.pi / 4))
overlay.Canvas.MoveTo(edgeX, edgeY)
overlay.Canvas.LineTo(edgeX - arrowSize * math.cos(angle - math.pi / 4), edgeY - arrowSize * math.sin(angle - math.pi / 4))

-- render the player name under the arrow
--overlay.Canvas.TextOut(edgeX + 5 * math.cos(angle), edgeY + 5 * math.sin(angle) + 2, name)
end
end
end




refreshTimer.OnTimer = function(timer)
renderPlayers()
end

overlay.OnClose = function()
closeAction = 0
overlay.Visible = false
refreshTimer.Enabled = false
end
btnoverlay.OnClick = function()
if not overlay.Visible then
overlay.Show()
refreshTimer.Enabled = true
else
overlay.Visible = false
refreshTimer.Enabled = false
end
end


btnlist = createButton(form)
btnlist.Caption = "Player List"
btnlist.Top = btnMove.Top + 30
btnlist.Left = lblStatus.Left + 50
btnlist.Width = 80
btnlist.OnClick = function()
pform = createForm()
pform.Caption = "Player List"
pform.Width = 425
pform.Height = 500
pform.FormStyle = 'fsSystemStayOnTop'
pform.ShowInTaskBar = 'stAlways'
pform.BorderStyle = 'bsSizeable'
pform.AlphaBlend = true
pform.AlphaBlendValue = form.AlphaBlendValue

local playerCountLabel = createLabel(pform)
playerCountLabel.Caption = "Player Count: "
playerCountLabel.Left = 10
playerCountLabel.Top = 10

local controls = {}

local function updatePlayerList()
if not isAnyCoordNonNil() then
if #controls == 0 then
local noDataLabel = createLabel(pform)
noDataLabel.Caption = "No valid player data available."
noDataLabel.Left = 10
noDataLabel.Top = 30
table.insert(controls, noDataLabel)
end
return
end

local playerCount = readInteger(plrCountAddr)
playerCountLabel.Caption = "Player Count: " .. playerCount
while #controls &lt; playerCount * 4 do
local nameLabel = createLabel(pform)
table.insert(controls, nameLabel)

local coordLabel = createLabel(pform)
table.insert(controls, coordLabel)

local teleportButton = createButton(pform)
table.insert(controls, teleportButton)

local followButton = createButton(pform)
table.insert(controls, followButton)
end
for i = 0, playerCount - 1 do
local name, x, y, z = getPlayers(i)
local yPos = 30 + i * 30

local nameLabel = controls[i * 4 + 1]
nameLabel.Caption = name
nameLabel.Left = 10
nameLabel.Top = yPos

local function safeFloor(value)
return value and math.floor(value) or 0
end

local coordLabel = controls[i * 4 + 2]
coordLabel.Caption = string.format("X: %d | Y: %d | Z: %d", safeFloor(x), safeFloor(y), safeFloor(z))
coordLabel.Left = 150
coordLabel.Top = yPos

local teleportButton = controls[i * 4 + 3]
teleportButton.Caption = "Teleport"
teleportButton.Left = 275
teleportButton.Top = yPos - 5
teleportButton.OnClick = function()
movePlayerTowardsAbsDestination(x, y, z)
end

if name == followedPlayerName then
targX, targY, targZ = x, y, z
end

local followButton = controls[i * 4 + 4]
followButton.Caption = followedPlayerName == name and "Stop" or "Follow"
followButton.Left = 350
followButton.Top = yPos - 5
followButton.OnClick = function()
if followedPlayerName == name then
stopTP()
followedPlayerName = nil
followButton.Caption = "Follow"
else
followedPlayerName = name
isTeleporting = true
local followThread = createThread(function()
while isTeleporting do
followPlayer()
preciseSleep(tonumber(edtT.Text))
end
end)
followButton.Caption = "Stop"
end
end
end
for i = playerCount * 4 + 1, #controls do
controls[i].Visible = false
end
end

local timer = createTimer(pform, true)
timer.Interval = 100
timer.OnTimer = updatePlayerList

updatePlayerList()

pform.Show()
end

slider.OnChange = function(s)
if form then
form.AlphaBlendValue = slider.Position
end

if pform then
pform.AlphaBlendValue = slider.Position
end

if waypointForm then
waypointForm.AlphaBlendValue = slider.Position
end
end




local function parseCoordinate(input, current)
if input:sub(1, 1) == "~" then
local offset = tonumber(input:sub(2))
if offset then
return current + offset
else
return current
end
else
return tonumber(input)
end
end

tphotkeyfunc = function()
local pid = getOpenedProcessID()
local fpid = getForegroundProcess()
if someBool then
if fpid == pid then
currentX, currentY, currentZ = getPlayerCoordinates()

destX = parseCoordinate(edtX.Text, currentX)
destY = parseCoordinate(edtY.Text, currentY)
destZ = parseCoordinate(edtZ.Text, currentZ)

StepSize = tonumber(edtS.Text)
StepDelay = tonumber(edtT.Text)

if destX and destY and destZ then
movePlayerTowardsAbsDestination(destX, destY, destZ, StepSize, StepDelay)
end
end
else
currentX, currentY, currentZ = getPlayerCoordinates()

destX = parseCoordinate(edtX.Text, currentX)
destY = parseCoordinate(edtY.Text, currentY)
destZ = parseCoordinate(edtZ.Text, currentZ)

StepSize = tonumber(edtS.Text)
StepDelay = tonumber(edtT.Text)

if destX and destY and destZ then
movePlayerTowardsAbsDestination(destX, destY, destZ, StepSize, StepDelay)
end
end
end

btnMove.OnClick = function()
local pid = getOpenedProcessID()
if pid then
executeCodeLocal('SetForegroundWindow', pid)
currentX, currentY, currentZ = getPlayerCoordinates()

destX = parseCoordinate(edtX.Text, currentX)
destY = parseCoordinate(edtY.Text, currentY)
destZ = parseCoordinate(edtZ.Text, currentZ)

StepSize = tonumber(edtS.Text)
StepDelay = tonumber(edtT.Text)

if destX and destY and destZ then
movePlayerTowardsAbsDestination(destX, destY, destZ, StepSize, StepDelay)
end
end
end

btnLoad.OnClick = function()
edtX.Text, edtY.Text, edtZ.Text = getPlayerCoordinates()
end

speedOn = false
flyOn = false

local function speedSwitch()
speedOn = not speedOn
if speedOn then
flyOn = false
end
end

local function flySwitch()
flyOn = not flyOn
if flyOn then
speedOn = false
end
end

local function ncSwitch()
local pid = getOpenedProcessID()
local fpid = getForegroundProcess()

if someBool then
if fpid == pid then
if noclip then
noclip = false
autoAssemble(disableNoclipScript)
else
noclip = true
autoAssemble(noclipScript)
end
end
else
if noclip then
noclip = false
autoAssemble(disableNoclipScript)
else
noclip = true
autoAssemble(noclipScript)
end
end
end

local function isCtrlPressed()
return isKeyPressed(0x11)
end
local function isWPressed()
return isKeyPressed(0x57)
end
local function isAPressed()
return isKeyPressed(0x41)
end
local function isSPressed()
return isKeyPressed(0x53)
end
local function isDPressed()
return isKeyPressed(0x44)
end
local function isSpacePressed()
return isKeyPressed(0x20)
end
local function isZPressed()
return isKeyPressed(0x5A)
end
local function isShiftPressed()
return isKeyPressed(0x10)
end

local function isAnyKeyPressed()
local pid = getOpenedProcessID()
local fpid = getForegroundProcess()
if (isWPressed() or isAPressed() or isSPressed() or isDPressed() or isZPressed() or isShiftPressed() or isCtrlPressed() or isSpacePressed()) and fpid == pid then
return true
else return false
end
end

local flyTimer = createTimer(nil, false)
flyTimer.Interval = 10
flyTimer.OnTimer = function(flyTimer)
local pid = getOpenedProcessID()
local fpid = getForegroundProcess()

if flyOn then
local success, error = pcall(function()
local xper = readFloat(xPerAddr)
local yper = readFloat(yPerAddr)
local zper = readFloat(zPerAddr)
local xvel = readFloat(xVelAddr)
local yvel = readFloat(yVelAddr)
local zvel = readFloat(zVelAddr)
if not (xper and yper and zper and xvel and yvel and zvel) then
return
end

local xFlyNewVel = 0
local yFlyNewVel = 0.39
local zFlyNewVel = 0
local flySpeed = edtFly.Text
local hrzMagnitude = math.sqrt(xper * xper + zper * zper)
local xMagnitude = xper / hrzMagnitude
local zMagnitude = zper / hrzMagnitude

if isWPressed() and fpid == pid then
xFlyNewVel = xFlyNewVel + xMagnitude * flySpeed
zFlyNewVel = zFlyNewVel + zMagnitude * flySpeed
end
if isAPressed() and fpid == pid then
xFlyNewVel = xFlyNewVel + zMagnitude * flySpeed
zFlyNewVel = zFlyNewVel - xMagnitude * flySpeed
end
if isSPressed() and fpid == pid then
xFlyNewVel = xFlyNewVel - xMagnitude * flySpeed
zFlyNewVel = zFlyNewVel - zMagnitude * flySpeed
end
if isDPressed() and fpid == pid then
xFlyNewVel = xFlyNewVel - zMagnitude * flySpeed
zFlyNewVel = zFlyNewVel + xMagnitude * flySpeed
end
if isSpacePressed() and fpid == pid then
yFlyNewVel = yFlyNewVel + flySpeed
end
if isShiftPressed() and fpid == pid then
yFlyNewVel = yFlyNewVel - flySpeed
end
writeFloat(xVelAddr, xFlyNewVel)
writeFloat(yVelAddr, yFlyNewVel)
writeFloat(zVelAddr, zFlyNewVel)
end)
end
end
local accelSpeedTimer = createTimer(nil, false)
accelSpeedTimer.Interval = 10
accelSpeedTimer.OnTimer = function(accelSpeedTimer)
local pid = getOpenedProcessID()
local fpid = getForegroundProcess()

if speedOn then
local success, error = pcall(function()
local xper = readFloat(xPerAddr)
local yper = readFloat(yPerAddr)
local zper = readFloat(zPerAddr)
local xvel = readFloat(xVelAddr)
local yvel = readFloat(yVelAddr)
local zvel = readFloat(zVelAddr)

if not (xper and yper and zper and xvel and yvel and zvel) then
return
end

local xAccelNewVel = 0
local zAccelNewVel = 0
local accelSpeed = edtSpeed.Text
local hrzMagnitude = math.sqrt(xper * xper + zper * zper)
local xMagnitude = xper / hrzMagnitude
local zMagnitude = zper / hrzMagnitude

if isWPressed() and fpid == pid then
xAccelNewVel = xAccelNewVel + xMagnitude * accelSpeed
zAccelNewVel = zAccelNewVel + zMagnitude * accelSpeed
end
if isAPressed() and fpid == pid then
xAccelNewVel = xAccelNewVel + zMagnitude * accelSpeed
zAccelNewVel = zAccelNewVel - xMagnitude * accelSpeed
end
if isSPressed() and fpid == pid then
xAccelNewVel = xAccelNewVel - xMagnitude * accelSpeed
zAccelNewVel = zAccelNewVel - zMagnitude * accelSpeed
end
if isDPressed() and fpid == pid then
xAccelNewVel = xAccelNewVel - zMagnitude * accelSpeed
zAccelNewVel = zAccelNewVel + xMagnitude * accelSpeed
end
if isSpacePressed() and fpid == pid then
writeFloat(yVelAddr, 25)
end
if isShiftPressed() and fpid == pid then
writeFloat(yVelAddr, 0)
end
writeFloat(xVelAddr, xAccelNewVel)
writeFloat(zVelAddr, zAccelNewVel)
end)
end
end

autoAssemble(uncapScript)
autoAssemble(antigravScript)
local permaLoop = createTimer(nil, true)
permaLoop.Interval = 100
permaLoop.OnTimer = function()
local bpOn = bpAlwaysOn.State == 1
local found = false
local currentPID = getOpenedProcessID()
local processList = getProcessList()
if isAnyKeyPressed() or isTeleporting or isAnyVelocityNonZero() or bpOn or flyOn then
if not bypass then
bypass = true
autoAssemble(bS)
end
else
if bypass then
bypass = false
autoAssemble(disablebS)
end
end

someBool = smBool.State == 1

smBool.Caption = "PID Check | Attached: " .. currentPID

for ppid, name in pairs(processList) do
if ppid == currentPID then
found = true
break
end
end

if not found then
for ppid, name in pairs(processList) do
if name:lower() == "trove.exe" then
openProcess(ppid)
autoAssemble(registerSymbols)
autoAssemble(antigravScript)
if uncapFPS then
autoAssemble(uncapScript)
end
if bpOn then
autoAssemble(bS)
end
return
end
end
end
end

accelSpeedTimer.setEnabled(true)
flyTimer.setEnabled(true)

function skip()
local pid = getOpenedProcessID()
local fpid = getForegroundProcess()

if fpid == pid then
local xper = readFloat(xPerAddr)
local yper = readFloat(yPerAddr)
local zper = readFloat(zPerAddr)
local xcoord = readFloat(xCoordAddr)
local ycoord = readFloat(yCoordAddr)
local zcoord = readFloat(zCoordAddr)
if not (xper and yper and zper and xcoord and ycoord and zcoord) then
return
end
local skipdist = tonumber(edtDist.Text)
local skipdelay = tonumber(edtT.Text)
local skipsize = tonumber(edtS.Text)
local xadd = xper * skipdist
local yadd = yper * skipdist
local zadd = zper * skipdist
local xdest = xcoord + xadd
local ydest = ycoord + yadd
local zdest = zcoord + zadd
local distance = math.sqrt(xadd^2 + yadd^2 + zadd^2)
if distance &lt; 5 then
writeFloat(xCoordAddr, xdest)
writeFloat(yCoordAddr, ydest)
writeFloat(zCoordAddr, zdest)
else
movePlayerTowardsAbsDestination(xdest, ydest, zdest, skipdist, skipdelay)
end
end
end

local btnSaveConfig = createButton(form)
btnSaveConfig.Caption = "Save Config"
btnSaveConfig.Top = btnMove.Top
btnSaveConfig.Left = 250
btnSaveConfig.Width = 100
btnSaveConfig.OnClick = function()
if skipHotkey then skipHotkey.destroy() end
if teleportHotkey then teleportHotkey.destroy() end
if savePosHotkey then savePosHotkey.destroy() end
if speedHotkey then speedHotkey.destroy() end
if saveWPHotkey then saveWPHotkey.destroy() end
if flyHotkey then flyHotkey.destroy() end
if ncHotkey then ncHotkey.destroy() end
if aahotkey then aahotkey.destroy() end

if edtSkipHotkey.Text ~= "" then skipHotkey = createHotkey(skip, edtSkipHotkey.Text) end
if edtTeleportHotkey.Text ~= "" then teleportHotkey = createHotkey(tphotkeyfunc, edtTeleportHotkey.Text) end
if edtSavePosHotkey.Text ~= "" then savePosHotkey = createHotkey(btnLoad.OnClick, edtSavePosHotkey.Text) end
if edtSpeedHotkey.Text ~= "" then speedHotkey = createHotkey(speedSwitch, edtSpeedHotkey.Text) end
if edtSaveWPHotkey.Text ~= "" then saveWPHotkey = createHotkey(btnAddWaypoint.OnClick, edtSaveWPHotkey.Text) end
if edtFlyHotkey.Text ~= "" then flyHotkey = createHotkey(flySwitch, edtFlyHotkey.Text) end
if edtNcHotkey.Text ~= "" then ncHotkey = createHotkey(ncSwitch, edtNcHotkey.Text) end
if edtaahotkey.Text ~= "" then aahotkey = createHotkey(btnaahotkey.OnClick, edtaahotkey.Text) end
local fileName = getDocumentsFolder() .. "config.txt"
local file = io.open(fileName, "w")
if file then
file:write("delay=" .. edtT.Text .. "\n")
file:write("step=" .. edtS.Text .. "\n")
file:write("skipDistance=" .. edtDist.Text .. "\n")
file:write("flySpeed=" .. edtFly.Text .. "\n")
file:write("accelSpeed=" .. edtSpeed.Text .. "\n")
file:write("skipHotkey=" .. edtSkipHotkey.Text .. "\n")
file:write("teleportHotkey=" .. edtTeleportHotkey.Text .. "\n")
file:write("savePosHotkey=" .. edtSavePosHotkey.Text .. "\n")
file:write("speedHotkey=" .. edtSpeedHotkey.Text .. "\n")
file:write("saveWPHotkey=" .. edtSaveWPHotkey.Text .. "\n")
file:write("flyHotkey=" .. edtFlyHotkey.Text .. "\n")
file:write("ncHotkey=" .. edtNcHotkey.Text .. "\n")
file:write("aahotkey=" .. edtaahotkey.Text .. "\n")
file:close()
else
showMessage("Error saving configuration to file.")
end
end

function LoadConfig()
local fileName = getDocumentsFolder() .. "config.txt"
local file = io.open(fileName, "r")
if file then
for line in file:lines() do
local key, value = line:match("([^+)=([^+)")
if key and value then
if key == "delay" then edtT.Text = value end
if key == "step" then edtS.Text = value end
if key == "skipDistance" then edtDist.Text = value end
if key == "flySpeed" then edtFly.Text = value end
if key == "accelSpeed" then edtSpeed.Text = value end
if key == "skipHotkey" then edtSkipHotkey.Text = value end
if key == "teleportHotkey" then edtTeleportHotkey.Text = value end
if key == "savePosHotkey" then edtSavePosHotkey.Text = value end
if key == "speedHotkey" then edtSpeedHotkey.Text = value end
if key == "saveWPHotkey" then edtSaveWPHotkey.Text = value end
if key == "flyHotkey" then edtFlyHotkey.Text = value end
if key == "ncHotkey" then edtNcHotkey.Text = value end
if key == "aahotkey" then edtaahotkey.Text = value end
end
end
file:close()
if edtSkipHotkey.Text ~= "" then skipHotkey = createHotkey(skip, edtSkipHotkey.Text) end
if edtTeleportHotkey.Text ~= "" then teleportHotkey = createHotkey(tphotkeyfunc, edtTeleportHotkey.Text) end
if edtSavePosHotkey.Text ~= "" then savePosHotkey = createHotkey(btnLoad.OnClick, edtSavePosHotkey.Text) end
if edtSpeedHotkey.Text ~= "" then speedHotkey = createHotkey(speedSwitch, edtSpeedHotkey.Text) end
if edtSaveWPHotkey.Text ~= "" then saveWPHotkey = createHotkey(btnAddWaypoint.OnClick, edtSaveWPHotkey.Text) end
if edtFlyHotkey.Text ~= "" then flyHotkey = createHotkey(flySwitch, edtFlyHotkey.Text) end
if edtNcHotkey.Text ~= "" then ncHotkey = createHotkey(ncSwitch, edtNcHotkey.Text) end
if edtaahotkey.Text ~= "" then aahotkey = createHotkey(btnaahotkey.OnClick, edtaahotkey.Text) end
else
showMessage("Error loading configuration from file.")
end
end

local speedHotkeyCode = 0x39 -- Default '9'
local noclipHotkeyCode = 0x38 -- Default '8'

_G.updateHotkeyCodes = function()
local function getVKCode(hotkeyText)
return string.byte(hotkeyText:upper()) -- Convert to ASCII value
end

-- Update hotkey codes based on input fields
if edtSpeedHotkey.Text ~= "" then
speedHotkeyCode = getVKCode(edtSpeedHotkey.Text)
end
if edtNcHotkey.Text ~= "" then
noclipHotkeyCode = getVKCode(edtNcHotkey.Text)
end
end

local function hotkeyLoop()
while true do
if isKeyPressed(speedHotkeyCode) then
speedSwitch()
sleep(100) -- Prevent multiple triggers
end

if isKeyPressed(noclipHotkeyCode) then
ncSwitch()
sleep(100)
end

sleep(10) -- Reduce CPU usage
end
end

-- Update hotkey codes initially and on save
btnSaveConfig.OnClick = function()
-- Call this function after creating hotkeys
updateHotkeyCodes()

-- Other save config logic here...
end

-- Run the hotkey detection in a separate thread
createThread(hotkeyLoop)


local btnLoadConfig = createButton(form)
btnLoadConfig.Caption = "Load Config"
btnLoadConfig.Top = btnMove.Top
btnLoadConfig.Left = 360
btnLoadConfig.Width = 100
btnLoadConfig.OnClick = function()
LoadConfig()
end
LoadConfig()
</LuaScript>
</CheatTable>
update please
update please
Update - 25/04
Need Cheat Engine installed for USE

Main Cheats on this CT

-SpeedHack
-Fly
-Skip
-Player List / Option to follow or tp on them


And some other available in table

SuperMan2504_mpgh.net.rar10 KB · 187 downloads Clean
can you do this to monitor not only the person, but also the coordinates, I want to overcome the repulsion
I found the basic pointer (0x01099CC0), I changed it, skip and fly worked, but speed does not work correctly,The "Player List / Option to follow or tp on them" is also not working correctly. I found that there is another pointer where to get it, I do not understand, does anyone know where to get the second pointer?
Quote Originally Posted by A9ne View Post
I found the basic pointer (0x01099CC0), I changed it, skip and fly worked, but speed does not work correctly,The "Player List / Option to follow or tp on them" is also not working correctly. I found that there is another pointer where to get it, I do not understand, does anyone know where to get the second pointer?

I don't know how it was coded,
but since you have the player list,
the missing address might be EntityList.
Code:
EntityList = 0x1099C70
Try it out and see if it works.
Quote Originally Posted by KilGpt View Post
Need Cheat Engine installed for USE

Main Cheats on this CT

-SpeedHack
-Fly
-Skip
-Player List / Option to follow or tp on them


And some other available in table

Please update again, I love it! Lua doesn't work after 07-05-24 patch
I see people in the playlist, but when I try to follow it, it keeps bringing me back. Also, the speed becomes very fast and uncontrollable in the lua script, I now use the usual multiplication script *4 speed it works correctly, skip and fly I fixed they work

- - - Updated - - -

local SpeedOffsets = {0xC, 0x28, 0x54, 0x88, 0xD0, 0x2DC, 0x1E4}
is this code correct?
Quote Originally Posted by A9ne View Post
I see people in the playlist, but when I try to follow it, it keeps bringing me back. Also, the speed becomes very fast and uncontrollable in the lua script, I now use the usual multiplication script *4 speed it works correctly, skip and fly I fixed they work

- - - Updated - - -

local SpeedOffsets = {0xC, 0x28, 0x54, 0x88, 0xD0, 0x2DC, 0x1E4}
is this code correct?
Would you mind explaining how to fix skip & fly?
//approved
Posts 1–15 of 109 · Page 1 of 8

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?