Gerekli Fonksiyolarımız; Kod:
Function GetSkillBarOpen(Slot As Long) As Byte
Dim a, b, c, d As Long
pPtr = ReadLong(KO_PTR_DLG)
a = ReadLong(pPtr + &H1CC + 4)
b = ReadLong(a + &H124 + (Slot * 4))
c = ReadLong(b + &H38)
d = ReadByte(b + &H4)
GetSkillBarOpen = d
End Function
Function GetSkillBarName(Slot As Long) As String
Dim a, b, c As Long
Dim SkillName() As Byte
Dim SkillNameLen As Long
pPtr = ReadLong(KO_PTR_DLG)
a = ReadLong(pPtr + &H1CC + 4)
b = ReadLong(a + &H124 + (Slot * 4))
c = ReadLong(b + &H38)
SkillNameLen = ReadByte(c + &H1C)
If SkillNameLen > 0 Then
Sırareadbyte ReadLong(c + &H18), SkillName, SkillNameLen
End If
GetSkillBarName = StrConv(SkillName, vbUnicode)
End Function
Kullanımı; Kod:
if GetSkillBarOpen(1) = true then
formx.listx.additem "skill ismi"
Parantez içindeki (1) skill'in sırası oluyo. Skill sıralarını almak içinde bunu kullanabilirsiniz; Kod:
dim i as long
for i = 0 to 200
if getskillbaropen(i) = 1 then formx.listx.additem getskillbarname(i)
next
Skilleri class'lara göre ayırmak içinde böyle yapabilirsiniz; Kod:
Public Sub Rogue()
If ReadLong(KO_ADR_CHR + KO_OFF_CLASS) = "207" Or ReadLong(KO_ADR_CHR + KO_OFF_CLASS) = "208" Or ReadLong(KO_ADR_CHR + KO_OFF_CLASS) = "107" Or ReadLong(KO_ADR_CHR + KO_OFF_CLASS) = "108" Or ReadLong(KO_ADR_CHR + KO_OFF_CLASS) = "202" Or ReadLong(KO_ADR_CHR + KO_OFF_CLASS) = "102" Then
if GetSkillBarOpen(1) = true then
formx.listx.additem "skill ismi"
...