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.
Using a tool might be seen as unwanted by Cryptic.
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:
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:
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