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






is your last day. Glad I've had my working version long before this.
