You last visited: Today at 07:58
Advertisement
UW2 Bot
Discussion on UW2 Bot within the GW Exploits, Hacks, Bots, Tools & Macros forum part of the Guild Wars category.
02/19/2010, 08:50
#1
elite*gold: 0
Join Date: Jul 2009
Posts: 47
Received Thanks: 15
UW2 Bot
This is a small, unfinished release from me, it's for those who want to expand on it to make it better.
Basically, I've took the Raptor Farmer bot from the GWCA release and turned it into Tomb of Primevil Kings farmer.
All it does now from what I can see, is run to the Dryders, have a little go at balling them up, then Death's Charge in and Sliver them.
The bot then recasts SF and picks up drops and resigns.
Like I said, it's far from finished, so here it is:
(It's just the source too)
Code:
;Raptor Bot
;Work started on Nov 7 2009
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include "GWCAConstants.au3"
Opt("GUIOnEventMode", 1)
Global $bRunning = False
Global $iTotalGold = 0
Global $iTotalGolds = 0
Global $iTotalRuns = 0
Global $tTotal = 0
Global $tRun = 0
Global $MAP_TOPK = 82
Global $MODEL_DRYDER = 2060
Global $SKILL_GOS = 1
Global $SKILL_DP = 2
Global $SKILL_SF = 3
Global $SKILL_GOLE = 4
Global $SKILL_EBSOH = 5
Global $SKILL_SLIVER = 6
Global $SKILL_BUH = 7
Global $SKILL_DC = 8
$cGUI = GUICreate("GWCA ToPK Bot", 250, 295)
GUICtrlCreateGroup("Settings", 2, 1, 246, 105)
$labelCharacter = GUICtrlCreateLabel("Character Name:", 8, 18)
$inputCharacter = GUICtrlCreateInput("", 92, 15, 150, 19, $ES_CENTER)
$checkIdentify = GUICtrlCreateCheckbox("Identify items", 8, 38)
$checkSell = GUICtrlCreateCheckbox("Sell items", 8, 58)
$checkStoreGold = GUICtrlCreateCheckbox("Store gold items", 8, 78)
$checkNoIdentGold = GUICtrlCreateCheckbox("Don't identify gold items", 115, 38)
$checkDisableGfx = GUICtrlCreateCheckbox("Disable graphics", 115, 78)
GUICtrlSetOnEvent(-1, "EventHandler")
GUICtrlCreateGroup("Statistics", 2, 107, 246, 100)
$labelTotalGold = GUICtrlCreateLabel("Total gold: 0", 8, 126, 100)
$labelTotalGolds = GUICtrlCreateLabel("Total gold items: 0", 8, 164, 100)
$labelTotalRuns = GUICtrlCreateLabel("Total runs: 0", 8, 183, 100)
$labelGoldHour = GUICtrlCreateLabel("Gold/hour: 0", 140, 126, 100)
$labelGoldsHour = GUICtrlCreateLabel("Golds/hour: 0", 140, 164, 100)
$labelRunsHour = GUICtrlCreateLabel("Runs/hour: 0", 140, 183, 100)
GUICtrlCreateGroup("Status", 2, 208, 246, 40)
$labelStatus = GUICtrlCreateLabel(" ", 8, 225, 200)
$buttonRun = GUICtrlCreateButton("Start!", (250 - 80)/2, 260, 80, 25)
GUICtrlSetOnEvent(-1, "EventHandler")
GUISetOnEvent($GUI_EVENT_CLOSE, "EventHandler")
GUIRegisterMsg(0x500, "WndCallback")
GUISetState(True, $cGUI)
MoveTo(1681,2333)
While 1
Sleep(100)
If $bRunning Then
$cbType = "int"
CmdCB($CA_GETGOLD)
$oldGold = $cbVar[0]
CmdCB($CA_GETTITLEASURA)
$oldPoints = $cbVar[0]
If $iTotalRuns = 0 Then $tTotal = TimerInit()
$tRun = TimerInit()
BotLoop()
;If Mod($iTotalRuns, 5) = 0 Then BotMerchant()
$cbType = "int"
CmdCB($CA_GETGOLD)
$iTotalGold += ($cbVar[0] - $oldGold)
$iTotalRuns += 1
UpdateStatistics()
EndIf
WEnd
Func BotLoop()
UpdateStatus("Commencing run...")
$cbType = "int"
CmdCB($CA_GETMAPID)
If $cbVar[0] <> $MAP_TOPK Then TravelTo($MAP_TOPK)
Sleep(Random(1500,2500))
Cmd($CA_SWITCHMODE, 1)
MoveTo(1703,2422)
UpdateStatus("Moving to portal")
MoveTo(2252,4346, 10)
UpdateStatus("Waiting for load")
$cbType = "int"
Do
Sleep(400)
CmdCB($CA_GETMAPLOADING)
Until $cbVar[0] = 1
Sleep(Random(2000,2500))
UpdateStatus("Moving to First Group")
MoveTo(2054,-3820)
UpdateStatus("Putting up SF")
Cmd($CA_USESKILLBARSKILL, $SKILL_GOS)
Sleep(Random(1000, 1500))
Cmd($CA_USESKILLBARSKILL, $SKILL_DP)
$cbType = "int"
Do
Sleep(250)
CmdCB($CA_SKILLRECHARGE, $SKILL_GOS)
Until $cbVar[0] <> 0
UseSkill($SKILL_SF)
UpdateStatus("Heading For Ectos")
MoveTo(1533,-4842)
Sleep(Random(800,1000))
MoveTo(285,-3965)
Sleep(Random(700,800))
MoveTo(28,-2264)
Sleep(Random(400,500))
$cbType = "int"
Do
Sleep(250)
CmdCB($CA_SKILLRECHARGE, $SKILL_SF)
Until $cbVar[0] = 0
UseSkill($SKILL_GOS)
UseSkill($SKILL_DP)
UseSkill($SKILL_SF)
MoveTo(210,-2825)
Sleep(Random(400,500))
MoveTo(-396,-2363)
UpdateStatus("Aggroing Dryders")
$cbType = "int"
$aDryder = CmdCB($CA_GETNEARESTAGENTBYPLAYERNUMBER, $MODEL_DRYDER)
If @error Then Return
Cmd($CA_ATTACK, $aDryder[0])
$cbType = "int"
Do
Sleep(250)
CmdCB($CA_SKILLRECHARGE, $SKILL_SF)
Until $cbVar[0] = 0
UseSkill($SKILL_GOS)
UseSkill($SKILL_DP)
UseSkill($SKILL_SF)
UpdateStatus("Putting up Sliver")
UseSkill($SKILL_DC, $aDryder[0])
UseSkill($SKILL_GOLE)
UseSkill($SKILL_EBSOH)
UseSkill($SKILL_SLIVER)
Cmd($CA_USESKILLBARSKILL, $SKILL_BUH)
Sleep(Random(800,1000))
Do
Sleep(250)
CmdCB($CA_SKILLRECHARGE, $SKILL_SF)
Until $cbVar[0] = 0
UpdateStatus("Killing and maintaining SF")
UseSkill($SKILL_GOS)
UseSkill($SKILL_DP)
UseSkill($SKILL_SF)
UseSkill($SKILL_GOLE)
UseSkill($SKILL_EBSOH)
UseSkill($SKILL_SLIVER)
UseSkill($SKILL_BUH)
UseSkill($SKILL_GOS)
UseSkill($SKILL_DP)
UseSkill($SKILL_SF)
UseSkill($SKILL_GOLE)
UseSkill($SKILL_EBSOH)
UseSkill($SKILL_SLIVER)
UseSkill($SKILL_BUH)
UpdateStatus("Picking up items")
PickupItems(-1, 600)
Sleep(Random(4500,5000))
PickupItems(-1, 600)
UpdateStatus("Resigning")
Cmd($CA_RESIGN)
Do
Sleep(250)
CmdCB($CA_GETDEAD)
Until $cbVar[0] = 1
Sleep(Random(600,800))
UpdateStatus("Returning to ToPK")
$tDeadlock = TimerInit()
Cmd($CA_RETURNTOOUTPOST)
Do
Sleep(400)
CmdCB($CA_GETMAPLOADING)
If $cbVar[0] = 1 AND TimerDiff($tDeadlock) > 2500 Then Cmd($CA_RETURNTOOUTPOST)
Until $cbVar[0] = 0
Sleep(Random(2000,2500))
EndFunc
Func BotMerchant()
UpdateStatus("Moving to merchant")
MoveTo(1520,1686)
Sleep(Random(800,1000))
MoveTo(1687,26)
Sleep(Random(800,1000))
MoveTo(704,-376)
Sleep(Random(800,1000))
MoveTo(-370,317)
$iMerch = GetNearestNPCToCoords(-370,317)
UpdateStatus("Talking to merchant")
Cmd($CA_GONPC, $iMerch)
$cbType = "float"
Do
Sleep(250)
CmdCB($CA_GETCOORDS, -2)
Until ComputeDistance($cbVar[0], $cbVar[1], -370,317) < 250
Sleep(Random(800,1000))
$cbType = "int"
If GUICtrlRead($checkIdentify) = 1 Then
UpdateStatus("Identifying items")
For $i = 1 To 20 Step 1
CmdCB($CA_GETIDKIT)
If $cbVar[0] = 0 Then
Cmd($CA_BUYIDKIT)
Sleep(100)
CmdCB($CA_GETIDKIT)
MoveItemById($cbVar[0], $BAG_BAG2, 10)
EndIf
$bIdentItem = True
If GUICtrlRead($checkNoIdentGold) = 1 Then
CmdCB($CA_GETBACKPACKITEMINFO, $i)
If $cbVar[0] = $RARITY_GOLD Then
$bIdentItem = False
EndIf
EndIf
If $bIdentItem Then Cmd($CA_IDENTIFYITEM, $BAG_BACKPACK, $i)
Sleep(5000)
Next
For $i = 1 To 5 Step 1
CmdCB($CA_GETIDKIT)
If $cbVar[0] = 0 Then
Cmd($CA_BUYIDKIT)
Sleep(100)
CmdCB($CA_GETIDKIT)
MoveItemById($cbVar[0], $BAG_BAG2, 10)
EndIf
$bIdentItem = True
If GUICtrlRead($checkNoIdentGold) = 1 Then
CmdCB($CA_GETBELTPOUCHITEMINFO, $i)
If $cbVar[0] = $RARITY_GOLD Then
$bIdentItem = False
EndIf
EndIf
If $bIdentItem Then Cmd($CA_IDENTIFYITEM, $BAG_BELTPOUCH, $i)
Sleep(500)
Next
For $i = 1 To 10 Step 1
CmdCB($CA_GETIDKIT)
If $cbVar[0] = 0 Then
Cmd($CA_BUYIDKIT)
Sleep(100)
CmdCB($CA_GETIDKIT)
MoveItemById($cbVar[0], $BAG_BAG2, 10)
EndIf
$bIdentItem = True
If GUICtrlRead($checkNoIdentGold) = 1 Then
CmdCB($CA_GETBAG1ITEMINFO, $i)
If $cbVar[0] = $RARITY_GOLD Then
$bIdentItem = False
EndIf
EndIf
If $bIdentItem Then Cmd($CA_IDENTIFYITEM, $BAG_BAG1, $i)
Sleep(500)
Next
EndIf
If GUICtrlRead($checkSell) = 1 Then
UpdateStatus("Selling items")
EndIf
EndFunc
Func MoveTo($x, $y, $random = 50)
Local $iBlocked = 0
$cbType = "float"
MoveEx($x, $y, $random)
CmdCB($CA_GETCOORDS, -2)
Do
Sleep(250)
$oldCoords = $cbVar
$cbType = "int"
CmdCB($CA_GETDEAD)
If $cbVar[0] = 1 Then Return
$cbType = "float"
CmdCB($CA_GETCOORDS, -2)
If $oldCoords[0] = $cbVar[0] AND $oldCoords[1] = $cbVar[1] Then
$iBlocked += 1
MoveEx($x, $y, $random)
EndIf
Until ComputeDistance($cbVar[0], $cbVar[1], $x, $y) < 250 OR $iBlocked > 20
EndFunc
Func ComputeDistance($x1, $y1, $x2, $y2)
Return Sqrt(($y2 - $y1)^2 + ($x2 - $x1)^2)
EndFunc
Func UpdateStatus($text)
GUICtrlSetData($labelStatus, $text)
EndFunc
Func UpdateStatistics()
GUICtrlSetData($labelTotalGold, "Total gold: "&$iTotalGold)
GUICtrlSetData($labelTotalGolds, "Total golds: "&$iTotalGolds)
GUICtrlSetData($labelTotalRuns, "Total runs: "&$iTotalRuns)
GUICtrlSetData($labelGoldHour, "Gold/hour: "&Round($iTotalGold / (TimerDiff($tTotal) / 3600000)))
GUICtrlSetData($labelGoldsHour, "Golds/hour: "&Round($iTotalGolds / (TimerDiff($tTotal) / 3600000)))
GUICtrlSetData($labelRunsHour, "Runs/hour: "&Round($iTotalRuns / (TimerDiff($tTotal) / 3600000)))
EndFunc
Func UseSkill($iSkillSlot, $iTarget = 0)
$oldCbType = $cbType
$tDeadlock = TimerInit()
$cbType = "int"
Cmd($CA_USESKILLBARSKILL, $iSkillSlot, $iTarget)
Do
Sleep(250)
CmdCB($CA_GETDEAD)
If $cbVar[0] = 1 Then Return
CmdCB($CA_SKILLRECHARGE, $iSkillSlot)
Until $cbVar[0] <> 0 OR TimerDiff($tDeadlock) > 15000
$cbType = $oldCbType
EndFunc
Func EventHandler()
Switch(@GUI_CtrlId)
Case $GUI_EVENT_CLOSE
Exit
Case $checkDisableGfx
If GUICtrlRead($checkDisableGfx) = 1 Then
Cmd($CA_SETENGINEHOOK, 1)
Else
Cmd($CA_SETENGINEHOOK, 0)
EndIf
Case $buttonRun
$bRunning = Not $bRunning
If $bRunning Then
$sGW = "Guild Wars - "&GUICtrlRead($inputCharacter)
GUICtrlSetData($buttonRun, "Stop!")
GUICtrlSetState($inputCharacter, $GUI_DISABLE)
GUICtrlSetState($checkIdentify, $GUI_DISABLE)
GUICtrlSetState($checkSell, $GUI_DISABLE)
GUICtrlSetState($checkStoreGold, $GUI_DISABLE)
GUICtrlSetState($checkNoIdentGold, $GUI_DISABLE)
;GUICtrlSetState($checkDisableGfx, $GUI_DISABLE)
;If GUICtrlRead($checkDisableGfx) = 1 Then Cmd($CA_SETENGINEHOOK, 1)
Else
GUICtrlSetData($buttonRun, "Start!")
GUICtrlSetState($inputCharacter, $GUI_ENABLE)
GUICtrlSetState($checkIdentify, $GUI_ENABLE)
GUICtrlSetState($checkSell, $GUI_ENABLE)
GUICtrlSetState($checkStoreGold, $GUI_ENABLE)
GUICtrlSetState($checkNoIdentGold, $GUI_ENABLE)
;GUICtrlSetState($checkDisableGfx, $GUI_ENABLE)
;If GUICtrlRead($checkDisableGfx) = 1 Then Cmd($CA_SETENGINEHOOK, 0)
EndIf
EndSwitch
EndFunc
02/19/2010, 09:40
#2
elite*gold: 0
Join Date: Dec 2007
Posts: 324
Received Thanks: 85
$CA_GETBACKPACKITEMINFO and a few other won't work for me. As it seems that doesn't matter, okay
works. Sometimes it uses Sf too late and i would pull all groups of Dryders.
02/19/2010, 10:08
#3
elite*gold: 100
Join Date: Oct 2007
Posts: 738
Received Thanks: 485
the spiders run away very quickly after you jump up there
just a tip ( GoAgent )
02/19/2010, 10:52
#4
elite*gold: 0
Join Date: Jul 2009
Posts: 47
Received Thanks: 15
Like I said, I didn't actually write this, I just lazily ported it, it's not complete in any way, since I don't know how to complete it, I just thought I'd share what I've done incase it can be used to make a better bot.
02/19/2010, 12:10
#5
elite*gold: 0
Join Date: Oct 2009
Posts: 557
Received Thanks: 160
Quote:
Originally Posted by
MutilateRetaliate
Code:
;Raptor Bot
;Work started on Nov 7 2009
double epic
02/19/2010, 16:06
#6
elite*gold: 0
Join Date: Jul 2009
Posts: 47
Received Thanks: 15
Quote:
Originally Posted by
Jonas_93
double epic
Can you not read, or do you just choose not to?
02/20/2010, 04:28
#7
elite*gold: 0
Join Date: Jul 2008
Posts: 68
Received Thanks: 28
Guess you better get to work on it.
is your last day. Glad I've had my working version long before this.
All times are GMT +2. The time now is 07:59 .