Jessen wrote: ↑Fri Feb 15, 2019 9:55 am
there seem to be a few broken hashes in your doc as far as items go. I posted some comments on them to point them out, and a few that i could actually correct i mentioned as well. I'm sure these could be just easily found and fixed, though i'm not sure how long it would take.
yeah, i made a mistake on the import and google sheets converted it to a number wrong instead of keeping it text. I planned on updating that section also dumping that it's a consumable, crafting, blueprint, etc.
I'm currently working on a script to override the shops. If it works the way i hope, it will allow for just buying the blueprints of specific clothing or weapons and then just using the bypass crafting scripts to make it easily. I really wanted to make a form that would parse the entire inventory but finding good static entry points for the different item tables has been a pain. Why are descriptions hashes sometimes pointing directly to a string or other times pointing to another hash table that then points to a description string >.>
edit:fixed those messed up IDs.
i managed to edit the shop but it seems that it will only work for the clothing or the burst control units at the moment. On the upside i did accidently find out i can turn Faith's shop into Hope's so that code should pop up soon. I just need to test what happens when i use it when Hope doesnt exist
edit2:
This code will swap the merchant Faith's shop menu with Hope's. That way you can buy from it even when she isn't there. I haven't found an easy way to make her always there but apparently there is a simple bit flag on the shop type.
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>160</ID>
<Description>"Swap Faith's vendor pool with Hope's"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
aobscanmodule(VendorSwapAOB,ge3.exe,88 88 2C 03 00 00) // should be unique
alloc(newmem,$1000,"ge3.exe"+A1B59E)
label(code)
label(return)
newmem:
code:
mov cl,1
mov [rax+0000032C],cl
jmp return
VendorSwapAOB:
jmp newmem
nop
return:
registersymbol(VendorSwapAOB)
[DISABLE]
VendorSwapAOB:
db 88 88 2C 03 00 00
unregistersymbol(VendorSwapAOB)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "ge3.exe"+A1B59E
"ge3.exe"+A1B569: C7 41 24 01 00 00 00 - mov [rcx+24],00000001
"ge3.exe"+A1B570: 48 8B 0D 89 58 5B 01 - mov rcx,[ge3.exe+1FD0E00]
"ge3.exe"+A1B577: E8 74 73 E6 FF - call ge3.exe+8828F0
"ge3.exe"+A1B57C: 84 C0 - test al,al
"ge3.exe"+A1B57E: 74 13 - je ge3.exe+A1B593
"ge3.exe"+A1B580: 48 8B 0D 79 58 5B 01 - mov rcx,[ge3.exe+1FD0E00]
"ge3.exe"+A1B587: E8 44 6E E6 FF - call ge3.exe+8823D0
"ge3.exe"+A1B58C: C7 43 24 00 00 00 00 - mov [rbx+24],00000000
"ge3.exe"+A1B593: 48 8B 05 46 50 5B 01 - mov rax,[ge3.exe+1FD05E0]
"ge3.exe"+A1B59A: 0F B6 4B 20 - movzx ecx,byte ptr [rbx+20]
// ---------- INJECTING HERE ----------
"ge3.exe"+A1B59E: 88 88 2C 03 00 00 - mov [rax+0000032C],cl
// ---------- DONE INJECTING ----------
"ge3.exe"+A1B5A4: B0 01 - mov al,01
"ge3.exe"+A1B5A6: 48 83 C4 20 - add rsp,20
"ge3.exe"+A1B5AA: 5B - pop rbx
"ge3.exe"+A1B5AB: C3 - ret
"ge3.exe"+A1B5AC: CC - int 3
"ge3.exe"+A1B5AD: CC - int 3
"ge3.exe"+A1B5AE: CC - int 3
"ge3.exe"+A1B5AF: CC - int 3
"ge3.exe"+A1B5B0: CC - int 3
"ge3.exe"+A1B5B1: CC - int 3
}
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatTable>