0
"[X] <== Anno 1800 v5.0.886779 UPLAY Script v2.2 AOB [modified]"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Anno 1800
Game Version : 5.0.886779
Game Sponsor : darkedone02
Process Name : Anno1800.exe
Relevant Info : 64bits/RTS
Script Version: 2.2
CE Version : 7.0
Release date : 14-Aug-2019 (original; modified 12-Sep-2019)
Author : Recifense (modified by Nobanion)
History:
26-Apr-2019: Preliminary Release
01-May-2019: Final Release (for version 13.10575.0.1471)
02-May-2019: AOB release of the script (s1.1)
03-May-2019: Fix for crashing when GM is disabled (s1.2)
15-May-2019: New approach in general (s2.0)
14-Jun-2019: Release for version 13.18084.0.1649 (s2.1)
14-Aug-2019: Release for version 4.2.880602 (s2.2)
12-Sep-2019: Modifications for version 5.0.886779
Features:
- Minimum Money (Coins)
- Minimum Influence
- Minimum Cargo for selected ship
- God Mode
- Minimum Item Amount in WH (on dec)
- Maximum Item Amount in WH (on inc) (s1.3)
- Some Pointers
===========================================
}
//=========================================
// Checking CE version
{$lua}
if(getCEVersion() < 6.7) then
ShowMessage('Warning. CE version should be 6.7 or above')
end
{$asm}
//=========================================
// Checking Selected Process
{$lua}
if(process == nil) then
ShowMessage('No process was selected')
elseif (string.upper(process) ~= string.upper("Anno1800.exe")) then
ShowMessage('Warning. Expected Process = Anno1800.exe')
end
{$asm}
//=========================================
// Definitions
define(LUDO,"Anno1800.exe")
{
define(MOPM,Anno1800.exe+5CEAD45) //====
//define(MOSC,Anno1800.exe+01c421db) //==##
define(MOSH,Anno1800.exe+C8D957) //N=##
define(GDMD,Anno1800.exe+62638BB) //N=##
define(MOSG,Anno1800.exe+2595E8) //N===
define(MSG2,Anno1800.exe+2593C3) //N===
}
//=========================================
// Constants used in the script (that can be changed)
define(ctCE67,(float)6.7)
define(ctMMON,#700000) // Minimum Money
define(COIN_ID,#1010017)
define(INFL_ID,#1010190)
define(OIL_ID, #1010566)
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
AOBScanModule(MOPM,$process,8b 48 20 48 89 d8 89 0b 48 8b 5c 24 38 48 83 c4 20 5f c3 cc ??) // ok
//AOBScanModule(MOSC,$process,8b 70 20 48 89 74 24 58 85 f6 ?? ?? 48 8b 70 10 ?? ?? 41 8b f5) // ??
AOBScanModule(MOSH,$process,41 0f bf 54 24 54 48 8b 5d 77 48 8b 4b 08 e8 ?? ?? ?? ?? c7 03) // ok
AOBScanModule(GDMD,$process,66 39 43 54 0f b7 c8 66 0f 4c 4b 54 66 89 4b 52 66 85 c9) // ok
AOBScanModule(MOSG,$process,44 29 57 08 4c 63 7d 7f 41 83 ff 2c ?? ?? 48 b9 00 00 00 04 80 11) // ok
AOBScanModule(MSG2,$process,45 01 57 08 4D 8D 6E D8 49 8B 45 00 49 8B CD FF 90 58 01 00 00) // fixed
//=========================================
alloc(MyCode,4096,$process)
//=========================================
// Declaration section
label(_MonPlayerMoney)
label(_BackMPM)
//label(_MonShipCargo)
//label(_BackMSC)
label(_MonSelHP)
label(_BackMSH)
label(_GodMode)
label(_BackGMD)
label(_MonStoredGoods)
label(_BackMSG)
label(_MonStoredGoods2)
label(_BackSG2)
label(iEnableMPM)
label(iEnableMPI)
//label(iEnableMSC)
label(iEnableMWH)
label(iEnableMSH)
label(iEnableGMD)
label(iEnableMPO)
label(pMoney)
label(pInflu)
//label(pCargo)
label(pWHR12)
label(pSelHP)
label(pOil)
label(aLast)
label(iCount)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableMPM)
registersymbol(iEnableMPI)
//registersymbol(iEnableMSC)
registersymbol(iEnableMWH)
registersymbol(iEnableMSH)
registersymbol(iEnableGMD)
registersymbol(iEnableMPO)
registersymbol(pMoney)
registersymbol(pInflu)
//registersymbol(pCargo)
registersymbol(pWHR12)
registersymbol(pSelHP)
registersymbol(pOil)
registersymbol(aLast)
registersymbol(iCount)
registersymbol(MOPM)
//registersymbol(MOSC)
registersymbol(MOSH)
registersymbol(GDMD)
registersymbol(MOSG)
registersymbol(MSG2)
//=========================================
MyCode:
//========================================= X (s2.0)
// All the time (Money and Influence)
_MonPlayerMoney:
mov dword ptr [aLast],'_MPM'
test r10,r10
jz _ExitMPM
movzx ecx,word ptr [r10+00000160]
cmp ecx,[iPlayerID]
jne _ExitMPM
cmp r14,#2
jne _ExitMPM
cmp dword ptr [rax+58],1
jne _ExitMPM
mov ecx,[rax+18]
cmp ecx,COIN_ID
jne _MonPM00
mov [pMoney],rax
cmp dword ptr [iEnableMPM],0
je _ExitMPM // Jump if feature is disabled
mov ecx,ctMMON
jmp _MonPM0X
//--
_MonPM00:
cmp ecx,INFL_ID
jne _ExitMPM
mov [pInflu],rax
cmp dword ptr [iEnableMPI],0
je _ExitMPM // Jump if feature is disabled
mov ecx,#100
_MonPM0X:
cmp [rax+20],ecx
jns _ExitMPM
mov [rax+20],ecx
_ExitMPM:
mov dword ptr [aLast],'_mpm'
mov ecx,[rax+20] // Original code (get value)
mov rax,rbx // Original code
jmp _BackMPM // Back to main code
//========================================= 4.2 #
// When a ship with cargo is selected
/*_MonShipCargo:
mov dword ptr [aLast],'_MSC'
test edx,edx
jnz _MonSC00
mov [pCargo],rax
_MonSC00:
cmp dword ptr [iEnableMSC],0
je _ExitMSC // Jump if feature is disabled
cmp [rax+20],0
je _ExitMSC
mov esi,#30
cmp [rax+20],esi
jns _ExitMSC
mov [rax+20],esi
_ExitMSC:
mov dword ptr [aLast],'_msc'
mov esi,[rax+20] // Original code (get value)
mov [rsp+58],rsi // Original code
jmp _BackMSC // Back to main code
*/
//========================================= 4.2 * (only for debug now)
// When an object HP is under the cursor
_MonSelHP:
mov dword ptr [aLast],'_MSH'
mov [pSelHP],r12
_ExitMSH:
mov dword ptr [aLast],'_msh'
movsx edx,word ptr [r12+54] // Original code (get value)
jmp _BackMSH // Back to main code
//========================================= X (s2.0) 4.2 *
// When updating HP(ships/buildings)
_GodMode:
mov dword ptr [aLast],'_GMD'
cmp dword ptr [iEnableGMD],0
je _ExitGMD // Jump if feature is disabled
mov rcx,[rbx+08]
test rcx,rcx
jz _ExitGMD
movzx ecx,word ptr [rcx+44]
cmp ecx,[iPlayerID]
jne _ExitGMD
movzx ecx,word ptr [rbx+54]
mov eax,ecx
_ExitGMD:
mov dword ptr [aLast],'_gmd'
cmp [rbx+54],ax // Original code (chk value)
movzx ecx,ax // Original code
jmp _BackGMD // Back to main code
//========================================= X (s2.0)
// When goods amount is decreased
_MonStoredGoods:
mov dword ptr [aLast],'_MSG'
mov [pRSI],rcx
sub [rdi+08],r10d // Original code (dec value)
mov ecx,[rdi]
cmp ecx,COIN_ID
je _ExitMSG
cmp ecx,INFL_ID
je _ExitMSG
cmp dword ptr [iEnableMWH],0
je _ExitMSG // Jump if feature is disabled
test rsi,rsi
jz _ExitMSG
movzx ecx,word ptr [rsi+00000160]
cmp ecx,[iPlayerID]
jne _ExitMSG
movsxd r15,dword ptr [rdi+04]
cmp r15d,#5000
jns _ExitMSG
cmp r15d,#50
js _ExitMSG
mov rcx,#25
cmp r15d,#100
js _MonSG00
mov rcx,#50
_MonSG00:
sub r15,rcx
cmp [rdi+08],r15d
jns _ExitMSG
mov [rdi+08],r15d
_ExitMSG:
mov dword ptr [aLast],'_msg'
mov rcx,[pRSI]
movsxd r15,dword ptr [rbp+7F] // Original code
jmp _BackMSG // Back to main code
//========================================= X (s2.0) 4.2 *
// When goods amount is increased
_MonStoredGoods2:
mov dword ptr [aLast],'_SG2'
add [r15+08],r10d // Original code (inc value)
mov r10d,[r15]
cmp r10d,COIN_ID
je _ExitSG2
cmp r10d,INFL_ID
je _ExitSG2
cmp dword ptr [iEnableMWH],0
je _ExitSG2 // Jump if feature is disabled
test r14,r14
jz _ExitSG2
movzx r10d,word ptr [r14+00000160]
cmp r10d,[iPlayerID]
jne _ExitSG2
movsxd r10,dword ptr [r15+04]
cmp r10d,#5000
jns _ExitSG2
cmp r10d,#50
js _ExitSG2
mov r13,#5
cmp r10d,#100
js _MonSG20
mov r13,#30
_MonSG20:
sub r10,r13
cmp [r15+08],r10d
js _ExitSG2
mov [r15+08],r10d
_ExitSG2:
mov dword ptr [aLast],'_msg'
lea r13,[r14-28] // Original code
jmp _BackSG2 // Back to main code
//=========================================
align 10,'='
//=========================================
db '===============================>'
db 'CE6.7 Script by Recifense 190814'
//=========================================
// Variables
iEnableMPM:
dd 0
iEnableMPI:
dd 0
//iEnableMSC:
// dd 0
iEnableMWH:
dd 0
iEnableMSH:
dd 0
iEnableGMD:
dd 0
iEnableMPO:
dd 0
iPlayerID:
dd 0
pMoney:
dq 0
pInflu:
dq 0
//pCargo:
// dq 0
pWHR12:
dq 0
pSelHP:
dq 0
pOil:
dq 0
pRBX:
dq 0
pRSI:
dq 0
aLast:
db 'CE70'
iCount:
dd 0
//=========================================
// Hacking Points
MOPM:
jmp _MonPlayerMoney
nop
_BackMPM:
/*MOSC:
jmp _MonShipCargo
nop
nop
nop
_BackMSC:
*/
MOSH:
jmp _MonSelHP
nop
_BackMSH:
GDMD:
jmp _GodMode
nop
nop
_BackGMD:
MOSG:
jmp _MonStoredGoods
nop
nop
nop
_BackMSG:
MSG2:
jmp _MonStoredGoods2
nop
nop
nop
_BackSG2:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MOPM:
// mov ecx,[rax+20]
// mov rax,rbx
db 8b 48 20 48 89 d8
/*MOSC:
// mov esi,[rax+20]
// mov [rsp+58],rsi
db 8b 70 20 48 89 74 24 58
*/
MOSH:
// movsx edx,word ptr [r12+54]
db 41 0f bf 54 24 54
GDMD:
// cmp [rbx+54],ax
// movzx ecx,ax
db 66 39 43 54 0f b7 c8
MOSG:
// sub [rdi+08],r10d
// movsxd r15,dword ptr [rbp+7F]
db 44 29 57 08 4c 63 7d 7f
MSG2:
// add [r15+08],r10d
// lea r13,[r14-28]
db 45 01 57 08 4d 8d 6e d8
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(iEnableMPM)
unregistersymbol(iEnableMPI)
//unregistersymbol(iEnableMSC)
unregistersymbol(iEnableMWH)
unregistersymbol(iEnableMSH)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableMPO)
unregistersymbol(pMoney)
unregistersymbol(pInflu)
//unregistersymbol(pCargo)
unregistersymbol(pWHR12)
unregistersymbol(pSelHP)
unregistersymbol(aLast)
unregistersymbol(pOil)
unregistersymbol(iCount)
unregistersymbol(MOPM)
//unregistersymbol(MOSC)
unregistersymbol(MOSH)
unregistersymbol(GDMD)
unregistersymbol(MOSG)
unregistersymbol(MSG2)
//=========================================
dealloc(MyCode)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
}
1
"[X] <== Minimum Money"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMPM",1)
memrec.Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPM",0)
memrec.Color=0x0c08000
{$ASM}
2
"[X] <== Minimum Influence"
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMPI",1)
memrec.Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPI",0)
memrec.Color=0x0c08000
{$ASM}
7
"[X] <== Minimum/Maximum Items amount for Warehouses"
008000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableMWH",1)
memrec.Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMWH",0)
memrec.Color=0x0c08000
{$ASM}
15
"[X] <== God Mode "
C08000
Auto Assembler Script
[enable]
{$LUA}
writeInteger("iEnableGMD",1)
memrec.Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGMD",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
20190814
===========================================
Game Title : Anno 1800
Game Version : 5.0.886779
Game Sponsor : darkedone02
Process Name : Anno1800.exe
Relevant Info : 64bits/RTS
Script Version: 2.2 [modified]
CE Version : 7.0
Release date : 14-Aug-2019 (original; modified 12-Sep-2019)
Author : Recifense (modified by Nobanion)
History:
26-Apr-2019: Preliminary Release
01-May-2019: Final Release (for version 13.10575.0.1471)
02-May-2019: AOB release of the script (s1.1)
03-May-2019: Fix for crashing when GM is disabled (s1.2)
15-May-2019: New approach in general (s2.0)
14-Jun-2019: Release for version 13.18084.0.1649 (s2.1)
14-Aug-2019: Release for version 4.2.880602 (s2.2)
12-Sep-2019: Modifications for version 5.0.886779
Features:
- Minimum Money (Coins) [1]
- Minimum Influence [2]
- Minimum Cargo for selected ship [3]
- God Mode [4]
- Minimum Item Amount in WH (on dec)[5]
- Maximum Item Amount in WH (on inc)[6] (s1.3)
- Some Pointers [7]
===========================================
[1] Human Player's money (Coins) will not go under minimum value (670000);
[2] Human Player's Influence will not go under minimum value (100);
[3] Human Player's selected ship cargo (goods) will be checked to a minimum (30);
[4] Human Player's ships and special buildings;
[5] Human Player's Warehouse will not go under minimum value (Capacity-25 or Capacity-50);
[6] Human Player's Warehouse will not go over maximum value (Capacity-5 or Capacity-30);
[7] Used at the table
===========================================
[USAGE]
1) Run CE67;
2) Run Game;
3) Load or start a new game;
4) Go back to CE and load the game process "Anno1800.exe";
5) Load this table and activate the main script;
6) Now Activate the script of each cheat you want to use;
7) Game On;
===========================================
[HOTKEYS]
- Not 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]
- Many thanks to MB for providing the game.
===========================================
Cheers!
===========================================
-------- GOODS IDS ---------
Advanced Weapons: 1010223
Beef : 1010193
Beer : 1010214
Brass : 1010204
Bread : 1010213
Bricks : 1010205
Canned Food : 1010217
Caoutchouc : 1010255
Cement : 1010231
Chassis : 1010211
Chocolate : 1010258
Cigars : 1010259
Clay : 1010201
Coal : 1010226
Cocoa : 1010254
Copper : 1010230
Cotton : 1010253
Cotton Fabric: 1010240
Dynamite : 1010222
Filaments : 1010243
Fish : 1010200
Flour : 1010235
Fur Coats : 1010247
Furs : 1010209
Glass : 1010241
Gold : 1010249
Gold Ore : 1010233
Goulash : 1010215
Grain : 1010192
Gramophones : 1010248
Hops : 1010194
Iron : 1010227
Jewellery : 1010250
Light Bulbs : 1010208
Malt : 1010236
Pearls : 1010256
Penny Farthings: 1010245
Pigs : 1010199
Pocket Watches: 1010246
Potatoes : 1010195
Quartz Sand : 1010228
red Peppers : 1010198
Reinforced Concrete: 1010202
Rum : 1010257
Sails : 1010210
Saltpetre : 1010232
Sausages : 1010238
Schnapps : 1010216
Soap : 1010203
Sewing Machine: 1010206
Steam Carriages: 1010225
Steam Motors: 1010224
Steel : 1010219
Steel Beams : 1010218
Sugar : 1010239
Sugar Cane : 1010251
Tallow : 1010234
Timber : 1010196
Tobacco : 1010252
Weapons : 1010221
Windows : 1010207
Wood Veneers: 1010242
Wool : 1010197
Work Clothes: 1010237
Zinc : 1010229
-----------------