ichigoned wrote: ↑Sat Mar 25, 2023 9:56 am
Hey, first of all, I appreciate the item highlight editor. But I find this is rather.... inconvenient for me to go to container/storage, edit the item then back synthesize.
So I decided to write my own script to find the highlighted item inside the synthesis menu.
Code: Select all
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(item_highlight_synth,$process,48 8B 8B A8 00 00 00 48 8D 53) // should be unique
alloc(newmem,$1000,item_highlight_synth)
alloc(pointer_item_synth,8,item_highlight_synth)
pointer_item_synth:
dq #0
label(code return)
registersymbol(item_highlight_synth pointer_item_synth)
newmem:
mov [pointer_item_synth],rsi
code:
mov rcx,[rbx+000000A8]
jmp return
item_highlight_synth:
jmp newmem
nop 2
return:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
item_highlight_synth:
db 48 8B 8B A8 00 00 00
unregistersymbol(*)
dealloc(*)
{
// ORIGINAL CODE - INJECTION POINT: 140413197
140413172: 48 8D 4B 10 - lea rcx,[rbx+10]
140413176: E8 E5 CA 26 00 - call 14067FC60
14041317B: EB 17 - jmp 140413194
14041317D: 48 8D 53 13 - lea rdx,[rbx+13]
140413181: 41 B8 7D 00 00 00 - mov r8d,0000007D
140413187: 48 8D 4E 03 - lea rcx,[rsi+03]
14041318B: E8 60 20 EA 00 - call 1412B51F0
140413190: 85 C0 - test eax,eax
140413192: 74 54 - je 1404131E8
140413194: 0F 10 06 - movups xmm0,[rsi]
// ---------- INJECTING HERE ----------
140413197: 48 8B 8B A8 00 00 00 - mov rcx,[rbx+000000A8]
// ---------- DONE INJECTING ----------
14041319E: 48 8D 53 10 - lea rdx,[rbx+10]
1404131A2: 0F 11 02 - movups [rdx],xmm0
1404131A5: 0F 10 4E 10 - movups xmm1,[rsi+10]
1404131A9: 0F 11 4A 10 - movups [rdx+10],xmm1
1404131AD: 0F 10 46 20 - movups xmm0,[rsi+20]
1404131B1: 0F 11 42 20 - movups [rdx+20],xmm0
1404131B5: 0F 10 4E 30 - movups xmm1,[rsi+30]
1404131B9: 0F 11 4A 30 - movups [rdx+30],xmm1
1404131BD: 0F 10 46 40 - movups xmm0,[rsi+40]
1404131C1: 0F 11 42 40 - movups [rdx+40],xmm0
}
The item address/pointer is stored in
pointer_item_synth
symbol.
Hope this helps those who have the same issue as me.
Please, how do I use this?
I've tried duplicating the Item editor then changing the enable script to his, then set the Base pointer to refer to pointer_item_synth, but I can't get it to work.
Edit: Nevermind, now it worked. For those interedted, just past it inside table.
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>239</ID>
<Description>"Item/Highlight Syntesis"</Description>
<Options moHideChildren="1"/>
<Color>008000</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(item_highlight_synth,$process,48 8B 8B A8 00 00 00 48 8D 53) // should be unique
alloc(newmem,$1000,item_highlight_synth)
alloc(pointer_item_synth,8,item_highlight_synth)
pointer_item_synth:
dq #0
label(code return)
registersymbol(item_highlight_synth pointer_item_synth)
newmem:
mov [pointer_item_synth],rsi
code:
mov rcx,[rbx+000000A8]
jmp return
item_highlight_synth:
jmp newmem
nop 2
return:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
item_highlight_synth:
db 48 8B 8B A8 00 00 00
unregistersymbol(*)
dealloc(*)
{
// ORIGINAL CODE - INJECTION POINT: 140413197
140413172: 48 8D 4B 10 - lea rcx,[rbx+10]
140413176: E8 E5 CA 26 00 - call 14067FC60
14041317B: EB 17 - jmp 140413194
14041317D: 48 8D 53 13 - lea rdx,[rbx+13]
140413181: 41 B8 7D 00 00 00 - mov r8d,0000007D
140413187: 48 8D 4E 03 - lea rcx,[rsi+03]
14041318B: E8 60 20 EA 00 - call 1412B51F0
140413190: 85 C0 - test eax,eax
140413192: 74 54 - je 1404131E8
140413194: 0F 10 06 - movups xmm0,[rsi]
// ---------- INJECTING HERE ----------
140413197: 48 8B 8B A8 00 00 00 - mov rcx,[rbx+000000A8]
// ---------- DONE INJECTING ----------
14041319E: 48 8D 53 10 - lea rdx,[rbx+10]
1404131A2: 0F 11 02 - movups [rdx],xmm0
1404131A5: 0F 10 4E 10 - movups xmm1,[rsi+10]
1404131A9: 0F 11 4A 10 - movups [rdx+10],xmm1
1404131AD: 0F 10 46 20 - movups xmm0,[rsi+20]
1404131B1: 0F 11 42 20 - movups [rdx+20],xmm0
1404131B5: 0F 10 4E 30 - movups xmm1,[rsi+30]
1404131B9: 0F 11 4A 30 - movups [rdx+30],xmm1
1404131BD: 0F 10 46 40 - movups xmm0,[rsi+40]
1404131C1: 0F 11 42 40 - movups [rdx+40],xmm0
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>240</ID>
<Description>"Base"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<GroupHeader>1</GroupHeader>
<Address>pointer_item_synth</Address>
<Offsets>
<Offset>0</Offset>
</Offsets>
<CheatEntries>
<CheatEntry>
<ID>241</ID>
<Description>"Number"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+0</Address>
</CheatEntry>
<CheatEntry>
<ID>242</ID>
<Description>"Quantity"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>Byte</VariableType>
<Address>+2</Address>
</CheatEntry>
<CheatEntry>
<ID>243</ID>
<Description>"ID"</Description>
<DropDownListLink>DropdownList.Item</DropDownListLink>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+4</Address>
</CheatEntry>
<CheatEntry>
<ID>244</ID>
<Description>"Quality Current"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+6</Address>
</CheatEntry>
<CheatEntry>
<ID>245</ID>
<Description>"Quality Max"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+8</Address>
</CheatEntry>
<CheatEntry>
<ID>246</ID>
<Description>"Level Current"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>Byte</VariableType>
<Address>+A</Address>
</CheatEntry>
<CheatEntry>
<ID>247</ID>
<Description>"Level Max"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>Byte</VariableType>
<Address>+B</Address>
</CheatEntry>
<CheatEntry>
<ID>248</ID>
<Description>"CC/If it's exists"</Description>
<ShowAsSigned>1</ShowAsSigned>
<Color>008000</Color>
<VariableType>Byte</VariableType>
<Address>+C</Address>
</CheatEntry>
<CheatEntry>
<ID>249</ID>
<Description>"Traits 1"</Description>
<DropDownListLink>DropdownList.Traits</DropDownListLink>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+14</Address>
<CheatEntries>
<CheatEntry>
<ID>250</ID>
<Description>"Level"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>Byte</VariableType>
<Address>-5</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>251</ID>
<Description>"Traits 2"</Description>
<DropDownListLink>DropdownList.Traits</DropDownListLink>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+16</Address>
<CheatEntries>
<CheatEntry>
<ID>252</ID>
<Description>"Level"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>Byte</VariableType>
<Address>-6</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>253</ID>
<Description>"Traits 3"</Description>
<DropDownListLink>DropdownList.Traits</DropDownListLink>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+18</Address>
<CheatEntries>
<CheatEntry>
<ID>254</ID>
<Description>"Level"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>Byte</VariableType>
<Address>-7</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>255</ID>
<Description>"Super Traits"</Description>
<DropDownListLink>DropdownList.Traits</DropDownListLink>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+1A</Address>
<CheatEntries>
<CheatEntry>
<ID>256</ID>
<Description>"Level"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>Byte</VariableType>
<Address>-8</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>257</ID>
<Description>"Effect 1"</Description>
<DropDownListLink>DropdownList.Effect</DropDownListLink>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+1C</Address>
</CheatEntry>
<CheatEntry>
<ID>258</ID>
<Description>"Effect 2"</Description>
<DropDownListLink>DropdownList.Effect</DropDownListLink>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+1E</Address>
</CheatEntry>
<CheatEntry>
<ID>259</ID>
<Description>"Effect 3"</Description>
<DropDownListLink>DropdownList.Effect</DropDownListLink>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+20</Address>
</CheatEntry>
<CheatEntry>
<ID>260</ID>
<Description>"Effect 4"</Description>
<DropDownListLink>DropdownList.Effect</DropDownListLink>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+22</Address>
</CheatEntry>
<CheatEntry>
<ID>261</ID>
<Description>"HP+"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+24</Address>
</CheatEntry>
<CheatEntry>
<ID>262</ID>
<Description>"ATK+"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+28</Address>
</CheatEntry>
<CheatEntry>
<ID>263</ID>
<Description>"DEF+"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+2A</Address>
</CheatEntry>
<CheatEntry>
<ID>264</ID>
<Description>"AGI+"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>2 Bytes</VariableType>
<Address>+2C</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>