Page 1 of 3 123 LastLast
Results 1 to 15 of 43
  1. #1
    KilGpt's Avatar
    Join Date
    Oct 2023
    Gender
    male
    Posts
    16
    Reputation
    62
    Thanks
    218

    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

  2. The Following User Says Thank You to KilGpt For This Useful Post:

    IXN3RD3MXN (3 Weeks Ago)

  3. #2
    itsmistertest's Avatar
    Join Date
    May 2023
    Gender
    male
    Posts
    6
    Reputation
    10
    Thanks
    0
    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>
    Last edited by itsmistertest; 4 Weeks Ago at 11:42 AM.

  4. #3
    IXN3RD3MXN's Avatar
    Join Date
    Aug 2021
    Gender
    male
    Posts
    2
    Reputation
    10
    Thanks
    0
    18/02 work tyvm

  5. #4
    KilGpt's Avatar
    Join Date
    Oct 2023
    Gender
    male
    Posts
    16
    Reputation
    62
    Thanks
    218

    Update - 19/04/25 - Lua Script + Table


    Tcheck: https://www.virustotal.com/gui/file/...af05/detection
    Need Cheat Engine Installed , and Lua script On
    <b>Downloadable Files</b> Downloadable Files
    Last edited by meme; 3 Weeks Ago at 02:02 AM.

  6. The Following 9 Users Say Thank You to KilGpt For This Useful Post:

    blex2014 (2 Weeks Ago),FFFeras (3 Weeks Ago),htszt04kan (3 Weeks Ago),IXN3RD3MXN (3 Weeks Ago),joni223 (1 Week Ago),omertokoz (3 Days Ago),pingaso (4 Days Ago),Polka123312 (3 Weeks Ago),SIDJEY (1 Week Ago)

  7. #5
    meme's Avatar
    Join Date
    Jan 2016
    Gender
    male
    Location
    42.434720, -83.985
    Posts
    8,107
    Reputation
    1470
    Thanks
    2,430
    My Mood
    Lurking
    //approved
    Quote Originally Posted by Hennessy View Post
    meme is shittiest general mod ever.
     
    dd/mm/yy
    Member | 28/1/16 - ∞
    Premium | 20/3/16 - ∞
    BattleOn Minion | 24/12/17 - 21/7/21
    Minion+ | 4/4/19 - 11/12/20
    Other MMMORPG Minion | 10/11/19 - 21/7/21
    Publicist | 7/2/20 - Unknown
    Minecraft Minion | 10/12/20 - 21/7/21
    General Minion | 10/12/20 - 21/7/21

    Moderator | 11/12/20 - 21/7/21
    Princess | 5/1/21 - 30/6/21
    Global Moderator | 21/7/21 - ∞
    Pharaoh | 30/1/22 - ∞
    Trusted Member | 16/3/23 - ∞

  8. #6
    FFFeras's Avatar
    Join Date
    Mar 2025
    Gender
    male
    Posts
    1
    Reputation
    10
    Thanks
    0

    update please

    update please

  9. #7
    KilGpt's Avatar
    Join Date
    Oct 2023
    Gender
    male
    Posts
    16
    Reputation
    62
    Thanks
    218

    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

    <b>Downloadable Files</b> Downloadable Files

  10. The Following 13 Users Say Thank You to KilGpt For This Useful Post:

    2CPDonkeys (1 Week Ago),3rd (2 Weeks Ago),Angiexx (2 Weeks Ago),aruserious (2 Weeks Ago),blex2014 (2 Weeks Ago),DarkHorse27 (2 Weeks Ago),frankyz (2 Weeks Ago),Gibby_ (1 Week Ago),KnightAnime (6 Days Ago),pingaso (2 Days Ago),Polka123312 (1 Day Ago),seenaka (2 Weeks Ago),tarnishedsoulz (1 Week Ago)

  11. #8
    Venom's Avatar
    Join Date
    Apr 2015
    Gender
    male
    Location
    /index.php/
    Posts
    10,573
    Reputation
    2055
    Thanks
    1,645
    My Mood
    Goofy
    //approved
    Reputation power: 57
    If I helped you in any way or shape of form, it's always appreciated to thank or give a rep!

    | [ Rules ] | [ Market Place ] | [ Scammers Grave ] | [ Report a scammer ] |


    Achievements:
    News Force - 08-23-2018 - 10-02-2018
    Middleman - 05-09-20 - 19-12-2020
    Former Staff - 19-12-2020 - 09-09-2024
    Steam Minion (steam) - 09-09-2024 - 09-12-2024
    Minion Plus 12-09-2024 - On going


  12. #9
    azamdanius's Avatar
    Join Date
    Nov 2020
    Gender
    male
    Posts
    24
    Reputation
    10
    Thanks
    0
    Hotkey follow bots?

  13. #10
    A9ne's Avatar
    Join Date
    Apr 2025
    Gender
    male
    Posts
    19
    Reputation
    10
    Thanks
    0
    can you do this to monitor not only the person, but also the coordinates, I want to overcome the repulsion

  14. #11
    A9ne's Avatar
    Join Date
    Apr 2025
    Gender
    male
    Posts
    19
    Reputation
    10
    Thanks
    0
    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?
    Last edited by A9ne; 1 Week Ago at 11:40 AM.

  15. #12
    FAISAL32's Avatar
    Join Date
    Nov 2023
    Gender
    male
    Posts
    124
    Reputation
    10
    Thanks
    606
    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.

  16. #13
    abab999's Avatar
    Join Date
    Sep 2024
    Gender
    male
    Posts
    4
    Reputation
    10
    Thanks
    0
    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

  17. #14
    A9ne's Avatar
    Join Date
    Apr 2025
    Gender
    male
    Posts
    19
    Reputation
    10
    Thanks
    0
    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?

  18. #15
    abab999's Avatar
    Join Date
    Sep 2024
    Gender
    male
    Posts
    4
    Reputation
    10
    Thanks
    0
    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?

Page 1 of 3 123 LastLast

Similar Threads

  1. [table]
    By Blitz in forum Suggestions, Requests & General Help
    Replies: 8
    Last Post: 10-23-2011, 01:36 PM
  2. Cheat Table
    By H4ckBlood in forum Call of Duty Modern Warfare 2 Help
    Replies: 16
    Last Post: 02-28-2011, 01:27 PM
  3. need a uce table
    By coledes in forum Combat Arms Hacks & Cheats
    Replies: 1
    Last Post: 08-11-2008, 10:23 PM
  4. CS 1.6 score table
    By IIDracula in forum General
    Replies: 8
    Last Post: 04-12-2008, 08:57 PM