109
"[X] <== Galactic Civilization III v1.00 Steam Script v1.0"
FF0000
Auto Assembler Script
{
===========================================
Game Title : Galactic Civilization III
Game Version : 1.00
Game Sponsor : Fennix102
Process Name : GalCiv3.exe
Script Version: 1.0
CE Version : 6.4
Release date : 14-May-2015
Author : Recifense
History:
14-May-15: First Release
Features:
- Minimum Credits
- Move Multiple times
- Research in 1-2 Turn
- Construction in 1 Turn
- God Mode
- Some Pointers
===========================================
}
//=========================================
// Definitions
define(LUDO,"GalCiv3.exe")
define(MOHP,GalCiv3.exe+0012f496)
define(MOSU,GalCiv3.exe+0012a423)
define(MOSP,GalCiv3.exe+000d99bb)
define(MORP,GalCiv3.exe+0000b573)
define(MOCP,GalCiv3.exe+000be7ad)
define(GDMD,GalCiv3.exe+0018196d)
define(MOUB,GalCiv3.exe+003cd50b)
//=========================================
// Constants used in the script (that can be changed)
define(ctCE64,(float)6.4)
define(ctMCRE,#64000000) // Minimum Credits
define(ctMMSS,#10000) // Minimum Settlers/Soldiers
//=========================================
[ENABLE]
//=========================================
//LuaCall(CheckVersion())
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
assert(MOHP,8b 84 08 a4 28 02 00 89 02 48 8b c2 c3 49 63 c1 48 69 C0 78 01)
assert(MOSU,8b 84 08 0c 04 00 00 89 02 48 8b c2 c3 49 63 c1 48 69 c0 2c 01)
assert(MOSP,49 8b 4c 24 08 48 8b 01 ba 16 00 00 00 ff 10 48 8d 0d ?? ?? ??)
assert(MORP,44 8B 47 08 8B 16 8b 00 41 2b c0 3b c2 0f 8f ?? ?? ?? ?? 2b d0)
assert(MOCP,2b 43 10 39 7a 28 ?? ?? 48 8b cf ?? ?? 48 8b 4a 20 8b 09 48 03)
assert(GDMD,41 29 7c 24 34 8b ee b8 01 00 00 00 2b ef 45 39 74 24 34 45 8b)
assert(MOUB,41 8B 47 34 48 8D 4C 24 30 85 C0 44 89 74 24 30 ?? ?? 89 44 24)
//=========================================
alloc(MyCode,4096,LUDO)
//=========================================
// Declaration section
label(_MonHumanPlayer)
label(_BackMHP)
label(_ExitMHP)
label(_MonSelUnit)
label(_MonSU00)
label(_MonSU01)
label(_BackMSU)
label(_ExitMSU)
label(_MonSelPlanet)
label(_BackMSP)
label(_ExitMSP)
label(_MonResearchProg)
label(_BackMRP)
label(_ExitMRP)
label(_MonConstProg)
label(_BackMCP)
label(_ExitMCP)
label(_GodMode)
label(_BackGMD)
label(_ExitGMD)
label(_MonUnitBattle)
label(_BackMUB)
label(_ExitMUB)
label(iEnableMPR)
label(iEnableGMD)
label(iEnableMSS)
label(iEnableMMP)
label(iEnableMRP)
label(iEnableMCP)
label(iID)
label(iID2)
label(pPlayer)
label(pUnit)
label(pPlanet)
label(pUnitB)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableMPR)
registersymbol(iEnableGMD)
registersymbol(iEnableMSS)
registersymbol(iEnableMMP)
registersymbol(iEnableMRP)
registersymbol(iEnableMCP)
registersymbol(iID)
registersymbol(iID2)
registersymbol(pPlayer)
registersymbol(pUnit)
registersymbol(pUnitB)
registersymbol(pPlanet)
//=========================================
MyCode:
//=========================================
// On the main screen
_MonHumanPlayer:
push rax
push rbx
mov rbx,[rcx+08]
mov eax,[rbx+2c]
test eax,eax
jnz _ExitMHP
mov [pPlayer],rbx
mov eax,[rbx+08]
mov [iID],eax
mov eax,[rbx+3c]
mov [iID2],eax
cmp dword ptr [iEnableMPR],0
je _ExitMHP // Jump if feature is disabled
mov eax,ctMCRE
cmp eax,[rcx+000228a4]
js _ExitMHP
mov [rcx+000228a4],eax
_ExitMHP:
pop rbx
pop rax
mov eax,[rax+rcx+000228A4] // Original code (get Credits)
jmp _BackMHP // Back to main code
//=========================================
// Unit Under Cursor/Selected
_MonSelUnit:
push rbx
lea rbx,[rcx-20]
mov [pUnit],rbx
mov ebx,[rbx+000000e0]
cmp ebx,[iID]
jne _ExitMSU
cmp dword ptr [iEnableGMD],0
je _MonSU00 // Jump if feature is disabled
mov ebx,[rcx+0000031c]
mov [rcx+0000040c],ebx
_MonSU00:
cmp dword ptr [iEnableMSS],0
je _MonSU01 // Jump if feature is disabled
mov ebx,[rcx+0000041c]
test ebx,ebx
jz _MonSU01
mov ebx,ctMMSS
cmp ebx,[rcx+0000041c]
js _MonSU01
mov [rcx+0000041c],ebx
_MonSU01:
cmp dword ptr [iEnableMMP],0
je _ExitMSU // Jump if feature is disabled
mov ebx,[rcx+00000360]
mov [rcx+00000418],ebx
_ExitMSU:
pop rbx
mov eax,[rax+rcx+0000040C] // Original code (get cur HP)
jmp _BackMSU // Back to main code
//=========================================
// On Selected Planet Detail screen
_MonSelPlanet:
mov rcx,[r12+08] // Original code (get pPlanetBase)
mov [pPlanet],rcx
_ExitMSP:
mov rax,[rcx] // Original code
jmp _BackMSP // Back to main code
//=========================================
// During Turn
_MonResearchProg:
cmp dword ptr [iEnableMRP],0
je _ExitMRP // Jump if feature is disabled
lea r8,[r15-70]
cmp r8,[pPlayer]
jne _ExitMRP
mov edx,[rax]
mov r8d,[rbx+08]
cmp r8d,edx
jns _ExitMRP
sub edx,r8d
mov [rsi],edx
_ExitMRP:
mov r8d,[rdi+08] // Original code (get res prog)
mov edx,[rsi] // Original code
jmp _BackMRP // Back to main code
//=========================================
// At main screen (planet)
_MonConstProg:
push rcx
push rdx
cmp eax,[rbx+10]
jle _ExitMCP
cmp dword ptr [iEnableMCP],0
je _ExitMCP // Jump if feature is disabled
test rsi,rsi
jz _ExitMCP
mov rcx,[rsi]
test rcx,rcx
jz _ExitMCP
mov edx,[rcx+30]
cmp edx,[iID]
jne _ExitMCP
lea rdx,[rax-64]
mov [rbx+10],edx
_ExitMCP:
pop rdx
pop rcx
sub eax,[rbx+10] // Original code (cur prog)
cmp [rdx+28],edi // Original code
jmp _BackMCP // Back to main code
//=========================================
// During Combat (HP)
_GodMode:
cmp dword ptr [iEnableGMD],0
je _ExitGMD // Jump if feature is disabled
cmp dword ptr [r12+1c],0
jne _ExitGMD
test edi,edi
jz _ExitGMD
mov edi,[r12+30]
mov [r12+34],edi
mov edi,0
mov rsi,edi
_ExitGMD:
sub [r12+34],edi // Original code (set HP)
jmp _BackGMD // Back to main code
//=========================================
// On Unit Icon Under Cursor
_MonUnitBattle:
mov [pUnitB],r15
_ExitMUB:
mov eax,[r15+34] // Original code (get cHP)
lea rcx,[rsp+30] // Original code
jmp _BackMUB // Back to main code
//=========================================
db '==================================>'
db 'CE6.4 Script by Recifense 051415'
//=========================================
// Variables
iEnableMPR:
dd 0
iEnableGMD:
dd 0
iEnableMSS:
dd 0
iEnableMMP:
dd 0
iEnableMRP:
dd 0
iEnableMCP:
dd 0
iID:
dd 0
iID2:
dd 0
pPlayer:
dq 0
pUnit:
dq 0
pPlanet:
dq 0
pUnitB:
dq 0
//=========================================
// Hacking Points
MOHP:
jmp _MonHumanPlayer
nop
nop
_BackMHP:
MOSU:
jmp _MonSelUnit
nop
nop
_BackMSU:
MOSP:
jmp _MonSelPlanet
nop
nop
nop
_BackMSP:
MORP:
jmp _MonResearchProg
nop
_BackMRP:
MOCP:
jmp _MonConstProg
nop
_BackMCP:
GDMD:
jmp _GodMode
_BackGMD:
MOUB:
jmp _MonUnitBattle
nop
nop
nop
nop
_BackMUB:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MOHP:
// mov eax,[rax+rcx+000228A4]
db 8b 84 08 a4 28 02 00
MOSU:
// mov eax,[rax+rcx+0000040C]
db 8b 84 08 0C 04 00 00
MOSP:
// mov rcx,[r12+08]
// mov rax,[rcx]
db 49 8b 4c 24 08 48 8b 01
MORP:
// mov r8d,[rdi+08]
// mov edx,[rsi]
db 44 8b 47 08 8b 16
MOCP:
// sub eax,[rbx+10]
// cmp [rdx+28],edi
db 2b 43 10 39 7a 28
GDMD:
// sub [r12+34],edi
db 41 29 7c 24 34
MOUB:
// mov eax,[r15+34]
// lea rcx,[rsp+30]
db 41 8B 47 34 48 8D 4C 24 30
//=========================================
// Unloading Scripts
{$lua}
getAddressList().getMemoryRecordByID(96).Active=false
getAddressList().getMemoryRecordByID(96).Color=0x0c08000
getAddressList().getMemoryRecordByID(110).Active=false
getAddressList().getMemoryRecordByID(110).Color=0x0c08000
getAddressList().getMemoryRecordByID(111).Active=false
getAddressList().getMemoryRecordByID(111).Color=0x0c08000
getAddressList().getMemoryRecordByID(112).Active=false
getAddressList().getMemoryRecordByID(112).Color=0x0c08000
getAddressList().getMemoryRecordByID(113).Active=false
getAddressList().getMemoryRecordByID(113).Color=0x0c08000
getAddressList().getMemoryRecordByID(114).Active=false
getAddressList().getMemoryRecordByID(114).Color=0x0c08000
{$asm}
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(iEnableMPR)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableMSS)
unregistersymbol(iEnableMMP)
unregistersymbol(iEnableMRP)
unregistersymbol(iEnableMCP)
unregistersymbol(iID)
unregistersymbol(iID2)
unregistersymbol(pPlayer)
unregistersymbol(pUnit)
unregistersymbol(pPlanet)
unregistersymbol(pUnitB)
//=========================================
dealloc(MyCode)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
}
96
"[X] <== Minimum Money ----------------------------------------------> (HK: CTRL+Home / CTRL+End)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMPR",1)
getAddressList().getMemoryRecordByID(96).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMPR",0)
getAddressList().getMemoryRecordByID(96).Color=0x0c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
110
"[X] <== God Mode -------------------------------------------------------> (HK: CTRL+Home / CTRL+End)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableGMD",1)
getAddressList().getMemoryRecordByID(110).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableGMD",0)
getAddressList().getMemoryRecordByID(110).Color=0x0c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
111
"[X] <== Minimum Settlers/Soldiers -------------------------------> (HK: CTRL+Home / CTRL+End)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMSS",1)
getAddressList().getMemoryRecordByID(111).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMSS",0)
getAddressList().getMemoryRecordByID(111).Color=0x0c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
112
"[X] <== Move Multiple times ----------------------------------------> (HK: CTRL+Home / CTRL+End)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMMP",1)
getAddressList().getMemoryRecordByID(112).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMMP",0)
getAddressList().getMemoryRecordByID(112).Color=0x0c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
113
"[X] <== Quick Research ---------------------------------------------> (HK: CTRL+Home / CTRL+End)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMRP",1)
getAddressList().getMemoryRecordByID(113).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMRP",0)
getAddressList().getMemoryRecordByID(113).Color=0x0c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
114
"[X] <== Construction/Improvement in 1 Turn --------------> (HK: CTRL+Home / CTRL+End)"
C08000
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
writeInteger("iEnableMCP",1)
getAddressList().getMemoryRecordByID(114).Color=0x0008000
{$ASM}
[disable]
{$LUA}
writeInteger("iEnableMCP",0)
getAddressList().getMemoryRecordByID(114).Color=0x0c08000
{$ASM}
Activate
17
36
0
Deactivate
17
35
1
228
"[X] <== Table/Script Information"
0000FF
Auto Assembler Script
[enable]
define(test,LUDO)
{$LUA}
getMainForm().CommentButton.doClick()
{$ASM}
[disable]
iEnableMPM
13F6002D7
Recifense
20150514
===========================================
Game Title : Galactic Civilizations III
Game Version : 1.00
Game Sponsor : Fennix102
Process Name : GalCiv3.exe
Script Version: 1.0
CE Version : 6.4
Release date : 14-May-2015
Author : Recifense
History:
14-May-15: First Release
Features:
- Minimum Money [1]
- Move Multiple times [2] (*)
- Research in 1-2 Turn [3]
- Construction in 1 Turn [4] (**)
- God Mode [5]
- Minimum Settlers/Soldiers [6] (*)
- Some Pointers
===========================================
[1] For Human player only (not AI);
[2] For Human player's ships/fleet only (*);
[3] For Human player only (not AI);
[4] For human player colonies only (**)
[5] For Human player's ships/fleet only;
[6] For Human player's colony and transport ships only (*);
-----------
(* ) Ship or Fleet should be selected;
(**) Click on each colony listed in a column at the right side;
===========================================
[USAGE]
1) Run CE64;
2) Run Game;
3) Load the game process "GalCiv3.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]
CTRL+Home = Enable ALL cheats;
CTRL+End = Disable ALL cheats;
===========================================
[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 7 64bits
===========================================
Cheers!