Can someone help me with GetItemMaxDmg function, please?
Func PickUpLoot()
If GetMapLoading() == 2 Then Disconnected()
Local $lMe, $lAgent, $lItem
Local $lBlockedTimer
Local $lBlockedCount = 0
Local $lItemExists = True
For $i = 1 To GetMaxAgents()
If GetMapLoading() == 2 Then Disconnected()
$lMe = GetAgentByID(-2)
If DllStructGetData($lMe, 'HP') <= 0.0 Then Return
$lAgent = GetAgentByID($i)
If Not GetIsMovable($lAgent) Then ContinueLoop
If Not GetCanPickUp($lAgent) Then ContinueLoop
$lItem = GetItemByAgentID($i)
If CanPickUp($lItem) Then
Do
If GetMapLoading() == 2 Then Disconnected()
;If $lBlockedCount > 2 Then UseSkillEx(6,-2)
PickUpItem($lItem)
Sleep(GetPing())
Do
Sleep(100)
$lMe = GetAgentByID(-2)
Until DllStructGetData($lMe, 'MoveX') == 0 And DllStructGetData($lMe, 'MoveY') == 0
$lBlockedTimer = TimerInit()
Do
Sleep(3)
$lItemExists = IsDllStruct(GetAgentByID($i))
Until Not $lItemExists Or TimerDiff($lBlockedTimer) > Random(5000, 7500, 1)
If $lItemExists Then $lBlockedCount += 1
Until Not $lItemExists Or $lBlockedCount > 5
EndIf
Next
EndFunc
Func CanPickUp($item)
If GetMapLoading() == 2 Then Disconnected()
$id = DllStructGetData($item, 'ModelID')
$r = GetRarity($item)
$q = GetItemReq($item)
$t = DllStructGetData($item, 'Type')
$e = DllStructGetData($item, 'ExtraID')
If $t = 20 Then ;Gold
Return True
ElseIf $r = 2624 Then ;Gold items
Return True
ElseIf $id = 146 Then ;Dye
If $e = 10 Or $e = 12 Then ;Black & White
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 27 And $q = 8 And GetItemMaxDmg($item) = 22 Then ; req8 Swords
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 24 And $q = 8 And GetItemMaxDmg($item) = 16 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 24 And $q = 7 And GetItemMaxDmg($item) = 15 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 24 And $q = 6 And GetItemMaxDmg($item) = 14 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 32 And $q = 5 And GetItemMaxDmg($item) = 13 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 32 And $q = 6 And GetItemMaxDmg($item) = 14 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 32 And $q = 7 And GetItemMaxDmg($item) = 15 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 12 And $q = 8 And GetItemMaxDmg($item) = 12 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 12 And $q = 6 And GetItemMaxDmg($item) = 11 Then
Return True
EndIf
Return False
EndFunc
Func GetItemMaxDmg($aItem)
If Not IsDllStruct($aItem) Then $aItem = GetItemByItemID($aItem)
Local $lModString = GetModStruct($aItem)
Local $lPos = StringInStr($lModString, "A8A7") ; Weapon Damage
If $lPos = 0 Then $lPos = StringInStr($lModString, "C867") ; Energy (focus)
If $lPos = 0 Then $lPos = StringInStr($lModString, "B8A7") ; Armor (shield)
If $lPos = 0 Then Return 0
Return Int("0x" & StringMid($lModString, $lPos - 2, 2))
EndFunc
If GetMapLoading() == 2 Then Disconnected()
Local $lMe, $lAgent, $lItem
Local $lBlockedTimer
Local $lBlockedCount = 0
Local $lItemExists = True
For $i = 1 To GetMaxAgents()
If GetMapLoading() == 2 Then Disconnected()
$lMe = GetAgentByID(-2)
If DllStructGetData($lMe, 'HP') <= 0.0 Then Return
$lAgent = GetAgentByID($i)
If Not GetIsMovable($lAgent) Then ContinueLoop
If Not GetCanPickUp($lAgent) Then ContinueLoop
$lItem = GetItemByAgentID($i)
If CanPickUp($lItem) Then
Do
If GetMapLoading() == 2 Then Disconnected()
;If $lBlockedCount > 2 Then UseSkillEx(6,-2)
PickUpItem($lItem)
Sleep(GetPing())
Do
Sleep(100)
$lMe = GetAgentByID(-2)
Until DllStructGetData($lMe, 'MoveX') == 0 And DllStructGetData($lMe, 'MoveY') == 0
$lBlockedTimer = TimerInit()
Do
Sleep(3)
$lItemExists = IsDllStruct(GetAgentByID($i))
Until Not $lItemExists Or TimerDiff($lBlockedTimer) > Random(5000, 7500, 1)
If $lItemExists Then $lBlockedCount += 1
Until Not $lItemExists Or $lBlockedCount > 5
EndIf
Next
EndFunc
Func CanPickUp($item)
If GetMapLoading() == 2 Then Disconnected()
$id = DllStructGetData($item, 'ModelID')
$r = GetRarity($item)
$q = GetItemReq($item)
$t = DllStructGetData($item, 'Type')
$e = DllStructGetData($item, 'ExtraID')
If $t = 20 Then ;Gold
Return True
ElseIf $r = 2624 Then ;Gold items
Return True
ElseIf $id = 146 Then ;Dye
If $e = 10 Or $e = 12 Then ;Black & White
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 27 And $q = 8 And GetItemMaxDmg($item) = 22 Then ; req8 Swords
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 24 And $q = 8 And GetItemMaxDmg($item) = 16 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 24 And $q = 7 And GetItemMaxDmg($item) = 15 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 24 And $q = 6 And GetItemMaxDmg($item) = 14 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 32 And $q = 5 And GetItemMaxDmg($item) = 13 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 32 And $q = 6 And GetItemMaxDmg($item) = 14 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 32 And $q = 7 And GetItemMaxDmg($item) = 15 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 12 And $q = 8 And GetItemMaxDmg($item) = 12 Then
Return True
EndIf
ElseIf $r = 2623 or $r = 2626 Then
If $t = 12 And $q = 6 And GetItemMaxDmg($item) = 11 Then
Return True
EndIf
Return False
EndFunc
Func GetItemMaxDmg($aItem)
If Not IsDllStruct($aItem) Then $aItem = GetItemByItemID($aItem)
Local $lModString = GetModStruct($aItem)
Local $lPos = StringInStr($lModString, "A8A7") ; Weapon Damage
If $lPos = 0 Then $lPos = StringInStr($lModString, "C867") ; Energy (focus)
If $lPos = 0 Then $lPos = StringInStr($lModString, "B8A7") ; Armor (shield)
If $lPos = 0 Then Return 0
Return Int("0x" & StringMid($lModString, $lPos - 2, 2))
EndFunc
Something wrong with variables I think.
THANK YOU!






