17
"[X] <== Medieval Kingdom Wars v1.01 Steam Script v3.0 AOB"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Medieval kingdom Wars
Game Version : 1.00
Game Sponsor : Myself (with Patreon's fund)
Process Name : MKW.exe
Relevant Info : 32bits/RTS
Script Version: 3.0
CE Version : 6.7
Release date : 04-Jan-2019
Author : Recifense
History:
06-Oct-2018: First Release (for version 0.58) (EAG)
28-Oct-2018: Release for version 0.62 (EAG)(New game engine)(s2.0)
04-Jan-2019: Release for version 1.00 + New features (s3.0)
Features:
- Minimum Resources (Skirmish/Town mode) (s1.0)
- God Mode (s1.0)
- Quick Kill (s3.0)
- Minimum Currency (Campaign) (s3.0)
- Some Pointers
===========================================
}
//=========================================
// Checking CE version
{$lua}
if(getCEVersion() < 6.7) then
ShowMessage('Sorry. CE version should be 6.7 or above')
end
{$asm}
//=========================================
// Checking Selected Process
{$lua}
if(process == nil) then
ShowMessage('No process was selected')
elseif (process ~= "MKW.exe") then
ShowMessage('Warning. Expected Process = MKW.exe')
end
{$asm}
//=========================================
// Definitions
define(LUDO,"MKW.exe")
//=========================================
// Constants used in the script (that can be changed)
define(ctCE67,(float)6.7)
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
AOBScanModule(MOPR,$process,F3 0F 11 44 24 2C 8A 44 24 2F 34 90 88 46 35 8A 44 24 2E 34 78)
AOBScanModule(GDMD,$process,01 86 f4 00 00 00 8b 45 08 42 83 fa 07 ?? ?? f7 46 04 00 40)
AOBScanModule(MOPC,$process,c7 41 20 01 00 00 00 f3 0f 11 49 24 ?? ?? 53 8d 45 08 c6 47 18 01)
//=========================================
alloc(MyCode,4096,$process)
//=========================================
// Declaration section
label(_MonPlayerRes)
label(_BackMPR)
label(_GodMode)
label(_BackGMD)
label(_MonPlayerCur)
label(_BackMPC)
label(iEnableMPR)
label(iEnableGMD)
label(iEnableQKL)
label(iEnableMPC)
label(iPlayerID)
label(pRes)
label(pUnit)
label(pCur)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableMPR)
registersymbol(iEnableGMD)
registersymbol(iEnableQKL)
registersymbol(iEnableMPC)
registersymbol(iPlayerID)
registersymbol(pRes)
registersymbol(pUnit)
registersymbol(pCur)
registersymbol(MOPR)
registersymbol(GDMD)
registersymbol(MOPC)
//=========================================
MyCode:
//=========================================
// When updating resources at Town View
_MonPlayerRes:
mov [pRegs+00],ebx
lea edi,[edi]
lea esi,[esi]
test edi,edi
jz _ExitMPR
cmp byte ptr [edi+34],01
jne _ExitMPR
cmp dword ptr [edi+14],#8
jne _ExitMPR
cmp dword ptr [edi+04],'Play'
jne _ExitMPR
cmp dword ptr [edi+08],'er01'
jne _ExitMPR
mov ebx,[edi+00000080]
mov [pRes],edi
mov [iPlayerID],ebx
cmp dword ptr [iEnableMPR],0
je _ExitMPR // Jump if feature is disabled
mov ebx,(float)6800
mov [esp+2C],ebx
maxss xmm0,[esp+2C]
_ExitMPR:
mov ebx,[pRegs+00]
movss [esp+2C],xmm0 // Original code
jmp _BackMPR // Back to main code
//=========================================
// When decreasing HP
_GodMode:
mov [pRegs+08],ecx
mov [pUnit],esi
cmp dword ptr [iEnableGMD],0
je _ExitGMD // Jump if feature is disabled
mov ecx,[esi+000000f0]
cmp ecx,[iPlayerID]
jne _GodMD00
xor eax,eax
mov ecx,[esi+000000f8]
cmp [esi+000000f4],ecx
jns _ExitGMD
mov [esi+000000f4],ecx
jmp _ExitGMD
//--
_GodMD00:
cmp dword ptr [iEnableQKL],0
je _ExitGMD // Jump if feature is disabled
mov eax,#-1000
_ExitGMD:
mov ecx,[pRegs+08]
add [esi+000000F4],eax // Original code
jmp _BackGMD // Back to main code
//=========================================
// When updating Currency During Campaign
_MonPlayerCur:
cmp dword ptr [ecx+08],'Curr'
jne _ExitMPC
cmp dword ptr [ecx+0c],'ency'
jne _ExitMPC
mov [pCur],ecx
cmp dword ptr [iEnableMPC],0
je _ExitMPC // Jump if feature is disabled
maxss xmm1,[fMinCur]
_ExitMPC:
mov [ecx+20],00000001 // Original code
jmp _BackMPC // Back to main code
//=========================================
align 10,'='
//=========================================
db '===============================>'
db 'CE6.7 Script by Recifense 190104'
//=========================================
// Variables
iEnableMPR:
dd 0
iEnableGMD:
dd 0
iEnableQKL:
dd 0
iEnableMPC:
dd 0
iPlayerID:
dd #1
fMinCur:
dd (float)68000.0
pRes:
dd 0
pUnit:
dd 0
pCur:
dd 0
pRegs:
dd 0
dd 0
dd 0
//=========================================
// Hacking Points
MOPR:
jmp _MonPlayerRes
nop
_BackMPR:
GDMD:
jmp _GodMode
nop
_BackGMD:
MOPC:
jmp _MonPlayerCur
nop
nop
_BackMPC:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MOPR:
// movss [esp+2C],xmm0
db f3 0f 11 44 24 2c
GDMD:
// add [esi+000000F4],eax
db 01 86 f4 00 00 00
MOPC:
// mov [ecx+20],00000001
db c7 41 20 01 00 00 00
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(iEnableMPR)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableQKL)
unregistersymbol(iEnableMPC)
unregistersymbol(iPlayerID)
unregistersymbol(pRes)
unregistersymbol(pUnit)
unregistersymbol(pCur)
unregistersymbol(MOPR)
unregistersymbol(GDMD)
unregistersymbol(MOPC)
//=========================================
dealloc(MyCode)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
}
41
"[X] <== Minimum Resources (Skirmish/City Mode)"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMPR",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPR",0)
memrec.Color=0x0c08000
{$ASM}
42
"[X] <== God Mode (for the soldiers)"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableGMD",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGMD",0)
memrec.Color=0x0c08000
{$ASM}
238
"[X] <== Quick Kill"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableQKL",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableQKL",0)
memrec.Color=0x0c08000
{$ASM}
239
"[X] <== Minimum Currency (Campaign)"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMPC",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPC",0)
memrec.Color=0x0c08000
{$ASM}
228
"[X] <== Table/Script Information"
0000FF
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
getMainForm().CommentButton.doClick()
{$ASM}
[disable]
Recifense
20190104
===========================================
Game Title : Medieval kingdom Wars
Game Version : 1.01
Game Sponsor : Myself (with Patreon's fund)
Process Name : MKW.exe
Relevant Info : 32bits/RTS
Script Version: 3.0
CE Version : 6.7
Release date : 04-Jan-2019
Author : Recifense
History:
06-Oct-2018: First Release (for version 0.58) (EAG)
28-Oct-2018: Release for version 0.62 (EAG)(New game engine)(s2.0)
04-Jan-2019: Release for version 1.01 + New features (s3.0)
Features:
- Minimum Resources (Skirmish/Town mode) (s1.0) [1]
- God Mode (s1.0) [2]
- Quick Kill (s3.0) [3]
- Minimum Currency (Campaign) (s3.0) [4]
- Some Pointers
===========================================
[1] Human player's resources will not go under 6800;
[2] For Human player's troops (soldiers);
[3] Enemy units will die quickly;
[4] Player's currency will not go under 68000;
===========================================
[USAGE]
1) Run CE67 or greater;
2) Run Game;
3) Load the game process "MKW.exe" in CE;
4) Load this table and activate the main script;
5) Now Activate the script of each cheat you want to use;
6) Game On;
===========================================
[HOTKEYS]
- None defined;
===========================================
[ADVICE]
When you can,save the game before starting using table/cheat. So you can always come back in case you don't like the result.
===========================================
[INFO]
Tested on Win 10 64bits
===========================================
[INFO]
Only for the patrons for now (Early Access Game Phase).
Now it goes public.
===========================================
Cheers!