Doesn't work at all, CE reports a mistake. Line 116 '<' instead of '>'.yazz wrote: ↑Tue Aug 09, 2022 11:20 pmthis is more stable then the previous code, and note that the active chearts are only turn base cheatCode: Select all
{ =========================================== Game Title : Total War - Warhammer 2 Game Version : 1.12.1 (20163) (The Silence & The Fury) Game Sponsor : Myself (Game+DLCs) (with Patreon's fund) Process Name : Warhammer2.exe Relevant Info : 64bits/TBS/RTS Script Version: 8.4 (LJ) CE Version : 7.4 Release date : 02-May-2022 Author : Recifense History: 29-Sep-2017: First Release 30-Sep-2017: Trying to Fix Construction + Minimum Food (s2.0) 01-Oct-2017: Added "Rites Cooldown in 1 turn" and fix "CanActAgain" (s3.0) 03-Oct-2017: Included Arks in Pop Surplus (s3.1) 10-Oct-2017: God Mode for Auto-Resolve battles and Troop Quick Level Up (s3.2) 26-Oct-2017: Release for version 1.1.0-4871 28-Oct-2017: Porting of AMBER features from Warhammer TW (s3.3) 04-Nov-2017: Release for version 1.1.0-5003 beta 09-Nov-2017: Release for version 1.1.1-5078 14-Dec-2017: Release for version 1.2.0-5568 23-Jan-2018: Release for version 1.3.0-6014 (Rise of the Tomb kings) 24-Jan-2018: Added two more features releated to spell durng combat (s5.0) 25-Jan-2018: Include spells related to the army (s5.1) 30-Jan-2018: Minimum Slave per Settlement (Dark Elves) (s5.2) 14-Feb-2018: Release for version 1.3.1-6213 + Min Pop Surplus = 30 (s5.3) 31-May-2018: Release for version 1.4.0-7243 20-Jun-2018: Release for version 1.4.0-7312 Beta (CE68)(s5.4) 21-Jun-2018: Release for version 1.4.1-7450 30-Jun-2018: Include "Ever fresh units (Full Vigour)" (CE67)(s5.5) 10-Nov-2018: Release for version 1.5.0-8774 (s6.0) 11-Nov-2018: Fix for unlimited spell + can Search Treasure again (s6.1) 16-Dec-2018: Release for version 1.5.1-9184 Beta (s6.2) 22-Jan-2019: Release for version 1.5.1-9466 Beta (s6.3) 18-Apr-2019: Release for version 1.6.0-10563 (s6.4) 20-Apr-2019: Skaven Warpstorm and Warp-Fuel + Lizards Sacrificial Offerings (s6.5) 16-May-2019: Release for version 1.6.1-10846 (s6.6) 12-Sep-2019: Release for version 1.7.0-11694 + Feature (Old Ones) (s6.7)(CE70) 17-Sep-2019: Release for version 1.7.1-11765 (s6.8) 23-Sep-2019: Changed the hacking method to long jumps (s7.0) 16-Oct-2019: Release for version 1.7.2-12104 (s7.1) 14-Dec-2019: Release for version 1.8.0-13017 (s7.2) 15-Dec-2019: Fix for crashing during RTS battle (s7.3) 18-Dec-2019: Release for version 1.8.1-13089 (s7.4) 13-Jan-2020: Release for version 1.8.2-13152 (s7.5) 28-Feb-2020: Release for version 1.8.3-13831 (s7.6) 25-May-2020: Release for version 1.9.0-15159 (s7.7) Preliminary 26-May-2020: Fix for Rites/Influence (s7.8) 29-May-2020: Release for version 1.9.1-15282 + New feature (s7.9) 13-Jun-2020: Release for version 1.9.2-15323 (beta)(s7.10) 18-Jun-2020: Release for version 1.9.2-15501 (beta2)(s7.11) 13-Jul-2020: Release for version 1.9.2-15685 (beta3) + Fix for Amber (event)(s7.12) 05-Dec-2020: Release for version 1.10.0-16858 (s7.13) 07-Jan-2021: Release for version 1.10.1-16966 (s7.14) 08-Feb-2021: Release for version 1.10.2-17427 (s7.15) 20-Mar-2021: Release for version 1.11.0-18012 (s7.16) 22-Apr-2021: Release for version 1.11.1-18231 (s7.17) 29-Apr-2021: Fix for Rites (s7.18) 15-Jul-2021: Release for version 1.12.0-18858 (s7.19P) Preliminary 16-Jul-2021: Release for version 1.12.0-18858 (s8.0) + Minimum Dread 22-Jul-2021: Fix for Spell Cooldown (s8.1) 08-Sep-2021: Release for version 1.21.1-19098 (s8.2) 03-Nov-2021: Release for version 1.21.1-19592 (s8.3) 02-May-2022: Release for version 1.21.1-20163 (s8.4) Features: - God Mode (RTS) - Full Ammo (RTS) - Minimum Leadership (GM) (RTS) - Fast Recover of Winds of Magic (RTS) - Unlimited use of limited spells (RTS) (s5.0) new - Spell Quick Cooldown (RTS) (s5.0) new - Ever fresh units (RTS) (s5.5) new - Minimum Treasure - Minimum Influence - Minimum Food (Skaven) - Unlimited Action Points - Recover Troop Size/Hero HP - Research in 1 turn - Recruitment in 1 turn - Construction in 1 turn - Rites Cooldown in 1 turn - Minimum Public Order - Minimum Pop Surplus (including Arks) (s3.1) - Level almost complete (sel hero XP) - Hero can Act Again - Included Search for Treasure (s6.1) - God Mode for Auto-resolve battles (s3.2) - Troops Quick Level Up (s3.2) - Minimum Amber Per Settlement (s3.3) - Minimum Event Total Amber (s3.3) - Minimum Slaves Per Settlement (s5.2) (for Dark Elves) (Pending) - Minimum Special Resources: (s6.5) - Nukes and Warps (Skaven) - Sacrificial Offerings (Lizards) - Minimum Old Ones (s6.7) (for Nakai the Wanderer) - Minimum Scraps (s7.9) (for Grom the Paunch) - Minimum Dread (s8.0) (new) (for Taurox the Brass Bull) - 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("Warhammer2.exe")) then ShowMessage('Warning. Expected Process = Warhammer2.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,"Warhammer2.exe") define(GDMD,warhammer2.exe+2098B00) //20==#====#==#=#=== define(MOTA,warhammer2.exe+23BB27E) //20==#====#====#=== define(GDM2,warhammer2.exe+217FD00) //20==#====#==#=#=== define(MOTU,warhammer2.exe+22A10DD) //20==#====#==#=#=== 2 1 define(MOWM,warhammer2.exe+2018023) //20==#============= define(MOSU,Warhammer2.exe+02024250) //20==#=========PPPP (s5.0) define(MSCD,warhammer2.exe+1E0CC2C) //20==#====#====#=== (s5.0) define(CSCD,Warhammer2.exe+020108F0) define(MSU2,warhammer2.exe+2010F70) //20==PPPPPPPPPPX=== (s5.1) define(MSC2,warhammer2.exe+1E0C8C8) //20==#=========#=== (s5.1) define(MOUS,warhammer2.exe+219F29C) //20==#====#==#=#=== (s5.5) //-- 10 define(MOHP,warhammer2.exe+29ACADA) //20==#=======#=#=== //define(MOAP,Warhammer2.exe+1C7A9AF0) //20==#============= define(MAP2,warhammer2.exe+14A693A) //20==#====##=#===== define(MAP3,warhammer2.exe+1A35730) //20==#============= //define(MAP4,Warhammer2.exe+1CC56DB3) //20==#============= define(MORP,warhammer2.exe+18937B6) //20==X====##===#=== define(MOTR,warhammer2.exe+1A87826) //20==#============= define(COTR,Warhammer2.exe+01A86F80) define(JOTR,Warhammer2.exe+01A8736D) define(MOCP,warhammer2.exe+1BD8170) //20==#=========#=== //define(MOPO,Warhammer2.exe+1CCFAAE1) //20==X============= define(MOPS,warhammer2.exe+2AB109E) //20==#=======#=#=== //-- 20 define(MPS2,warhammer2.exe+180949C) //20==#=========#=== (s3.1) define(MOSH,warhammer2.exe+28194DC) //20==#=======#=#=== define(MOPF,warhammer2.exe+295DD48) //20==#=======#===== //define(MORC,Warhammer2.exe+1CCA90E6) //20==X====X=#====== //define(MRC2,Warhammer2.exe+1CCA91E8) //20==X====X=#====== define(GMTB,warhammer2.exe+1465C08) //20==X====#==#=#=== (s3.2) define(MOPA,warhammer2.exe+D0E8B2) //20==#============= (s3.3) define(MSPS,Warhammer2.exe+00b0d0e2) //20PPPPPPPPPPPPPPPP (s5.2) define(CSPS,Warhammer2.exe+00afabd0) define(RPAS,Warhammer2.exe+0882141B) //20==#=========PPPP (s3.3) define(RPAE,Warhammer2.exe+095C17BC) //20==#===#===#PPPPP (s3.3) //========================================= // Constants used in the script (that can be changed) define(ctCE67,(float)7.0) define(ctMMON,#70000) // Minimum Money define(ctMINF,#70) // Minimum Influence define(ctMFOO,#80) // Minimum Food define(ctMSSR,#12) // Minimum Skaven Special Resources define(ctMLSR,#500) // Minimum Lizard Special Resource define(ctMAPS,(float)5.0) // OK define(ctMAPE,(float)20.0) // OK //========================================= [ENABLE] //========================================= //LuaCall(CheckVersion()) //========================================= // Check if script is compatible to this game version // If false the script will not be loaded assert(GDMD,44 8B 41 04 45 33 C9 44 2B C2 3B 51 04 45 0F 47 C1 44 89 41 04 8B 01) assert(MOTA,45 85 C0 74 07 41 8D 48 FF 89 0C 38 84 D2 0F 84 ?? ?? 00 00 85 C9) assert(GDM2,40 55 56 41 54 41 56 48 8D 6C 24 D8 48 81 EC 28 01 00 00 48 8B F1 4C 8B F2 48 8B 89 E0 02) assert(MOTU,F3 0F 11 85 A0 00 00 00 48 8B 88 E8 02 00 00 48 85 C9 74 ?? E8 ??) assert(MOWM,F3 0F 58 47 08 0F 2F C1 F3 0F 11 47 08 76 ?? F3 0F 11 4F 08 49 83) //assert(MOSU,48 8B 46 10 83 78 28 00 7C 03 FF 4E 30 0F 57 F6 48 85 ED ?? ?? 48) //P assert(MSCD,48 8B 95 90 3B 00 00 48 8B CE E8 ?? ?? ?? ?? 29 46 1C 83 7E 1C 00) assert(MSU2,48 8B 41 08 83 78 2C 00 7C 03 FF 49 2C C3 CC ?? ?? ?? ?? ?? ?? ??) assert(MSC2,48 8B 95 E0 02 00 00 48 8B CE E8 ?? ?? ?? ?? 29 46 1C 83 7E 1C 00) assert(MOUS,03 C3 48 8B 5C 24 78 01 87 EC 06 00 00 48 8B CF E8 ?? ?? ?? ?? 4C) //-- 10 assert(MOHP,48 8B 8A 88 01 00 00 48 81 C1 D0 02 00 00 E8 ?? ?? ?? ?? 45 33 ED) //assert(MOAP,44 8B 81 A8 00 00 00 31 C0 45 89 C1 41 29 D1 41 39 D0 41 0F 47 C1) assert(MAP2,41 8B 86 A8 00 00 00 41 89 87 EC 00 00 00 49 8B 46 70 48 85 C0 ??) assert(MAP3,44 8B 49 2C 45 33 C0 41 8B C1 2B C2 41 3B D1 44 0F 46 C0 44 89 41 2C) //assert(MAP4,29 C6 89 43 2C 0F 48 F5 48 8B 6C 24 30 01 73 30 48 8B 74 24 38 48) assert(MORP,44 8B 4A 0C 45 03 C8 44 3B 49 5C 48 8B CE 0F 83 ?? ?? ?? ?? 44 89 4A 0C) assert(MOTR,E8 ?? ?? ?? ?? 85 C0 78 ?? 03 43 50 48 83 C4 20 5B C3 B8 FF FF FF) assert(MOCP,FF 41 0C 8B 41 0C 3B 41 10 0F 93 C0 C3 ?? ?? ?? ?? ?? ?? ?? ?? ??) //assert(MOPO,41 8B 4E 3C 89 4B 0C 41 83 7E 4C 01 ?? ?? 49 8B 0E 48 81 C1 A8 00) //--19 assert(MOPS,44 8B BA 8C 03 00 00 48 8D B2 80 03 00 00 48 8B DA 4C 8B E1 48 8B CE B2 01) assert(MPS2,48 8B 88 18 06 00 00 48 8B 41 18 8B 40 08 C3 ?? ?? ?? ?? ?? ?? ??) assert(MOSH,45 8B A6 54 02 00 00 44 8B F8 44 2B FB 44 2B E3 48 8B 0D ?? ?? ??) assert(MOPF,48 8B 47 08 48 8B 5C 24 50 48 8B 74 24 58 8B 40 20 48 83 C4 40 5F C3) //assert(MORC,FF C9 44 89 F8 44 01 C1 0F 49 C1 89 43 10 44 39 73 18 77 ?? 44 88) //assert(MRC2,FF C9 44 89 F8 01 D1 0F 49 C1 89 43 08 48 83 C3 10 48 39 FB 75 ??) assert(GMTB,48 8B 81 80 00 00 00 4C 8B F2 48 8B F1 80 B8 88 01 00 00 00 ?? ??) assert(MOPA,F3 41 0F 10 48 18 0F 57 C0 0F 2F C8 76 ?? F3 0F 58 0D ?? ?? ?? ??) //assert(MSU2,48 8b 4e 10 83 79 28 00 7c 03 ff 4e 30 0f 57 ff 48 85 db ?? ?? 80) //?? //assert(MSPS,48 85 c0 74 0b 8b 50 08 48 8b c8 e8 ?? ?? ?? ?? 48 8b 5c 24 30 48) //?? //========================================= alloc(MyCode,8000,$process) //========================================= alloc(SMSCD,18,$process) registersymbol(SMSCD) SMSCD: readmem(MSCD,18) //========================================= alloc(SMSC2,18,$process) registersymbol(SMSC2) SMSC2: readmem(MSC2,18) //========================================= alloc(SMOTR,12,$process) registersymbol(SMOTR) SMOTR: readmem(MOTR,12) //========================================= alloc(SMSPS,16,$process) registersymbol(SMSPS) SMSPS: readmem(MSPS,16) //========================================= // Declaration section label(_GodMode) label(_BackGMD) label(_MonTroopAmmo) label(_BackMTA) label(_GodMode2) label(_BackGM2) label(_MonTroopUnits) label(_BackMTU) label(_MonWindsOfMagic) label(_BackMWM) label(_MonSpellUse) label(_BackMSU) label(_MonSpellCooldown) label(_BackMSC) label(_MonSpellUse2) label(_BackSU2) label(_MonSpellCooldown2) label(_BackSC2) label(_MonUnitStress) label(_BackMUS) label(_MonHumanPlayer) label(_BackMHP) label(_MonActionPoints) //label(_BackMAP) label(_MonActionPoints2) label(_BackAP2) label(_MonActionPoints3) label(_BackAP3) label(_MonActionPoints4) //label(_BackAP4) label(_MonResearchProg) label(_BackMRP) label(_MonTroopRecruit) label(_BackMTR) label(_MonConstProg) label(_BackMCP) label(_MonPublicOrder) //label(_BackMPO) label(_MonPopSurplus) label(_BackMPS) label(_MonPopSurplus2) label(_BackPS2) label(_MonSelHero) label(_BackMSH) label(_MonPlayerFood) label(_BackMPF) label(_MonRitesCD) //label(_BackMRC) label(_MonRitesCD2) //label(_BackRC2) label(_GodModeTBS) label(_BackGMT) label(_MonPlayerAmber) label(_BackMPA) label(_MonSlavesPerSettlement) label(_BackMSS) label(iEnableGMD) label(iEnableMTA) label(iEnableMTL) label(iEnableMWM) label(iEnableMMT) label(iEnableMAP) label(iEnableMTS) label(iEnableMRP) label(iEnableMTR) label(iEnableMCP) label(iEnableMPO) label(iEnableMPS) label(iEnableMXP) label(iEnableHAA) label(iEnableMPI) label(iEnableMPF) label(iEnableMRC) label(iEnableGMT) label(iEnableMTX) label(iEnablePAE) label(iEnablePAS) label(iEnableMSU) label(iEnableMSC) label(iEnableMSS) label(iEnableMUS) label(iEnableSSR) label(iEnableLSR) label(iEnableMOO) label(iEnableSCR) label(iEnableDRE) label(pPlayer) label(pLord) label(pHero) label(pUnit) label(pDebug) label(pCommon) label(pFood) label(lRBX) label(aLast) //========================================= // Registering Symbols registersymbol(MyCode) registersymbol(iEnableGMD) registersymbol(iEnableMTA) registersymbol(iEnableMTL) registersymbol(iEnableMWM) registersymbol(iEnableMMT) registersymbol(iEnableMAP) registersymbol(iEnableMTS) registersymbol(iEnableMRP) registersymbol(iEnableMTR) registersymbol(iEnableMCP) registersymbol(iEnableMPO) registersymbol(iEnableMPS) registersymbol(iEnableMXP) registersymbol(iEnableHAA) registersymbol(iEnableMPI) registersymbol(iEnableMPF) registersymbol(iEnableMRC) registersymbol(iEnableGMT) registersymbol(iEnableMTX) registersymbol(iEnablePAE) registersymbol(iEnablePAS) registersymbol(iEnableMSU) registersymbol(iEnableMSC) registersymbol(iEnableMSS) registersymbol(iEnableMUS) registersymbol(iEnableSSR) registersymbol(iEnableLSR) registersymbol(iEnableMOO) registersymbol(iEnableSCR) registersymbol(iEnableDRE) registersymbol(pPlayer) registersymbol(pLord) registersymbol(pHero) registersymbol(pUnit) registersymbol(pDebug) registersymbol(pCommon) registersymbol(pFood) registersymbol(aLast) //========================================= MyCode: //========================================= LJ 1120 # // RTS - During Combat (HP)(Troop/Hero) // RAX is safe _GodMode: mov dword ptr [aLast],'_GMD' mov rax,_BackGMD mov [pBack+00],rax mov [pDebug],rbx cmp dword ptr [iEnableGMD],0 je _ExitGMD // Jump if feature is disabled lea rax,[rcx-00000B0C] cmp rax,rbx jne _ExitGMD mov rax,[rbx+000002E8] test rax,rax jz _ExitGMD cmp byte ptr [rax+00003B60],00 jne _ExitGMD mov eax,[rcx] mov [rcx+04],eax xor edx,edx _ExitGMD: mov r8d,[rcx+04] // Original code xor r9d,r9d // Original code sub r8d,edx // Original code cmp edx,[rcx+04] // Original code cmova r8d,r9d // Original code jmp [pBack+00] // Back to main code //========================================= LJ 1120 # // RTS - After decreasing Ammo _MonTroopAmmo: mov dword ptr [aLast],'_MTA' mov rcx,_BackMTA mov [pBack+08],rcx mov ecx,r8d // recover ECX test r8d,r8d // Original code jz _MonTA00 cmp dword ptr [iEnableMTA],0 je _ExitMTA // Jump if feature is disabled cmp byte ptr [rdi+00003B60],00 jne _ExitMTA inc ecx mov r8d,ecx _ExitMTA: lea ecx,[r8-01] // Original code mov [rax+rdi],ecx // Original code _MonTA00: jmp [pBack+08] // Back to main code //========================================= LJ 1120 # // RTS - During Combat (HP)(Troop) // RAX is safe _GodMode2: mov dword ptr [aLast],'_GM2' mov rax,_BackGM2 mov [pBack+10],rax cmp dword ptr [iEnableGMD],0 je _ExitGM2 // Jump if feature is disabled mov rax,[rcx+000002E8] test rax,rax jz _ExitGM2 cmp byte ptr [rax+00003B60],00 jne _ExitGM2 mov eax,[rcx+00000B0C] mov [rcx+00000B10],eax ret //== _ExitGM2: push rbp // Original code push rsi // Original code push r12 // Original code push r14 // Original code lea rbp,[rsp-28] // Original code jmp [pBack+10] // Back to main code //========================================= LJ 1120 # // RTS - All the time during battle _MonTroopUnits: mov dword ptr [aLast],'_MTU' mov rcx,_BackMTU mov [pBack+18],rcx push rax push rbx push rdx mov rdx,rax mov rcx,[rdx+000002E8] test rcx,rcx jz _ExitMTU cmp dword ptr [rcx+70],55555555 cmp byte ptr [rcx+00003B60],00 jne _ExitMTU mov rax,[rcx+70] mov [pCommon],rax cmp dword ptr [iEnableGMD],0 je _MonTU00 // Jump if feature is disabled mov eax,#110 mov ebx,[rcx+000037AC] cmp ebx,eax cmovs ebx,eax mov [rcx+000037AC],ebx mov [rcx+000039E8],ebx mov [rcx+000039EC],ebx _MonTU00: cmp dword ptr [iEnableGMD],0 je _ExitMTU // Jump if feature is disabled cmp dword ptr [rdx+00000B10],0 je _ExitMTU mov eax,#671000 mov [rdx+00000B0C],eax mov [rdx+00000B10],eax _ExitMTU: pop rdx pop rbx pop rax movss [rbp+000000A0],xmm0 // Original code mov rcx,[rax+000002E8] // Original code (get pTroop) jmp [pBack+18] // Back to main code //========================================= LJ 190 * // RTS - When increasing value // RCX is safe _MonWindsOfMagic: mov dword ptr [aLast],'_MWM' mov rcx,_BackMWM mov [pBack+20],rcx addss xmm0,[rdi+08] // Original code (inc cWoM) cmp dword ptr [iEnableMWM],0 je _ExitMWM // Jump if feature is disabled mov rcx,[rdi] cmp rcx,[pCommon] jne _ExitMWM movss xmm0,xmm1 _ExitMWM: comiss xmm0,xmm1 // Original code movss [rdi+08],xmm0 // Original code jmp [pBack+20] // Back to main code //========================================= LJ 1110 P // RTS - when activating a spell (troop) _MonSpellUse: mov dword ptr [aLast],'_MSU' mov rax,_BackMSU mov [pBack+28],rax test rbp,rbp jz _ExitMSU mov rax,[rsi+10] cmp dword ptr [rax+28],00 jle _ExitMSU cmp dword ptr [iEnableMSU],0 je _ExitMSU // Jump if feature is disabled cmp byte ptr [rbp+00003B68],00 // s7.2 # jne _ExitMSU cmp dword ptr [rsi+30],01 js _ExitMSU inc dword ptr [rsi+30] _ExitMSU: mov rax,[rsi+10] // Original code cmp dword ptr [rax+28],00 // Original code jl _EMSU00 dec [rsi+30] // Original code _EMSU00: jmp [pBack+28] // Back to main code //========================================= LJ 1120 * // RTS - when a spell cooling down (troop) // RAX if safe _MonSpellCooldown: mov dword ptr [aLast],'_MSC' mov rdx,_BackMSC mov [pBack+30],rdx mov [pRBX],rbx mov rdx,[rbp+00003B90] // Original code mov rcx,rsi // Original code mov rax,CSCD call rax // Original code cmp dword ptr [iEnableMSC],0 je _ExitMSC // Jump if feature is disabled cmp byte ptr [rbp+00003B60],00 jne _ExitMSC mov ebx,[rsi+1C] sub ebx,eax cmp ebx,#50 js _MonSC00 mov ebx,#50 _MonSC00: add ebx,eax mov [rsi+1C],ebx _ExitMSC: mov rbx,[pRBX] sub [rsi+1C],eax // Original code jmp [pBack+30] // Back to main code //========================================= LJ 1120 * // RTS - when activating a spell (army) _MonSpellUse2: mov dword ptr [aLast],'_SU2' mov rax,_BackSU2 mov [pBack+38],rax cmp rbp,[pCommon] jne _ExitSU2 mov rax,[rcx+08] cmp dword ptr [rax+2C],00 jle _ExitSU2 cmp dword ptr [iEnableMSU],0 je _ExitSU2 // Jump if feature is disabled cmp dword ptr [rax+2C],01 js _ExitSU2 inc dword ptr [rax+2C] _ExitSU2: mov rax,[rcx+08] // Original code cmp dword ptr [rax+2C],00 // Original code jl _ESU200 // Original code dec dword ptr [rax+2C] // Original code _ESU200: jmp [pBack+38] // Back to main code //========================================= LJ 1120 * // RTS - when a spell cooling down (army) _MonSpellCooldown2: mov dword ptr [aLast],'_SC2' mov rdx,_BackSC2 mov [pBack+40],rdx mov [pRBX],rbx mov rdx,[rbp+000002E0] // Original code mov rcx,rsi // Original code mov rax,CSCD call rax // Original code cmp dword ptr [iEnableMSC],0 je _ExitSC2 // Jump if feature is disabled cmp rbp,[pCommon] jne _ExitSC2 mov ebx,[rsi+1C] sub ebx,eax cmp ebx,#50 js _MonSC20 mov ebx,#50 _MonSC20: add ebx,eax mov [rsi+1C],ebx _ExitSC2: mov rbx,[pRBX] sub [rsi+1C],eax // Original code jmp [pBack+40] // Back to main code //========================================= LJ 1120 # (Chariots) // RTS - All the time during battle // RCX is safe _MonUnitStress: mov dword ptr [aLast],'_MUS' mov rcx,_BackMUS mov [pBack+48],rcx add eax,ebx // Original code mov rbx,[rsp+78] // Original code mov rcx,[rdi+000002E8] test rcx,rcx jz _ExitMUS cmp byte ptr [rcx+00003B60],00 jne _ExitMUS cmp dword ptr [iEnableGMD],0 je _MonUS00 // Jump if feature is disabled cmp dword ptr [rdi+00000B10],0 je _MonUS00 mov ecx,#671000 mov [rdi+00000B0C],ecx mov [rdi+00000B10],ecx _MonUS00: cmp dword ptr [iEnableMUS],0 je _ExitMUS // Jump if feature is disabled mov [rdi+000006EC],00 test eax,eax js _ExitMUS mov eax,#-100 _ExitMUS: add [rdi+000006EC],eax // Original code (upd Stress) jmp [pBack+48] // Back to main code //========================================= ok //------------------------------TBS -------------------------------------- //========================================= LJ 1120 # // TBS - All the time at main game screen _MonHumanPlayer: mov dword ptr [aLast],'_MHP' mov rcx,_BackMHP mov [pBack+50],rcx mov rcx,[rdx+00000188] // Original code (get pPlayer) mov [pPlayer],rcx mov rax,[rcx+00000C20] mov [pWay],rax mov rax,[rcx+00001D90] mov [pRites],rax cmp dword ptr [iEnableMMT],0 je _MonHP00 // Jump if feature is disabled mov eax,ctMMON cmp [rcx+00000BF0],eax jns _MonHP00 mov [rcx+00000BF0],eax _MonHP00: cmp dword ptr [iEnableMPI],0 je _ExitMHP // Jump if feature is disabled cmp [rcx+00000ED0],0 je _ExitMHP mov eax,ctMINF cmp [rcx+00000ED0],eax jns _ExitMHP mov [rcx+00000ED0],eax _ExitMHP: add rcx,000002D0 // Original code jmp [pBack+50] // Back to main code //========================================= LJ 190 * // TBS - WHen troop is moving (MP, TS, HHP) // RAX is safe _MonActionPoints: mov dword ptr [aLast],'_MAP' //mov rax,_BackMAP mov [pBack+58],rax mov rax,[rcx+78] cmp rax,[pPlayer] jne _ExitMAP cmp dword ptr [iEnableMAP],0 je _MonAP00 // Jump if feature is disabled xor edx,edx _MonAP00: cmp dword ptr [iEnableMTS],0 je _ExitMAP // Jump if feature is disabled mov eax,[rcx+0000008c] mov [rcx+00000088],eax _ExitMAP: mov r8d,[rcx+000000A8] // Original code (get AP) xor eax,eax // Original code mov r9d,r8d // Original code sub r9d,edx // Original code jmp [pBack+58] // Back to main code //========================================= LJ 1110 * // TBS - When Army is selected (MP, TS, HHP) _MonActionPoints2: mov dword ptr [aLast],'_MA2' mov rax,_BackAP2 mov [pBack+60],rax mov rax,[r14+78] cmp rax,[pPlayer] jne _ExitAP2 cmp dword ptr [r14+000001b0],0 je _MonAP2Z mov [pLord],r14 _MonAP2Z: cmp dword ptr [iEnableMAP],0 je _MonAP20 // Jump if feature is disabled mov eax,#3661 cmp eax,[r14+000000A8] js _MonAP20 mov [r14+000000A8],eax _MonAP20: cmp dword ptr [iEnableMTS],0 je _ExitAP2 // Jump if feature is disabled mov eax,[r14+0000008C] mov [r14+00000088],eax _ExitAP2: mov eax,[r14+000000A8] // Original code (get AP) mov [r15+000000EC],eax // Original code jmp [pBack+60] // Back to main code //========================================= LJ 1120 # // TBS - When Hero is moving // RAX is safe _MonActionPoints3: mov dword ptr [aLast],'_MA3' mov rax,_BackAP3 mov [pBack+68],rax cmp dword ptr [iEnableMAP],0 je _ExitAP3 // Jump if feature is disabled mov rax,[rcx+00000360] test rax,rax jz _ExitAP3 mov rax,[rax+10] cmp rax,[pPlayer] jne _ExitAP3 mov eax,[rcx+28] mov [rcx+2c],eax xor edx,edx mov [rcx+30],edx _ExitAP3: mov r9d,[rcx+2C] // Original code (get AP) xor r8d,r8d // Original code mov eax,r9d // Original code sub eax,edx // Original code jmp [pBack+68] // Back to main code //========================================= LJ 1120 # // TBS - When Lord is moving (in the army) // RDI is safe _MonActionPoints4: mov dword ptr [aLast],'_MA4' //mov rdi,_BackAP4 mov [pBack+70],rdi mov rdi,[rbx+00000360] test rdi,rdi jz _ExitAP4 mov rdi,[rdi+10] cmp rdi,[pPlayer] jne _ExitAP4 mov [pHero],rbx // It is, in fact, a Lord cmp dword ptr [iEnableMAP],0 je _ExitAP4 // Jump if feature is disabled mov eax,[rbx+28] xor rsi,rsi mov [rbx+30],esi _ExitAP4: sub esi,eax // Original code mov [rbx+2C],eax // Original code (upd AP) cmovs esi,ebp // Original code mov rbp,[rsp+30] // Original code jmp [pBack+70] // Back to main code //========================================= LJ 1120 * // TBS - During Turn Changing // RAX is safe _MonResearchProg: mov dword ptr [aLast],'_MRP' mov rax,_BackMRP mov [pBack+78],rax mov r9d,[rdx+0C] // Original code add r9d,r8d // Original code cmp dword ptr [iEnableMRP],0 je _ExitMRP // Jump if feature is disabled mov rax,[rsi+20] cmp rax,[pPlayer] jne _ExitMRP mov r9d,[rcx+5C] _ExitMRP: cmp r9d,[rcx+5C] // Original code (chk if finished) mov rcx,rsi // Original code jmp [pBack+78] // Back to main code //========================================= LJ 190 * // TBS - When looking at the Army (When recruiting) // RAX is safe _MonTroopRecruit: mov dword ptr [aLast],'_MTR' mov rax,_BackMTR mov [pBack+80],rax mov rax,COTR call rax // Original code test eax,eax // Original code js _EMTR00 push rcx cmp dword ptr [iEnableMTR],0 je _ExitMTR // Jump if feature is disabled mov rcx,[rbx+38] test rcx,rcx jz _ExitMTR mov rcx,[rcx+70] cmp rcx,[pPlayer] jne _ExitMTR mov dword ptr [rbx+50],0 _ExitMTR: pop rcx add eax,[rbx+50] // Original code (get #turns) jmp [pBack+80] // Back to main code _EMTR00: mov rbx,JOTR jmp rbx //========================================= LJ 1120 # // TBS - During Turn Changing _MonConstProg: mov dword ptr [aLast],'_MCP' mov rax,_BackMCP mov [pBack+88],rax inc [rcx+0C] // Original code (upd prog) cmp dword ptr [rcx+10],1 je _ExitMCP cmp dword ptr [iEnableMCP],0 je _ExitMCP // Jump if feature is disabled cmp r14,[pPlayer] jne _ExitMCP mov eax,[rcx+10] mov [rcx+0C],eax _ExitMCP: mov eax,[rcx+0C] // Original code cmp eax,[rcx+10] // Original code setae al // Original code jmp [pBack+88] // Back to main code //========================================= LJ 190 X // TBS - During Turn Changing _MonPublicOrder: mov dword ptr [aLast],'_MPO' //mov rcx,_BackMPO mov [pBack+90],rcx cmp dword ptr [iEnableMPO],0 je _ExitMPO // Jump if feature is disabled cmp r15,[pPlayer] jne _ExitMPO { xor edx,edx mov ebx,[r14+30] test ebx,ebx cmovs ebx,edx mov [r14+30],ebx mov ebx,[r14+34] test ebx,ebx cmovs ebx,edx mov [r14+34],ebx mov ebx,[r14+38] test ebx,ebx cmovs ebx,edx mov [r14+38],ebx mov ebx,[r14+3c] test ebx,ebx cmovs ebx,edx mov [r14+3c],ebx } mov ecx,[r14+3C] add ecx,eax cmp ecx,#68 jns _ExitMPO mov ecx,[r14+3C] mov eax,#68 sub eax,ecx // Val to be added _ExitMPO: mov ecx,[r14+3C] // Original code mov [rbx+0C],ecx // Original code (upd PO) cmp dword ptr [r14+4C],01 // Original code jmp [pBack+90] // Back to main code //========================================= LJ 1120 # // TBS - When looking at the Province _MonPopSurplus: mov dword ptr [aLast],'_MPS' mov rsi,_BackMPS mov [pBack+98],rsi cmp dword ptr [iEnableMPS],0 je _ExitMPS // Jump if feature is disabled mov rsi,[rdx+000000d0] test rsi,rsi jz _ExitMPS mov rsi,[rsi+10] cmp rsi,[pPlayer] jne _ExitMPS mov esi,#30 cmp esi,[rdx+00000388] js _ExitMPS mov [rdx+00000388],esi _ExitMPS: mov r15d,[rdx+0000038C] // Original code (Get Growth) lea rsi,[rdx+00000380] // Original code jmp [pBack+98] // Back to main code //========================================= LJ 190 * // TBS - On ARK selection _MonPopSurplus2: mov dword ptr [aLast],'_PS2' mov rcx,_BackPS2 mov [pBack+00A0],rcx cmp dword ptr [iEnableMPS],0 je _ExitPS2 // Jump if feature is disabled mov rcx,[rax+00000140] test rcx,rcx jz _ExitPS2 mov rcx,[rcx+10] cmp rcx,[pPlayer] jne _ExitPS2 mov rcx,[rax+00000618] mov rcx,[rcx+18] cmp dword ptr [rcx+08],#32 jns _ExitPS2 mov dword ptr [rcx+08],#32 _ExitPS2: mov rcx,[rax+00000618] // Original code (Get ppPopSp) mov rax,[rcx+18] // Original code mov eax,[rax+08] // Original code jmp [pBack+00A0] // Back to main code //========================================= LJ 1120 * // TBS - When a hero/Lord is selected // RCX is safe _MonSelHero: mov dword ptr [aLast],'_MSH' mov r15,_BackMSH mov [pBack+00A8],r15 mov r12,[r14] test r12,r12 jz _ExitMSH mov [pHero],r12 mov rcx,[r12+00000360] test rcx,rcx jz _ExitMSH mov rcx,[rcx+10] cmp rcx,[pPlayer] jne _ExitMSH cmp dword ptr [iEnableMAP],0 je _MonSH00 // Jump if feature is disabled mov esi,[r12+28] mov [r12+2c],esi _MonSH00: cmp dword ptr [iEnableHAA],0 je _MonSH01 // Jump if feature is disabled mov byte ptr [r12+00000940],00 // (s3.0) mov byte ptr [r12+00000948],00 mov byte ptr [r12+00000E28],00 // SearchedTreasure (s6.1) mov byte ptr [r12+00000E29],00 // SearchedTreasure (s6.1) mov byte ptr [r12+00000E2A],00 // SearchedTreasure (s6.1) _MonSH01: cmp dword ptr [iEnableMXP],0 je _ExitMSH // Jump if feature is disabled lea rcx,[rax-64] cmp ecx,[r14+00000254] js _ExitMSH mov [r14+00000254],ecx _ExitMSH: mov r12d,[r14+00000254] // Original code (Get XP) mov r15d,eax // Original code sub r15d,ebx // Original code jmp [pBack+00A8] // Back to main code //========================================= LJ 1110 * // TBS - All the time at main game screen (Skaven/Lizards) _MonPlayerFood: mov dword ptr [aLast],'_MPF' mov rax,_BackMPF mov [pBack+00B0],rax mov rax,[rdi+08] // Original code mov rbx,[rax+08] test rbx,rbx jz _ExitMPF mov rbx,[rbx+18] cmp rbx,[pPlayer] jne _ExitMPF mov rbx,[rax] test rbx,rbx jz _ExitMPF mov rbx,[rbx] test rbx,rbx jz _ExitMPF mov rbx,[rbx+08] test rbx,rbx jz _ExitMPF mov ebx,[rbx+04] cmp ebx,'en_f' jne _MonPF00 mov [pFood],rax cmp dword ptr [iEnableMPF],0 je _ExitMPF // Jump if feature is disabled mov ebx,ctMFOO jmp _MonPF0X //-- _MonPF00: cmp ebx,'reac' je _MonPF01 cmp ebx,'nuke' jne _MonPF02 _MonPF01: cmp dword ptr [iEnableSSR],0 // s6.5 je _ExitMPF // Jump if feature is disabled mov ebx,ctMSSR jmp _MonPF0X //-- _MonPF02: cmp ebx,'sacr' jne _MonPF03 cmp dword ptr [iEnableLSR],0 // s6.5 je _ExitMPF // Jump if feature is disabled mov ebx,ctMLSR jmp _MonPF0X //-- _MonPF03: cmp ebx,'old_' jne _MonPF04 cmp dword ptr [iEnableMOO],0 // s7.1 je _ExitMPF // Jump if feature is disabled mov ebx,#700 jmp _MonPF0X //-- _MonPF04: cmp ebx,'salv' jne _MonPF05 cmp dword ptr [iEnableSCR],0 // s7.9 (Scrap) je _ExitMPF // Jump if feature is disabled mov ebx,#700 jmp _MonPF0X //-- _MonPF05: cmp ebx,'drea' jne _MonPF06 cmp dword ptr [iEnableDRE],0 // s7.19 (Dread) je _ExitMPF // Jump if feature is disabled mov ebx,#3700 jmp _MonPF0X //-- _MonPF06: jmp _ExitMPF //-- _MonPF0X: cmp [rax+20],ebx jns _ExitMPF mov [rax+20],ebx _ExitMPF: mov rbx,[rsp+50] // Original code mov rsi,[rsp+58] // Original code jmp [pBack+00B0] // Back to main code //========================================= LJ 1104 * // TBS - During turn changing _MonRitesCD: mov dword ptr [aLast],'_MRC' // mov rax,_BackMRC mov [pBack+00B8],rax dec ecx // Original code mov eax,r15d // Original code add ecx,r8d // Original code cmovns eax,ecx // Original code cmp rbp,[pRites] jne _ExitMRC cmp dword ptr [iEnableMRC],0 je _ExitMRC // Jump if feature is disabled test eax,eax js _ExitMRC xor eax,eax _ExitMRC: mov [rbx+10],eax // Original code jmp [pBack+00B8] // Back to main code //========================================= LJ 1111 * // TBS - During turn changing _MonRitesCD2: mov dword ptr [aLast],'_RC2' // mov rax,_BackRC2 mov [pBack+00C0],rax dec ecx // Original code mov eax,r15d // Original code add ecx,edx // Original code cmovns eax,ecx // Original code cmp rbp,[pRites] jne _ExitRC2 cmp dword ptr [iEnableMRC],0 je _ExitRC2 // Jump if feature is disabled test eax,eax js _ExitRC2 xor eax,eax _ExitRC2: mov [rbx+08],eax // Original code jmp [pBack+00C0] // Back to main code //========================================= LJ 1120 * // TBS - God Mode for Autobattle and Troop XP _GodModeTBS: mov r14,_BackGMT mov [pBack+00C8],r14 cmp dword ptr [iEnableGMT],0 je _GodMT01 // Jump if feature is disabled mov r14,[rcx+78] cmp r14,[pPlayer] je _GodMT00 // mov dword ptr [rdx+58],00 // mov dword ptr [rdx+6c],00 // mov dword ptr [rdx+000000A4],00 jmp _ExitGMT //-- _GodMT00: mov r14d,[rdx+50] mov [rdx+58],r14d mov r14d,[rdx+64] mov [rdx+6c],r14d mov byte ptr [rdx+7C],01 mov byte ptr [rdx+7E],00 _GodMT01: cmp dword ptr [iEnableMTX],0 je _ExitGMT // Jump if feature is disabled mov r14,[rcx+78] cmp r14,[pPlayer] jne _ExitGMT cmp dword ptr [rdx+0000009C],00 je _ExitGMT cmp byte ptr [rcx+000000C8],09 jns _ExitGMT mov r14d,#30000 cmp [rdx+0000009C],r14d jns _ExitGMT mov [rdx+0000009C],r14d _ExitGMT: mov rax,[rcx+00000080] // Original code mov r14,rdx // Original code mov rsi,rcx // Original code jmp [pBack+00C8] // Back to main code //========================================= LJ 190 X // TBS - Keep human player's AMBER at minimum (per Settlement / per Event) // RAX is safe _MonPlayerAmber: mov dword ptr [aLast],'_MPA' mov rax,_BackMPA mov [pBack+00D0],rax mov ax,[r8+08] cmp ax,00eb je _MonPA00 cmp ax,00ec jne _ExitMPA mov rax,RPAE cmp rax,[esp] jne _ExitMPA cmp dword ptr [iEnablePAE],0 je _ExitMPA // Jump if feature is disabled // mov rax,[rbp+60] // test rax,rax // jz _ExitMPA // mov rax,[rax+00000188] mov eax,[r8+18] // for debugging cmp rbx,[pPlayer] // [RSP+18]=Player as well jne _ExitMPA mov eax,ctMAPE jmp _MonPA01 //== _MonPA00: mov rax,RPAS cmp rax,[esp] jne _ExitMPA cmp dword ptr [iEnablePAS],0 je _ExitMPA // Jump if feature is disabled mov rax,[rbp+60] test rax,rax jz _ExitMPA mov rax,[rax+00000188] cmp rax,[pPlayer] jne _ExitMPA mov eax,ctMAPS _MonPA01: cmp [r8+18],eax jns _ExitMPA mov [r8+18],eax mov [r8+1c],eax _ExitMPA: movss xmm1,[r8+18] // Original code (get value) xorps xmm0,xmm0 // Original code comiss xmm1,xmm0 // Original code jmp [pBack+00D0] // Back to main code //========================================= LJ ok // TBS - Keep human player's Slaves per Settlement at minimum (for Dark Elves) _MonSlavesPerSettlement: mov dword ptr [aLast],'_MSS' mov rdx,_BackMSS mov [pBack+00D8],rdx test rax,rax // Original code je _EMSS00 // Original code movsd [qXMM0],xmm0 movsd [qXMM1],xmm1 cmp r15,[pPlayer] jne _ExitMSS cmp dword ptr [iEnableMSS],0 je _ExitMSS // Jump if feature is disabled movsd xmm0,[qMinimum] cvtsi2sd xmm1,[rax+0c] mulsd xmm0,xmm1 cvtsi2sd xmm1,[rax+08] maxsd xmm0,xmm1 cvtsd2si ecx,xmm0 mov [rax+08],ecx _ExitMSS: movsd xmm0,[qXMM0] movsd xmm1,[qXMM1] mov edx,[rax+08] // Original code (get value) mov rcx,rax // Original code mov rbx,CSPS // RBX is safe call rbx // Original code _EMSS00: jmp [pBack+00D8] // Back to main code qMinimum: dq (double)0.20 //========================================= align 10,'=' //========================================= db '===============================>' db 'CE7.4 Script by Recifense 220502' //========================================= // Variables iEnableGMD: dq 0 iEnableMTA: dq 0 iEnableMTL: dq 0 iEnableMWM: dq 0 iEnableMMT: dq 0 iEnableMAP: dq 0 iEnableMTS: dq 0 iEnableMRP: dq 0 iEnableMTR: dq 0 iEnableMCP: dq 0 iEnableMPO: dq 0 iEnableMPS: dq 0 iEnableMXP: dq 0 iEnableHAA: dq 0 iEnableMPI: dq 0 iEnableMPF: dq 0 iEnableMRC: dq 0 iEnableGMT: dq 0 iEnableMTX: dq 0 iEnablePAE: dq 0 iEnablePAS: dq 0 iEnableMSU: dq 0 iEnableMSC: dq 0 iEnableMSS: dq 0 iEnableMUS: dq 0 iEnableSSR: dq 0 iEnableLSR: dq 0 iEnableMOO: dq 0 iEnableSCR: dq 0 iEnableDRE: dq 0 pPlayer: dq MyCode pWay: dq MyCode pRites: dq MyCode pFood: dq 0 pLord: dq 0 pHero: dq 0 pUnit: dq 0 pDebug: dq 0 pCommon: dq MyCode lRBX: dq 0 qXMM0: dq 0 qXMM1: dq 0 pRBX: dq 0 pBack: dq 0,0,0,0,0,0,0,0 dq 0,0,0,0,0,0,0,0 dq 0,0,0,0,0,0,0,0 dq 0,0,0,0,0,0,0,0 aLast: db 'CE70' iSize: dd iSize-MyCode //========================================= // Hacking Points GDMD: mov rax,_GodMode jmp rax nop nop nop nop nop _BackGMD: MOTA: mov rcx,_MonTroopAmmo jmp rcx _BackMTA: GDM2: mov rax,_GodMode2 jmp rax _BackGM2: MOTU: mov rcx,_MonTroopUnits jmp rcx nop nop nop _BackMTU: MOWM: mov rcx,_MonWindsOfMagic jmp rcx nop _BackMWM: MOSU: // mov rax,_MonSpellUse // jmp rax // nop _BackMSU: MSCD: mov rdx,_MonSpellCooldown jmp rdx nop nop nop nop nop nop _BackMSC: MSU2: mov rax,_MonSpellUse2 jmp rax nop _BackSU2: MSC2: mov rdx,_MonSpellCooldown2 jmp rdx nop nop nop nop nop nop _BackSC2: MOUS: mov rcx,_MonUnitStress jmp rcx nop _BackMUS: // ---------------------- TBS MOHP: mov rcx,_MonHumanPlayer jmp rcx nop nop _BackMHP: {MOAP: mov rax,_MonActionPoints jmp rax nop nop nop _BackMAP: } MAP2: mov rax,_MonActionPoints2 jmp rax nop nop _BackAP2: MAP3: mov rax,_MonActionPoints3 jmp rax _BackAP3: {MAP4: mov rdi,_MonActionPoints4 jmp rdi nop _BackAP4: } MORP: mov rax,_MonResearchProg jmp rax nop nop _BackMRP: MOTR: mov rax,_MonTroopRecruit jmp rax _BackMTR: MOCP: mov rax,_MonConstProg jmp rax _BackMCP: { MOPO: mov rcx,_MonPublicOrder jmp rcx _BackMPO: } MOPS: mov rsi,_MonPopSurplus jmp rsi nop nop _BackMPS: MPS2: mov rcx,_MonPopSurplus2 jmp rcx nop nop _BackPS2: MOSH: mov r15,_MonSelHero jmp r15 _BackMSH: MOPF: mov rax,_MonPlayerFood jmp rax nop nop _BackMPF: { MORC: mov rax,_MonRitesCD jmp rax nop nop _BackMRC: MRC2: mov rax,_MonRitesCD2 jmp rax nop _BackRC2: } GMTB: mov r14,_GodModeTBS jmp r14 _BackGMT: MOPA: mov rax,_MonPlayerAmber jmp rax _BackMPA: MSPS: { mov rdx,_MonSlavesPerSettlement jmp rdx nop nop nop nop } _BackMSS: //========================================= // Script for Restoring Original Codes [DISABLE] GDMD: db 44 8B 41 04 45 33 C9 44 2B C2 3B 51 04 45 0F 47 C1 MOTA: db 45 85 C0 74 07 41 8D 48 FF 89 0C 38 GDM2: db 40 55 56 41 54 41 56 48 8D 6C 24 D8 MOTU: db F3 0F 11 85 A0 00 00 00 48 8B 88 E8 02 00 00 MOWM: db F3 0F 58 47 08 0F 2F C1 F3 0F 11 47 08 //MOSU: // db 48 8B 46 10 83 78 28 00 7C 03 FF 4E 30 MSCD: readmem(SMSCD,18) MSU2: db 48 8B 41 08 83 78 2C 00 7C 03 FF 49 2C MSC2: readmem(SMSC2,18) MOUS: db 03 C3 48 8B 5C 24 78 01 87 EC 06 00 00 // ---------------------- TBS MOHP: db 48 8b 8a 88 01 00 00 48 81 c1 d0 02 00 00 //MOAP: //db 44 8B 81 A8 00 00 00 31 C0 45 89 C1 41 29 D1 MAP2: db 41 8B 86 A8 00 00 00 41 89 87 EC 00 00 00 MAP3: db 44 8B 49 2C 45 33 C0 41 8B C1 2B C2 //MAP4: //db 29 C6 89 43 2C 0F 48 F5 48 8B 6C 24 30 MORP: db 44 8B 4A 0C 45 03 C8 44 3B 49 5C 48 8B CE MOTR: readmem(SMOTR,12) MOCP: db FF 41 0C 8B 41 0C 3B 41 10 0F 93 C0 //MOPO: //db 41 8B 4E 3C 89 4B 0C 41 83 7E 4C 01 MOPS: db 44 8b ba 8c 03 00 00 48 8d b2 80 03 00 00 MPS2: db 48 8B 88 18 06 00 00 48 8B 41 18 8B 40 08 MOSH: db 45 8B A6 54 02 00 00 44 8B F8 44 2B FB MOPF: db 48 8B 47 08 48 8B 5C 24 50 48 8B 74 24 58 //MORC: //db FF C9 44 89 F8 44 01 C1 0F 49 C1 89 43 10 //MRC2: //db FF C9 44 89 F8 01 D1 0F 49 C1 89 43 08 GMTB: db 48 8B 81 80 00 00 00 4C 8B F2 48 8B F1 MOPA: db F3 41 0F 10 48 18 0F 57 C0 0F 2F C8 //MSPS: //readmem(SMSPS,16) //========================================= // Unregistering Symbols unregistersymbol(MyCode) unregistersymbol(iEnableGMD) unregistersymbol(iEnableMTA) unregistersymbol(iEnableMTL) unregistersymbol(iEnableMWM) unregistersymbol(iEnableMMT) unregistersymbol(iEnableMAP) unregistersymbol(iEnableMTS) unregistersymbol(iEnableMRP) unregistersymbol(iEnableMTR) unregistersymbol(iEnableMCP) unregistersymbol(iEnableMPO) unregistersymbol(iEnableMPS) unregistersymbol(iEnableMXP) unregistersymbol(iEnableHAA) unregistersymbol(iEnableMPI) unregistersymbol(iEnableMPF) unregistersymbol(iEnableMRC) unregistersymbol(iEnableGMT) unregistersymbol(iEnableMTX) unregistersymbol(iEnablePAE) unregistersymbol(iEnablePAS) unregistersymbol(iEnableMSU) unregistersymbol(iEnableMSC) unregistersymbol(iEnableMSS) unregistersymbol(iEnableMUS) unregistersymbol(iEnableSSR) unregistersymbol(iEnableLSR) unregistersymbol(iEnableMOO) unregistersymbol(iEnableSCR) unregistersymbol(iEnableDRE) unregistersymbol(pPlayer) unregistersymbol(pLord) unregistersymbol(pHero) unregistersymbol(pUnit) unregistersymbol(pDebug) unregistersymbol(pCommon) unregistersymbol(pFood) unregistersymbol(aLast) unregistersymbol(SMSCD) unregistersymbol(SMSC2) unregistersymbol(SMOTR) unregistersymbol(SMSPS) //========================================= dealloc(MyCode) dealloc(SMSCD) dealloc(SMSC2) dealloc(SMOTR) dealloc(SMSPS) //============= Scripts End =============== // **************************************** // NOTES // **************************************** { }
Now the mistake doesn't appear, but I cannot activate the script.
How to use this cheat table?
- Install Cheat Engine
- Double-click the .CT file in order to open it.
- Click the PC icon in Cheat Engine in order to select the game process.
- Keep the list.
- Activate the trainer options by checking boxes or setting values from 0 to 1