Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Final Fantasy XIII Enemy stat multiplier mod script help!

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
XxRaPiD4K3LLERxX
Newbie cheater
Reputation: 1

Joined: 08 Jan 2017
Posts: 11

PostPosted: Sun Feb 12, 2017 6:41 pm    Post subject: Final Fantasy XIII Enemy stat multiplier mod script help! Reply with quote

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
}
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites