XxRaPiD4K3LLERxX Newbie cheater Reputation: 1
Joined: 08 Jan 2017 Posts: 11
|
Posted: Sun Feb 12, 2017 6:41 pm Post subject: Final Fantasy XIII Enemy stat multiplier mod script help! |
|
|
I'm trying to make an enemy stat script that'll allow enemy's health and stats be multiplied, but I'm having huge issues.... [This is for Final Fantasy XIII]
It's like what other guy did for XIII-2, he managed to do it, since I know the way he added more multipliers, I managed to add more for his CT.
But making a multiplier for XIII is harder since I don't know how to do everything he did.
Any tips on how to achieve this?
I'm going to share his code, so you might get the gist of it. BTW, he's not active on steam so I can't get help from him.
Activate Enemy Stat Mod:
Code: | [ENABLE]
registersymbol(BattleMult_HP)
alloc(BattleMult_HP,10)
registersymbol(BattleMult_DMG)
alloc(BattleMult_DMG,10)
[DISABLE]
unregistersymbol(BattleMult_HP)
dealloc(BattleMult_HP)
unregistersymbol(BattleMult_DMG)
dealloc(BattleMult_DMG) |
BattleLoadBaseHP:
Code: | [ENABLE]
aobscanmodule(BattleLoadHP,ffxiii2img.exe,18 C1 E6 06 03 F7 89 04 B3 5F 5E) // should be unique
alloc(BattleLoadHP_newmem,$1000)
alloc(BattleLoadHP_Base,10)
label(code)
label(return)
label(diff_moderate)
label(diff_hard)
label(diff_very_hard)
label(diff_insane)
label(diff_impossible)
label(diff_ultimate)
label(diff_goddess)
label(diff_orphan)
label(diff_guardian)
label(diff_void)
label(skip_modification)
BattleLoadHP_newmem:
code:
cmp esi,1 //Check if Base HP is being loaded
jne skip_modification
cmp ebx,0 //Safety check so that we don't accidently crash the game if ebx is null
je skip_modification
cmp byte [ebx+1708+8],#109
jne skip_modification
cmp ebp,0
je skip_modification
mov [BattleLoadHP_Base],eax
cmp [BattleMult_HP],1
je diff_hard
cmp [BattleMult_HP],2
je diff_very_hard
cmp [BattleMult_HP],3
je diff_insane
cmp [BattleMult_HP],4
je diff_impossible
cmp [BattleMult_HP],5
je diff_ultimate
cmp [BattleMult_HP],6
je diff_goddess
cmp [BattleMult_HP],7
je diff_orphan
cmp [BattleMult_HP],8
je diff_guardian
cmp [BattleMult_HP],9
je diff_void
diff_moderate:
shl eax,1 //Multiply by 2x
jmp skip_modification
diff_hard:
shl eax,1 //Multiply by 2x
add eax,[BattleLoadHP_Base] //Add 1x
jmp skip_modification
diff_very_hard:
shl eax,2 //Multiply by 4x
jmp skip_modification
diff_insane:
shl eax,2 //Multiply by 4x
add eax,[BattleLoadHP_Base] //Add 1x
add eax,[BattleLoadHP_Base] //Add 1x
jmp skip_modification
diff_impossible:
shl eax,3 //Multiply by 8x
jmp skip_modification
diff_ultimate:
shl eax,4 //Multiply by 8x
jmp skip_modification
diff_goddess:
shl eax,5 //Multiply by 8x
jmp skip_modification
diff_orphan:
shl eax,5 //Multiply by 8x
add eax,[BattleLoadHP_Base]
jmp skip_modification
diff_guardian:
shl eax,7 //Multiply by 8x
add eax,[BattleLoadHP_Base]
jmp skip_modification
diff_void:
shl eax,9 //Multiply by 8x
jmp skip_modification
skip_modification:
mov [ebx+esi*4],eax
pop edi
pop esi
jmp return
BattleLoadHP+06:
jmp code
return:
registersymbol(BattleLoadHP)
[DISABLE]
BattleLoadHP+06:
db 89 04 B3 5F 5E
unregistersymbol(BattleLoadHP)
dealloc(BattleLoadHP_newmem)
dealloc(BattleLoadHP_Base)
{
// ORIGINAL CODE - INJECTION POINT: "ffxiii2img.exe"+79170
"ffxiii2img.exe"+79151: 6A 00 - push 00
"ffxiii2img.exe"+79153: 6A 79 - push 79
"ffxiii2img.exe"+79155: 68 A0 F8 D5 00 - push ffxiii2img.exe+95F8A0
"ffxiii2img.exe"+7915A: E8 F1 16 2D 00 - call ffxiii2img.exe+34A850
"ffxiii2img.exe"+7915F: 83 C4 0C - add esp,0C
"ffxiii2img.exe"+79162: 83 FE FF - cmp esi,-01
"ffxiii2img.exe"+79165: 74 0C - je ffxiii2img.exe+79173
"ffxiii2img.exe"+79167: 8B 44 24 18 - mov eax,[esp+18]
"ffxiii2img.exe"+7916B: C1 E6 06 - shl esi,06
"ffxiii2img.exe"+7916E: 03 F7 - add esi,edi
// ---------- INJECTING HERE ----------
"ffxiii2img.exe"+79170: 89 04 B3 - mov [ebx+esi*4],eax
"ffxiii2img.exe"+79173: 5F - pop edi
"ffxiii2img.exe"+79174: 5E - pop esi
// ---------- DONE INJECTING ----------
"ffxiii2img.exe"+79175: 5B - pop ebx
"ffxiii2img.exe"+79176: C2 0C 00 - ret 000C
"ffxiii2img.exe"+79179: CC - int 3
"ffxiii2img.exe"+7917A: CC - int 3
"ffxiii2img.exe"+7917B: CC - int 3
"ffxiii2img.exe"+7917C: CC - int 3
"ffxiii2img.exe"+7917D: CC - int 3
"ffxiii2img.exe"+7917E: CC - int 3
"ffxiii2img.exe"+7917F: CC - int 3
"ffxiii2img.exe"+79180: 53 - push ebx
} |
BattleLoadStats:
Code: | { Game : ffxiii2img.exe
Version:
Date : 2015-01-06
Author : Stefan
This script does blah blah blah
}
[ENABLE]
aobscanmodule(BattleLoadStat,ffxiii2img.exe,64 C1 E6 06 03 F7 89 04 B3 5F 5E) // should be unique
alloc(BattleLoadStat_newmem,$1000)
alloc(BattleLoadStat_Base,10)
label(code)
label(return)
label(modify_stat)
label(diff_moderate)
label(diff_hard)
label(diff_very_hard)
label(diff_insane)
label(diff_impossible)
label(diff_ultimate)
label(diff_goddess)
label(diff_orphan)
label(diff_guardian)
label(diff_void)
label(skip_modification)
BattleLoadStat_newmem:
code:
cmp ebx,0 //Safety check so that we don't accidently crash the game if edi is null
je skip_modification
cmp byte [ebx+1708+8],#109
jne skip_modification
cmp esi,00000005 //Check to see if ATK is being loaded
je modify_stat
cmp esi,00000006 //Check to see if MAG is being loaded
je modify_stat
jmp skip_modification
modify_stat:
mov [BattleLoadStat_Base],eax
cmp [BattleMult_DMG],1
je diff_hard
cmp [BattleMult_DMG],2
je diff_very_hard
cmp [BattleMult_DMG],3
je diff_insane
cmp [BattleMult_DMG],4
je diff_impossible
cmp [BattleMult_DMG],5
je diff_ultimate
cmp [BattleMult_DMG],6
je diff_goddess
cmp [BattleMult_DMG],7
je diff_orphan
cmp [BattleMult_DMG],8
je diff_guardian
cmp [BattleMult_DMG],9
je diff_void
diff_moderate:
shr eax,1 //Multiply by 0.5x
add eax,[BattleLoadStat_Base] //Add 1x
jmp skip_modification
diff_hard:
shl eax,1 //Multiply by 2x
jmp skip_modification
diff_very_hard:
shr eax,1 //Multiply by 0.5x
add eax,[BattleLoadStat_Base] //Add 1x
add eax,[BattleLoadStat_Base] //Add 1x
jmp skip_modification
diff_insane:
shl eax,1 //Multiply by 2x
add eax,[BattleLoadStat_Base] //Add 1x
jmp skip_modification
diff_impossible:
shl eax,2 //Multiply by 4x
jmp skip_modification
diff_ultimate:
shl eax,3
jmp skip_modification
diff_goddess:
shl eax,4
jmp skip_modification
diff_orphan:
shl eax,5
jmp skip_modification
diff_guardian:
shl eax,6
jmp skip_modification
diff_void:
shl eax,7
jmp skip_modification
skip_modification:
mov [ebx+esi*4],eax
pop edi
pop esi
jmp return
BattleLoadStat+06:
jmp code
return:
registersymbol(BattleLoadStat)
[DISABLE]
BattleLoadStat+06:
db 89 04 B3 5F 5E
unregistersymbol(BattleLoadStat)
dealloc(BattleLoadStat_newmem)
dealloc(BattleLoadStat_Base)
{
// ORIGINAL CODE - INJECTION POINT: "ffxiii2img.exe"+791D9
"ffxiii2img.exe"+791B6: 68 85 00 00 00 - push 00000085
"ffxiii2img.exe"+791BB: 68 A0 F8 D5 00 - push ffxiii2img.exe+95F8A0
"ffxiii2img.exe"+791C0: E8 8B 16 2D 00 - call ffxiii2img.exe+34A850
"ffxiii2img.exe"+791C5: 83 C4 0C - add esp,0C
"ffxiii2img.exe"+791C8: 83 FE FF - cmp esi,-01
"ffxiii2img.exe"+791CB: 74 0F - je ffxiii2img.exe+791DC
"ffxiii2img.exe"+791CD: 8B 44 24 18 - mov eax,[esp+18]
"ffxiii2img.exe"+791D1: 6B C0 64 - imul eax,eax,64
"ffxiii2img.exe"+791D4: C1 E6 06 - shl esi,06
"ffxiii2img.exe"+791D7: 03 F7 - add esi,edi
// ---------- INJECTING HERE ----------
"ffxiii2img.exe"+791D9: 89 04 B3 - mov [ebx+esi*4],eax
"ffxiii2img.exe"+791DC: 5F - pop edi
"ffxiii2img.exe"+791DD: 5E - pop esi
// ---------- DONE INJECTING ----------
"ffxiii2img.exe"+791DE: 5B - pop ebx
"ffxiii2img.exe"+791DF: C2 0C 00 - ret 000C
"ffxiii2img.exe"+791E2: CC - int 3
"ffxiii2img.exe"+791E3: CC - int 3
"ffxiii2img.exe"+791E4: CC - int 3
"ffxiii2img.exe"+791E5: CC - int 3
"ffxiii2img.exe"+791E6: CC - int 3
"ffxiii2img.exe"+791E7: CC - int 3
"ffxiii2img.exe"+791E8: CC - int 3
"ffxiii2img.exe"+791E9: CC - int 3
} |
BattleHealthBar:
Code: | [ENABLE]
aobscanmodule(BattleSetHealthBar,ffxiii2img.exe,89 9E 00 1D 00 00) // should be unique
alloc(BattleSetHealthBar_newmem,$1000)
alloc(BattleLoadHealthBar_Base,10)
label(code)
label(return)
label(diff_moderate)
label(diff_hard)
label(diff_very_hard)
label(diff_insane)
label(diff_impossible)
label(diff_ultimate)
label(diff_goddess)
label(diff_orphan)
label(diff_guardian)
label(diff_void)
label(skip_modification)
BattleSetHealthBar_newmem:
code:
cmp esi,0 //Safety check so that we don't accidently crash the game if edi is null
je skip_modification
cmp byte [esi+1A18+8],#109
jne skip_modification
mov [BattleLoadHealthBar_Base],ebx
cmp [BattleMult_HP],1
je diff_hard
cmp [BattleMult_HP],2
je diff_very_hard
cmp [BattleMult_HP],3
je diff_insane
cmp [BattleMult_HP],4
je diff_impossible
cmp [BattleMult_HP],5
je diff_ultimate
cmp [BattleMult_HP],6
je diff_goddess
cmp [BattleMult_HP],7
je diff_orphan
cmp [BattleMult_HP],8
je diff_guardian
cmp [BattleMult_HP],9
je diff_void
diff_moderate:
shl ebx,1 //Multiply by 2x
jmp skip_modification
diff_hard:
shl ebx,1 //Multiply by 2x
add ebx,[BattleLoadHealthBar_Base] //Add 1x
jmp skip_modification
diff_very_hard:
shl ebx,2 //Multiply by 4x
jmp skip_modification
diff_insane:
shl ebx,2 //Multiply by 4x
add ebx,[BattleLoadHealthBar_Base] //Add 1x
add ebx,[BattleLoadHealthBar_Base] //Add 1x
jmp skip_modification
diff_impossible:
shl ebx,3 //Multiply by 8x
jmp skip_modification
diff_ultimate:
shl ebx,4 //Multiply by 8x
jmp skip_modification
diff_goddess:
shl ebx,5 //Multiply by 8x
jmp skip_modification
diff_orphan:
shl ebx,6 //Multiply by 8x
jmp skip_modification
diff_guardian:
shl ebx,7 //Multiply by 8x
add ebx,[BattleLoadHealthBar_Base]
jmp skip_modification
diff_void:
shl ebx,9 //Multiply by 8x
jmp skip_modification
skip_modification:
mov [esi+00001D00],ebx
jmp return
BattleSetHealthBar:
jmp code
nop
return:
registersymbol(BattleSetHealthBar)
[DISABLE]
BattleSetHealthBar:
db 89 9E 00 1D 00 00
unregistersymbol(BattleSetHealthBar)
dealloc(BattleSetHealthBar_newmem)
dealloc(BattleLoadHealthBar_Base)
{
// ORIGINAL CODE - INJECTION POINT: "ffxiii2img.exe"+55DBB
"ffxiii2img.exe"+55D9E: 6A 04 - push 04
"ffxiii2img.exe"+55DA0: 6A 01 - push 01
"ffxiii2img.exe"+55DA2: 8B CF - mov ecx,edi
"ffxiii2img.exe"+55DA4: E8 17 33 02 00 - call ffxiii2img.exe+790C0
"ffxiii2img.exe"+55DA9: EB 02 - jmp ffxiii2img.exe+55DAD
"ffxiii2img.exe"+55DAB: 8B C1 - mov eax,ecx
"ffxiii2img.exe"+55DAD: 89 86 D0 02 00 00 - mov [esi+000002D0],eax
"ffxiii2img.exe"+55DB3: 8B 44 24 18 - mov eax,[esp+18]
"ffxiii2img.exe"+55DB7: 85 C0 - test eax,eax
"ffxiii2img.exe"+55DB9: 74 06 - je ffxiii2img.exe+55DC1
// ---------- INJECTING HERE ----------
"ffxiii2img.exe"+55DBB: 89 9E 00 1D 00 00 - mov [esi+00001D00],ebx
// ---------- DONE INJECTING ----------
"ffxiii2img.exe"+55DC1: F6 86 86 02 00 00 80 - test byte ptr [esi+00000286],-80
"ffxiii2img.exe"+55DC8: 74 76 - je ffxiii2img.exe+55E40
"ffxiii2img.exe"+55DCA: 83 BE D8 02 00 00 00 - cmp dword ptr [esi+000002D8],00
"ffxiii2img.exe"+55DD1: 7D 04 - jnl ffxiii2img.exe+55DD7
"ffxiii2img.exe"+55DD3: 33 C0 - xor eax,eax
"ffxiii2img.exe"+55DD5: EB 24 - jmp ffxiii2img.exe+55DFB
"ffxiii2img.exe"+55DD7: 6A 04 - push 04
"ffxiii2img.exe"+55DD9: 6A 01 - push 01
"ffxiii2img.exe"+55DDB: 8B CF - mov ecx,edi
"ffxiii2img.exe"+55DDD: E8 DE 32 02 00 - call ffxiii2img.exe+790C0
} |
|
|