Alright, i've decided to post my voke bot that has worked great for getting spook. I really hpe this is the one to get me premium. It took me a fair amountof trial and error. But it should work like a charm now. This will work just like any voke bot out there.
(!empty($user->lang['CODE'])) ? $user->lang['CODE'] : ucwords(strtolower(str_replace('_', ' ', 'CODE'))):
Global $x = 0 ; X-coordinate for pixel
Global $y = 0 ; Y-coordinate for pixel
Global $yellow = 0 ; Normal, unclaimed color. Most important. (RGB Decimal value)
Global $red = 0 ; Color when player has claimed. (RGB Decimal value)
Global $purple = 0 ; Color when claimed by another. (RGB Decimal value)
Global $orange = 0 ; Color when mob has been "called-for-help" on. (RGB Decimal value)
Global $provoke = "^8" ; Provoke macro
Global $vokenum = 20 ; Number of times to spam provoke macro
Global $up = "w" ; The 'Up' or 'Forward' key
Global $wskill = "!4" ; Weaponskill macro
Global $seconds = 300 ; Number of seconds to spam weaponskill macro
WinWaitActive("FFXiApp")
While 1
While 1
FindTarget()
Provoke()
Engage()
If CheckClaim() = 1 Then ExitLoop
WEnd
Approach()
Screenshot()
Wskill()
WEnd
Func FindTarget()
AutoItSetOption("SendKeyDelay", 0)
While 1
Send("{TAB}")
If PixelGetColor($x,$y) = $yellow Then ExitLoop
WEnd
EndFunc
Func Provoke()
Local $i = 0
While $i <= $vokenum
send($provoke)
WEnd
EndFunc
Func Engage()
AutoItSetOption("SendKeyDelay", 100)
Sleep(1000)
Send("/a <bt>{ENTER}")
EndFunc
Func CheckClaim()
AutoItSetOption("SendKeyDelay", 60)
While 1
Send("{TAB}")
Select
Case PixelGetColor($x,$y) = $red
Send("/dance{ENTER}/echo **** Target acquired at>>{ENTER}/clock{ENTER}/echo **** Terminating. . .{ENTER}")
return (1)
Case PixelGetColor($x,$y) = $purple
Send("/angry motion{ENTER}/echo **** Target lost at>>{ENTER}/clock{ENTER}/echo **** Reseting. . .{ENTER}")
return (0)
Case PixelGetColor($x,$y) = $orange
Send("/angry motion{ENTER}/echo **** Target called-for-help'd at>>{ENTER}/clock{ENTER}/echo **** Attempting to reclaim. . .{ENTER}")
return (0)
Case Else
Send("/echo **** Error. Target Lost at>>{ENTER}/clock{ENTER}/echo **** Reseting. . .{ENTER}")
return (0)
EndSelect
WEnd
EndFunc
Func Approach()
Sleep(1000)
Send("{" & $up & " down}")
Sleep(5000)
Send("{" & $up & " up}")
Sleep(1000)
EndFunc
Func Screenshot()
Send("]")
Sleep(1000)
Send("[")
Sleep(4000)
Send("]")
EndFunc
Func Wskill()
Local $i = 0
While $i <= $seconds
Send($wskill)
Sleep(1000)
$i = $i + 1
WEnd
EndFunc
This provoke bot is based off the popular 'unique pixel' method. A pixel must be found that is unique to the mob's name. Although extremely fast, this proves to be the biggest drawback to this method of detection as the pixel data isn't readily available. Perhaps if the rest of this thread was dedicated to the posting of pixel data for NM's then this Provoke bot would be complete.
Oh, one last note: The color of the pixels must be in RGB Decimal format. To convert this easily in windows, open up the Calculator and switch to Hex mode. Then punch in the color value. Afterwords switch it back to Decimal mode. Voila. Color value in decimal. ^_^
FAQ
Q:When you say Provoke macro do you mean just a /ja "Provoke" <t> or a full one with /wait 1's and 3 provokes to spam it faster? Also, i dont know anything about coding >< with the ^8 for the voke macro, what does that mean? alt-8? same for weapon skill, !4 = ?
A:Nope, I just mean a /ja "Provoke" <t> macro.
I made the bot so that it will spam that macro 20 times with 0ms key delay, so no need to put in any extras. ^^
As far as the ^'s and !'s work: ^ = Ctrl and ! = Alt
So ^1 = Ctrl+1 and !9 = Alt+9
I'm currently working on a new release of this bot using FFACT instead.