{
===========================================
Game Title : Test
Game Version : 2.3.3 (DAQH)
Game Sponsor : Test
Proces Name : TestgameHacking.exe
Script Version: 7.1
CE Version : 6.4
Release date : 09-Mar-2015
Author : Recifense
History:
18-Oct-2014: Release for version 2.2.0 (Steam)
19-Nov-2014: Release for version 2.2.1-DPOO (Steam)(s5.1)
17-Dec-2014: Release for version 2.3.0-BTOF (Steam)
18-Dec-2014: Fixed a bug related to UPGRADE cheat (s5.2)
19-Dec-2014: Added Change Culture and Religion (s6.0)
21-Dec-2014: Fix in changing Culture/Religion of Vassal's counties (s6.1)
23-Dec-2014: Added pointer to indexed PERK (s7.0)
28-Dec-2014: New approach for perks (s7.1)
15-Jan-2015: Release for version 2.3.2-MMUR (Steam)
09-Mar-2015: Release for version 2.3.3-DAQH (Steam)
Features:
- Minimum Gold
- Upgrade in 1 Day
- Construction in 1 Day
- Movement in 1 Day
- God Mode
- Morale
- Damage (x16)
- Siege
- Super Ruler
- Diplomacy (base) >= 70
- Martial (base) >= 70
- Stewardship (base) >= 70
- Intrigue (base) >= 70
- Learning (base) >= 70
- Fertility = 1
- Health = 9.9
- Prestige >= 50
- Piety >= 50
- Revolt Risk
- Technology Level (user defined => max = 8)
- Decadence
- Upgrade in 1 Day for Player's Vassals
- Construction in 1 Day for Player's Vassals
- Change Culture of a County
- Change Religion of a County
- Ajust Pointer to Perk[X]
- Some pointers
===========================================
}
//=========================================
// Definitions
define(MPLR,CK2game.exe+0034dcf5) //=#==
define(MCAP,CK2game.exe+0006c2ad) //=#==
define(MDAT,CK2game.exe+0034d9fe) //=#==
define(MOUP,CK2game.exe+00559be9) //=#==
define(MBLD,CK2game.exe+004e8880) //=#==
define(MMOV,CK2game.exe+0063d383) //##==
define(GMDE,CK2game.exe+00473c9c) //====
define(MMOR,CK2game.exe+00473d9b) //====
define(MSIE,CK2game.exe+001ed6b4) //=#==
define(GMDS,CK2game.exe+001dbeee) //====
define(MTLE,CK2game.exe+004eb230) //=#==
define(MOSC,CK2game.exe+002804c7) //=#==
define(MCCR,CK2game.exe+0050fc9a) //-N==
define(UPNL,CK2game.exe+004e90e8) // Upgrade: Normal
define(UPRB,CK2game.exe+00093492) // Upgrade: Republic Owner Expansion
define(UPRX,CK2game.exe+004e91cb) // Upgrade: Republic Vassal Expansion
define(PERK,CK2game.exe+00C23BA4) // pPerkList
//=========================================
// Constants used in the script (that can be changed)
define(ctCE64,(float)6.4)
define(ctMMON,#64000) // Minimum Money
define(ctMATT,#10) // Minimum Attributes
//=========================================
[ENABLE]
//=========================================
// Check if script is compatible to this game version
// If false the script will not be loaded
assert(MPLR,8d 87 a0 00 00 00 3b fb ?? ?? b8 ?? ?? ?? ?? 8b 10 8b 40 04)
assert(MCAP,8b 46 20 8b 40 14 8b 80 00 02 00 00 8b 80 33 01 00 00 83 c0)
assert(MDAT,8b b8 68 02 00 00 8d 8f ?? ?? ?? ?? b8 ab aa aa 2a f7 e9 c1)
assert(MOUP,8b 08 3b 4f 14 8b 17 8b cf ?? ?? 8b 42 20 ff d0 3c 01 ?? ??)
assert(MBLD,8b 08 3b 4f 14 8b 17 8b cf 0f 8c ?? ?? ?? ?? 8b 42 20 ff d0)
assert(MMOV,8b 83 88 00 00 00 3b 45 08 0f 8e ?? ?? ?? ?? 83 3d ?? ?? ??)
assert(GMDE,2b c8 89 0b 8b 4d ec 01 04 19 01 45 f8 8b 4d f4 8b 45 08 8b)
assert(MMOR,29 08 83 38 00 ?? ?? c7 00 00 00 00 00 5f 8b c6 5b 8b e5 5d)
assert(MSIE,03 c2 39 43 14 ?? ?? 5f 5e b0 01 5b 8b e5 5d c2 04 00 5f 5e)
assert(GMDS,89 88 d8 00 00 00 2b fa e9 ?? ?? ?? ?? 5f 5e 5b 8b e5 5d c2)
assert(MTLE,8b 4f 38 8b 0c 81 8d 14 85 00 00 00 00 8b 47 48 8b 04 10 2b)
assert(MOSC,0f be 81 f4 00 00 00 89 45 ec 8b 41 58 89 4d dc 3b c3 ?? ??)
assert(MCCR,8b b2 fc 07 00 00 8b 4b 20 8b 01 8b 40 3c 6a 00 8d 55 d8 52)
//=========================================
alloc(MyCode,4096,CK2game.exe)
//=========================================
// Declaration section
label(_MonPlayer)
label(_MonP0P)
label(_MonP00)
label(_MonP01)
label(_MonP02)
label(_MonP03)
label(_BackMP)
label(_ExitMP)
label(_MonCapital)
label(_BackMC)
label(_ExitMC)
label(_MonDate)
label(_BackMD)
label(_ExitMD)
label(_MonUpgrade)
label(_MonU00)
label(_MonU02)
label(_BackMU)
label(_ExitMU)
label(_MonBuilding)
label(_MonB00)
label(_MonB01)
label(_MonB02)
label(_BackMB)
label(_ExitMB)
label(_MonMovement)
label(_BackMM)
label(_ExitMM)
label(_GodMode)
label(_GodM00)
label(_BackGM)
label(_ExitGM)
label(_MonMorale)
label(_BackMMo)
label(_ExitMMo)
label(_MonSiege)
label(_MonS00)
label(_MonS01)
label(_BackMS)
label(_ExitMS)
label(_GodModeS)
label(_BackGMS)
label(_ExitGMS)
label(_MonTechLevel)
label(_BackMTL)
label(_ExitMTL)
label(_MonSelChar)
label(_BackMSC)
label(_ExitMSC)
label(_MonCountyCultureReligion)
label(_MonCR00)
label(_MonCR01)
label(_BackCCR)
label(_ExitCCR)
label(_UpdPerkInfo)
label(_ExitUPI)
label(_GetPerkPointer)
label(_ExitGPP)
label(iEnableMG)
label(iEnableMU)
label(iEnableMB)
label(iEnableMM)
label(iEnableGM)
label(iEnableMMo)
label(iEnableMD)
label(iEnableMDe)
label(iEnableMS)
label(iEnableSR)
label(iEnableRR)
label(iEnableMTL)
label(iEnableMUV)
label(iEnableMBV)
label(iEnableMCC)
label(iEnableMCR)
label(iEnableCRV)
label(iDate)
label(iMinTech)
label(iPerkID)
label(iPerkIndex)
label(iPPerkIndex)
label(iSPerkIndex)
label(imPerkIndex)
label(imPPerkIndex)
label(imSPerkIndex)
label(pUnit)
label(pPlayer)
label(pOwner)
label(pCapital)
label(pProvince)
label(pSelPlayer)
label(pSelOwner)
label(pReligion)
label(pCulture)
label(pSelCounty)
label(pPerk)
label(pPlrPerk)
label(pSelPerk)
label(pPPerkID)
label(pSPerkID)
//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableMG)
registersymbol(iEnableMU)
registersymbol(iEnableMB)
registersymbol(iEnableMM)
registersymbol(iEnableGM)
registersymbol(iEnableMMo)
registersymbol(iEnableMD)
registersymbol(iEnableMDe)
registersymbol(iEnableMS)
registersymbol(iEnableSR)
registersymbol(iEnableRR)
registersymbol(iEnableMTL)
registersymbol(iEnableMUV)
registersymbol(iEnableMBV)
registersymbol(iEnableMCC)
registersymbol(iEnableMCR)
registersymbol(iEnableCRV)
registersymbol(iMinTech)
registersymbol(iPerkID)
registersymbol(iPerkIndex)
registersymbol(iPPerkIndex)
registersymbol(iSPerkIndex)
registersymbol(imPerkIndex)
registersymbol(imPPerkIndex)
registersymbol(imSPerkIndex)
registersymbol(pUnit)
registersymbol(pPlayer)
registersymbol(pOwner)
registersymbol(pCapital)
registersymbol(pProvince)
registersymbol(pSelPlayer)
registersymbol(pSelOwner)
registersymbol(pSelCounty)
registersymbol(pPerk)
registersymbol(pPlrPerk)
registersymbol(pSelPerk)
registersymbol(pPPerkID)
registersymbol(pSPerkID)
//=========================================
MyCode:
//========================================= v2.3.0
// On main screen (change to consider negative gold amount)
_MonPlayer:
push ebx
push ecx
push esi
mov esi,edi
test esi,esi
jz _ExitMP
cmp esi,[pPlayer]
je _MonP0P
mov [pPlayer],esi
xor eax,eax
mov [pSelPlayer],eax
mov [pSelOwner],eax
mov [pSelPerk],eax
mov [pPlrPerk],eax
mov [pPerk],eax
mov [pPPerkID],eax
mov [pSPerkID],eax
mov [imPerkIndex],eax
mov [imPPerkIndex],eax
mov [imSPerkIndex],eax
inc eax
mov [iPerkID],eax
mov [iPPerkIndex],eax
mov [iSPerkIndex],eax
inc eax
mov [iPerkIndex],eax
_MonP0P:
mov eax,[esi+04]
test eax,eax
jz _MonP01
mov eax,[eax+04]
test eax,eax
jz _MonP01
mov eax,[eax+0c]
mov [pOwner],eax
test eax,eax
jz _MonP01
cmp eax,[eax+000000e4]
jne _MonP01
mov ecx,[eax+0000010c]
mov [pReligion],ecx
mov ecx,[eax+00000110]
mov [pCulture],ecx
cmp dword ptr [iEnableSR],0
je _MonP00 // Jump if feature is disabled
xor ecx,ecx
mov ebx,#70
mov cl,[eax+000000f4] // Diplomacy (base)
cmp ebx,ecx
cmovg ecx,ebx
mov [eax+000000f4],cl
mov cl,[eax+000000f5] // Martial (base)
cmp ebx,ecx
cmovg ecx,ebx
mov [eax+000000f5],cl
mov cl,[eax+000000f6] // Stewardship (base)
cmp ebx,ecx
cmovg ecx,ebx
mov [eax+000000f6],cl
mov cl,[eax+000000f7] // Intrigue (base)
cmp ebx,ecx
cmovg ecx,ebx
mov [eax+000000f7],cl
mov cl,[eax+000000f8] // Learning (base)
cmp ebx,ecx
cmovg ecx,ebx
mov [eax+000000f8],cl
//Other structure
mov ebx,#1000
mov ecx,[esi+00000088] // Fertility (base)
cmp ebx,ecx
cmovg ecx,ebx
mov [esi+00000088],ecx
mov ecx,[esi+0000008c] // Fertility (base)
cmp ebx,ecx
cmovg ecx,ebx
mov [esi+0000008c],ecx
mov ebx,#9900
mov ecx,[esi+00000090] // Health (base)
cmp ebx,ecx
cmovg ecx,ebx
mov [esi+00000090],ecx
mov ebx,#100000
mov ecx,[esi+00000098] // Prestige
cmp ebx,ecx
cmovg ecx,ebx
mov [esi+00000098],ecx
mov ecx,[esi+0000009c] // Piety
cmp ebx,ecx
cmovg ecx,ebx
mov [esi+0000009c],ecx
// Other Structure
mov ebx,[iDate]
mov ecx,0006aef0
sub ebx,ecx
js _MonP00
mov ecx,[eax+00000098] // Age
cmp ebx,ecx
cmovg ecx,ebx
mov [eax+00000098],ecx
_MonP00:
cmp dword ptr [iEnableMDe],0
je _MonP01 // Jump if feature is disabled
mov ecx,[eax+000000a0] // pDinasty
test ecx,ecx
jz _MonP01
mov ebx,[ecx+5c]
test ebx,ebx
js _MonP01
mov [ecx+58],0
mov [ecx+5c],0
mov ebx,[ecx+64]
test ebx,ebx
js _MonP01
mov [ecx+60],0
mov [ecx+64],0
mov ebx,[ecx+6c]
test ebx,ebx
js _MonP01
mov [ecx+68],0
mov [ecx+6c],0
mov ebx,[ecx+74]
test ebx,ebx
js _MonP01
mov [ecx+70],0
mov [ecx+74],0
_MonP01:
cmp dword ptr [iEnableMG],0
je _MonP03 // Jump if feature is disabled
mov eax,[esi+000000a4]
test eax,eax
js _MonP02
jnz _MonP03
_MonP02:
xor eax,eax
mov [esi+000000a4],eax
mov eax,0c800000
cmp eax,[esi+000000a0]
jle _MonP03
mov [esi+000000a0],eax
_MonP03:
call _UpdPerkInfo
_ExitMP:
pop esi
pop ecx
pop ebx
lea eax,[edi+000000A0] // Original code (pMoney)
jmp _BackMP // Back to main code
//========================================= v2.3.0
// On Selecting the Capital of a County
_MonCapital:
mov eax,[esi+20]
mov [pCapital],eax
mov eax,[eax+34]
mov [pProvince],eax
cmp dword ptr [iEnableRR],0
je _ExitMC // Jump if feature is disabled
mov eax,[eax+00000804] // pStrName
test eax,eax
jz _ExitMC
mov eax,[eax+00000200]
cmp eax,[pOwner]
jne _ExitMC
mov eax,[pCapital]
mov [eax+68],0
mov eax,[pProvince]
mov [eax+0000035c],0
_ExitMC:
mov eax,[esi+20] // Original code (pCap)
mov eax,[eax+14] // Original code (pCapInfo)
jmp _BackMC // Back to main code
//========================================= v2.3.0
// On Main Screen
_MonDate:
mov edi,[eax+00000268] // Original code (Get Date)
mov [iDate],edi
_ExitMD:
jmp _BackMD // Back to main code
//========================================= v2.3.0
// When changing date
// Building and Upgrading in county's regions
// Building Port in Republic Counties
_MonUpgrade:
push ebx
push edi
push esi
cmp dword ptr [iEnableMU],0
je _ExitMU // Jump if feature is disabled
mov edi,edi
mov ecx,[edi+28] // Get pCapital
test ecx,ecx
jz _ExitMU
mov ecx,[edi+20] // Get pCounty
test ecx,ecx
jz _ExitMU
mov ebx,[ebp+04]
cmp ebx,UPNL
je _MonU00
cmp ebx,UPRB
je _MonU00
cmp ebx,UPRX
jne _ExitMU
mov ebx,[edi+28] // Get pCapital
mov ecx,[ebx+1c] // Get pManager
cmp ecx,[pOwner]
je _MonU02
cmp dword ptr [iEnableMUV],0
je _ExitMU // Jump if feature is disabled
mov ebx,[ebx+1c] // Get pManager
mov ecx,[ebx+0000012b] // Get pLieage
cmp ecx,[pOwner]
je _MonU02
jmp _ExitMU
//==
_MonU00:
mov ebx,[ecx+00000804] // Get pCountyName
test ebx,ebx
jz _ExitMU
mov ecx,[ebx+00000200] // Get pOwner
cmp ecx,[pOwner]
je _MonU02
cmp dword ptr [iEnableMUV],0
je _ExitMU // Jump if feature is disabled
mov ebx,[ebx+00000168] // Get pRealOwner
test ebx,ebx
jz _ExitMU
mov ecx,[ebx+00000200] // Get pOwner
cmp ecx,[pOwner]
je _MonU02
jmp _ExitMU
//==
_MonU02:
cmp ecx,[pOwner]
jne _ExitMU
mov ecx,[eax] // Get current date
mov [edi+14],ecx // Update finishing Date
mov ecx,[edi+18]
imul ecx,ecx,000003e8
mov [edi+1c],ecx
_ExitMU:
pop esi
pop edi
pop ebx
mov ecx,[eax] // Original code
cmp ecx,[edi+14] // Original code
jmp _BackMU // Back to main code
//========================================= v2.3.0
// When changing date (construction)
_MonBuilding:
push ebx
cmp dword ptr [iEnableMB],0
je _ExitMB // Jump if feature is disabled
mov ecx,[edi+20] // Get pCounty
test ecx,ecx
jz _MonB01
mov ebx,[ecx+00000804] // Get pCountyName
test ebx,ebx
jz _MonB01
mov ecx,[ebx+00000200] // Get pOwner
cmp ecx,[pOwner]
je _MonB02
_MonB00:
cmp dword ptr [iEnableMBV],0
je _MonB01 // Jump if feature is disabled
mov ebx,[ebx+00000168]
test ebx,ebx
jz _MonB01
mov ecx,[ebx+00000200] // Get pOwner
cmp ecx,[pOwner]
je _MonB02
_MonB01:
cmp dword ptr [iEnableMBV],0
je _ExitMB // Jump if feature is disabled
mov ecx,[edi+28]
cmp ecx,[pOwner]
jne _ExitMB
_MonB02:
mov ecx,[eax] // Get current date
mov [edi+14],ecx // Update finishing Date
_ExitMB:
pop ebx
mov ecx,[eax] // Original code
cmp ecx,[edi+14] // Original code
jmp _BackMB // Back to main code
//========================================= v2.3.0
// When changing date
_MonMovement:
cmp dword ptr [iEnableMM],0
je _ExitMM // Jump if feature is disabled
mov eax,[ebx+00000128] // Get pOwner
cmp eax,[pOwner]
jne _ExitMM
mov eax,[ebp+08]
inc eax
mov [ebx+00000088],eax
_ExitMM:
mov eax,[ebx+00000088] // Original code
jmp _BackMM // Back to main code
//========================================= v2.2.0
// During combat
_GodMode:
push esi
mov esi,[ebp+08]
test esi,esi
jz _ExitGM
lea esi,[esi-b4]
mov esi,[esi+50] // Get pOwner
cmp esi,[pOwner]
jne _GodM00
cmp dword ptr [iEnableGM],0
je _ExitGM // Jump if feature is disabled
mov ecx,[ebx+20]
mov [ebx],ecx
xor eax,eax // Value2decrease = 0
jmp _ExitGM
_GodM00:
cmp dword ptr [iEnableMD],0
je _ExitGM // Jump if feature is disabled
shl eax,4 // Damage * 16
cmp ecx,eax
cmovl eax,ecx
_ExitGM:
pop esi
sub ecx,eax // Original code
mov [ebx],ecx // Original code
mov ecx,[ebp-14] // Original code
jmp _BackGM // Back to main code
//========================================= v2.2.0
// When in combat
_MonMorale:
push edi
cmp dword ptr [iEnableMMo],0
je _ExitMMo // Jump if feature is disabled
mov edi,[eax+0c] // Get pOwner
cmp edi,[pOwner]
jne _ExitMMo
mov edi,#1000
mov [eax],edi
xor ecx,ecx // value2decrease = 0
_ExitMMo:
pop edi
sub [eax],ecx // Original code
cmp dword ptr [eax],00 // Original code
jmp _BackMMo // Back to main code
//========================================= v2.3.0
// Selected County in Siege
// If a player's county, set value to 1 day
// If a Enemy's county, set value to maximum (Enable Assault)
_MonSiege:
push ecx
push edi
push esi
add eax,edx // Original code
cmp dword ptr [iEnableMS],0
je _ExitMS // Jump if feature is disabled
mov edi,[ebx+10] // Get pCapital
test edi,edi
jz _ExitMS
mov edi,[edi+14] // Get pInfo
test edi,edi
jz _ExitMS
mov edi,[edi+00000200] // Get pOwner
cmp edi,[pOwner]
jne _MonS00
mov dword ptr [ebx+14],1
mov eax,#100
jmp _ExitMS
// Enemy Province's Capital
_MonS00:
mov esi,[ebx+10] // Get pCapital
mov esi,[esi+34] // Get pCounty
test esi,esi
jz _ExitMS
mov edi,[esi+000007b4] // Get ppArmy
test edi,edi
jz _ExitMS
mov edi,[edi] // Get p1stArmy
test edi,edi
jz _ExitMS
mov ecx,[edi+00000128] // Get pOwner
cmp ecx,[pOwner]
je _MonS01
mov edi,[esi+000007b8] // Get ppArmy
test edi,edi
jz _ExitMS
mov edi,[edi] // Get pLastArmy
test edi,edi
jz _ExitMS
mov ecx,[edi+00000128] // Get pOwner
cmp ecx,[pOwner]
jne _ExitMS
_MonS01:
cmp ebx,[edi+64] // Sieged by the player?
jne _ExitMS
mov [ebx+14],eax // Enable Assault
_ExitMS:
pop esi
pop edi
pop ecx
cmp [ebx+14],eax // Original code
jmp _BackMS // Back to main code
//========================================= v2.2.0
// Army During Siege
_GodModeS:
push esi
push edi
push ecx
mov [eax+000000D8],ecx // Original code
cmp dword ptr [iEnableGM],0
je _ExitGMS // Jump if feature is disabled
mov esi,[eax+50] // Get pOwner
cmp esi,[pOwner]
jne _ExitGMS
pushfd
cld
lea esi,[eax+000000dc]
lea edi,[eax+000000bc]
mov ecx,8
rep movsd
popfd
mov [eax+44],#1000 // Morale
_ExitGMS:
pop ecx
pop edi
pop esi
jmp _BackGMS // Back to main code
//========================================= v2.3.0
// Looking at the Technology Screen
// ESI = province or demesne part, EDI = Index
_MonTechLevel:
push edx
push ebx
cmp dword ptr [iEnableMTL],0
je _ExitMTL // Jump if feature is disabled
mov ebx,[edi+00000804] // Get pCountyName
test ebx,ebx
jz _ExitMTL
mov ebx,[ebx+00000200] // Get pOwner
cmp ebx,[pOwner]
jne _ExitMTL
mov ecx,[edi+38] // pTechLevel
test ecx,ecx
jz _ExitMTL
mov ebx,[iMinTech]
cmp ebx,8
jg _ExitMTL
test ebx,ebx
js _ExitMTL
push eax
mov eax,#1000
imul ebx,eax
pop eax
cmp ebx,[ecx+eax*4]
jle _ExitMTL
mov [ecx+eax*4],ebx
_ExitMTL:
pop ebx
pop edx
mov ecx,[edi+38] // Original code
mov ecx,[ecx+eax*4] // Original code
jmp _BackMTL // Back to main code
//========================================= v2.3.0
// When a character detail is displayed (select the portrait)
_MonSelChar:
mov eax,[ecx+58]
mov [pSelPlayer],eax
mov [pSelOwner],ecx
xor eax,eax
mov [pSelPerk],eax
mov [imSPerkIndex],eax
mov [pSPerkID],eax
inc eax
mov [iSPerkIndex],eax
_ExitMSC:
movsx eax,byte ptr [ecx+000000F4] // Original code
jmp _BackMSC // Back to main code
//========================================= v2.3.0 new
// When Selecting County
_MonCountyCultureReligion:
push ecx
mov [pSelCounty],edx
mov esi,[edx+00000804] // Get pCountyName
test esi,esi
jz _ExitCCR
mov ecx,[esi+00000200] // Get pOwner
cmp ecx,[pOwner]
je _MonCR00
cmp dword ptr [iEnableCRV],0
je _ExitCCR // Jump if feature is disabled
mov ecx,[esi+00000168]
test ecx,ecx
jz _ExitCCR
mov ecx,[ecx+00000200] // Get pOwner
cmp ecx,[pOwner]
jne _ExitCCR
_MonCR00:
cmp dword ptr [iEnableMCC],0
je _MonCR01 // Jump if feature is disabled
mov ecx,[pCulture]
test ecx,ecx
jz _MonCR01
mov [edx+000007FC],ecx
_MonCR01:
cmp dword ptr [iEnableMCR],0
je _ExitCCR // Jump if feature is disabled
mov ecx,[pReligion]
test ecx,ecx
jz _ExitCCR
mov [edx+00000800],ecx
_ExitCCR:
pop ecx
mov esi,[edx+000007FC] // Original code
jmp _BackCCR // Back to main code
//=========================================
// Procedure to update Perk Info
_UpdPerkInfo:
push eax
push ebx
// Checking Perk List
mov ebx,[PERK]
test ebx,ebx
jz _ExitUPI
mov eax,[ebx]
mov [imPerkIndex],eax
// Dealing with Any Perk Info
mov eax,[iPerkIndex]
cmp eax,[imPerkIndex]
jg _ExitUPI
test eax,eax
jz _ExitUPI
dec eax
mov [iPerkID],eax
mov ebx,[PERK]
mov ebx,[ebx+0c]
mov eax,[ebx+eax*4]
mov [pPerk],eax
// Dealing with Human Player
mov ebx,[pOwner] // Just for safety
test ebx,ebx
jz _ExitUPI
mov eax,[ebx+000000fc]
test eax,eax
jz _ExitUPI
mov eax,[ebx+00000100]
test eax,eax
jz _ExitUPI
sub eax,[ebx+000000fc]
shr eax,1
mov [imPPerkIndex],eax
mov eax,[iPPerkIndex]
test eax,eax
jz _ExitUPI
cmp eax,[imPPerkIndex]
jg _ExitUPI
push eax
push ebx
push pPPerkID
push pPlrPerk
call _GetPerkPointer
// Dealing with Last Selected Character
mov ebx,[pSelOwner]
test ebx,ebx
jz _ExitUPI
mov eax,[ebx+000000fc]
test eax,eax
jz _ExitUPI
mov eax,[ebx+00000100]
test eax,eax
jz _ExitUPI
sub eax,[ebx+000000fc]
shr eax,1
mov [imSPerkIndex],eax
mov eax,[iSPerkIndex]
test eax,eax
jz _ExitUPI
cmp eax,[imSPerkIndex]
jg _ExitUPI
mov eax,[iSPerkIndex]
test eax,eax
jz _ExitUPI
cmp eax,[imSPerkIndex]
jg _ExitUPI
push eax
push ebx
push pSPerkID
push pSelPerk
call _GetPerkPointer
_ExitUPI:
pop ebx
pop eax
ret
//=========================================
// Procedure to Get Perk Pointer
_GetPerkPointer:
push ebp
mov ebp,esp
push eax
push ebx
push ecx
push edx
mov ebx,[ebp+10] // Get pOwnerStr
mov ecx,[ebp+14] // Get Index
mov edx,[ebp+0C] // Get pPerkID
dec ecx // Adjust Index
mov ebx,[ebx+000000fc] // get pPerkIDList
lea eax,[ebx+ecx*2] // Point to ID
mov [edx],eax
movzx ecx,word ptr [eax] // Get ID(Index)
mov edx,[PERK] // Get pPerkList
mov edx,[edx+0c] // Get PerkList
mov eax,[edx+ecx*4] // Get pPerk address
mov ebx,[ebp+08] // Get pPerk
mov [ebx],eax
_ExitGPP:
pop edx
pop ecx
pop ebx
pop eax
pop ebp
ret 0010
//=========================================
db '=================================>'
db 'CE6.4 Script by Recifense 030915'
//=========================================
// Variables
iEnableMG:
dd 0
iEnableMU:
dd 0
iEnableMUV:
dd 0
iEnableMB:
dd 0
iEnableMBV:
dd 0
iEnableMM:
dd 0
iEnableGM:
dd 0
iEnableMMo:
dd 0
iEnableMD:
dd 0
iEnableMS:
dd 0
iEnableSR:
dd 0
iEnableRR:
dd 0
iEnableMTL:
dd 0
iEnableMDe:
dd 0
iEnableMCC:
dd 0
iEnableMCR:
dd 0
iEnableCRV:
dd 0
iDate:
dd 0
iMinTech:
dd 1
iPerkIndex:
dd 2
iPPerkIndex:
dd 1
iSPerkIndex:
dd 1
imPerkIndex:
dd 1
imPPerkIndex:
dd 1
imSPerkIndex:
dd 1
iPerkID:
dd 0
pUnit:
dd 0
pPlayer:
dd 0
pOwner:
dd MyCode
pCapital:
dd 0
pProvince:
dd 0
pSelPlayer:
dd 0
pSelOwner:
dd 0
pReligion:
dd 0
pCulture:
dd 0
pSelCounty:
dd 0
pPerk:
dd 0
pPlrPerk:
dd 0
pSelPerk:
dd 0
pPPerkID:
dd 0
pSPerkID:
dd 0
//=========================================
MPLR:
jmp _MonPlayer
nop
_BackMP:
MCAP:
jmp _MonCapital
nop
_BackMC:
MDAT:
jmp _MonDate
nop
_BackMD:
MOUP:
jmp _MonUpgrade
_BackMU:
MBLD:
jmp _MonBuilding
_BackMB:
MMOV:
jmp _MonMovement
nop
_BackMM:
GMDE:
jmp _GodMode
nop
nop
_BackGM:
MMOR:
jmp _MonMorale
_BackMMo:
MSIE:
jmp _MonSiege
_BackMS:
GMDS:
jmp _GodModeS
nop
_BackGMS:
MTLE:
jmp _MonTechLevel
nop
_BackMTL:
MOSC:
jmp _MonSelChar
nop
nop
_BackMSC:
MCCR:
jmp _MonCountyCultureReligion
nop
_BackCCR:
//=========================================
// Script for Restoring Original Codes
[DISABLE]
MPLR:
// lea eax,[edi+000000A0]
db 8d 87 a0 00 00 00
MCAP:
// mov eax,[esi+20]
// mov eax,[eax+14]
db 8b 46 20 8b 40 14
MDAT:
// mov edi,[eax+00000268]
db 8b b8 68 02 00 00
MOUP:
// mov ecx,[eax]
// cmp ecx,[edi+14]
db 8b 08 3b 4f 14
MBLD:
// mov ecx,[eax]
// cmp ecx,[edi+14]
db 8b 08 3b 4f 14
MMOV:
// mov eax,[ebx+00000088]
db 8b 83 88 00 00 00
GMDE:
// sub ecx,eax
// mov [ebx],ecx
// mov ecx,[ebp-14]
db 2b c8 89 0b 8b 4d ec
MMOR:
// sub [eax],ebx
// cmp dword ptr [eax],00
db 29 08 83 38 00
MSIE:
// add eax,edx
// cmp [ebx+14],eax
db 03 c2 39 43 14
GMDS:
// mov [eax+000000D8],ecx
db 89 88 d8 00 00 00
MTLE:
// mov ecx,[edi+38]
// mov ecx,[ecx+eax*4]
db 8b 4f 38 8b 0c 81
MOSC:
// movsx eax,byte ptr [ecx+000000F4]
db 0f be 81 f4 00 00 00
MCCR:
// mov esi,[edx+000007FC]
db 8b b2 fc 07 00 00
//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(iEnableMG)
unregistersymbol(iEnableMU)
unregistersymbol(iEnableMB)
unregistersymbol(iEnableMM)
unregistersymbol(iEnableGM)
unregistersymbol(iEnableMMo)
unregistersymbol(iEnableMD)
unregistersymbol(iEnableMDe)
unregistersymbol(iEnableMS)
unregistersymbol(iEnableSR)
unregistersymbol(iEnableRR)
unregistersymbol(iEnableMTL)
unregistersymbol(iEnableMUV)
unregistersymbol(iEnableMBV)
unregistersymbol(iEnableMCC)
unregistersymbol(iEnableMCR)
unregistersymbol(iEnableCRV)
unregistersymbol(iMinTech)
unregistersymbol(iPerkID)
unregistersymbol(iPerkIndex)
unregistersymbol(iPPerkIndex)
unregistersymbol(iSPerkIndex)
unregistersymbol(imPerkIndex)
unregistersymbol(imPPerkIndex)
unregistersymbol(imSPerkIndex)
unregistersymbol(pUnit)
unregistersymbol(pOwner)
unregistersymbol(pCapital)
unregistersymbol(pProvince)
unregistersymbol(pPlayer)
unregistersymbol(pSelPlayer)
unregistersymbol(pSelOwner)
unregistersymbol(pSelCounty)
unregistersymbol(pPerk)
unregistersymbol(pPlrPerk)
unregistersymbol(pSelPerk)
unregistersymbol(pPPerkID)
unregistersymbol(pSPerkID)
//=========================================
dealloc(MyCode)
//============= Scripts End ===============
// ****************************************
// NOTES
// ****************************************
{
2.3.2 (MMUR):
define(MPLR,CK2game.exe+0034cc45) //=#=
define(MCAP,CK2game.exe+0006c70d) //=#=
define(MDAT,CK2game.exe+0034c94e) //=#=
define(MOUP,CK2game.exe+00559d59) //=#=
define(MBLD,CK2game.exe+004e7b10) //=#=
define(MMOV,CK2game.exe+0063d593) //##=
define(GMDE,CK2game.exe+0047339c) //===
define(MMOR,CK2game.exe+0047349b) //===
define(MSIE,CK2game.exe+001eced4) //=#=
define(GMDS,CK2game.exe+001db36e) //===
define(MTLE,CK2game.exe+004ea4e0) //=#=
define(MOSC,CK2game.exe+0027fe47) //=#=
define(MCCR,CK2game.exe+0050ee0a) //-N=
define(UPNL,CK2game.exe+004e8378) // Upgrade: Normal
define(UPRB,CK2game.exe+00093832) // Upgrade: Republic Owner Expansion
define(UPRX,CK2game.exe+004e845b) // Upgrade: Republic Vassal Expansion
define(PERK,CK2game.exe+00C22BA4) // pPerkList
}
어샘블리
어셈블러
짜여진->짜인
치트엔진의 오토 어셈블 기능에 쓰는 스크립트 아닐까?
http://autogram.tk/이
중고차 어플리케이션 어떤가요?