23
"[X] <== Age of Empires Definitive II Edition v101.101.46295.0 Steam Script v3.9"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Age of Empires II Definitive Edition
Game Version : 101.101.46295.0 (Steam)
Game Sponsor : PF
Process Name : AoE2DE_s.exe
Relevant Info : 64bits/RTS
Script Version: 3.9 (DRM prot is back)
CE Version : 7.0
Release date : 25-Mar-2021
Author : Recifense
History:
15-Nov-2019: First Release (Adapted from AoEDE) (s2.0)
17-Nov-2019: Fix for GM + "No Conversion" (s2.1)
18-Dec-2019: Release for version 101.101.34055.0 (s2.2)
21-Jan-2020: Release for version 101.101.34699.0 (s2.3)
27-Jan-2020: Release for version 101.101.34793.0 (s2.4)
11-Feb-2020: Fix for "No Conversion" (s2.5)
29-Feb-2020: Release for version 101.101.35584.0 (s2.6)
31-Mar-2020: Release for version 101.101.36202.0 (s2.7)
30-Apr-2020: Release for version 101.101.36906.0 (s2.8)
28-May-2020: Release for version 101.101.37650.0 (s2.9)
22-Jul-2020: Release for version 101.101.39284.0 (s3.0)
28-Jul-2020: Release for version 101.101.39515.0 (s3.1)
25-Aug-2020: Release for version 101.101.40220.0 (s3.2)
24-Sep-2020: Release for version 101.101.40874.0 (s3.3)
21-Oct-2020: Release for version 101.101.41855.0 (s3.4)
19-Nov-2020: Release for version 101.101.42848.0 (s3.5)
26-Nov-2020: Release for version 101.101.43210.0 (s3.6)
27-Jan-2021: Release for version 101.101.44725.0 (s3.7)(Steam and WinStore)
15-Feb-2021: Release for version 101.101.45340.0 (s3.8)(Steam)
25-Mar-2021: Release for version 101.101.46295.0 (s3.9)(Steam)
Features:
- Minimum Resources
- God Mode
- Instant Research
- Instant Construction
- Instant unit Production
- No Conversion (new)
- Some Pointers
===========================================
}
//=========================================
// Checking CE version
{$lua}
if(getCEVersion() < 7.0) then
ShowMessage('Warning. CE version should be 7.0 or above')
end
{$asm}
//=========================================
// Checking Selected Process
{$lua}
if(process == nil) then
ShowMessage('No process was selected')
elseif ((string.upper(process) ~= string.upper("AoE2DE_s.exe")) and (string.upper(process) ~= string.upper("AoE2DE.exe"))) then
ShowMessage('Warning. Expected Process = AoE2DE_s.exe or AoE2DE.exe')
end
{$asm}
//=========================================
{$lua}
-- monoAA_USEMONO(process,false)
if waitForPDB then --this way older CE versions are unaffected (By Dark Byte)
waitForPDB()
end
{$asm}
//=========================================
// Definitions
define(LUDO,"AoE2DE_s.exe")
define(LUDOSTA,AoE2DE_s.exe+00700000)
define(LUDOEND,AoE2DE_s.exe+037F5E00)
{
define(MOHP,AoE2DE_s.exe+00CEBA1E) //#==##====X=#=#==
define(MOSU,AoE2DE_s.exe+00D7096D) //#==##=######=#==
define(GDMD,AoE2DE_s.exe+008B72CB) //=#=##=#XXX=#=##=
define(GMD2,AoE2DE_s.exe+00F28287) //##===##XXX##=##=
define(GMD3,AoE2DE_s.exe+00F40243) //###==##XXX##=##=
define(MOEP,AoE2DE_s.exe+00E79066) //===X##===#======
define(MOCP,AoE2DE_s.exe+00F262FE) //=#====#XX#=#=##=
define(MOPP,AoE2DE_s.exe+00703397) //================
define(MOUC,AoE2DE_s.exe+00D0B990) //N####=##======== 3 1
define(MORP,AoE2DE_s.exe+0070D691) //-----N#==#======
define(ENCM,AoE2DE_s.exe+00CE6671) //-------NXX=X=##=
}
define(MXBP,AoE2DE_s.exe+037F5D25) //-------NPX=XPPXX
//=========================================
// Constants v101.101.45340.0 //=XXXX
// for max wHP (decrypting)
define(ENM0,4064A8CB1C4FCE5E) //XXXX (xor) (RDX)
define(ENM1,C752C5FCC3DFE739) //XXXX (xor) (R8)
// for pUnit_More_Info (decrypting)
define(ENP0,7EB8135DFBE51631) //-NX= (add) (R12)
define(ENP1,000000000000000B) //-NX= (sub)
// for cur fHP (decrypting)
define(ENC0,CE5ADF28FF685748) //-XXX (xor) (R13)
define(ENC1,6328957F66B8D88A) //-XXX (xor) (RDX)
// for cur fResources (decrypting)
define(ENR0,7014FC6A9968B971) //-NX= (add) (RDI)
define(ENR1,36ED660735BC16FB) //-N== (xor) (R14)
define(ENR2,0000000000000003) //-NX= (add)
define(ENR3,61B41463275ED793) //-NX= (sub) (RDX)
//define(ENRX,389F7B37131922D4) //-NX (SUB)(ADD)
//=========================================
// Constants used in the script (that can be changed)
define(ctCE70,(float)7.0)
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
AOBScanModule(MOHP,$process,49 8B 87 B0 00 00 00 48 8B 48 20 48 89 4C 24 70 48 8B 44 24 70 48 03 C7)
AOBScanModule(MOSU,$process,FF 83 24 04 00 00 48 89 B3 38 02 00 00 C6 86 9A 00 00 00 01 85 FF ?? ??)
AOBScanModule(GDMD,$process,48 8B 86 90 00 00 00 48 BF 8A D8 B8 66 7F 95 28 63 F3 0F 5C 75 7F 48 89)
AOBScanModule(GMD2,$process,48 89 87 90 00 00 00 48 8B 47 18 83 B8 40 94 00 00 00 0F 8E ?? ?? ?? ??)
AOBScanModule(GMD3,$process,48 89 87 90 00 00 00 48 8B 87 90 00 00 00 48 89 45 A7 48 8B 45 A7 49 33)
AOBScanModule(MOEP,$process,F3 42 0F 10 04 C1 66 0F 6E C8 0F 5B C9 F3 0F 58 CA 0F 2F C1 ?? ?? 45 84 C9)
AOBScanModule(MOCP,$process,66 0F 6E CA 0F 5B C9 0F 2F C1 ?? ?? 48 8B 06 B2 02 48 8B CE FF 90 ??)
AOBScanModule(MOPP,$process,0f 5b c0 0f 2f f0 ?? ?? 48 8b cb e8 ?? ?? ?? ?? 84 c0 ?? ?? 32 db ??)
AOBScanModule(MOUC,$process,48 8B C4 55 41 54 41 55 41 56 41 57 48 8D A8 18 FB FF FF 48 81 EC C0 05 00 00)
AOBScanModule(MORP,$process,F3 0F 10 47 70 0F 2F C1 ?? ?? 66 39 5C CA 12 ?? ?? 48 8B 07 B2 01 ??)
AOBScanModule(ENCM,$process,48 BE 31 16 E5 FB 5D 13 B8 7E 48 B9 2F 00 71 AB B6 18 FB 76 48 BA 94 F1 2B CB C9 F8 AD 4E) //
//assert(GMD2,48 89 87 00 01 00 00)
//assert(GMD3,48 89 87 00 01 00 00)
assert(MXBP,48 8B 45 28 0F B6 00)
//=========================================
alloc(MyCode,4096,$process)
//=========================================
alloc(CodeCopy,0x037F5E00,$process)
registersymbol(CodeCopy)
//=========================================
// Copy Game
//=========================================
CodeCopy:
readmem($process,0x037F5E00)
//=========================================
// Declaration section
label(_MonHumanPlayer)
label(_BackMHP)
label(_MonSelUnit)
label(_BackMSU)
label(_GodMode)
label(_BackGMD)
label(_GodMode2)
label(_BackGM2)
label(_GodMode3)
label(_BackGM3)
label(_MonEraProgress)
label(_BackMEP)
label(_MonConstProg)
label(_BackMCP)
label(_MonProdProg)
label(_BackMPP)
label(_MonUnitConv)
label(_BackMUC)
label(_MonResProg)
label(_BackMRP)
label(_MonXBProt)
label(_BackMXP)
label(iEnableMMR)
label(iEnableGMD)
label(iEnableMEP)
label(iEnableMCP)
label(iEnableMPP)
label(iEnableMUC)
label(iPlayerID)
label(pPlayer)
label(pUnit)
label(pEra)
label(pCopy)
label(aLast)
label(iCount)
label(iCount2)
//label(MXBP)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableMMR)
registersymbol(iEnableGMD)
registersymbol(iEnableMEP)
registersymbol(iEnableMCP)
registersymbol(iEnableMPP)
registersymbol(iEnableMUC)
registersymbol(iPlayerID)
registersymbol(pPlayer)
registersymbol(pUnit)
registersymbol(pEra)
registersymbol(pCopy)
registersymbol(aLast)
registersymbol(iCount)
registersymbol(iCount2)
registersymbol(MOHP)
registersymbol(MOSU)
registersymbol(GDMD)
registersymbol(GMD2)
registersymbol(GMD3)
registersymbol(MOEP)
registersymbol(MOCP)
registersymbol(MOPP)
registersymbol(MOUC)
registersymbol(MORP)
//=========================================
MyCode:
//========================================= 44725 #
// All the time (Id player and min Resources)
// RCX is safe
_MonHumanPlayer:
mov [aLast],'_MHP'
mov [pR10],r10
cmp [pPlayer],r15
je _MonHP00
mov [pPlayer],r15
inc dword ptr [iCount]
_MonHP00:
mov ax,[r15+0000019A]
movsx rax,ax
mov [iPlayerID],eax
cmp dword ptr [iEnableMMR],0
je _ExitMHP // Jump if feature is disabled
mov r10,[r15+000000B0]
movsd [pXMM0],xmm0
mov rcx,[r10+00]
add rcx,rdi
xor rcx,r14
add rcx,3
sub rcx,rdx
mov [pAUXr],rcx
movss xmm0,[pAUXr]
maxss xmm0,[fMinRes]
movss [pAUXr],xmm0
mov rcx,[pAUXr]
add rcx,rdx
sub rcx,3
xor rcx,r14
sub rcx,rdi
mov [r10+00],rcx
mov rcx,[r10+08]
add rcx,rdi
xor rcx,r14
add rcx,3
sub rcx,rdx
mov [pAUXr],rcx
movss xmm0,[pAUXr]
maxss xmm0,[fMinRes]
movss [pAUXr],xmm0
mov rcx,[pAUXr]
add rcx,rdx
sub rcx,3
xor rcx,r14
sub rcx,rdi
mov [r10+08],rcx
mov rcx,[r10+10]
add rcx,rdi
xor rcx,r14
add rcx,3
sub rcx,rdx
mov [pAUXr],rcx
movss xmm0,[pAUXr]
maxss xmm0,[fMinRes]
movss [pAUXr],xmm0
mov rcx,[pAUXr]
add rcx,rdx
sub rcx,3
xor rcx,r14
sub rcx,rdi
mov [r10+10],rcx
mov rcx,[r10+18]
add rcx,rdi
xor rcx,r14
add rcx,3
sub rcx,rdx
mov [pAUXr],rcx
movss xmm0,[pAUXr]
maxss xmm0,[fMinRes2]
movss [pAUXr],xmm0
mov rcx,[pAUXr]
add rcx,rdx
sub rcx,3
xor rcx,r14
sub rcx,rdi
mov [r10+18],rcx
movsd xmm0,[pXMM0]
_ExitMHP:
mov r10,[pR10]
mov rax,[r15+000000B0] // Original code (get pRes)
jmp _BackMHP // Back to main code
//========================================= 44725 *
// When a unit is selected
_MonSelUnit:
mov [pUnit],rsi
_ExitMSU:
inc [rbx+00000424] // Original code
jmp _BackMSU // Back to main code
//========================================= 45340 #
// During Combat (units and buildings)(now encrypted)
// RDI is safe
_GodMode:
mov [aLast],'_GMD'
mov [pRSI],rdi
xchg rsi,rdi
cmp dword ptr [iEnableGMD],0
je _ExitGMD // Jump if feature is disabled
mov rax,[rdi+18]
cmp rax,[pPlayer]
jne _ExitGMD
mov rsi,[rdi+10]
mov rax,ENP0
add rsi,rax
mov rax,ENP1
sub rsi,rax
mov rax,[rsi+68]
mov rsi,ENM0
xor rax,rsi
mov rsi,ENM1
xor rax,rsi
cwde
cmp eax,#15
jle _ExitGMD
movd xmm0,eax
cvtdq2ps xmm0,xmm0
movss [pAUX1],xmm0
mov rax,[pAUX1]
mov rsi,ENC1
xor rax,rsi
mov rsi,ENC0
xor rax,rsi
mov [rdi+00000090],rax
movss [rbp+7F],xmm6
_ExitGMD:
xchg rsi,rdi
mov rdi,[pRSI]
mov rax,[rsi+00000090] // Original code (get enc HP)
jmp _BackGMD // Back to main code
//========================================= 45340 #
// During Combat (buildings)
_GodMode2:
mov [aLast],'_GM2'
mov [pRBX],rbx
mov [pRCX],rcx
cmp dword ptr [iEnableGMD],0
je _ExitGM2 // Jump if feature is disabled
mov rbx,[rdi+18]
cmp rbx,[pPlayer]
jne _ExitGM2
mov rbx,[rdi+10]
mov rcx,ENP0
add rbx,rcx
mov rcx,ENP1
sub rbx,rcx
test rbx,rbx
jz _ExitGM2
xchg rcx,rax
mov rax,[rbx+68]
mov rbx,ENM0
xor rax,rbx
mov rbx,ENM1
xor rax,rbx
cwde
xchg rcx,rax
cmp ecx,#15
jle _ExitGM2
movd xmm1,ecx
cvtdq2ps xmm1,xmm1
movss [pAUX1],xmm1
mov rax,[pAUX1]
mov rcx,ENC1
xor rax,rcx
mov rcx,ENC0
xor rax,rcx
_ExitGM2:
mov rbx,[pRBX]
mov rcx,[pRCX]
mov [rdi+00000090],rax // Original code (upd HP)
jmp _BackGM2 // Back to main code
//========================================= 45340 #
// During Combat (units)
_GodMode3:
mov [aLast],'_GM3'
mov [pRBX],rbx
mov [pRCX],rcx
cmp dword ptr [iEnableGMD],0
je _ExitGM3 // Jump if feature is disabled
mov rbx,[rdi+18]
cmp rbx,[pPlayer]
jne _ExitGM3
mov rbx,[rdi+10]
mov rcx,ENP0
add rbx,rcx
mov rcx,ENP1
sub rbx,rcx
test rbx,rbx
jz _ExitGM3
xchg rcx,rax
mov rax,[rbx+68]
mov rbx,ENM0
xor rax,rbx
mov rbx,ENM1
xor rax,rbx
cwde
xchg rcx,rax
cmp ecx,#15
jle _ExitGM3
movd xmm1,ecx
cvtdq2ps xmm1,xmm1
movss [pAUX1],xmm1
mov rax,[pAUX1]
mov rcx,ENC1
xor rax,rcx
mov rcx,ENC0
xor rax,rcx
_ExitGM3:
mov rbx,[pRBX]
mov rcx,[pRCX]
mov [rdi+00000090],rax // Original code (upd HP)
jmp _BackGM3 // Back to main code
//========================================= 40874 *
// When changing ERA is in progress
_MonEraProgress:
mov [aLast],'_MEP'
mov [pRBX],rbx
movss xmm0,[rcx+r8*8] // Original code (get prog)
movd xmm1,eax // Original code
cvtdq2ps xmm1,xmm1 // Original code
addss xmm1,xmm2 // Original code
cmp dword ptr [iEnableMEP],0
je _ExitMEP // Jump if feature is disabled
mov rbx,[r10+18]
cmp rbx,[pPlayer]
jne _ExitMEP
mov [pEra],r10
maxss xmm0,xmm1
movss [rcx+r8*8],xmm0
_ExitMEP:
mov rbx,[pRBX]
jmp _BackMEP // Back to main code
//========================================= 45340 #
// When Constructing (now encrypted)
_MonConstProg:
mov [aLast],'_MCP'
mov [pRCX],rcx
mov [pRBX],rbx
movsd [pXMM2],xmm2
movss xmm2,xmm1
movd xmm1,edx // Original code
cvtdq2ps xmm1,xmm1 // Original code
cmp dword ptr [iEnableMCP],0
je _ExitMCP // Jump if feature is disabled
mov rcx,[rsi+18]
cmp rcx,[pPlayer]
jne _ExitMCP
movss [pAUX0],xmm2
mov rbx,[pAUX0]
mov rcx,ENC1
xor rbx,rcx
mov rcx,ENC0
xor rbx,rcx
mov [rsi+00000090],rbx
movss [rsi+00000458],xmm1
movss xmm0,xmm1
_ExitMCP:
mov rcx,[pRCX]
mov rbx,[pRBX]
movsd xmm2,[pXMM2]
comiss xmm0,xmm1 // Original code (chk if finished)
jmp _BackMCP // Back to main code
//========================================= v35584 ok
// When Constructing
_MonProdProg:
mov [aLast],'_MPP'
mov [pRCX],rcx
cvtdq2ps xmm0,xmm0 // Original code
cmp dword ptr [iEnableMPP],0
je _ExitMPP // Jump if feature is disabled
mov rcx,[rbx+10]
test rcx,rcx
jz _ExitMPP
mov rcx,[rcx+18]
cmp rcx,[pPlayer]
jne _ExitMPP
movss [rbx+6c],xmm0
movss xmm6,xmm0
_ExitMPP:
mov rcx,[pRCX]
comiss xmm6,xmm0 // Original code (chk if finished)
jmp _BackMPP // Back to main code
//========================================= 39284 #
// When Converting
_MonUnitConv:
mov [aLast],'_MUC'
cmp dword ptr [iEnableMUC],0
je _ExitMUC // Jump if feature is disabled
mov eax,[rcx+30]
test eax,eax
js _ExitMUC
mov rax,[rcx+20]
test rax,rax
jz _ExitMUC
mov rax,[rax+18]
cmp rax,[pPlayer]
jne _ExitMUC
inc dword ptr [iCount2]
mov al,01
ret
//--
_ExitMUC:
mov rax,rsp // Original code
push rbp // Original code
push r12 // Original code
push r13 // Original code
jmp _BackMUC // Back to main code
//========================================= 40874 #
// When research prog is updated
_MonResProg:
mov [aLast],'_MRP'
cmp dword ptr [iEnableMEP],0
je _ExitMRP // Jump if feature is disabled
cmp r8,[pPlayer] // could be R9
jne _ExitMRP
movss xmm0,[rdi+70]
maxss xmm0,xmm1
movss [rdi+70],xmm0
_ExitMRP:
movss xmm0,[rdi+70] // Original code (get prog)
comiss xmm0,xmm1 // Original code
jmp _BackMRP // Back to main code
//========================================= 45340 #
// Monitor the monitor
// RDX is safe
_MonXBProt:
mov [aLast],'_MXP'
mov rax,[rbp+28] // Original code
mov rdx,LUDOSTA
cmp rax,rdx
js _ExitMXP
mov rdx,LUDOEND
cmp rax,rdx
jns _ExitMXP
mov rdx,LUDO
sub rax,rdx
mov rdx,CodeCopy
add rax,rdx
_ExitMXP:
movzx eax,byte ptr [rax] // Original code
jmp _BackMXP // Back to main code
//=========================================
align 10,'='
//=========================================
db '===============================>'
db 'CE7.0 Script by Recifense 210325'
//=========================================
// Variables
iEnableMMR:
dd 0
iEnableGMD:
dd 0
iEnableMEP:
dd 0
iEnableMCP:
dd 0
iEnableMPP:
dd 0
iEnableMUC:
dd 0
iPlayerID:
dd 55555555
fMinRes:
dd (float)2700.0
fMinRes2:
dd (float)27000.0
fMinERA:
dd (float)0.98
pPlayer:
dq MyCode
pUnit:
dq 0
pEra:
dq 0
pCopy:
dq CodeCopy
pRAX:
dq 0
pRBX:
dq 0
pRCX:
dq 0
pRDX:
dq 0
pRDI:
dq 0
pRSI:
dq 0
pR10:
dq 0
pXMM1:
dq 0
pXMM0:
dq 0
pXMM2:
dq 0
pAUX0:
dq 0
pAUX1:
dq 0
pAUXr:
dq 0
iCount:
dq 0
iCount2:
dq 0
aLast:
db 'CE70'
//=========================================
// Hacking Points
MOHP:
jmp _MonHumanPlayer
nop
nop
_BackMHP:
MOSU:
jmp _MonSelUnit
nop
_BackMSU:
GDMD:
jmp _GodMode
nop
nop
_BackGMD:
GMD2:
jmp _GodMode2
nop
nop
_BackGM2:
GMD3:
jmp _GodMode3
nop
nop
_BackGM3:
MOEP:
jmp _MonEraProgress
db 90 90 90 90 90 90 90 90 90 90 90 90
_BackMEP:
MOCP:
jmp _MonConstProg
nop
nop
nop
nop
nop
_BackMCP:
MOPP:
jmp _MonProdProg
nop
_BackMPP:
MOUC:
jmp _MonUnitConv
nop
nop
nop
_BackMUC:
MORP:
jmp _MonResProg
nop
nop
nop
_BackMRP:
MXBP:
jmp _MonXBProt
nop
nop
_BackMXP:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MOHP:
db 49 8B 87 B0 00 00 00
MOSU:
db FF 83 24 04 00 00
GDMD:
db 48 8B 86 90 00 00 00
GMD2:
db 48 89 87 90 00 00 00
GMD3:
db 48 89 87 90 00 00 00
MOEP:
db F3 42 0F 10 04 C1 66 0F 6E C8 0F 5B C9 F3 0F 58 CA
MOCP:
db 66 0F 6E CA 0F 5B C9 0F 2F C1
MOPP:
db 0f 5b c0 0f 2f f0
MOUC:
db 48 8B C4 55 41 54 41 55
MORP:
db F3 0F 10 47 70 0F 2F C1
MXBP:
db 48 8B 45 28 0F B6 00
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(CodeCopy)
unregistersymbol(iEnableMMR)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableMEP)
unregistersymbol(iEnableMCP)
unregistersymbol(iEnableMPP)
unregistersymbol(iEnableMUC)
unregistersymbol(iPlayerID)
unregistersymbol(pPlayer)
unregistersymbol(pUnit)
unregistersymbol(pEra)
unregistersymbol(pCopy)
unregistersymbol(aLast)
unregistersymbol(iCount)
unregistersymbol(iCount2)
unregistersymbol(MOHP)
unregistersymbol(MOSU)
unregistersymbol(GDMD)
unregistersymbol(GMD2)
unregistersymbol(GMD3)
unregistersymbol(MOEP)
unregistersymbol(MOCP)
unregistersymbol(MOPP)
unregistersymbol(MOUC)
unregistersymbol(MORP)
//=========================================
dealloc(MyCode)
dealloc(CodeCopy)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
}
96
"[X] <== Minimum Resources"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMMR",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMMR",0)
memrec.Color=0x0c08000
{$ASM}
229
"[X] <== God Mode"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableGMD",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGMD",0)
memrec.Color=0x0c08000
{$ASM}
235
"[X] <== Instant Research"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMEP",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMEP",0)
memrec.Color=0x0c08000
{$ASM}
233
"[X] <== Instant Construction"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMCP",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMCP",0)
memrec.Color=0x0c08000
{$ASM}
231
"[X] <== Instant Production"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMPP",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPP",0)
memrec.Color=0x0c08000
{$ASM}
248
"[X] <== No Coversion (Units/Buildings)"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMUC",1)
memrec.Color=0x0004000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMUC",0)
memrec.Color=0x0c08000
{$ASM}
228
"[X] <== Table/Script Information"
0000FF
Auto Assembler Script
[enable]
{$LUA}
getMainForm().CommentButton.doClick()
{$ASM}
[disable]
Recifense
20210325
===========================================
Game Title : Age of Empires II Definitive Edition
Game Version : 101.101.46295.0 (Steam)
Game Sponsor : PF
Process Name : AoE2DE_s.exe
Relevant Info : 64bits/RTS
Script Version: 3.9 (DRM prot is back)
CE Version : 7.0
Release date : 25-Mar-2021
Author : Recifense
History:
15-Nov-2019: First Release (Adapted from AoEDE) (s2.0)
17-Nov-2019: Fix for GM + "No Conversion" (s2.1)
18-Dec-2019: Release for version 101.101.34055.0 (s2.2)
21-Jan-2020: Release for version 101.101.34699.0 (s2.3)
27-Jan-2020: Release for version 101.101.34793.0 (s2.4)
11-Feb-2020: Fix for "No Conversion" (s2.5)
29-Feb-2020: Release for version 101.101.35584.0 (s2.6)
31-Mar-2020: Release for version 101.101.36202.0 (s2.7)
30-Apr-2020: Release for version 101.101.36906.0 (s2.8)
28-May-2020: Release for version 101.101.37650.0 (s2.9)
22-Jul-2020: Release for version 101.101.39284.0 (s3.0)
28-Jul-2020: Release for version 101.101.39515.0 (s3.1)
25-Aug-2020: Release for version 101.101.40220.0 (s3.2)
24-Sep-2020: Release for version 101.101.40874.0 (s3.3)
21-Oct-2020: Release for version 101.101.41855.0 (s3.4)
19-Nov-2020: Release for version 101.101.42848.0 (s3.5)
26-Nov-2020: Release for version 101.101.43210.0 (s3.6)
27-Jan-2021: Release for version 101.101.44725.0 (s3.7)(Steam and WinStore)
15-Feb-2021: Release for version 101.101.45340.0 (s3.8)(Steam)
25-Mar-2021: Release for version 101.101.46295.0 (s3.9)(Steam)
Features:
- Minimum Resources [1]
- God Mode [2]
- Instant Research [3]
- Instant Construction [4]
- Instant unit Production [5]
- No Conversion [6] (new)(s2.1)
- Some Pointers
===========================================
[1] Minimum Value is 2700 (resource will not go under this vale)[HPO];
[2] Units will not die and the Buildings will not be destroyed [HPO];
[3] Resarch in 1 click [HPO];
[4] Construction as soon as it starts [HPO];
[5] Production in 1 click [HPO];
[6] Units/Buildings will not be converted [HPO];
[HPO] = Human Player Only
===========================================
[USAGE]
1) Run CE70 or greater;
2) Run Game;
3) Load the game process "AoE2DE_s.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
===========================================
Cheers!