Code:
;#########################################################################
; FishBOT by Psycosis taken from Foobie who adapted Pantless Krab's
;
; Version 1.4.8
;
; Note - By using the Fishing bot designed for World of Warcraft
; You understand the risks and agree that you will take all
; responsibility for this code. THe creater takes no responsibility
; for whatever happens to users who use and/or modify this code
;#########################################################################
;###########
; Globals
;###########
$title = "WoW FishBOT"
$win_title = "World of Warcraft"
; Sets up the Borders to fish in
$top_border_height = 23
$left_border_width = 4
; Sets up the Screen resolution $ make shure its in windowed mode
$screen_width = 800
$screen_height = 600
; Just a simple Timer
$time_to_wait = 30000
dim $start_time
;#########################################################################
; Hot Keys Section
;
; Set up a Hot key to be used later to end the script
;#########################################################################
HotKeySet("{PAUSE}", "request_end")
;#########################################################################
; Fish Bot View Paremeters
;
; Sets up the boundaries of the fishbot on the screen and returns
; some visual confirmation by moving the mouse in a square showing
; where the bot will be searching for the fishing bobber
;#########################################################################
if not WinExists($win_title, "") then
msg($win_title & " window must be open.")
Exit
endif
WinActivate($win_title, "")
WinSetOnTop($win_title, "", 0)
Sleep(500)
check_window()
$win_pos = WinGetPos($win_title, "")
$win_x = $win_pos[0] + $left_border_width
$win_y = $win_pos[1] + $top_border_height
$top = $win_y + (.25 * $screen_height)
$bottom = $top + (.35 * $screen_height) - 1
$left = $win_x + (.15 * $screen_width)
$right = $left + $screen_width - (.15 * 2.0 * $screen_width) - 1
Start_Bot()
;###########################
; Visual confirmation
; Area scanned for bobber
;###########################
MouseMove($left, $top, 2)
MouseMove($right, $top, 2)
MouseMove($right, $bottom, 2)
MouseMove($left, $bottom, 2)
cast_pole()
find_float()
;#########################################################################
;
; Function find_float
;
; Once bobber has been cast the bobber needs to be found via colors
; The most prominent color is the red so by default that is enabled
; More colors have been defined and you may switch them if you want
; The only reason to switch them is when fishing in Stormwind or at
; night when colors are all very diffrent.
;#########################################################################
func find_float()
;#####################
; Color Definitions
;#####################
$color_dark_purple = 0x463B4D
$color_dark_blue = 0x283A64
$color_red = 0xA72C0B
$color_stormwind_daylight_blue = 0x2B3254
$color_stormwind_daylight_red = 0x6B1F0C
$color_beige = 0xBB9B3D
$color_night_blue = 0x0B1931
$color_wc = 0x210B04
;#########################################################
; This is the color used to pixelsearch for the bobber.
; Change the color to a good color
; on the bobber that is prominent on the screen
;#########################################################
$color_to_use = $color_wc
;##################################################################
; This is the search tolerance. In areas where the bobber
; colors really stand out, you can use a fairly high threshold.
; In areas where the bobber colors are fairly muted in with
; the background, you will have to lower the values considerably.
;##################################################################
$bobber_search_tolerance = 20
;########################################################################
; It's better to use lower values here in favor of accurate searching.
; This will take more time for it to detect the bobber, but usually
; the splash doesn't occur until at least 30% of the time has run out,
; and by that time, it should have detected the bobber (assuming the
; color values and tolerance are correct).
;########################################################################
$bobber_search_step = 2
;#########################################################################
; Search for float. In certain lighting, the part of the float may look
; more purple than blue. In this case, using $color_red tends to work
; the best with a tolerance of 20.
;#########################################################################
while 1
if TimerDiff($start_time) >= $time_to_wait then
cast_pole()
endif
$pos = PixelSearch($left, $top, $right, $bottom, $color_to_use, $bobber_search_tolerance, $bobber_search_step)
if @error then
SetError(0)
else
MouseMove($pos[0], $pos[1], 2)
find_splash($pos[0], $pos[1] )
endif
Sleep(10)
wend
endfunc
;############################################################################
; Find that White Splash
;
; Basicly once you find the bobber you have to find the splash
; this function creates a smaller box around the bobber and watches
; for the white splash of the bobber. Once it finds the splash it
; calls for the function to right click and loot.
;############################################################################
func find_splash($float_x, $float_y)
$search_left = $float_x - 32
$search_right = $search_left + 52
$search_top = $float_y - 32
$search_bottom = $search_top + 64
;############################################################
; Usually you do not have to modify the search color for
; the splash, as the pixels have a very distinctive,
; bright color.
;############################################################
$splash_color = 0xF6F6F6
;############################################################
; Sometimes 30 tolerance works well, sometimes 20 is better
; in lit areas to avoid catching highlights in other things.
;############################################################
$splash_tolerance = 20
;############################################################
; The search step can be pretty small here (1 to 3) without
; worries because the search area is so small once it has
; been narrowed down - speed isn't much of an issue.
;############################################################
$splash_search_step = 2
;######################
; Search for splash
;######################
while TimerDiff($start_time) < $time_to_wait
$pos = PixelSearch($search_left, $search_top, $search_right, $search_bottom, $splash_color, $splash_tolerance, $splash_search_step)
if @error then
SetError(0)
else
;#####################
; Click on the splash
;#####################
send("{SHIFTDOWN}")
MouseClick("right");, $pos[0], $pos[1], 1, 2)
send("{ShiftUP}")
Sleep(5500)
ExitLoop
endif
Sleep(10)
wend
;######################################
; Cast pole and start all over again.
;######################################
cast_pole()
endfunc
; ##############################################################################
func cast_pole()
$start_time = TimerInit()
Send("1")
Sleep(1000)
endfunc
; ##############################################################################
func check_window()
$dimensions = WinGetClientSize($win_title, "")
if $dimensions[0] <> $screen_width or $dimensions[1] <> $screen_height then
msg("Invalid window size. You must use " & $screen_width & "x" & $screen_height & " resolution in window mode.")
Exit
endif
endfunc
; ##############################################################################
func msg($text)
MsgBox(0, $title, $text)
endfunc
; ##############################################################################
func msg_array($title, $array, $num_elements)
dim $text
$text = $array[0]
for $j = 1 to $num_elements - 1
$text = $text & ", " & $array[$j]
next
MsgBox(0, $title, $text)
endfunc
; ##########################################################
func request_end()
$MB_YESNO = 4
$MB_YES = 6
if MsgBox($MB_YESNO, $title, "End script?") == $MB_YES then
Exit
endif
endfunc
;###########################################################
func Start_Bot()
$MB_YESNO = 4
$MB_YES = 6
if MsgBox($MB_YESNO, $title, "Do you want to start the Bot?") == $MB_Yes then
else
Exit
endif
endfunc
; ##########################################################
func drain_timer()
Msg("Restart")
$start_time = $start_time - $time_to_wait
endfunc
; ##########################################################