Ive been doing some testing and made a botanical research editor to hopefully help those affected by my folly
This code will allow you to manually edit the item id of what you are cultivating and the ID/quantity of the items you have stored. Hopefully clearing this out will fix the issue some are having.
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>19057</ID>
<Description>"Botanical Research Editor"</Description>
<Options moHideChildren="1"/>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
aobscanmodule(CultiModAOB,MonsterHunterWorld.exe,8B 8F A0 00 00 00 89 C8 F7) // should be unique
alloc(newmem,$1000,"MonsterHunterWorld.exe"+1B70C6EE)
label(code)
label(return)
label(CultiData)
registersymbol(CultiData)
newmem:
mov [CultiData],rdi
add [CultiData],103030
code:
mov ecx,[rdi+000000A0]
jmp return
CultiData:
CultiModAOB:
jmp newmem
nop
return:
registersymbol(CultiModAOB)
[DISABLE]
CultiModAOB:
db 8B 8F A0 00 00 00
unregistersymbol(CultiModAOB)
unregistersymbol(CultiData)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "MonsterHunterWorld.exe"+1B70C6EE
"MonsterHunterWorld.exe"+1B70C6E2: 89 D6 - mov esi,edx
"MonsterHunterWorld.exe"+1B70C6E4: 48 83 C1 08 - add rcx,08
"MonsterHunterWorld.exe"+1B70C6E8: FF 15 52 DA 3F 08 - call qword ptr [MonsterHunterWorld.exe+23B0A140]
// ---------- INJECTING HERE ----------
"MonsterHunterWorld.exe"+1B70C6EE: 8B 8F A0 00 00 00 - mov ecx,[rdi+000000A0]
// ---------- DONE INJECTING ----------
"MonsterHunterWorld.exe"+1B70C6F4: 89 C8 - mov eax,ecx
"MonsterHunterWorld.exe"+1B70C6F6: F7 D0 - not eax
"MonsterHunterWorld.exe"+1B70C6F8: 39 F0 - cmp eax,esi
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>19058</ID>
<Description>"Cultivate ID Slot 1"</Description>
<VariableType>4 Bytes</VariableType>
<Address>CultiData</Address>
<Offsets>
<Offset>0</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>19059</ID>
<Description>"Cultivate ID Slot 2"</Description>
<VariableType>4 Bytes</VariableType>
<Address>CultiData</Address>
<Offsets>
<Offset>10</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>19060</ID>
<Description>"Cultivate ID Slot 3"</Description>
<VariableType>4 Bytes</VariableType>
<Address>CultiData</Address>
<Offsets>
<Offset>20</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>19064</ID>
<Description>"Harvest Slots"</Description>
<VariableType>4 Bytes</VariableType>
<Address>CultiData</Address>
<Offsets>
<Offset>90</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>19067</ID>
<Description>"Slot 1 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+0</Address>
</CheatEntry>
<CheatEntry>
<ID>19068</ID>
<Description>"Slot 1 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+4</Address>
</CheatEntry>
<CheatEntry>
<ID>19069</ID>
<Description>"Slot 2 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+10</Address>
</CheatEntry>
<CheatEntry>
<ID>19070</ID>
<Description>"Slot 2 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+14</Address>
</CheatEntry>
<CheatEntry>
<ID>19071</ID>
<Description>"Slot 3 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+20</Address>
</CheatEntry>
<CheatEntry>
<ID>19072</ID>
<Description>"Slot 3 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+24</Address>
</CheatEntry>
<CheatEntry>
<ID>19073</ID>
<Description>"Slot 4 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+30</Address>
</CheatEntry>
<CheatEntry>
<ID>19074</ID>
<Description>"Slot 4 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+34</Address>
</CheatEntry>
<CheatEntry>
<ID>19075</ID>
<Description>"Slot 5 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+40</Address>
</CheatEntry>
<CheatEntry>
<ID>19076</ID>
<Description>"Slot 5 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+44</Address>
</CheatEntry>
<CheatEntry>
<ID>19077</ID>
<Description>"Slot 6 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+50</Address>
</CheatEntry>
<CheatEntry>
<ID>19078</ID>
<Description>"Slot 6 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+54</Address>
</CheatEntry>
<CheatEntry>
<ID>19079</ID>
<Description>"Slot 7 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+60</Address>
</CheatEntry>
<CheatEntry>
<ID>19080</ID>
<Description>"Slot 7 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+64</Address>
</CheatEntry>
<CheatEntry>
<ID>19081</ID>
<Description>"Slot 8 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+70</Address>
</CheatEntry>
<CheatEntry>
<ID>19082</ID>
<Description>"Slot 8 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+74</Address>
</CheatEntry>
<CheatEntry>
<ID>19083</ID>
<Description>"Slot 9 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+80</Address>
</CheatEntry>
<CheatEntry>
<ID>19084</ID>
<Description>"Slot 9 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+84</Address>
</CheatEntry>
<CheatEntry>
<ID>19085</ID>
<Description>"Slot 10 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+90</Address>
</CheatEntry>
<CheatEntry>
<ID>19086</ID>
<Description>"Slot 10 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+94</Address>
</CheatEntry>
<CheatEntry>
<ID>19087</ID>
<Description>"Slot 11 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+a0</Address>
</CheatEntry>
<CheatEntry>
<ID>19088</ID>
<Description>"Slot 11 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+a4</Address>
</CheatEntry>
<CheatEntry>
<ID>19089</ID>
<Description>"Slot 12 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+b0</Address>
</CheatEntry>
<CheatEntry>
<ID>19090</ID>
<Description>"Slot 12 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+b4</Address>
</CheatEntry>
<CheatEntry>
<ID>19091</ID>
<Description>"Slot 13 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+c0</Address>
</CheatEntry>
<CheatEntry>
<ID>19092</ID>
<Description>"Slot 13 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+c4</Address>
</CheatEntry>
<CheatEntry>
<ID>19093</ID>
<Description>"Slot 14 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+d0</Address>
</CheatEntry>
<CheatEntry>
<ID>19094</ID>
<Description>"Slot 14 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+d4</Address>
</CheatEntry>
<CheatEntry>
<ID>19095</ID>
<Description>"Slot 15 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+e0</Address>
</CheatEntry>
<CheatEntry>
<ID>19096</ID>
<Description>"Slot 15 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+e4</Address>
</CheatEntry>
<CheatEntry>
<ID>19097</ID>
<Description>"Slot 16 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+f0</Address>
</CheatEntry>
<CheatEntry>
<ID>19098</ID>
<Description>"Slot 16 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+f4</Address>
</CheatEntry>
<CheatEntry>
<ID>19099</ID>
<Description>"Slot 17 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+100</Address>
</CheatEntry>
<CheatEntry>
<ID>19100</ID>
<Description>"Slot 17 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+104</Address>
</CheatEntry>
<CheatEntry>
<ID>19101</ID>
<Description>"Slot 18 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+110</Address>
</CheatEntry>
<CheatEntry>
<ID>19102</ID>
<Description>"Slot 18 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+114</Address>
</CheatEntry>
<CheatEntry>
<ID>19103</ID>
<Description>"Slot 19 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+120</Address>
</CheatEntry>
<CheatEntry>
<ID>19104</ID>
<Description>"Slot 19 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+124</Address>
</CheatEntry>
<CheatEntry>
<ID>19105</ID>
<Description>"Slot 20 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+130</Address>
</CheatEntry>
<CheatEntry>
<ID>19106</ID>
<Description>"Slot 20 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+134</Address>
</CheatEntry>
<CheatEntry>
<ID>19107</ID>
<Description>"Slot 21 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+140</Address>
</CheatEntry>
<CheatEntry>
<ID>19108</ID>
<Description>"Slot 21 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+144</Address>
</CheatEntry>
<CheatEntry>
<ID>19109</ID>
<Description>"Slot 22 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+150</Address>
</CheatEntry>
<CheatEntry>
<ID>19110</ID>
<Description>"Slot 22 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+154</Address>
</CheatEntry>
<CheatEntry>
<ID>19111</ID>
<Description>"Slot 23 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+160</Address>
</CheatEntry>
<CheatEntry>
<ID>19112</ID>
<Description>"Slot 23 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+164</Address>
</CheatEntry>
<CheatEntry>
<ID>19113</ID>
<Description>"Slot 24 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+170</Address>
</CheatEntry>
<CheatEntry>
<ID>19114</ID>
<Description>"Slot 24 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+174</Address>
</CheatEntry>
<CheatEntry>
<ID>19115</ID>
<Description>"Slot 25 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+180</Address>
</CheatEntry>
<CheatEntry>
<ID>19116</ID>
<Description>"Slot 25 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+184</Address>
</CheatEntry>
<CheatEntry>
<ID>19117</ID>
<Description>"Slot 26 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+190</Address>
</CheatEntry>
<CheatEntry>
<ID>19118</ID>
<Description>"Slot 26 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+194</Address>
</CheatEntry>
<CheatEntry>
<ID>19119</ID>
<Description>"Slot 27 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+1a0</Address>
</CheatEntry>
<CheatEntry>
<ID>19120</ID>
<Description>"Slot 27 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+1a4</Address>
</CheatEntry>
<CheatEntry>
<ID>19121</ID>
<Description>"Slot 28 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+1b0</Address>
</CheatEntry>
<CheatEntry>
<ID>19122</ID>
<Description>"Slot 28 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+1b4</Address>
</CheatEntry>
<CheatEntry>
<ID>19123</ID>
<Description>"Slot 29 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+1c0</Address>
</CheatEntry>
<CheatEntry>
<ID>19124</ID>
<Description>"Slot 29 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+1c4</Address>
</CheatEntry>
<CheatEntry>
<ID>19125</ID>
<Description>"Slot 30 ID"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+1d0</Address>
</CheatEntry>
<CheatEntry>
<ID>19126</ID>
<Description>"Slot 30 Quantity"</Description>
<VariableType>4 Bytes</VariableType>
<Address>+1d4</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Now hopefully this should be the last version of the shop script. After more testing and purposly breaking my character, i think i found the error and this one should hopefully be stable but make a backup just in case i still somehow missed something.
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>19053</ID>
<Description>"Fill Shop With Many Items"</Description>
<Options moHideChildren="1"/>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
aobscanmodule(ShopOverrideAOB,MonsterHunterWorld.exe,41 8B 96 48 31 00 00) // should be unique
alloc(newmem,$1000,"MonsterHunterWorld.exe"+1F8A9674)
label(code)
label(return)
label(ShopData)
registersymbol(ShopData)
newmem:
push rax
push rbx
push rcx
mov edx,[ShopData]
imul edx,6E
xor rax,rax
mov rcx,6E
lea rbx,[r14+2948]
_Loop:
mov [rbx+rax*8],edx
mov [rbx+rax*8+4],rax
inc [rbx+rax*8]
inc rax
inc edx
cmp rax,rcx
jl _Loop
code:
mov edx,rcx
pop rcx
pop rbx
pop rax
jmp return
ShopData:
ShopOverrideAOB:
jmp newmem
nop
nop
return:
registersymbol(ShopOverrideAOB)
[DISABLE]
ShopOverrideAOB:
db 41 8B 96 48 31 00 00
unregistersymbol(ShopOverrideAOB)
unregistersymbol(ShopData)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "MonsterHunterWorld.exe"+1F8A9674
"MonsterHunterWorld.exe"+1F8A9652: 48 8D 14 C1 - lea rdx,[rcx+rax*8]
"MonsterHunterWorld.exe"+1F8A9656: 48 85 C0 - test rax,rax
"MonsterHunterWorld.exe"+1F8A9659: 75 03 - jne MonsterHunterWorld.exe+1F8A965E
"MonsterHunterWorld.exe"+1F8A965B: 4C 89 EA - mov rdx,r13
"MonsterHunterWorld.exe"+1F8A965E: 49 0F 44 CD - cmove rcx,r13
"MonsterHunterWorld.exe"+1F8A9662: 49 89 D0 - mov r8,rdx
"MonsterHunterWorld.exe"+1F8A9665: 49 29 C8 - sub r8,rcx
"MonsterHunterWorld.exe"+1F8A9668: 4D 89 F1 - mov r9,r14
"MonsterHunterWorld.exe"+1F8A966B: 49 C1 F8 03 - sar r8,03
"MonsterHunterWorld.exe"+1F8A966F: E8 CC 17 3E E2 - call MonsterHunterWorld.exe+1C8AE40
// ---------- INJECTING HERE ----------
"MonsterHunterWorld.exe"+1F8A9674: 41 8B 96 48 31 00 00 - mov edx,[r14+00003148]
// ---------- DONE INJECTING ----------
"MonsterHunterWorld.exe"+1F8A967B: 41 89 96 1C 29 00 00 - mov [r14+0000291C],edx
"MonsterHunterWorld.exe"+1F8A9682: EB 06 - jmp MonsterHunterWorld.exe+1F8A968A
"MonsterHunterWorld.exe"+1F8A9684: 8B 91 1C 29 00 00 - mov edx,[rcx+0000291C]
"MonsterHunterWorld.exe"+1F8A968A: 49 8B 8E F8 28 00 00 - mov rcx,[r14+000028F8]
"MonsterHunterWorld.exe"+1F8A9691: E8 7A 07 11 E1 - call MonsterHunterWorld.exe+9B9E10
"MonsterHunterWorld.exe"+1F8A9696: 41 8B 86 48 29 00 00 - mov eax,[r14+00002948]
"MonsterHunterWorld.exe"+1F8A969D: 4C 8D 44 24 60 - lea r8,[rsp+60]
"MonsterHunterWorld.exe"+1F8A96A2: 48 8B 0D 97 AE 63 E5 - mov rcx,[MonsterHunterWorld.exe+4EE4540]
"MonsterHunterWorld.exe"+1F8A96A9: 48 8D 54 24 20 - lea rdx,[rsp+20]
"MonsterHunterWorld.exe"+1F8A96AE: 45 31 C9 - xor r9d,r9d
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>19055</ID>
<Description>"Chunk Index"</Description>
<VariableType>4 Bytes</VariableType>
<Address>ShopData</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
edit: for shits and giggles i put a kulu yaku ticket in the botanical pick list and it unlocked it at the shop