Jump to content

WoW fishing skript


Konan--M
 Share

Recommended Posts

I wrote a bot for WoW that can fish for u.

I made different versions of checking for the "blinker" (don't know the english word) - with moving the mouse and without, both of them work, but the 1. one is much easier (and i think it works better).

I got very lucky ( after hours of testing) with the recognition if there is a fish or not ( nearly 100%)

but the checking for the blinker doesnt work all the time....

but it still works very good ( i think > 80%):)

i won't post the skript here - ask me for it

(atm the settings ar still german, but it'll work fine)

Konan

edit: i used the script on different accounts and never got a warning from blizz

Edited by Konan--M
Link to comment
Share on other sites

i was just too lazy to send the script to all the guys, so i decided to post it here.

Everything you have to do is to start the script - hit the big button. then go into wow. get your fishing rod- zoom in as near as possible ( if u have quick-loot turn it off or change the script). Put the fishing icon of wow in the slot 3 - or the one you have picked.

With alt+1 you start the script.

with alt+2 you pause it.

alt+3 to exit.

Maybe

;alles was mit dem Gui zu tun hat
#include <GuiConstants.au3>
GUICreate("WoW Angel Script", 392, 316, (@DesktopWidth - 392) / 2, (@DesktopHeight - 316) / 2, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
Dim $Fischkey = "3", $blitz = 0, $glitsch = 0, $wels = 0, $matsch = 0, $questen = 0
$Button_1 = GUICtrlCreateButton("Los Geht's !", 120, 200, 170, 50)
$Checkbox_2 = GUICtrlCreateCheckbox("Roher Langkiefer Matschschn.", 10, 20, 160, 20)
$Checkbox_3 = GUICtrlCreateCheckbox("Roher blitzender Kleinfisch", 10, 40, 160, 20)
$Checkbox_4 = GUICtrlCreateCheckbox("Rohe Glitschhautmakrele", 10, 60, 160, 20)
$Checkbox_5 = GUICtrlCreateCheckbox("Checkbox5", 10, 80, 160, 20)
$Checkbox_6 = GUICtrlCreateCheckbox("Checkbox6", 10, 100, 160, 20)
$Checkbox_7 = GUICtrlCreateCheckbox("Checkbox7", 10, 120, 160, 20)
$Checkbox_8 = GUICtrlCreateCheckbox("Checkbox8", 10, 140, 160, 20)
$Checkbox_9 = GUICtrlCreateCheckbox("Checkbox9", 10, 160, 160, 20)
$Label_12 = GUICtrlCreateLabel("Bitte Fische auswählen, die NICHT gefangen werden sollen!" & @CRLF & @CRLF & "Hotkeys sind:" & @CRLF & "Alt+1 Starten" & @CRLF & "Alt+2 Pause" & @CRLF & "Alt+3 Schließen", 210, 20, 150, 140)
$Combo_13 = GUICtrlCreateCombo("1", 270, 160, 100, 20)
GUICtrlSetData(-1, "2|3|4|5|6|7|8|9|0|ß", "3")
$Label_14 = GUICtrlCreateLabel("Taste zum Angeln", 170, 160, 100, 20)
$Checkbox_15 = GUICtrlCreateCheckbox("Angelquest", 170, 140, 100, 20)
GUISetState()
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            GUIDelete()
            Exit
        Case $msg = $Button_1
            If GUICtrlRead($Checkbox_2) = 1 Then $matsch = 1
            If GUICtrlRead($Checkbox_3) = 1 Then $blitz = 1
            If GUICtrlRead($Checkbox_4) = 1 Then $glitsch = 1
            If GUICtrlRead($Checkbox_15) = 1 Then $questen = 1
            GUIDelete()
            ExitLoop
        Case $msg = $Combo_13
            $Fischkey = GUICtrlRead($Combo_13)
    EndSelect
WEnd
;Hier startet das eigentlich Skript
;die Funktionen
;Sachen zum Angeln
HotKeySet("!1", "starten")
HotKeySet("!2", "quiet")
HotKeySet("!3", "ExitIt")
Dim $hats = 0
Dim $array
Dim $r1 = 0, $r2 = 0, $r3 = 0, $ges = 0;statistik
Dim $array1
Dim $colorlast
Dim $blinker
Dim $d = 0
$file = FileOpen("Angel_Log.txt", 2)
quiet()
Func starten()
    While 1
        playSound()
        Sleep(500)
    WEnd
EndFunc  ;==>starten
Func quiet()
    While 1
        Sleep(2000)
    WEnd
EndFunc  ;==>quiet


Func blinker_finden()
    $x = 0
    $y = 0
    $hats = 0
    For $t = 1 To 14
        $y= ($t * 25) + 100
        For $h = 1 To 16
            $x= ($h * 40) + 100
            MouseMove($x, $y, 1)
        ;gelbe schrift
            sleep(10)
            $pix =  StringMid(String(PixelChecksum(865,651,865,657)),1, 3)
            If $pix = 223  Then
                FileWrite($file, "Gefunden wurde der Blinker!" & @CRLF)
                $array1 = PixelSearch($x - 40, $y - 20, $x + 30, $y + 20, 1051930, 10, 1)
                If @error Then $array1 = PixelSearch($x - 40, $y - 20, $x + 30, $y + 20, 1117464, 10, 1)
                If @error Then $array1 = PixelSearch($x - 40, $y - 20, $x + 30, $y + 20, 1643051, 10, 1)
                if not @error Then $hats = 1
                MouseMove($x-40,$y-20)
                sleep(300)
                MouseMove($x+30,$y+20)
                sleep(300)
                ExitLoop
            EndIf
        Next
        If $hats = 1 Then ExitLoop
    Next    
EndFunc

;old func to search - without moving the mouse
Func finden()
    $ges = $ges + 1
    $x = 0
    $y = 0
    $hats = 0
    For $t = 1 To 7
        $y= ($t * 50) + 100
        For $h = 1 To 14
            $x= ($h * 50) + 100
        ;suchen nach den roten farbfragmenten
            $array = PixelSearch($x, $y, $x + 50, $y + 50, 3283221, 8, 2)
            If @error Then $array = PixelSearch($x, $y, $x + 50, $y + 50, 1838859, 8, 2)
            If @error Then $array = PixelSearch($x, $y, $x + 50, $y + 50, 2099207, 8, 2)
            If @error Then $array = PixelSearch($x, $y, $x + 50, $y + 50, 5053711, 8, 2)
            If @error Then $array = PixelSearch($x, $y, $x + 50, $y + 50, 9516325, 8, 2)
        ;If @error Then $array = PixelSearch($x, $y, $x + 50, $y + 50, 4594452, 8, 2)
        ;If @error Then $array = PixelSearch($x, $y, $x + 50, $y + 50, 4008728, 8, 2)
        ;If @error Then $array = PixelSearch($x, $y, $x + 50, $y + 50, 9840653, 8, 2)
        ;If @error Then $array = PixelSearch($x, $y, $x + 50, $y + 50, 6427657, 8, 2)
        ;If @error Then $array = PixelSearch($x, $y, $x + 50, $y + 50, 5445133, 8, 2)
        ;If @error Then $array = PixelSearch($x, $y, $x + 50, $y + 50, 2231814, 8, 2)
            If Not @error Then
                MouseMove($array[0] - 30, $array[1] - 20, 0)
                MouseMove($array[0] + 5, $array[1] + 5, 0)
            ;MouseMove($array[0], $array[1], 20)
            ;suchen nach der spitzte der Angel > metallene Fragmente
                PixelSearch($array[0] - 30, $array[1] - 20, $array[0] + 5, $array[1] + 5, 8497322, 10, 1)
                If @error Then PixelSearch($array[0] - 30, $array[1] - 20, $array[0] + 5, $array[1] + 5, 11774360, 10, 1)
                If @error Then PixelSearch($array[0] - 30, $array[1] - 20, $array[0] + 5, $array[1] + 5, 12569815, 10, 1)
            ;suchen nach den baluen fragmenten
                If not @error Then $array1 = PixelSearch($array[0] - 40, $array[1] - 10, $array[0] + 15, $array[1] + 20, 1051930, 10, 1)
                If @error Then $array1 = PixelSearch($array[0] - 40, $array[1] - 10, $array[0] + 15, $array[1] + 20, 1117464, 10, 1)
                If @error Then $array1 = PixelSearch($array[0] - 30, $array[1] - 10, $array[0] + 15, $array[1] + 20, 1643051, 10, 1)
                If not @error Then ToolTip("blau auch")
            EndIf
            If Not @error Then
                $hats = 1
                FileWrite($file, "Gefunden wurde der Blinker!" & @CRLF)
                MouseMove($array1[0], $array1[1], 5)
                ExitLoop
            EndIf
        Next
        If $hats = 1 Then ExitLoop
    Next
EndFunc  ;==>finden


Func playSound()
    Sleep(Random(500, 1000))
    Send($Fischkey)
;Sleep(Random(500,600))
    blinker_finden()
;if $hats=0 Then MsgBox(0, "funzt net","naja")
    If $hats = 1 Then
        $hats = 0
        $d = $array1[1] + 5
        MouseMove($array1[0], $d)
        $blinker = PixelGetColor($array1[0] , $d)
    ;$blinker = PixelGetColor($array1[0] + $d, $array1[1] + $d)
    ;check isch grade nicht....
        FileWrite($file, " überprüfung " & $blinker & " überprüfung " & @CRLF)
        For $r = 1 To 200
            Sleep(2)
            $color = PixelGetColor($array1[0], $d)
            If Not StringInStr($blinker, $color) Then $blinker = $blinker & "|" & $color
        Next
        FileWrite($file, " String " & $blinker & @CRLF)
        $blinker = StringSplit($blinker, "|")
        $bl = $blinker[0]
        $begin = TimerInit()
        While Not @error
            $hats = 0
            For $r = 1 To $bl
                $r3 = $r3 + 1
                If TimerDiff($begin) > 30000 Then playSound()
                PixelSearch($array1[0] - 1, $d - 1, $array1[0] + 1, $d + 1, $blinker[$r], 10, 1)
                If Not @error Then
                    $hats = 1
                ;filewrite($file, "gibbet"&$blinker[$r]&@CRLF)
                    ExitLoop
                EndIf
            Next 
            If $hats = 0 Then ExitLoop
        WEnd
        $colorlast = "|" & $blinker
        FileWrite($file, " letzte Farbe " & $color & " Letzte Farbe " & @CRLF)
        Sleep(Random(500, 700))
        MouseClick("right")
        Sleep(500)
        Sleep(2000)
        $r1 = $r1 + 1
        $soll = 1
    ;FileWrite($file, "Case PixelGetColor(40, 192) = " & PixelGetColor(40, 192) & " And PixelGetColor(43, 198) = " & PixelGetColor(43, 198) & " And PixelGetColor(45, 201) = " & PixelGetColor(45, 201) & " And PixelGetColor(42, 204) = " & PixelGetColor(42, 204) & @CRLF)
        Select
            Case PixelGetColor(40, 192) = 9741991 And PixelGetColor(43, 198) = 8240591 And PixelGetColor(45, 201) = 8174536 And PixelGetColor(42, 204) = 4354954 And $blitz = 1
                $soll = 0
        ;Das is nen : Roher blitzender Kleinfisch
            Case PixelGetColor(40, 192) = 2640467 And PixelGetColor(43, 198) = 2205849 And PixelGetColor(45, 201) = 3329719 And PixelGetColor(42, 204) = 4779468 And $glitsch = 1
                $soll= 0
        ;Das is nen : Rohe Glitschhautmakrele
            Case PixelGetColor(40, 192) = 1982024 And PixelGetColor(43, 198) = 4746878 And PixelGetColor(45, 201) = 11126995 And PixelGetColor(42, 204) = 1981000 And $matsch = 1
                $soll =0
        ;Das is nen : Roher Langkiefer Matschschnapper

        EndSelect
        If PixelSearch(446, 123, 488, 139, 13552899, 10, 1) and $soll=1 Then
            $r2 = $r2 + 1
            Sleep(Random(500, 1000))
            MouseMove(Random(100, 600), Random(100, 600), Random(5, 10))
            MouseMove(Random(100, 600), Random(100, 600), Random(5, 10))
            MouseMove(46, 202)
            MouseClick("right")
            If $questen Then
                Sleep(Random(200, 300)); zum questen 
                MouseMove(46, 242)
                MouseClick("right"); bis hier
            EndIf
        EndIf
    EndIf
    playSound()
EndFunc  ;==>playSound
Func ExitIt()
    FileWrite($file, @CRLF & "Übersicht:" & @CRLF)
    FileWrite($file, "Es wurde " & $ges & " mal die Angel ausgeworfen" & @CRLF)
    FileWrite($file, "Dabei wurde der Blinker entdeckt " & $r1 & " mal entdeckt." & @CRLF)
    FileWrite($file, $r2 & " mal haben Fische angebissen!")
    FileClose($file)
    Exit
EndFunc  ;==>ExitIt

the script isn't really finished - but it works very good. But i don't have time to work on it now.

Link to comment
Share on other sites

I took a slightly different approach:

Before looking at the code, WoW fishing uses a bobber. It changes shades as you fish, and then will suddenly dip under the water. A pixel compare doesnt' work too well, but as you know, a change in shade is simply brighter or darker. So my script takes a baseline of what is under the mouse, then it tests it and sees if the ratio of blue, green and red are the same. If they varry by a large amount, then it changed color (as in brown to blue or green water.)

It is not 100% as I am too lazy to fix something that works fine (fishing should not be 100% .) Place mouse over bobber bottom, and click pause. If you use cosmos, you can have it put it in your bag as the fish will pop up under your cursor (it clicks again) and you will just need to cast your line and click on the bobber again.

I also left in a few favorites of mine, the scroll lock repeating 6 Useful for all sorts of things, like slashing or kicking (mashing a key over and over.) And also the shift alt pause, that will hibernate your computer once WoW is gone ( I hate waiting for the slow shutdown of wow. )

Hope you have fun with it. They removed all the cool toys you could get with the fishing skill (used to pull in a lot of money even fishing from town.) Make sure to buy some tackle to get a skill of 25-50 for the first 10 minutes, this will remove the tedium from fishing. So try it out, grab a few beers and your favorite hat and enjoy a bit of fishing.

Opt("MouseCoordMode", 0)       ;1=absolute, 0=relative
Opt("MustDeclareVars", 0)     ;0=no, 1=require pre-declare
Opt("PixelCoordMode", 0)       ;1=absolute, 0=relative
HotKeySet("{pause}","start")
HotKeySet("!{pause}","ender")
HotKeySet("!+{pause}","hib")
HotKeySet("{scrolllock}","growl")
HotKeySet("!{scrolllock}","growl1")
Dim $gr1
Dim $pos
;HotKeySet("+{pause}","noafk")
Dim $set1,$set2,$Set3,$Out1,$Out2,$Out3,$green,$y

msgbox(1,"info","Place cursor on bobber and press pause")
$afk=1
$x=1
sleeper()
start()
   $pos=MouseGetPos()
while 1
   $color=PixelGetColor($pos[0],$pos[1])
   $colors=Stringsplit(Hex($color, 6),"")
   $Out1=dec($colors[1] & $colors[2])
   $Out2=dec($colors[3] & $colors[4])
   $Out3=dec($colors[5] & $colors[6])
   $dif1=$out1-$set1
   $dif2=$out2-$set2
   $dif3=$out3-$set3
   $test=$dif1-$dif2+$dif3
   ToolTip($dif1 & @crlf & $dif2 & @crlf & $dif3 & @crlf & WinGetTitle(""),0,0) 
   sleep(10)
   if $test>$dif1+30 or $test<$dif1-30 then
      sleep(200)
      sleep(random(10,200))
      mousemove($pos[0],$pos[1],4)
      if winactive("World of Warcraft") then mouseclick("right")
      sleep(1000)
     ;mouseclick("right")
      $x=1
      sleeper()
   EndIf
   
WEnd
   
func Hib()
   while WinExists("World")
         sleep(100)
   WEnd
   sleep(3000)
   Shutdown(64)
EndFunc
   
func growl()
$y=not $y
   while $y
      send("6")
         sleep(1000)
   WEnd
EndFunc

func growl1()
$y=not $y
   $pos=MouseGetPos()
   mousemove(0,0,1)
   sleep(1000)
   $color1=PixelGetColor($pos[0],$pos[1])

while $y
      if $color1=PixelGetColor($pos[0],$pos[1]) then send("6")
         sleep(100)
WEnd
EndFunc



func start()
   $x=2
   $pos=MouseGetPos()
   $color=PixelGetColor($pos[0],$pos[1])
   $colors=Stringsplit(Hex($color, 6),"")
   $set1=dec($colors[1] & $colors[2])
   $set2=dec($colors[3] & $colors[4])
   $set3=dec($colors[5] & $colors[6])
EndFunc

func ender()
   Exit
EndFunc

func sleeper()
   while $x=1
   $pos=MouseGetPos()
   $color=PixelGetColor($pos[0],$pos[1])
   $colors=Stringsplit(Hex($color, 6),"")
   $set1=dec($colors[1] & $colors[2])
   $set2=dec($colors[3] & $colors[4])
   $set3=dec($colors[5] & $colors[6])
   tooltip("")
   sleep(100)
   WEnd
   
EndFunc

func noafk()
   $afk=Not $afk
   while $afk
      tooltip("afk",0,0)
      $r=Random(1000,8000)
      if $afk=1 then sleep(15000+$r)
      if $afk=1 then send("w")
      if $afk=1 then sleep(25000-$r)
      if $afk=1 then send("s")

   WEnd
tooltip("")
EndFunc

AutoIt3, the MACGYVER Pocket Knife for computers.

Link to comment
Share on other sites

  • 9 months later...

i know this is an old post but for anyone learning... for me a slightly less complicated approach was to simply start searching for the white of the splash (in the immediate area that the bobber was found) in a function like:

; *****************************************************************************************
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.
   ; Default white: 0xF6F6F6
   ; Moonglade Pure WHite: 0xCCFFFF 0xDCFFFF
    $splash_color = 0xDCFFFF

   ; Sometimes 30 tolerance works well, sometimes 20 is better in lit areas to avoid catching highlights
   ; in other things.
    $splash_tolerance = 30
   
   ; 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 = 1

   ; 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
            Sleep(250)
            MouseClick("right", $pos[0], $pos[1], 1, 2)


           ; Click on the loot
           ; $mouse_pos = MouseGetPos()
           
            Sleep(1200)
           ; MouseClick("left", 40, 160, 1, 2)
        verify_loot_1()
        verify_loot_2()
        verify_loot_3()
        verify_loot_4()
; I got tired of trash fish so have it analize the loot and only get fish I want
; ATM working on a GUI to change all of this on the fly though thats still a bit far away

            Sleep(3200)
            ExitLoop
        endif
        Sleep(100)
    wend
   
   ; Cast pole and start all over again.
    Sleep(1200)
   ; MouseClick("left", 40, 160, 1, 2)
    cast_pole()
endfunc
; *****************************************************************************************

Don't let that status fool you, I am no advanced memeber!

Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...
  • 4 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...