#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include "GWA2.au3"
#include <GUIConstantsEx.au3>
#include "GWA2DCHandler.au3"
Global $CBVAR[2]
Global $BOTTIMER
Global $MAPEOTN = 821
Global $MAPICECLIFFS = 793
Global $IntQuestID = 934 ; Hex Dialog 8627713 ...
Global $HEXQUESTSTART = 131
Global $HEXQUESTREDO = 8627717
Global $HEXQUESTREWARD = 8627719
Global $ARRAY_FLOATCHEST[2][2] = [[98, 3799], [ -313, 4341]]
Global $ARRAY_QUESTEMPLOYER[2] = [ -1493, 3526]
Global $ARRAYHEROFLAG[2] = [5011, -826]
Global $ARRAYHEROENEMY[2] = [4970, -651]
Global $ARRAY_POINT[2] = [2331, 2652]
Global $ARRAY_POINT2[2] = [0, 53]
Global $ARRAY_FIRSTMOVE[2] = [2356, -447]
Global $INTGIFTMODELID = 21491, $INTTONICMODELID = 30648
Global $CharName, $TRAYEXIT, $TRAYRENDERING, $TRAYSTATS
Global $BOOLRENDERING = True, $BOOLSHOWSTATS = True
Global $INTWINS = 0, $INTFAILS = 0, $INTRESTARTS = 0
Opt("TrayOnEventMode",1)
Opt("TrayMenuMode", 1)
$TRAYSTATS = TrayCreateItem("Stats")
TrayItemSetOnEvent(-1, "_TrayStats")
TrayItemSetState($TRAYSTATS, 1)
$TRAYRENDERING = TrayCreateItem("Rendering")
TrayItemSetOnEvent(-1, "_TraySetRendering")
TrayItemSetState($TRAYRENDERING, 1)
$TRAYEXIT = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "_TrayExit")
GWA2DCHandler_Initialize()
TraySetToolTip($GWDCHandler_CharName & " - Snowball-Dominace")
If GETMAPID() <> $MAPEOTN Then
_UPDATEMSG("Wait map loading ...")
TRAVELTO($MAPEOTN)
RndSleep(3000)
EndIf
MAINLOOP()
Func MAINLOOP()
While Not $GWDCHandler_IsRestarting
If GETMAPID() = $MAPEOTN Then
If _INVENTORYCHECK() = 0 Then Exit
$BOTTIMER = TimerInit()
_GetAndStartQuest()
_UPDATEMSG("Wait map loading ...")
WaitMapLoading($MAPICECLIFFS)
RndSleep(1500)
_FLAGHERO()
_PREPAREFORFIGHT()
_FIGHT()
_UPDATEMSG("Wait map loading ...")
TRAVELTO($MAPEOTN)
RndSleep(1500)
_GetQuestReward()
_RANDOMDISTRICTCHANGE()
WaitMapLoading($MAPEOTN)
RndSleep(1500)
$INTWINS += 1
Else
_UPDATEMSG("Wait map loading ...")
TRAVELTO($MAPEOTN)
RndSleep(3000)
EndIf
WEnd
EndFunc
Func _RANDOMDISTRICTCHANGE()
Local $UseDistricts = 7 ; 7=eu-only, 8=eu+us, 9=eu+us+int, 12=all(incl. asia)
; Region/Language order: eu-en, eu-fr, eu-ge, eu-it, eu-sp, eu-po, eu-ru, us-en, int, asia-ko, asia-ch, asia-ja
Local $REGION[12] = [2, 2, 2, 2, 2, 2, 2, 0, -2, 1, 3, 4]
Local $LANGUAGE[12] = [0, 2, 3, 4, 5, 9, 10, 0, 0, 0, 0, 0]
Local $RANDOM, $OLD_REGION, $OLD_LANGUAGE
_UPDATEMSG("Change district")
$OLD_REGION = GETREGION()
$OLD_LANGUAGE = GETLANGUAGE()
Do
$RANDOM = Random(0, $UseDistricts - 1, 1)
Until $LANGUAGE[$RANDOM] <> $OLD_LANGUAGE
$REGION = $REGION[$RANDOM]
$LANGUAGE = $LANGUAGE[$RANDOM]
MOVEMAP($MAPEOTN, $REGION, 0, $LANGUAGE)
RndSleep(1500)
Return 1
EndFunc
Func _FIGHT()
Local $INTCURRENTTARGETID[2] = [0, 0], $TIMER = TimerInit(), $INTHEALTH, $I = GETMYID(), $YellowSnow = false, $IsRanger = false, $SkillStruct
_UPDATEMSG("Fighting")
$SkillStruct = GetSkillbar()
If IsDllStruct($SkillStruct) Then
$YellowSnow = DllStructGetData($SkillStruct, 'Id5') == 1007
EndIf
If DllStructGetData(GetAgentById(-2), 'Primary') = 2 Then
$IsRanger = True
EndIf
While 1
if $YellowSnow Then
If GetSkillbarSkillRecharge(5,0) = 0 Then
UseSkill(5,0)
RndSleep(1000)
EndIf
EndIf
; Get new Target if needed
If $INTCURRENTTARGETID[0] = 0 Or GETISDEAD($INTCURRENTTARGETID[0]) Or TimerDiff($TIMER) > 2500 Then
$INTCURRENTTARGETID = _CALCULATEBESTENEMY()
$TIMER = TimerInit()
If $INTCURRENTTARGETID[0] = 0 Then
$INTCURRENTTARGETID[0] = GETNEARESTENEMYTOAGENT(-2)
$INTCURRENTTARGETID[1] = 0
EndIf
CHANGETARGET($INTCURRENTTARGETID[0])
EndIf
; Attack if health is OK
$INTHEALTH = _GETHP(-2)
If $INTHEALTH > 0.3 Then
If $INTCURRENTTARGETID[1] > 0 And $IsRanger Then
USESKILL(6, $INTCURRENTTARGETID[0])
_RndSleepAndCheckDeath(1000)
Else
If GETSKILLBARSKILLADRENALINE(2, 0) = 100 Then
USESKILL(2, $INTCURRENTTARGETID[0])
_RndSleepAndCheckDeath(1200)
Else
USESKILL(1, $INTCURRENTTARGETID[0])
_RndSleepAndCheckDeath(1200)
EndIf
EndIf
EndIf
; Heal and go back if health is below 20%
$INTHEALTH = _GETHP(-2)
If $INTHEALTH < 0.2 Then
If GETSKILLBARSKILLRECHARGE(8, 0) = 0 Then
USESKILL(8, -2)
EndIf
MOVETO(Random($ARRAY_POINT[0], $ARRAY_POINT[1], 0), Random($ARRAY_POINT2[0], $ARRAY_POINT2[1], 0), 0)
While GETSKILLBARSKILLRECHARGE(1, 0)
_RndSleepAndCheckDeath(750)
WEnd
EndIf
; Protect if still low health (below 30%)
$INTHEALTH = _GETHP(-2)
If $INTHEALTH < 0.3 And GETSKILLBARSKILLRECHARGE(7, 0) = 0 And GETHASDAZED(-2) = 0 Then
USESKILL(7, -2)
_RndSleepAndCheckDeath(1200)
EndIf
; Use hidden stone if only one enemy and low health (below 50%)
If $INTCURRENTTARGETID[1] = 0 And GETHASDAZED(-2) = 0 Then
If $INTHEALTH < 0.5 And GETSKILLBARSKILLRECHARGE(4, 0) = 0 Then
USESKILL(4, -2)
_RndSleepAndCheckDeath(2300)
EndIf
EndIf
If GETNEARESTENEMYTOAGENT(-2) = "" Then
ExitLoop
EndIf
WEnd
RndSleep(2500)
EndFunc
Func _GETHP($INTAGENTID)
$LAGENTTOCOMPARE = GetAgentByID($INTAGENTID)
Return DllStructGetData($LAGENTTOCOMPARE, 'HP')
EndFunc
Func _PREPAREFORFIGHT()
Local $INTHEROID = GETHEROID(1), $OLD_DISTANCE = 0, $DISTANCE = 0, $TIMER = TimerInit()
_UPDATEMSG("Prepare for fight")
MOVE($ARRAY_FIRSTMOVE[0], $ARRAY_FIRSTMOVE[1], 100)
While GETNEARESTENEMYTOAGENT(-2) = "" Or TimerDiff($TIMER) > 35000
_RndSleepAndCheckDeath(250)
WEnd
USEHEROSKILL(1, 6, $INTHEROID)
RndSleep(2500)
USEHEROSKILL(1, 7, $INTHEROID)
USESKILL(4, -2)
RndSleep(1600)
ADLIBREGISTER ("_Hero", 200)
While _GETHP($INTHEROID) > 0.35
Sleep(150)
WEnd
USEHEROSKILL(1, 8, $INTHEROID)
Return 1
EndFunc
Func _Hero()
$INTHEROID = GETHEROID(1)
USEHEROSKILL(1, 1, GETNEARESTAGENTTOCOORDS($ARRAYHEROENEMY[0], $ARRAYHEROENEMY[1]))
If GETISDEAD(GETHEROID(1)) = 1 Then
ADLIBUNREGISTER ("_Hero")
EndIf
EndFunc
Func _FLAGHERO()
_UPDATEMSG("Flag hero")
Local $FLOATFLAGX, $FLOATFLAGY
Local $FLOATHEROCOORDS[2] = [1000000, 1000000]
Local $INTHEROID = GETHEROID(1)
Local $TIMER = TimerInit()
While COMPUTEDISTANCE($FLOATFLAGX, $FLOATFLAGY, $FLOATHEROCOORDS[0], $FLOATHEROCOORDS[1]) > 60 And TimerDiff($TIMER) < 30000
If GETISMOVING($INTHEROID) = 0 Then
$FLOATFLAGX = $ARRAYHEROFLAG[0] + Random(-30, 30, 1)
$FLOATFLAGY = $ARRAYHEROFLAG[1] + Random(-30, 30, 1)
COMMANDHERO(1, $FLOATFLAGX, $FLOATFLAGY)
RndSleep(1500)
COMMANDALL($FLOATFLAGX + Random(-5, 5, 1), $FLOATFLAGY + Random(-5, 5, 1))
RndSleep(1500)
EndIf
Sleep(500)
$FLOATHEROCOORDS = _GETCOORDS($INTHEROID)
WEnd
Return 1
EndFunc
Func _GetQuestReward()
Local $lDeadlock
_UPDATEMSG("Moving to Quest-Employer")
_GOTONPC(DllStructGetData(GETNEARESTNPCTOCOORDS($A RRAY_QUESTEMPLOYER[0],$ARRAY_QUESTEMPLOYER[1]), 'ID'))
RndSleep(1500)
_UPDATEMSG("Take reward")
$lDeadlock = TimerInit()
Do
QuestReward($IntQuestID)
RndSleep(1000)
Until GetQuestByID($IntQuestID) = 0 Or TimerDiff($lDeadlock) > Random(10000, 15000)
RndSleep(500)
EndFunc
Func _GetAndStartQuest()
_UPDATEMSG("Moving to Quest-Employer")
_GOTONPC(DllStructGetData(GETNEARESTNPCTOCOORDS($A RRAY_QUESTEMPLOYER[0],$ARRAY_QUESTEMPLOYER[1]), 'ID'))
RndSleep(1500)
If GetQuestByID($IntQuestID) = 0 Then
_UPDATEMSG("Take quest")
AcceptQuest($IntQuestID)
RndSleep(1300)
DIALOG($HEXQUESTSTART)
Else
_UPDATEMSG("Retry quest")
DIALOG($HEXQUESTREDO)
RndSleep(1300)
DIALOG($HEXQUESTSTART)
EndIf
Return
EndFunc
Func _GETCOORDS($INTAGENTID)
$LAGENTTOCOMPARE = GETAGENTBYID($INTAGENTID)
$CBVAR[0] = DllStructGetData($LAGENTTOCOMPARE, 'X')
$CBVAR[1] = DllStructGetData($LAGENTTOCOMPARE, 'Y')
Return $CBVAR
EndFunc
Func _RndSleepAndCheckDeath($INT_1)
If GETISDEAD(-2) = True Or TimerDiff($BOTTIMER) > 300000 Then
_UPDATEMSG("You are dead!")
$INTFAILS += 1
TRAVELTO($MAPEOTN)
RndSleep(3000)
MAINLOOP()
EndIf
RndSleep($INT_1)
Return 1
EndFunc
Func _GETITEMID($INTBAG, $INTSLOT)
Return DllStructGetData(GETITEMBYSLOT($INTBAG,$INTSLOT), 'ID')
EndFunc
Func _GETITEMMODELID($INTBAG, $INTSLOT)
Return DllStructGetData(GETITEMBYSLOT($INTBAG,$INTSLOT), 'ModelID')
EndFunc
Func _GETITEMQUANTITY($INTBAG, $INTSLOT)
Return DllStructGetData(GETITEMBYSLOT($INTBAG,$INTSLOT), 'Quantity')
EndFunc
Func _INVENTORYCHECK()
Local $INTRANDOM = Random(0, 1, 1)
Local $INTCHESTID
_UPDATEMSG("Checking inventory")
If _CountFreeBagSlots() < 2 Or GETGOLDCHARACTER() > Random(80000, 90000, 1) Then
$INTCHESTID = DllStructGetData(GETNEARESTNPCTOCOORDS($ARRAY_FLOA TCHEST[$INTRANDOM][0],$ARRAY_FLOATCHEST[$INTRANDOM][1]), 'ID')
_UPDATEMSG("Moving to chest to store items")
_GOTONPC($INTCHESTID)
RndSleep(1500)
If _STOREITEMSBYID($INTGIFTMODELID, $INTTONICMODELID) = 0 Then
MsgBox(16, "Storage full!", "You can not store more items in your storage!")
Return 0
EndIf
If _STOREMONEY() = 0 Then
MsgBox(16, "Storage full!", "You can not store more money in your storage!")
Return 0
EndIf
EndIf
Return 1
EndFunc
Func _GOTONPC($INTNPCID)
Local $FLOATDISTANCE = 1000, $FLOATOLDDISTANCE = 0, $TTIMER = TimerInit()
GONPC($INTNPCID)
While $FLOATDISTANCE > 200
$ARRAYNPCCOORDS = _GETCOORDS($INTNPCID)
_GETCOORDS(-2)
$FLOATDISTANCE = COMPUTEDISTANCE($CBVAR[0], $CBVAR[1], $ARRAYNPCCOORDS[0], $ARRAYNPCCOORDS[1])
If $FLOATOLDDISTANCE - $FLOATDISTANCE < 50 Then GONPC($INTNPCID)
$FLOATOLDDISTANCE = $FLOATDISTANCE
Sleep(500)
If TimerDiff($TTIMER) > 30000 Then
GONPC($INTNPCID)
ExitLoop
EndIf
WEnd
RndSleep(2500)
Return 1
EndFunc
Func _STOREMONEY()
Local $INTGOLDSTORAGE = GETGOLDSTORAGE()
Local $INTGOLDCHARACTER = GETGOLDCHARACTER()
Local $INTGOLDBUFFER = $INTGOLDCHARACTER
If $INTGOLDCHARACTER > Random(70000, 80000) Then
_UPDATEMSG("Store money")
If $INTGOLDSTORAGE + $INTGOLDCHARACTER > 1000000 Then
$INTGOLDBUFFER = 1000000 - $INTGOLDSTORAGE
If $INTGOLDBUFFER > 0 Then DEPOSITGOLD($INTGOLDBUFFER)
Else
DEPOSITGOLD($INTGOLDCHARACTER)
EndIf
RndSleep(1500)
$INTGOLDCHARACTER = GETGOLDCHARACTER()
If $INTGOLDCHARACTER > 99500 Then Return 0
EndIf
Return 1
EndFunc
Func _CountFreeBagSlots()
Local $FreeSlots = 0, $BagSlots = 0
For $BAG = 1 To 4
$BagSlots = _GETBAGSLOTS($BAG)
$FreeSlots = $FreeSlots + $BagSlots
For $SLOT = 1 To $BagSlots
If _GETITEMMODELID($BAG, $SLOT) <> 0 Then
$FreeSlots = $FreeSlots - 1
EndIf
Next
Next
Return $FreeSlots
EndFunc
Func _STOREITEMSBYID($INTID_1, $INTID_2)
Local $INTITEMID, $ARRAYFREESLOT[2]
For $BAG = 1 To 4
For $SLOT = 1 To _GETBAGSLOTS($BAG)
$INTMODELID_INVENTORY = _GETITEMMODELID($BAG, $SLOT)
If $INTMODELID_INVENTORY = $INTID_1 Or $INTMODELID_INVENTORY = $INTID_2 Then
_STOREITEMSBYID_2($BAG, $SLOT)
EndIf
Next
Next
If _CountFreeBagSlots() = 0 Then Return 0
Return 1
EndFunc
Func _STOREITEMSBYID_2($INVBAG, $INVSLOT)
Local $INTMODELID_CHEST, $INTMODELID_INVENTORY = _GETITEMMODELID($INVBAG, $INVSLOT)
For $BAG = 8 To 16
For $SLOT = 1 To _GETBAGSLOTS($BAG)
$INTMODELID_CHEST = _GETITEMMODELID($BAG, $SLOT)
If $INTMODELID_CHEST = $INTMODELID_INVENTORY Then
If _GETITEMQUANTITY($BAG, $SLOT) < 250 Then
_UPDATEMSG("Moving " & _COMPAREID($INTMODELID_INVENTORY) & " from " & _COMPAREBAGID($INVBAG) & " " & " slot nr. " & _COMPAREBAGID($INVSLOT) & " to " & _COMPAREBAGID($BAG) & " slot nr. " & _COMPAREBAGID($SLOT))
MOVEITEM(_GETITEMID($INVBAG, $INVSLOT), $BAG, $SLOT)
RndSleep(800)
If _GETITEMQUANTITY($INVBAG, $INVSLOT) > 0 Then
$SLOT -= 1
ContinueLoop
EndIf
Return 1
EndIf
ElseIf $INTMODELID_CHEST = 0 Then
_UPDATEMSG("Moving " & _COMPAREID($INTMODELID_INVENTORY) & " from " & _COMPAREBAGID($INVBAG) & " " & " slot nr. " & _COMPAREBAGID($INVSLOT) & " to " & _COMPAREBAGID($BAG) & " slot nr. " & _COMPAREBAGID($SLOT))
MOVEITEM(_GETITEMID($INVBAG, $INVSLOT), $BAG, $SLOT)
RndSleep(800)
Return 1
EndIf
Next
Next
Return 0
EndFunc
Func _COMPAREID($INTMODELID)
Switch $INTMODELID
Case $INTTONICMODELID
Return "Tonic"
Case $INTGIFTMODELID
Return "Gift"
Case Else
Return 0
EndSwitch
EndFunc
Func _COMPAREBAGID($INTBAGID)
Switch $INTBAGID
Case 1
Return "Backpack"
Case 2
Return "Belt Pouch"
Case 3
Return "Bag 1"
Case 4
Return "Bag 2"
Case 8 To 16
Return "Chest " & $INTBAGID
EndSwitch
EndFunc
Func _GETBAGSLOTS($INTBAG)
Return DllStructGetData(GETBAG($INTBAG), 'slots')
EndFunc
Func _GETALLEGIANCE($INTAGENTID)
$LAGENTTOCOMPARE = GETAGENTBYID($INTAGENTID)
Return DllStructGetData($LAGENTTOCOMPARE, 'Allegiance')
EndFunc
Func _CALCULATEBESTENEMY()
Local $INTMAXID, $ARRAYAGENTID[1], $INTBUFFER = 0, $ARRAYALIVE, $ARRAY_FLOATCOORDS[1][3], $FLOATCOORDS, $FLOATCOORDS2[2], $RETURN[2], $INTBESTENEMYCOUNTER = 0, $INTENEMYCOUNTER, $INTBESTENEMY, $INTBESTENEMYDISTANCE = 10000
; save all foe-ids to $ARRAYAGENTID
For $I = 1 To GETMAXAGENTS()
If _GETALLEGIANCE($I) = 3 Then
If GETISDEAD($I) = 0 Then
$INTBUFFER += 1
ReDim $ARRAYAGENTID[$INTBUFFER + 1]
$ARRAYAGENTID[$INTBUFFER] = $I
EndIf
EndIf
Next
; set $ARRAYAGENTID[0] to the amount of foes found
$ARRAYAGENTID[0] = $INTBUFFER
If $ARRAYAGENTID[0] > 2 Then
ReDim $ARRAY_FLOATCOORDS[$ARRAYAGENTID[0] + 1][3]
$FLOATCOORDS2 = _GETCOORDS(-2)
For $I = 1 To $ARRAYAGENTID[0]
$FLOATCOORDS = _GETCOORDS($ARRAYAGENTID[$I])
$ARRAY_FLOATCOORDS[$I][0] = $FLOATCOORDS[0]
$ARRAY_FLOATCOORDS[$I][1] = $FLOATCOORDS[1]
$ARRAY_FLOATCOORDS[$I][2] = COMPUTEDISTANCE($FLOATCOORDS2[0], $FLOATCOORDS2[1], $FLOATCOORDS[0], $FLOATCOORDS[1])
Next
For $I = 1 To $ARRAYAGENTID[0]
$INTENEMYCOUNTER = 0
For $Y = 1 To $ARRAYAGENTID[0]
If $I <> $Y Then
If COMPUTEDISTANCE($ARRAY_FLOATCOORDS[$I][0], $ARRAY_FLOATCOORDS[$I][1], $ARRAY_FLOATCOORDS[$Y][0], $ARRAY_FLOATCOORDS[$Y][1]) <= 150 Then
$INTENEMYCOUNTER += 1
EndIf
If $INTENEMYCOUNTER > $INTBESTENEMYCOUNTER Or ($INTENEMYCOUNTER = $INTBESTENEMYCOUNTER And $ARRAY_FLOATCOORDS[$I][2] < $INTBESTENEMYDISTANCE) Then
$INTBESTENEMYCOUNTER = $INTENEMYCOUNTER
$INTBESTENEMYDISTANCE = $ARRAY_FLOATCOORDS[$I][2]
$INTBESTENEMY = $ARRAYAGENTID[$I]
EndIf
EndIf
Next
Next
$RETURN[0] = $INTBESTENEMY
$RETURN[1] = $INTBESTENEMYCOUNTER
Else
$RETURN[0] = GETNEARESTENEMYTOAGENT(-2)
$RETURN[1] = 0
EndIf
Return $RETURN
EndFunc
Func GETHASDAZED($AAGENT)
If IsDllStruct($AAGENT) = 0 Then $AAGENT = GETAGENTBYID($AAGENT)
Return BitAND(DllStructGetData($AAGENT, 'Effects'), 2) > 0
EndFunc
Func _TRAYSETRENDERING()
If $BOOLRENDERING = True Then
DISABLERENDERING()
WinSetState(GetWindowHandle(), "", @

HIDE)
$BOOLRENDERING = False
TrayItemSetState($TRAYRENDERING, 4)
ElseIf $BOOLRENDERING = False Then
WinSetState(GetWindowHandle(), "", @

SHOW)
ENABLERENDERING()
$BOOLRENDERING = True
TrayItemSetState($TRAYRENDERING, 1)
EndIf
EndFunc
Func _TRAYSTATS()
If $BOOLSHOWSTATS = True Then
$BOOLSHOWSTATS = False
TrayItemSetState($TRAYSTATS, 4)
ToolTip("")
ElseIf $BOOLSHOWSTATS = False Then
$BOOLSHOWSTATS = True
TrayItemSetState($TRAYSTATS, 1)
_UPDATEMSG("unknown")
EndIf
EndFunc
Func _TRAYEXIT()
If $BOOLRENDERING = False Then
WinSetState(GetWindowHandle(), "", @

SHOW)
ENABLERENDERING()
EndIf
Exit
EndFunc
Func _UPDATEMSG($STRINGMSG)
Local $STATS, $COORDS, $SuccessRate = ""
If $BOOLSHOWSTATS = 1 Then
$COORDS = WinGetPos(GetWindowHandle())
If IsArray($COORDS) Then
If $INTFAILS > 0 Then
$SuccessRate = " (" & Round(100 / ($INTWINS + $INTFAILS) * $INTWINS, 2) & "% wins)"
EndIf
$STATS = "wins: " & $INTWINS
$STATS = $STATS & @LF & "fails: " & $INTFAILS
$STATS = $STATS & @LF & "total runs: " & $INTWINS + $INTFAILS & $SuccessRate
$STATS = $STATS & @LF & "Current action: " & $STRINGMSG & "!"
If $GWDCHandler_EnableDCHandler Then $STATS = $STATS & @LF & "dchandler-restarts: " & $INTRESTARTS
ToolTip($STATS, $COORDS[0] + 7, $COORDS[1] + 25)
Else
ToolTip("")
EndIf
EndIf
Return 1
EndFunc
Func GWA2DCHandler_TransferStats($action = "write")
If $action = "read" Then
$INTWINS = IniRead($GWDCHandler_inifile, "TEMPORARY", "WINS", 0)
$INTFAILS = IniRead($GWDCHandler_inifile, "TEMPORARY", "FAILS", 0)
$INTRESTARTS = IniRead($GWDCHandler_inifile, "TEMPORARY", "RESTARTS", 0) + 1
If IniRead($GWDCHandler_inifile, "TEMPORARY", "STATS", "True") = "False" Then _TRAYSTATS()
If IniRead($GWDCHandler_inifile, "TEMPORARY", "RENDERING", "True") = "False" Then _TRAYSETRENDERING()
ElseIf $action = "write" Then
IniWrite($GWDCHandler_inifile, "TEMPORARY", "WINS", $INTWINS)
IniWrite($GWDCHandler_inifile, "TEMPORARY", "FAILS", $INTFAILS)
IniWrite($GWDCHandler_inifile, "TEMPORARY", "RESTARTS", $INTRESTARTS)
IniWrite($GWDCHandler_inifile, "TEMPORARY", "RENDERING", $BOOLRENDERING)
IniWrite($GWDCHandler_inifile, "TEMPORARY", "STATS", $BOOLSHOWSTATS)
ElseIf $action = "delete" Then
IniDelete($GWDCHandler_inifile, "TEMPORARY", "WINS")
IniDelete($GWDCHandler_inifile, "TEMPORARY", "FAILS")
IniDelete($GWDCHandler_inifile, "TEMPORARY", "RESTARTS")
IniDelete($GWDCHandler_inifile, "TEMPORARY", "RENDERING")
IniDelete($GWDCHandler_inifile, "TEMPORARY", "STATS")
EndIf
EndFunc