2010年7月7日星期三

Using Cheat Engine - Script on Soulstorm

Hi, I came across this script in Cheat Engine Forum and try it. It work on campaign.
Below is the script written by Recifense. This script is not written by me.

To use it you need to copy the script and paste it in your Cheat Engine Auto Script. Enable it in Cheat Engine when you play Solstorm.



// Warhammer 40k - DoW - Soulstorm
// Version: DOW Engine 1.0.9409, DOW: Soulstorm 1.0 Build 9409
// Script Version: 1.1
// CE Version : 5.4
// GodMode and Infinite Resources
// Adapted on 09-Apr-08
// 29-May-2009: Changes on Monitor and God Mode (2 bugs)

[ENABLE]
alloc(MyCode,1024)

//=========================================
// Declaration section
label(Monitor)
label(GodMode)
label(Resource)
label(Res1)
label(BackM)
label(BackG)
label(BackR)
label(ExitG)
label(ExitR)
label(pPlayerStr)

registersymbol(MyCode)

//=========================================
// Hacking Points
WXPMod.dll+29A7E1:
jmp Monitor
nop
BackM:

WXPMod.dll+120B7F:
jmp GodMode
BackG:

WXPMod.dll+D5EC2:
jmp Resource
nop
BackR:

MyCode:
//===========================================
// This piece of code copies to a known place
// the Player Structure Address

Monitor:
push eax
mov eax,[edi+000001b8] // Get structure address (29-May-2009)
mov [pPlayerStr],eax // Save it for further use
pop eax

// Original Code
cmp eax,[edi+000001b8] // Original code (29-May-2009)
jmp BackM // Back to main code

//===========================================
// This piece of code checks if the current unit
// belongs to player. If so, %HP = 1.00

GodMode:
fst [esi+14] // Original code
fld1 // Original code

push eax

cmp ebp,[pPlayerStr] // Player´s unit? (29-May-2009)
jne ExitG // Jump if false

mov eax,3f800000 // 1.00
mov [esi+14],eax // Make HP = 100%

ExitG:
pop eax
jmp BackG // Back to main code

//===========================================
// This one checks if the current resource belongs
// to the player. If so, it does not let it go under
// 5000.

Resource:
fstp dword ptr [eax+04] // Original code
fld dword ptr [ecx+08] // Original code

push ebx

cmp esi,[pPlayerStr] // Player´s resource?
jne ExitR // Jump if false

mov ebx,459c4000 // 5000.0

cmp ebx,[eax+04] // Current power value >= 5000.0 ?
jl Res1 // Jump if true

mov [eax+04],ebx // Update power value

Res1:
cmp ebx,[eax] // Current requisition value >= 5000.0 ?
jl ExitR

mov [eax],ebx // Update requisition value

ExitR:
pop ebx
jmp BackR // Back to main code

//===========================================
// Data Area
pPlayerStr:
dd 0

//===========================================
// Original codes
[DISABLE]
WXPMod.dll+29A7E1:
cmp eax,[ecx+000001b8]

WXPMod.dll+120B7F:
fst [esi+14]
fld1

WXPMod.dll+D5EC2:
fstp dword ptr [eax+04]
fld dword ptr [ecx+08]

dealloc(MyCode,1024)
unregistersymbol(MyCode)

没有评论:

发表评论