Hey Guys!
First, I would like to thank you all for creating this amassing post! It helped me to understand the way autoit works, also how to inject packets, receive them and make lots of nice tools with this knowledge!
So doing my interest to this stuff, I figure out to make small tool, for alchemy. I used codes from one done tool called Fuse-O-Mat. It works nice and simple. I also used code from DeXeee, the one to sit down the char, also inject other packets!
Big thanks for Synx7, for showing us

link, it helped me a lot with translating binary codes!
So now, in the process of making this tool, I got stuck in few places. My idea is to create tool, that can use alchemy stones to get high % status on your item. I manage to inject packet and make simple loop. Now I am trying to build up function that would stop the scrip if result is <= to result that I was thinking to get on the tool.
First thing I started is to capture and analyze packets. From Fuse-O-Mat tool I gain this:
The packet of alchemy for + the items:
Code:
[S -> C][B150]
01
02
01
11
00 00 00 00
D8 2A 00 00
01 <<< result. its +1.
05 CA 97 52 03 00 00 00
D2 00 00 00
06
35 00 00 00 06 00 00 00
49 00 00 00 08 00 00 00
4F 00 00 00 08 00 00 00
67 00 00 00 3C 00 00 00
73 00 00 00 64 00 00 00
5B 00 00 00 78 00 00 00
01
00
02
00
01
And here is code that been done for this packet:
Code:
;If $opcode = "B150" then ;Alchemy Result
If $opcode = $result_packet then
$ok = ParseByte() ;->01
if $ok= "01" then
$dummy = ParseByte() ;->02
$dummy = ParseByte() ;->01
$iPos = ParseByte() ;->11
$dummy = ParseDWord() ; 00 00 00 00
$iId = ParseDWord() ;
Global $plus = ParseByte() ;->01
GUICtrlCreateListViewItem(@HOUR&":"&@MIN&":"&@SEC&" - Item is +"&$plus, $liste)
_GUICtrlListView_Scroll($liste,0,20)
So basically its very logical, he just skip unnecessary bites and words til the place, when he gets result byte (called $plus), when use that to show result in the GUI list, so used in the interface can see result.
But my problem is, that stones give me result as qword, and it is placed in different place of the packet, so I cannot use that kind of logic to make new code... Here is example of 2 different items:
Code:
[S -> C][B151]
01
02
01
0D
00 00 00 00
66 39 00 00
05
6D 01 00 00 00 00 00 00
00 00 00 00
06
49 00 00 00 08 00 00 00
4F 00 00 00 08 00 00 00
A9 00 00 00 14 00 00 00
B5 00 00 00 0A 00 00 00
BB 00 00 00 05 00 00 00
AF 00 00 00 14 00 00 00 <<<< result of alchemy (20%), if counting from hex > ASCII, 14 = 20. And its only spot that it changes.
01
00
02
00
And here is another item, same stone!
[S -> C][B151]
01
02
01
0D
00 00 00 00
18 3A 00 00
05
AD 01 00 00 00 00 00 00
00 00 00 00
06
17 00 00 00 0A 00 00 00 <<<< result of alchemy (10%)
29 00 00 00 01 00 00 00
49 00 00 00 08 00 00 00
4F 00 00 00 08 00 00 00
A9 00 00 00 14 00 00 00
BB 00 00 00 14 00 00 00
01
00
02
01
00
D0 65 00 00 02 00 00 00
So as you can see, using same stone, but different items, result packet gives the result in different locations on every different item... I was thinking maybe I can do some kind of search command, to find the right Qword, so I can see result, and script would stop once it gets = or < result.
Can someone help me with that, and give me some ideas. So I could learn more about autoit coding, and making tools for sro!
Thx all!