Code:
Func Skill($Skillslot,$Target)
$Recharge = GwCmd ($HWND,$GW_SkillRecharge,$Skillslot,$Target)
$Casting = GwCmd ($HWND,$GW_IsCasting,-2)
If $Recharge[0] = 0 And $Casting[0] = 0 Then
Do
GwCmd ($HWND,$GW_UseSkill,$SkillSlot,$Target)
$Casting2 = GwCmd ($HWND,$GW_IsCasting,-2)
Sleep(Random(150,350))
Until $Casting2[0] = 0
ElseIf $Recharge[0] <> 0 OR $Casting[0] <> 0 Then
Do
$Recharge2 = GwCmd ($HWND,$GW_SkillRecharge,$Skillslot,$Target)
$Casting3 = GwCmd ($HWND,$GW_IsCasting,-2)
Sleep(Random(150,350))
Until $Recharge2[0] = 0 AND $Casting3[0] = 0
$SkillWaiting = TimerInit()
Do
GwCmd ($HWND,$GW_UseSkill,$SkillSlot,$Target)
$Casting2 = GwCmd ($HWND,$GW_IsCasting,-2)
Sleep(Random(150,350))
Until $Casting2[0] = 0 Or TimerDiff($SkillWaiting) > 3000
EndIf
EndFunc