regarding this http://herc.ws/board/topic/10701-link-item-system/?p=63280
when we take a look on console using script e.g.
- script catch FAKE_NPC,{
OnAtcommand:
debugmes .@atcmd_parameters$[0];
end;
OnInit:
bindatcmd "catch",strnpcinfo(3)+"::OnAtcommand";
end;
}
let's start to type @catch<space> following shit+left click on beret
so and chat command shown :
@catch <beret>
and the result on console like:
[Debug]: script debug : 2000000 110022388 : <ITEM>0004811lq'00'00'00'00</ITEM>
let's try on +20 beret
@catch <+20 beret>
and the result on console like:
[Debug]: script debug : 2000000 110022388 : <ITEM>0004811lq%0k'00'00'00'00</ITEM>
how does it work?
yes that's base converted from 10 to 64
i have not enought knowledge on C so i tried to encode it using vb like this
Public Function ConvertBase10$(ByVal d#)
Dim S$, t#, i%, l%, bl%, bs$
bs= "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
bl = Len(bs)
Do While Val(d) <> 0
t = d
i = 0
Do While t >= bl
i = i + 1
t = t / bl
Loop
If i <> l - 1 And l <> 0 Then S = S & String(l - i - 1, Left(bs, 1))
t = Int(t)
S = S + Mid(bs, t + 1, 1)
d = d - t * (bl ^ i)
l = i
Loop
ConvertBase10 = S
End Function
what's that mean?
<ITEM>0004811lq%0k'00'00'00'00</ITEM>
vv
Equipment Location -> ConvertBase10(256) = 48
<ITEM>0004811lq%0k'00'00'00'00</ITEM>
vvv
Equipment ID -> ConvertBase10(5712) = 1lq
<ITEM>0004811lq%0k'00'00'00'00</ITEM>
vv
Refine Level -> ConvertBase10(20) = 0k
<ITEM>0004811lq%0k'00'00'00'00</ITEM>
vv
Card on Slot 1
<ITEM>0004811lq%0k'00'00'00'00</ITEM>
vv
Card on Slot 2
<ITEM>0004811lq%0k'00'00'00'00</ITEM>
vv
Card on Slot 3
<ITEM>0004811lq%0k'00'00'00'00</ITEM>
vv
Card on Slot 4
<ITEM>0004811lq%0k'00'00'00'00</ITEM>
v
dunno about '1' after equipment location.
but i think it's alwasy be 1.
we not need to decode, because we just need to send string thar initialized by client to result as item link.
i also tried using :
dispbotom "You got 1x <ITEM>0004811lq%0k'00'00'00'00</ITEM>";
result is shown "You got <+20 Beret>" clickable in client.
also work on
announce "S got 1x <ITEM>0004811lq%0k'00'00'00'00</ITEM>" bc_all;
we can also try copy this
<ITEM>0004811lq%0k'00'00'00'00</ITEM>
and paste on client
Of course we can make a script and use callfunc but
if there any buildin script like this
*getitemlinkedmsg <item_id>,<refine>,<card1>,<card2>,<card3>,<card4>;
it would be helpfull.