Squall8 wrote: ↑Mon Apr 02, 2018 10:42 am
[...]
Updated table with chocobo stats. Unsure of the Highlighted function as I only had one chocobo to test on.
[...]
if the injection point you use is the same as mine, rsi is holding the offset to the current highlighting/viewing chocobo.
so as long as you utilize with rsi as well for the pointer (either "lea 64reg, [rsi+rbx]", or fetching rsi as well for the pointer entry), it should be ok.
also, I was making some pointers for my own and am using this injection point to determine the menu item the cursor is at:
Code: Select all
aobscanmodule(optionsNoReadInMenuAOB,ffxv_s.exe,C7 ** ** ** ** ** ** ** 48 ** ** ** ** ** ** 48 ** ** 75 ** 8B 9E 64 09 00 00 48)
registersymbol(optionsNoReadInMenuAOB)
{
mov [rsp+20],00000001 <<<
lea rcx,[rsi+00000730]
cmp rbx,rcx
}
here, rbx holds the line number your menu cursor is pointing at.
you can utilize it in your item/weapon viewer and you don't need to re-sort the inventory and a given itemID to locate the pointer anymore.
e.g.
Code: Select all
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(optionsNoReadInMenuAOB,ffxv_s.exe,C7 ** ** ** ** ** ** ** 48 ** ** ** ** ** ** 48 ** ** 75 ** 8B 9E 64 09 00 00 48)
registersymbol(optionsNoReadInMenuAOB)
label(dOptinsNo)
registersymbol(dOptinsNo)
alloc(newmem,2048,optionsNoReadInMenuAOB) //"ffxv_s.exe"+ADD6859)
label(originalcode_itemreadinremodelingmenu)
registersymbol(originalcode_itemreadinremodelingmenu)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
readmem(optionsNoReadInMenuAOB,18)
jne @f
readmem(optionsNoReadInMenuAOB+14,6)
mov rcx,dOptinsNo
mov [rcx],ebx
@@:
jmp exit
originalcode_itemreadinremodelingmenu:
readmem(optionsNoReadInMenuAOB,18)
//mov [rsp+20],00000001
//lea rcx,[rsi+00000730]
//cmp rbx,rcx
exit:
jmp optionsNoReadInMenuAOB+12
///
dOptinsNo:
///
optionsNoReadInMenuAOB: //"ffxv_s.exe"+ADD6859:
jmp newmem
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
optionsNoReadInMenuAOB: //"ffxv_s.exe"+ADD6859:
readmem(originalcode_itemreadinremodelingmenu,18)
//db C7 44 24 20 01 00 00 00 48 8D 8E 30 07 00 00 48 39 CB
//Alt: mov [rsp+20],00000001
//Alt: lea rcx,[rsi+00000730]
//Alt: cmp rbx,rcx
unregistersymbol(originalcode_itemreadinremodelingmenu)
unregistersymbol(dOptinsNo)
then, for the item pointer, just use [dOptinsNo]*8 as the offset and it should always point to the correct item pointer (as long as you're in the item menu that is.)
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>8133</ID>
<Description>"id"</Description>
<ShowAsHex>1</ShowAsHex>
<Color>0000FF</Color>
<VariableType>4 Bytes</VariableType>
<Address>pItemBase</Address>
<Offsets>
<Offset>[dOptinsNo]*8</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatTable>
but note that the injection point I use reads also the current "tab number" at the same time if existed as well (the category at the top of the inventory menu/weapon menu/etc.), I didn't bother to filter it out as it reads the "option number" last in the cycle (and more frequently as well) and it doesn't bother simple edit at all. but if you'd consider to use this method, you may want to add the filter for those who somehow always freeze the address before they edit the value..
ok, that's it.
hope the info helps~
off to play more Kingdom Come now...