Code:
<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="28">
<Forms>
<CETrainer Class="TTrainerForm" Encoding="Ascii85">(6mxN,cp%1X)[h.)wQKeAe,GGqDZrv^7$lqENfyT=#QqhG_i5duE*g4qC=R$NuD9-Tl6+Z0s+?1YxEIHOB!1mGXb:TyD{,{m+,c2+Ot2n2.uR])M@mwp)+ea#ut_7m$Mrqm/fH-=hJsQ(4vDFOUG:fTdnr+G!{FHWy_o$Qc#w5,L+HoxalPnQn6X=6!XpMAoUWKfnnz#??8}yj#*/6C5)e53nLDYdU6YJ/Y3PamkAYeVuk,LpSU:f/eIc*U6O[hMOqsnQ+IlR6cXEiizn^bJ?rS$CiIO;%eI?*v)*I2WWCPr!38A4R2pDd)}A,i1P+a:HCTz-*$ajoOB0i6z,;QA3t3WDZzTjv9k(.{!M!(a2d9NFtrVu,(Hc=vf3;6)W_E{G/kp4ht@@C_C$P50yHmCjxwFzu![KFLvzyaV.mUA9(Y)T}(3*z9(),?-hG?Iz7Cc5MIEZL(p^l;$z._*Q-/8@5^VTd(?4L@+SF{}G/.RW46cT3..Me^iBe!;To[%H8VSb!ls^du/O:rNwIec],gv.t4OBgrNw(Jb6A9_DF7!QNfO4)Rl[TILvKbt]$u9d9;=2UrZuLk[O9]NES.A6v0qdDW5W0LbCVx-Er:$cK(mF{r#,;r=Z5uH4jBc)[8%Sir4hPPgODmPjfK8R;dVOUYphZ$KV!t!G)E[0D[X:BGqR{0]Y;K-_L$RbV*b/T-w,E38MbOCm.G_AiTu)B$?@3HN2K]*4a+gPzU?=LRvJ4z/9(B8gmEQ)n6fMjbKJ?(zL/X9=;(Zly64fUZC*!jvHHAj6_L.dMWfA:jXANK/LND2FH7glQy]:_yhiOAk?A1iUQU0l66=(Es4!(LtIkZg_,?*H%T^u%Ak-e@wyq*yw1ebYWw)+C8OZ8xWVTBE)Q;DysCqbZexK8w%x!}IOj^YAmuY0mwu#)lTa!v6#EV/q]N3UZ?4]EiZ;cDMwHyZ7.(X5AU)nfP?t$j[C=_0/Bp:E%:$$Ok2I2oX!.^ouY).%?#hRB*}4xG)D8VB3WG52rPX7Z2r2mj1H;+KUscK$-3dTX8Y{VY}=a2L</CETrainer>
</Forms>
<CheatEntries>
<CheatEntry>
<ID>0</ID>
<Description>"Xray"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
aobscanmodule(INJECT,trove.exe, B8 03 02 00 00 c3)
label(return)
INJECT:
db B8 07 02 00 00
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db B8 03 02 00 00
unregistersymbol(INJECT)
</AssemblerScript>
<Hotkeys>
<Hotkey>
<Action>Activate</Action>
<Keys>
<Key>97</Key>
</Keys>
<Description>Activate Xray</Description>
<ID>0</ID>
</Hotkey>
<Hotkey>
<Action>Deactivate</Action>
<Keys>
<Key>98</Key>
</Keys>
<Description>Deactivate Xray</Description>
<ID>1</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<ID>1</ID>
<Description>"Dodge"</Description>
<LastState/>
<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:
fcomip st(0),st(1)
fstp st(0)
jae trove.exe+56E4C9
jmp return
DODGE:
fcomip st(0),st(0)
return:
registersymbol(DODGE)
[DISABLE]
DODGE:
db DF F1 DD D8 73 12
unregistersymbol(DODGE)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "trove.exe"+56E4B1
"trove.exe"+56E494: DD 5A 18 - fstp qword ptr [edx+18]
"trove.exe"+56E497: 52 - push edx
"trove.exe"+56E498: 8B 01 - mov eax,[ecx]
"trove.exe"+56E49A: FF 50 04 - call dword ptr [eax+04]
"trove.exe"+56E49D: D9 EE - fldz
"trove.exe"+56E49F: DD 83 E0 00 00 00 - fld qword ptr [ebx+000000E0]
"trove.exe"+56E4A5: DF F1 - fcomip st(0),st(1)
"trove.exe"+56E4A7: 76 1E - jna trove.exe+56E4C7
"trove.exe"+56E4A9: DD 83 E0 00 00 00 - fld qword ptr [ebx+000000E0]
"trove.exe"+56E4AF: D9 C9 - fxch st(1)
// ---------- INJECTING HERE ----------
"trove.exe"+56E4B1: DF F1 - fcomip st(0),st(1)
"trove.exe"+56E4B3: DD D8 - fstp st(0)
"trove.exe"+56E4B5: 73 12 - jae trove.exe+56E4C9
// ---------- DONE INJECTING ----------
"trove.exe"+56E4B7: 56 - push esi
"trove.exe"+56E4B8: E8 C3 58 F7 FF - call trove.exe+4E3D80
"trove.exe"+56E4BD: 83 C4 04 - add esp,04
"trove.exe"+56E4C0: 8B F0 - mov esi,eax
"trove.exe"+56E4C2: E9 F3 00 00 00 - jmp trove.exe+56E5BA
"trove.exe"+56E4C7: DD D8 - fstp st(0)
"trove.exe"+56E4C9: 8B CF - mov ecx,edi
"trove.exe"+56E4CB: E8 F0 24 0F 00 - call trove.exe+6609C0
"trove.exe"+56E4D0: 84 C0 - test al,al
"trove.exe"+56E4D2: 0F 84 8E 00 00 00 - je trove.exe+56E566
}
</AssemblerScript>
<Hotkeys>
<Hotkey>
<Action>Activate</Action>
<Keys>
<Key>101</Key>
</Keys>
<Description>Activate Infinite Dodge</Description>
<ID>0</ID>
</Hotkey>
<Hotkey>
<Action>Deactivate</Action>
<Keys>
<Key>102</Key>
</Keys>
<Description>Deactivate Infinite Dodge</Description>
<ID>1</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<ID>8</ID>
<Description>"Speed"</Description>
<Options moHideChildren="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
<LastState Value="" RealAddress="00000000"/>
<GroupHeader>1</GroupHeader>
<Hotkeys>
<Hotkey>
<Action>Toggle Activation</Action>
<Keys>
<Key>103</Key>
</Keys>
<Description>Speed (This first)</Description>
<ID>0</ID>
</Hotkey>
</Hotkeys>
<CheatEntries>
<CheatEntry>
<ID>2</ID>
<Description>"Speed"</Description>
<LastState Value="12" RealAddress="3CE406CE"/>
<VariableType>Byte</VariableType>
<Address>"trove.exe"+00ECEEF0</Address>
<Offsets>
<Offset>F2</Offset>
<Offset>10</Offset>
<Offset>24</Offset>
<Offset>8</Offset>
<Offset>68</Offset>
<Offset>90</Offset>
<Offset>190</Offset>
<Offset>58</Offset>
</Offsets>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>104</Key>
</Keys>
<Value>12</Value>
<Description>Speed (Second)</Description>
<ID>0</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<ID>7</ID>
<Description>"Speed when shooting"</Description>
<LastState Value="217" RealAddress="3CE406CF"/>
<VariableType>Byte</VariableType>
<Address>"trove.exe"+00ECEEF0</Address>
<Offsets>
<Offset>F3</Offset>
<Offset>10</Offset>
<Offset>24</Offset>
<Offset>8</Offset>
<Offset>68</Offset>
<Offset>90</Offset>
<Offset>190</Offset>
<Offset>58</Offset>
</Offsets>
<Hotkeys>
<Hotkey>
<Action>Toggle Activation</Action>
<Keys>
<Key>105</Key>
</Keys>
<Description>Speed (Third)</Description>
<ID>0</ID>
</Hotkey>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>106</Key>
</Keys>
<Value>217</Value>
<Description>Speed (Fourth)</Description>
<ID>1</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>54</ID>
<Description>"Time"</Description>
<LastState Value="7.33209361147692" RealAddress="2EE0F778"/>
<VariableType>Double</VariableType>
<Address>"trove.exe"+00ECEE60</Address>
<Offsets>
<Offset>178</Offset>
<Offset>14</Offset>
<Offset>0</Offset>
<Offset>14</Offset>
<Offset>0</Offset>
<Offset>12C</Offset>
</Offsets>
<Hotkeys>
<Hotkey>
<Action>Increase Value</Action>
<Keys>
<Key>99</Key>
</Keys>
<Value>1</Value>
<Description>Increase Time</Description>
<ID>0</ID>
</Hotkey>
<Hotkey>
<Action>Decrease Value</Action>
<Keys>
<Key>100</Key>
</Keys>
<Value>1</Value>
<Description>Decrease Time</Description>
<ID>1</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<ID>56</ID>
<Description>"Freeze time"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : trove.exe
Version:
Date : 2019-05-18
Author : zViinin_
This script does blah blah blah
}
[ENABLE]
aobscanmodule(More,trove.exe,DD 5E 18 56 8B 01 FF 50 04 DD) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
newmem:
code:
fstp qword ptr [esi-18] //fstp qword ptr [esi+18]
push esi
mov eax,[ecx]
jmp return
More:
jmp newmem
nop
return:
registersymbol(More)
[DISABLE]
More:
db DD 5E 18 56 8B 01
unregistersymbol(More)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "trove.exe"+C6C97
"trove.exe"+C6C7F: D9 C9 - fxch st(1)
"trove.exe"+C6C81: DC 77 60 - fdiv qword ptr [edi+60]
"trove.exe"+C6C84: DC 46 18 - fadd qword ptr [esi+18]
"trove.exe"+C6C87: DD 46 18 - fld qword ptr [esi+18]
"trove.exe"+C6C8A: DF E9 - fucomip st(0),st(1)
"trove.exe"+C6C8C: 9F - lahf
"trove.exe"+C6C8D: F6 C4 44 - test ah,44
"trove.exe"+C6C90: 7B 16 - jnp trove.exe+C6CA8
"trove.exe"+C6C92: 8B 4E 10 - mov ecx,[esi+10]
"trove.exe"+C6C95: DD D9 - fstp st(1)
// ---------- INJECTING HERE ----------
"trove.exe"+C6C97: DD 5E 18 - fstp qword ptr [esi+18]
"trove.exe"+C6C9A: 56 - push esi
"trove.exe"+C6C9B: 8B 01 - mov eax,[ecx]
// ---------- DONE INJECTING ----------
"trove.exe"+C6C9D: FF 50 04 - call dword ptr [eax+04]
"trove.exe"+C6CA0: DD 05 C8 02 D8 00 - fld qword ptr [trove.exe+C102C8]
"trove.exe"+C6CA6: EB 02 - jmp trove.exe+C6CAA
"trove.exe"+C6CA8: DD D8 - fstp st(0)
"trove.exe"+C6CAA: DD 87 A0 00 00 00 - fld qword ptr [edi+000000A0]
"trove.exe"+C6CB0: DF F1 - fcomip st(0),st(1)
"trove.exe"+C6CB2: 72 40 - jb trove.exe+C6CF4
"trove.exe"+C6CB4: DC 6E 18 - fsubr qword ptr [esi+18]
"trove.exe"+C6CB7: DD 46 18 - fld qword ptr [esi+18]
"trove.exe"+C6CBA: DF E9 - fucomip st(0),st(1)
}
</AssemblerScript>
<Hotkeys>
<Hotkey>
<Action>Toggle Activation</Action>
<Keys>
<Key>96</Key>
</Keys>
<Description>Freeze Time</Description>
<ID>0</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
<CheatCodes>
<CodeEntry>
<Description>Change of mov [esi+00000308],eax</Description>
<AddressString>trove.exe+8CAD6D</AddressString>
<Before>
<Byte>5F</Byte>
<Byte>B3</Byte>
<Byte>FF</Byte>
<Byte>8B</Byte>
<Byte>CE</Byte>
</Before>
<Actual>
<Byte>89</Byte>
<Byte>86</Byte>
<Byte>08</Byte>
<Byte>03</Byte>
<Byte>00</Byte>
<Byte>00</Byte>
</Actual>
<After>
<Byte>E8</Byte>
<Byte>C8</Byte>
<Byte>11</Byte>
<Byte>DD</Byte>
<Byte>FF</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[esi+54]</Description>
<AddressString>trove.exe+3B071A</AddressString>
<Before>
<Byte>84</Byte>
<Byte>5C</Byte>
<Byte>01</Byte>
<Byte>00</Byte>
<Byte>00</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>46</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2F</Byte>
<Byte>05</Byte>
<Byte>78</Byte>
<Byte>B3</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of cvttss2si eax,[ecx+54]</Description>
<AddressString>trove.exe+400D60</AddressString>
<Before>
<Byte>CC</Byte>
<Byte>CC</Byte>
<Byte>CC</Byte>
<Byte>CC</Byte>
<Byte>CC</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>2C</Byte>
<Byte>41</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>C3</Byte>
<Byte>CC</Byte>
<Byte>CC</Byte>
<Byte>CC</Byte>
<Byte>CC</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[ebx+54]</Description>
<AddressString>trove.exe+79C56F</AddressString>
<Before>
<Byte>46</Byte>
<Byte>44</Byte>
<Byte>02</Byte>
<Byte>74</Byte>
<Byte>2A</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>43</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2F</Byte>
<Byte>05</Byte>
<Byte>78</Byte>
<Byte>B3</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[eax+54]</Description>
<AddressString>trove.exe+6B2CD0</AddressString>
<Before>
<Byte>FF</Byte>
<Byte>85</Byte>
<Byte>C0</Byte>
<Byte>74</Byte>
<Byte>69</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>40</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2F</Byte>
<Byte>05</Byte>
<Byte>78</Byte>
<Byte>B3</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[esi+54]</Description>
<AddressString>trove.exe+10D270</AddressString>
<Before>
<Byte>D5</Byte>
<Byte>58</Byte>
<Byte>00</Byte>
<Byte>8B</Byte>
<Byte>D8</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>46</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2F</Byte>
<Byte>05</Byte>
<Byte>78</Byte>
<Byte>B3</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[esi+54]</Description>
<AddressString>trove.exe+8CAD88</AddressString>
<Before>
<Byte>3B</Byte>
<Byte>D0</Byte>
<Byte>0F</Byte>
<Byte>4F</Byte>
<Byte>D0</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>46</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>83</Byte>
<Byte>C6</Byte>
<Byte>3C</Byte>
<Byte>F3</Byte>
<Byte>0F</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss [esi+18],xmm1</Description>
<AddressString>trove.exe+8CADA0</AddressString>
<Before>
<Byte>7B</Byte>
<Byte>0E</Byte>
<Byte>8B</Byte>
<Byte>4E</Byte>
<Byte>10</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>11</Byte>
<Byte>4E</Byte>
<Byte>18</Byte>
</Actual>
<After>
<Byte>56</Byte>
<Byte>8B</Byte>
<Byte>01</Byte>
<Byte>FF</Byte>
<Byte>50</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[edx+18]</Description>
<AddressString>trove.exe+56575A</AddressString>
<Before>
<Byte>4D</Byte>
<Byte>FC</Byte>
<Byte>8B</Byte>
<Byte>51</Byte>
<Byte>08</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>42</Byte>
<Byte>18</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2E</Byte>
<Byte>C1</Byte>
<Byte>9F</Byte>
<Byte>F6</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of fadd dword ptr [esi+54]</Description>
<AddressString>trove.exe+3B07D3</AddressString>
<Before>
<Byte>DC</Byte>
<Byte>4D</Byte>
<Byte>F0</Byte>
<Byte>8B</Byte>
<Byte>CE</Byte>
</Before>
<Actual>
<Byte>D8</Byte>
<Byte>46</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>DD</Byte>
<Byte>55</Byte>
<Byte>E8</Byte>
<Byte>D9</Byte>
<Byte>5D</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[edx+18]</Description>
<AddressString>trove.exe+3B0856</AddressString>
<Before>
<Byte>C3</Byte>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>5F</Byte>
<Byte>D0</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>42</Byte>
<Byte>18</Byte>
</Actual>
<After>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>5D</Byte>
<Byte>D1</Byte>
<Byte>0F</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of cvttss2si ecx,[esi+54]</Description>
<AddressString>trove.exe+69B8D9</AddressString>
<Before>
<Byte>02</Byte>
<Byte>3B</Byte>
<Byte>F8</Byte>
<Byte>72</Byte>
<Byte>D7</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>2C</Byte>
<Byte>4E</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>8B</Byte>
<Byte>46</Byte>
<Byte>30</Byte>
<Byte>89</Byte>
<Byte>4D</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[esi+54]</Description>
<AddressString>trove.exe+69B968</AddressString>
<Before>
<Byte>E8</Byte>
<Byte>18</Byte>
<Byte>FC</Byte>
<Byte>FF</Byte>
<Byte>FF</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>46</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2F</Byte>
<Byte>05</Byte>
<Byte>78</Byte>
<Byte>B3</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[ebx+54]</Description>
<AddressString>trove.exe+8CA78A</AddressString>
<Before>
<Byte>85</Byte>
<Byte>27</Byte>
<Byte>01</Byte>
<Byte>00</Byte>
<Byte>00</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>43</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2F</Byte>
<Byte>C1</Byte>
<Byte>0F</Byte>
<Byte>86</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[esi+54]</Description>
<AddressString>trove.exe+69BDE2</AddressString>
<Before>
<Byte>E8</Byte>
<Byte>6E</Byte>
<Byte>C7</Byte>
<Byte>FB</Byte>
<Byte>FF</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>46</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2F</Byte>
<Byte>05</Byte>
<Byte>78</Byte>
<Byte>B3</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[edi+54]</Description>
<AddressString>trove.exe+8CAAAC</AddressString>
<Before>
<Byte>82</Byte>
<Byte>B4</Byte>
<Byte>00</Byte>
<Byte>00</Byte>
<Byte>00</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>47</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2F</Byte>
<Byte>05</Byte>
<Byte>78</Byte>
<Byte>B3</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss [edx+18],xmm2</Description>
<AddressString>trove.exe+3B086B</AddressString>
<Before>
<Byte>7B</Byte>
<Byte>0E</Byte>
<Byte>8B</Byte>
<Byte>4A</Byte>
<Byte>10</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>11</Byte>
<Byte>52</Byte>
<Byte>18</Byte>
</Actual>
<After>
<Byte>52</Byte>
<Byte>8B</Byte>
<Byte>01</Byte>
<Byte>FF</Byte>
<Byte>50</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss [edx+18],xmm1</Description>
<AddressString>trove.exe+56576F</AddressString>
<Before>
<Byte>00</Byte>
<Byte>00</Byte>
<Byte>8B</Byte>
<Byte>4A</Byte>
<Byte>10</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>11</Byte>
<Byte>4A</Byte>
<Byte>18</Byte>
</Actual>
<After>
<Byte>52</Byte>
<Byte>8B</Byte>
<Byte>01</Byte>
<Byte>FF</Byte>
<Byte>50</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[eax+54]</Description>
<AddressString>trove.exe+506AC1</AddressString>
<Before>
<Byte>00</Byte>
<Byte>85</Byte>
<Byte>C0</Byte>
<Byte>74</Byte>
<Byte>0E</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>40</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2F</Byte>
<Byte>05</Byte>
<Byte>78</Byte>
<Byte>B3</Byte>
</After>
</CodeEntry>
<CodeEntry>
<Description>Change of movss xmm0,[eax+54]</Description>
<AddressString>trove.exe+9FA14</AddressString>
<Before>
<Byte>E8</Byte>
<Byte>EC</Byte>
<Byte>AD</Byte>
<Byte>5F</Byte>
<Byte>00</Byte>
</Before>
<Actual>
<Byte>F3</Byte>
<Byte>0F</Byte>
<Byte>10</Byte>
<Byte>40</Byte>
<Byte>54</Byte>
</Actual>
<After>
<Byte>0F</Byte>
<Byte>2F</Byte>
<Byte>05</Byte>
<Byte>78</Byte>
<Byte>B3</Byte>
</After>
</CodeEntry>
</CheatCodes>
<UserdefinedSymbols/>
<LuaScript>getAutoAttachList().add("trove.exe") --attach to trove
function createTRadioButton(Parent)
local box = createComponentClass('TRadioButton', Parent)
box.Parent = Parent
return box
end
function skip() --performs the skip
local xcoord=readFloat("[[[[[trove.exe+00ECEEF0]+0]+28]+C4]+4]+60") --Loading in the current xyz coords
local ycoord=readFloat("[[[[[trove.exe+00ECEEF0]+0]+28]+C4]+4]+64")
local zcoord=readFloat("[[[[[trove.exe+00ECEEF0]+0]+28]+C4]+4]+68")
local xper=readFloat("[[[[[trove.exe+00ECEEF0]+4]+24]+84]+0]+100")
local yper=readFloat("[[[[[trove.exe+00ECEEF0]+4]+24]+84]+0]+104")
local zper=readFloat("[[[[[trove.exe+00ECEEF0]+4]+24]+84]+0]+108")
local xadd=xper*main.skipdist.text
local yadd=yper*main.skipdist.text
local zadd=zper*main.skipdist.text
local xdest=xcoord+xadd --calculating the new xyz coords
local ydest=ycoord+yadd
local zdest=zcoord+zadd
writeFloat("[[[[[trove.exe+00ECEEF0]+0]+28]+C4]+4]+60",xdest) --Writes speed values
writeFloat("[[[[[trove.exe+00ECEEF0]+0]+28]+C4]+4]+64",ydest)
writeFloat("[[[[[trove.exe+00ECEEF0]+0]+28]+C4]+4]+68",zdest)
end
function speedenableChange() --turns on and off speedhack
if main.speedenable.checked==true then
if main.stogs.checked==true then
speedhack_setSpeed(main.speeds.text)
else
speedhack_setSpeed(main.speedf.text)
end
else
speedhack_setSpeed'1'
end
end
function togglespeed() --speedhack toggle for hotkey
if main.speedenable.checked==true then
main.speedenable.checked=false
else
main.speedenable.checked=true
end
end
function jump() --boosts jumps for superjump
if main.superjump.checked==true then
writeFloat("[[[[[trove.exe+00FFB014]+0]+28]+C4]+4]+94",15)
end
end
function switchspeed() --toggles between speeds for speedhack
if main.stogs.checked==true then
main.stogs.checked=false
main.stogf.checked=true
else
main.stogs.checked=true
main.stogf.checked=false
end
speedenableChange()
end
function elockChange() --turns on and off energy lock script
if main.elock.checked==false then
etimer.Enabled = false
else
efreezeval = readFloat("[[[[[trove.exe+00E61A2C]+0]+28]+18C]+610]+70")
etimers()
end
end
function etimers() --energy lock timer
etimer = createTimer(getMainForm(),true)
timer_setInterval(etimer,100)
timer_onTimer(etimer, setener)
end
function setener(sender) --sets energy value when energy lock timer ticks
writeFloat("[[[[[trove.exe+00EB7D78]+0]+28]+C4]+170]+70",efreezeval)
end
jumpkey = createHotkey("jump",VK_SPACE) --superjump hotkey
speedokey = createHotkey("togglespeed",VK_5) --speedhack on/off hotkey
speedtkey = createHotkey("switchspeed",VK_4) --speedhack toggle hotkey
skipkey = createHotkey("skip",VK_3) --skip hotkey
function close() --on close for form
if etimer ~= nil then
etimer.destroy()
end
closeCE()
return caFree
end
function showhelp() --creates help form
help=createForm(true)
help.borderstyle=bsToolWindow
help.height=400
help.width=520
help.caption="Help"
help.title=createLabel(help)
help.title.caption="TRMrecmrec"
help.title.left=236
help.title.top=15
help.structbox=createGroupBox(help)
help.structbox.height=350
help.structbox.caption=""
help.structbox.left=10
help.structbox.top=40
help.structbox.width=500
help.structbox.speedtext=createLabel(help.structbox)
help.structbox.speedtext.caption=[[Speedhack:
This accellerates the game speed.
Attacks seem faster, but damage is dealt on the server side, so no extra damage is done.
You can set 2 speeds to toggle between them.
Lower speeds are harder to detect by other players.
This feature can also be controlled with hotkeys 5 (on/off) and 3 (toggle speed)]]
help.structbox.speedtext.left=15
help.structbox.speedtext.top=215
help.structbox.jumptext=createLabel(help.structbox)
help.structbox.jumptext.caption=[[Superjump:
Superjump gives your jump more umpf.
With superjump you can also hold the space key and it allows you to fly up.]]
help.structbox.jumptext.left=15
help.structbox.jumptext.top=155
help.structbox.energytext=createLabel(help.structbox)
help.structbox.energytext.caption=[[Energy Lock:
This freezes the client side value for the energy.
This feature is only useful for back rolling with the Neon Ninja.]]
help.structbox.energytext.left=15
help.structbox.energytext.top=95
help.structbox.skiptext=createLabel(help.structbox)
help.structbox.skiptext.caption=[[Skipping:
To skip (teleport) press 3.
The skip distance is the distance you will travel when you skip.
Setting a skip distance too low will not teleport you far enough to pass through a wall.
Setting a skip distance too high will get corrected with the server value.]]
help.structbox.skiptext.left=15
help.structbox.skiptext.top=5
help.centerScreen()
help.OnClose = hidehelp
end
function hidehelp() --closes help form
help.destroy()
end
main=createForm(true)
main.borderstyle=bsToolWindow
main.height=205
main.width=142
main.caption="TRM"
main.top=115
main.left=342
main.skiptext=createLabel(main)
main.skiptext.caption="Skip Distance"
main.skiptext.left=16
main.skiptext.top=10
main.skipdist=createEdit(main)
main.skipdist.text="3"
main.skipdist.left=103
main.skipdist.top=8
main.skipdist.width=24
main.speedtext=createLabel(main)
main.speedtext.caption="Speedhack"
main.speedtext.left=29
main.speedtext.top=100
main.speedenable=createCheckBox(main)
main.speedenable.caption=nil
main.speedenable.checked=false
main.speedenable.left=108
main.speedenable.top=100
main.speedenable.OnChange=speedenableChange
main.elocktext=createLabel(main)
main.elocktext.caption="Energy Lock"
main.elocktext.left=22
main.elocktext.top=40
main.elock=createCheckBox(main)
main.elock.caption=nil
main.elock.checked=false
main.elock.left=108
main.elock.top=40
main.elock.OnChange=elockChange
main.jumptext=createLabel(main)
main.jumptext.caption="Superjump"
main.jumptext.left=28
main.jumptext.top=70
main.superjump=createCheckBox(main)
main.superjump.caption=nil
main.superjump.checked=false
main.superjump.left=108
main.superjump.top=70
main.stogs=createTRadioButton(main)
main.stogs.caption=nil
main.stogs.checked=false
main.stogs.left=20
main.stogs.top=130
main.stogs.OnChange=speedenableChange
main.stogf=createTRadioButton(main)
main.stogf.caption=nil
main.stogf.checked=false
main.stogf.left=80
main.stogf.top=130
main.stogf.OnChange=speedenableChange
main.speedf=createEdit(main)
main.speedf.text="2"
main.speedf.left=95
main.speedf.top=128
main.speedf.width=28
main.speeds=createEdit(main)
main.speeds.text="1.5"
main.speeds.left=35
main.speeds.top=128
main.speeds.width=28
main.helpbutton=createButton(main)
main.helpbutton.caption="Help"
main.helpbutton.top=170
main.helpbutton.left=53
main.helpbutton.height=24
main.helpbutton.width=40
main.helpbutton.OnClick=showhelp
main.OnClose = close
--TRAINERGENERATORSTART--
--This is autogenerated code. Changing code in this block will
--get erased and rewritten if you regenerate the trainer code
--Uncomment the following line if this is a Cheat Table format trainer and you don't want CE to show (Tip, save as .CETRAINER alternatively)
--hideAllCEWindows()
RequiredCEVersion=6.83
if (getCEVersion==nil) or (getCEVersion()<RequiredCEVersion) then
messageDialog('Please install Cheat Engine '..RequiredCEVersion, mtError, mbOK)
closeCE()
end
addresslist=getAddressList()
memrec0=addresslist.getMemoryRecordByID(0)
memrec1=addresslist.getMemoryRecordByID(1)
memrec8=addresslist.getMemoryRecordByID(8)
memrec2=addresslist.getMemoryRecordByID(2)
memrec7=addresslist.getMemoryRecordByID(7)
memrec54=addresslist.getMemoryRecordByID(54)
memrec56=addresslist.getMemoryRecordByID(56)
memrec56_hotkey0=memrec56.getHotkeyByID(0)
memrec0_hotkey0=memrec0.getHotkeyByID(0)
memrec0_hotkey1=memrec0.getHotkeyByID(1)
memrec54_hotkey0=memrec54.getHotkeyByID(0)
memrec54_hotkey1=memrec54.getHotkeyByID(1)
memrec1_hotkey0=memrec1.getHotkeyByID(0)
memrec1_hotkey1=memrec1.getHotkeyByID(1)
memrec8_hotkey0=memrec8.getHotkeyByID(0)
memrec2_hotkey0=memrec2.getHotkeyByID(0)
memrec7_hotkey0=memrec7.getHotkeyByID(0)
memrec7_hotkey1=memrec7.getHotkeyByID(1)
function onPostHotkey0(Hotkey)
--Executed after the "toggle*" cheat got executed
local memrec=Hotkey.Owner
local isActive=memrec.Active --get the state after the hotkey got triggered
CETrainer.CHEAT0.setActive(isActive) --gui update, nothing else
if gPlaySoundOnAction then
if isActive then
playSound(gActivateSound)
else
playSound(gDeactivateSound)
end
end
end
memrec56_hotkey0.onPostHotkey=onPostHotkey0
function onHotkey1(Hotkey)
--Executed before the hotkey is handled
CETrainer.CHEAT1.setActive(true, 1500)
if gPlaySoundOnAction then
playSound(gActivateSound)
end
end
memrec0_hotkey0.onHotkey=onHotkey1
function onHotkey2(Hotkey)
--Executed before the hotkey is handled
CETrainer.CHEAT2.setActive(true, 1500)
if gPlaySoundOnAction then
playSound(gDeactivateSound)
end
end
memrec0_hotkey1.onHotkey=onHotkey2
function onHotkey3(Hotkey)
--Executed before the hotkey is handled
CETrainer.CHEAT3.setActive(true, 1500)
if gPlaySoundOnAction then
playSound(gActivateSound)
end
end
memrec54_hotkey0.onHotkey=onHotkey3
function onHotkey4(Hotkey)
--Executed before the hotkey is handled
CETrainer.CHEAT4.setActive(true, 1500)
if gPlaySoundOnAction then
playSound(gActivateSound)
end
end
memrec54_hotkey1.onHotkey=onHotkey4
function onHotkey5(Hotkey)
--Executed before the hotkey is handled
CETrainer.CHEAT5.setActive(true, 1500)
if gPlaySoundOnAction then
playSound(gActivateSound)
end
end
memrec1_hotkey0.onHotkey=onHotkey5
function onHotkey6(Hotkey)
--Executed before the hotkey is handled
CETrainer.CHEAT6.setActive(true, 1500)
if gPlaySoundOnAction then
playSound(gDeactivateSound)
end
end
memrec1_hotkey1.onHotkey=onHotkey6
function onPostHotkey7(Hotkey)
--Executed after the "toggle*" cheat got executed
local memrec=Hotkey.Owner
local isActive=memrec.Active --get the state after the hotkey got triggered
CETrainer.CHEAT7.setActive(isActive) --gui update, nothing else
if gPlaySoundOnAction then
if isActive then
playSound(gActivateSound)
else
playSound(gDeactivateSound)
end
end
end
memrec8_hotkey0.onPostHotkey=onPostHotkey7
function onHotkey8(Hotkey)
--Executed before the hotkey is handled
CETrainer.CHEAT8.setActive(true, 1500)
if gPlaySoundOnAction then
playSound(gActivateSound)
end
end
memrec2_hotkey0.onHotkey=onHotkey8
function onPostHotkey9(Hotkey)
--Executed after the "toggle*" cheat got executed
local memrec=Hotkey.Owner
local isActive=memrec.Active --get the state after the hotkey got triggered
CETrainer.CHEAT9.setActive(isActive) --gui update, nothing else
if gPlaySoundOnAction then
if isActive then
playSound(gActivateSound)
else
playSound(gDeactivateSound)
end
end
end
memrec7_hotkey0.onPostHotkey=onPostHotkey9
function onHotkey10(Hotkey)
--Executed before the hotkey is handled
CETrainer.CHEAT10.setActive(true, 1500)
if gPlaySoundOnAction then
playSound(gActivateSound)
end
end
memrec7_hotkey1.onHotkey=onHotkey10
CETrainer.SEPERATOR.Visible=false
getAutoAttachList().add("Trove.exe")
gPlaySoundOnAction=false
CETrainer.show()
function AboutClick()
showMessage(gAboutText)
end
gAboutText=[[This trainer was made using Cheat
Engine
By Hax4lifebb]]
function CloseClick()
--called by the close button onClick event, and when closing the form
closeCE()
return caFree --onClick doesn't care, but onClose would like a result
end
--TRAINERGENERATORSTOP--
</LuaScript>
<DisassemblerComments>
<DisassemblerComment>
<Address>26BA7D0C</Address>
<Comment>lembrar
</Comment>
</DisassemblerComment>
</DisassemblerComments>
</CheatTable>