Code:
;######################################################################### ; FishBOT by Psycosis taken from Foobie who adapted Pantless Krab's ; ; Version 1.4.2 ; ; 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 ;######################################################### ; 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_red ;################################################################## ; 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 ; ############################################################################ 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 ; ##########################################################