Enjoy fishing?

After hours and hours of pressing the keys q,e,r and 1 in time to catch a simple fish, my fingers hurt. Time to invest my skill to better use. Hence the fishing tool I made. There are various tools out there, but none seemed to work for me.  So i made one myself.

 

a warning

Using a tool might be seen as unwanted by Cryptic. 

 

 

DOWNLOAD

The workings

This tools is nothing more than a recognize the image and press the corresponding keys. I have included the source so everyone can see its workings.

 

To download you need two things:

  1. Autohotkey application. 
    This is a free and open source application that can read a own-written script that handles keybinds or images detection and do various actions like moving the mouse or pressing a keystroke for you.

  2. The AHK script i wrote, called fishbot.zip and the images to detect the events on

 

In the fishbot.zip you will find a fishbot.ahk (text)file and a subdirectory with some images that the script will look for.

 

B.t.w. you might need to run it as administrator! 

 

There are four hotkeys defined:

  • Win+Q : exit the bot
  • Win+A: temporary stop fishing 
  • Win+S: temporary stop fishing after current catch
  • Win+F: continue fishing

 

The script will only run when neverwinter client is running. It will also move and resize the game window, so it knows where to scan for the buttons. Once the script has resized it will also switch back to your game.

 

Next find a good fishing spot and press [tab]. The tool will take over from you.

 

To stop immidiatly Win+Q 

 

 

The script:

(you might need to adjust the images and or coordinates if it is not working for you)


#InstallMouseHook
CoordMode, ToolTip, screen
CoordMode, Mouse, screen
CoordMode, Pixel, screen

 

IfWinExist, GameClient

{

    msgbox , ,, Neverwinter client detected.`nMake sure you run fishbot as administrator!`n`nPress Win+Q to quit fishbot`nWin+A pause. Win+F unpause. Win+S pause after catch, 3

 

    WinActivate 

    WinMove, GameClient, , 0,0,1920, 1080

}

else

{

msgbox , ,, Make sure the Neverwinter client is running. Client not detected. Aborting fishbot., 3

exitapp

}

SendMode Event

 

LastKey = x

Status = 1

loop:

If (Status>=1)

{

GoSub, DetectImages

 

 

BlockInput on

 

if (FoundBait=1)

; press tab to add bait

Send {Tab}

LastKey = x

}

 

if (FoundThrow=1)

{

; Left mouse click to throw, and wait

MouseClick, left

LastKey = x

}

 

if (FoundHook=1)

{

;  Right mouse click to start to reel in

MouseClick, right

LastKey = x

}

 

if (FoundCatch=1)

{

If LastKey=q

Send {q up}

If LastKey=e

Send {e up}

If LastKey=r

Send {r up}

Send 111

LastKey = x

 

If (status=2)

{

Status=0

}

}

 

 

 

if (FoundLeft=1)

{

if LastKey=q

{

; Q key is already down

LastKey=q

Send {q down}

}

else

{

; Release lastkey, press q down

if LastKey=e

Send {q down} {e up}

else

{

if LastKey=r

Send {q down} {r up}

else

Send {q down}

}

LastKey=q

}

}

 

if (FoundCenter=1)

{

if LastKey=e

{

; E key is already down

LastKey=e

Send {e down}

}

else

{

; Release lastkey, press e down

if LastKey=q

Send {e down} {q up}

else

{

if LastKey=r

Send {e down} {r up}

else

Send {e down}

}

LastKey=e

}

}

 

if (FoundRight=1)

{

if LastKey=r

{

; R key is already down

LastKey=r

Send {r down}

}

else

{

; Release lastkey, press r down

if LastKey=e

Send {r down} {e up}

else

{

if LastKey=q

Send {r down} {q up}

else

Send {r down}

}

LastKey=r

}

}

 

 

 

 

 

BlockInput off

}

 

Goto , loop

 

exitapp

 

 

 

#===================================

 

DetectImages:

folder=C:\Users\Peter\Desktop\fishbot\images

 

; Important to return asap and not to scan for unnessecaire images

  FoundLeft=0

  FoundRight=0

  FoundCenter=0

  FoundCatch=0

  FoundThrow=0

  FoundHook=0

  FoundBait=0

 

 

; Prio 1: key 1

ImageSearch, OutputVarX, OutputVarY, 886, 908, 950, 965, *10 %folder%\Fishing_Catch.png

if (errorlevel=0)

{

FoundCatch=1

Return

}

 

; Prio 2: Keys E,Q,R

ImageSearch, OutputVarX, OutputVarY, 828, 1000, 878, 1040, *10 %folder%\Fishing_Left.png

if (errorlevel=0)

{

FoundLeft=1

Return

}

 

ImageSearch, OutputVarX, OutputVarY, 878, 1000, 922, 1040, *10 %folder%\Fishing_Center.png

if (errorlevel=0)

{

FoundCenter=1

Return

}

 

ImageSearch, OutputVarX, OutputVarY, 922, 1000, 963, 1040, *10 %folder%\Fishing_Right.png

if (errorlevel=0)

{

FoundRight=1

Return

}

 

 

; Prio 3, Left and Right mousebuttons

ImageSearch, OutputVarX, OutputVarY, 963, 1000, 1008, 1040, *10 %folder%\Fishing_Throw.png

if (errorlevel=0)

{

FoundThrow=1

Return

}

 

ImageSearch, OutputVarX, OutputVarY, 1007, 1000, 1056, 1040, *10 %folder%\Fishing_Hook.png

if (errorlevel=0)

{

FoundHook=1

Return

}

 

 

; Prio 4: Select bait

ImageSearch, OutputVarX, OutputVarY, 782, 1000, 828, 1040, *10 %folder%\Fishing_Bait.png

if (errorlevel=0)

{

FoundBait=1

Return

}

return

 

TimerRoutine:

;SplashTextOn, 400, 300, Fishbot, FoundBait=%FoundBait%`nFoundThrow=%FoundThrow%`nFoundHook=%FoundHook%`nFoundLeft=%FoundLeft%`nFoundCenter=%FoundCenter%`nFoundRight=%FoundRight%`nFoundCatch=%FoundCatch% `nLastKey=%LastKey%. 

;WinMove, Fishbot, , 0, 0  ; Move the splash window to the top left corner.

 

  ;ToolTip, FoundBait=%FoundBait%`nFoundThrow=%FoundThrow%`nFoundHook=%FoundHook%`nFoundLeft=%FoundLeft%`nFoundCenter=%FoundCenter%`nFoundRight=%FoundRight%`nFoundCatch=%FoundCatch% `nLastKey=%LastKey%. 

;SetTimer, RemoveToolTip, 100

return

 

 

RemoveToolTip:

SetTimer, RemoveToolTip, Off

ToolTip

return

 

 

#a::  ;Abort fishing

status=0

msgbox , ,, Pause fishing,1

settimer, TimerRoutine, Off

return

 

#s::  ;Abort fishing, after catch

status=2

msgbox , ,, Pause fishing after this catch,1

settimer, TimerRoutine, 1000

return

 

#f::  ;Start fishing

status=1

msgbox , ,, Unpause fishing,1

settimer, TimerRoutine, 1000

return

 

#q::  ;Win-Q to exit

SplashTextOff

Status=0

msgbox , ,, Exiting fishing bot,1

exitapp