Free FFXIV Fishing Bot, works with v2.3.5

08/27/2014 09:46 StolasZagan#1
Main UI:
[Only registered and activated users can see links. Click Here To Register...]

Small UI:
[Only registered and activated users can see links. Click Here To Register...]

How does it work?
The bot uses static memory pointers from FFXIV to determine whether your character is currently fishing and whether your character has caught anything. If your character is not fishing then the Cast ability is pressed, and if the character is fishing but something is biting on the bait, then the Hook ability is pressed.

Both the bot and the game window can be minimized while running, and no code is injected into the game, so the game should be as stable as ever.

Setup

The bot requires .NET Framework 4.8 to run. Download that from here: [Only registered and activated users can see links. Click Here To Register...]

Run the bot as administrator!
If you get an "access denied" error then it's because you are NOT running as administrator.

The bot is very simple to setup:
  1. Make sure you are in Mouse/Keyboard mode.
  2. Put your "Cast" ability anywhere on hotbar 1 or 2.
  3. Put your "Hook" abilityanywhere on hotbar 1 or 2.
  4. Put your "Quit" anywhere on hotbar 1 or 2.

If you want to use more advance features:
  1. (Optional) If you want to mooch, then put the "Mooch" ability anywhere on hotbar 1 or 2.
  2. (Optional) If you want to use patience I or II, then put the "Patience" and/or "Patience II" abilities anywhere on hotbar 1 or 2, and make sure you have "Precision" and "Powerful" hooksets on either hotbar 1 or 2 as well (NOTE: The bot currently requires that you have both Precision and Powerful hooksets if you want to use Patience).
  3. (Optional) If you want the bot to be able to accept collectable fish then you must make sure that the Numpad 6 key is bound to move the cursor right, and that the Numpad 0 is bound to click with the cursor. Furthermore, the Numpad multiply button (*) is used to put the window into focus, so make sure that you have not bound that key to something other than its default binding.

In summary, the following commands must be set to these keys:
  1. - Display Subcommands : Numpad *
    - Move Cursor right : Numpad 6
    - Confirm : Numpad 0
  2. (Optional) If you want the bot to use Patience then:
    1. Place the "Patience" ability on hotbar 1 or 2 (Patience and/or Patience II).
    2. Place the "Powerful Hookset" ability on hotbar 1 or 2.
    3. Place the "Precision Hookset" ability on hotbar 1 or 2.
    4. Select "Use Patience" under settings.
  3. (Optional) If you want the bot to use Chum then:
    1. Place the Chum ability on hotbar 1 or 2.
    2. Select "Use Chum" under settings.
Running the bot

Before pressing the "Start" button:
1. Make sure you have plenty of bait and that it's selected.
2. Go to the area you want to fish in.
3. Toggle the weather you would like the bot to fish in. All weather conditions are enabled by default.
4. Set the Eorzean period of time you would like the bot to fish in.

Important: The bot currently does not have any anti-detection measures coded into it. Currently, the bot will automatically stop if it fails to start fishing three times in a row (which can happen if you run out of fish bait, or if the fish "sense that something is amiss"). I highly suggest that you only bot while you are present, so that you can keep an eye on the chat log and your surroundings.

Notes

The bot may contain bugs and if you find any then please report them to me in this thread.

Furthermore, if you have an feature requests then please let me know as well. My plan is to make a cheap premium version at some point which will handle all the short comings of the current bot, and even further down the line I plan to release a mining/harvesting bot as well as a crafting bot.

All in all, I hope you enjoy the bot!

Bug Reporting

Please give me as much information as you can if you encounter a bug. Relevant informantion includes:

- Do you have any steps that I can use to reproduce this bug?

- What does the message window say in the bot?

- What language is your game client?

- Where have you tried fishing?

Work in progress / Backlog

Green is in progress
Blue is done

Update Notes
02/07/24 - v3.9.9.0 - BETA
- Changed the signature to detect tugs.
02/07/24 - v3.9.8.0 - BETA
- Fixed an issue where the tug was not properly detected.
30/06/24 - v3.9.7.0 - BETA
- Updated Aquabot to work with Dawntrail v7.0
Known Issues
- DX9 is currently unsupported.

- Collectable fish can only be automatically accepted or rejected while standing. Sitting while fishing prevents the bot from seeing whether you've caught a collectable fish or not.

- Some anti-virus programs (Such as Avast) falsely identify the bot as a virus, and prevent it from starting. If you have trouble starting the bot, I recommend you turn off your anti-virus program to see if it is interfering, and if it is then white list the bot.



Status
The bot is currently in beta for Dawntrail!
08/27/2014 20:35 marcopolo1990#2
funktioniert super ;)
08/28/2014 09:29 malazz#3
thanks , it works superb
08/29/2014 08:23 unfaceguy#4
can i ask which language you used to code this? :D
08/29/2014 09:11 StolasZagan#5
Quote:
Originally Posted by unfaceguy View Post
can i ask which language you used to code this? :D
Sure. This version is coded in C#, using Visual Studio. You can pretty easily decompile the program to take a look at the source, though it's slightly obfuscated.

I was originally going to code it in C/C++, but performance/memory optimization wasn't really a top priority for this kind of bot, so I ended up just writing it in C#, using some DLLs to read another process' memory and to send key presses.
09/08/2014 14:36 Nix80#6
Amazing! Thx a lot :D
Do you have any plans in making a movement function for the "The fish sense something amiss" message after 30mins?
09/08/2014 15:21 StolasZagan#7
Quote:
Originally Posted by Nix80 View Post
Amazing! Thx a lot :D
Do you have any plans in making a movement function for the "The fish sense something amiss" message after 30mins?
Yeah it's on my TODO list. I currently have another API for harvesting/mining, which ofcourse includes automated navigation of the player around the world. However, the "The fish sense something amiss" message is a bit tricky to get around. In some places you only have to move a bit to get rid of it, in other places you have to go to an entirely different fishing area and fish once in order to resume fishing in the original area. Furthermore, I've noticed that in some areas with multiple fishing spots (Such as Oschon's Torch) you can get rid of the message by moving slightly away from where you started fishing, but the message will re-appear on all the fishing spots in that area if you fish for a fairly long time, so a movement script would only work for some areas, and only for a short amount of time, unless you can successfully navigate from one fishing place to an entirely different one, and back again.
09/11/2014 15:27 StolasZagan#8
So according to what I've read, patch 2.3.8 is coming out next week, and so the bot is most likely not going to work right after the servers come back up. I'll try to update it as fast as possible. Furthermore I've added an optional error alarm sound, which plays three short beeps if the bot fails to continue fishing. Useful for when you run out of bait or the fish sense something is amiss.

EDIT: As expected, the fishing bot is currently broken. Will post an updated version soon.

EDITEDIT: Updated version has been uploaded. Enjoy!
09/19/2014 03:53 narsile#9
thnks for the update, i will test it right now
09/21/2014 06:59 TotalInfinity#10
Tested on 2.38, works like a goddamn charm. In fact, there's no way I'd have finished the Silver Soveereign grind without it (had to sit and monitor, but had the bot going all day for 10 hours and it was perfect every time).

If you could add the feature to auto mooch, or a toggle for it, I'd love you to death (put mooch on 3, read chat line for the mooch line, doesn't seem too bad). It'd help me farm big fish for my desynth, and I'd be your biggest fan (I already am, that Sovereign grind is cancer DX)
09/21/2014 12:18 StolasZagan#11
Quote:
Originally Posted by TotalInfinity View Post
Tested on 2.38, works like a goddamn charm. In fact, there's no way I'd have finished the Silver Soveereign grind without it (had to sit and monitor, but had the bot going all day for 10 hours and it was perfect every time).

If you could add the feature to auto mooch, or a toggle for it, I'd love you to death (put mooch on 3, read chat line for the mooch line, doesn't seem too bad). It'd help me farm big fish for my desynth, and I'd be your biggest fan (I already am, that Sovereign grind is cancer DX)
Thank you for the feedback!

I've been looking into an easy way of detecting when a mooch can occur, and so far I haven't found one that I was satisfied with. Chat parsing is possible, however the chat logs are dynamically allocated so I would have to inject some code into the game in order to get a pointer to the chat log, and code injection is something I want to try to avoid as much as possible for this bot (Takes long to patch, and may cause the game to become unstable). For now I recommend you use the macro I provided in the first post, you will get a little error/warning message whenever the macro tries to mooch something that cannot be mooched, however other than that it works fine.

Be sure to let me know if you have other feature requests!
09/21/2014 17:49 lucid#12
Quote:
Originally Posted by StolasZagan View Post
Thank you for the feedback!

I've been looking into an easy way of detecting when a mooch can occur, and so far I haven't found one that I was satisfied with. Chat parsing is possible, however the chat logs are dynamically allocated so I would have to inject some code into the game in order to get a pointer to the chat log, and code injection is something I want to try to avoid as much as possible for this bot (Takes long to patch, and may cause the game to become unstable). For now I recommend you use the macro I provided in the first post, you will get a little error/warning message whenever the macro tries to mooch something that cannot be mooched, however other than that it works fine.

Be sure to let me know if you have other feature requests!
There are a few mooch detection possibilities:
  • Chat log
  • Hotkey availability
  • Fishing result; sourced from on-screen popup gathering result or HQ animation upon reel-in

The last option requires advance knowledge of which fish are part of mooch chains, which means each fish and possibly each location must be sourced prior to runtime. Since you already appear to know whether the result is HQ or not, you should be able to tell whether or mooch can be used or not by the type of fish (ex. Merlthor Goby HQ = yes).

BTW you do not need to inject code to read from the chat log. In fact, you never need to inject code to read anything from memory.

I believe the chat structure works similar to the 1.0, an array of line lengths and a pointer to the data blob. Chat is in a binary format you'll need to parse (auto-translates, item links, etc are in there too). The format is quite similar to the log files, except the offsets and the data are stored separately in memory and the log file has a start and end line number at the top.

My private bot uses the hotbar data for mooching, I found it to be the best fit for what I wanted. If you're looking for new features, mine has a few I didn't see mentioned:
  • Automatic enabling of cast light (to avoid looking like a bot)
  • Catching big fish only (dump bad results with Quit because it is faster)
  • Ability to pregame for a fish before a window and automatically hold the nth mooch
  • Ability to repair
  • Ability to move/reset fishing location ("The fish sense something is amiss")
  • Multibox support?

You could also consider reading the user's configuration so they can set hotbars however they'd like.

Catching big fish only is not an indication that the person is botting because players can listen to the sound of the fish biting and determine the size. Small fish sound like a slight rattle, medium fish have a more robust rattling sound and big fish sound like a stick (rod) breaking/snapping.
09/21/2014 18:26 TotalInfinity#13
Quote:
Originally Posted by lucid View Post
There are a few mooch detection possibilities:
  • Chat log
  • Hotkey availability
  • Fishing result; sourced from on-screen popup gathering result or HQ animation upon reel-in

The last option requires advance knowledge of which fish are part of mooch chains, which means each fish and possibly each location must be sourced prior to runtime. Since you already appear to know whether the result is HQ or not, you should be able to tell whether or mooch can be used or not by the type of fish (ex. Merlthor Goby HQ = yes).

BTW you do not need to inject code to read from the chat log. In fact, you never need to inject code to read anything from memory.

I believe the chat structure works similar to the 1.0, an array of line lengths and a pointer to the data blob. Chat is in a binary format you'll need to parse (auto-translates, item links, etc are in there too). The format is quite similar to the log files, except the offsets and the data are stored separately in memory and the log file has a start and end line number at the top.

My private bot uses the hotbar data for mooching, I found it to be the best fit for what I wanted. If you're looking for new features, mine has a few I didn't see mentioned:
  • Automatic enabling of cast light (to avoid looking like a bot)
  • Catching big fish only (dump bad results with Quit because it is faster)
  • Ability to pregame for a fish before a window and automatically hold the nth mooch
  • Ability to repair
  • Ability to move/reset fishing location ("The fish sense something is amiss")
  • Multibox support?

You could also consider reading the user's configuration so they can set hotbars however they'd like.

Catching big fish only is not an indication that the person is botting because players can listen to the sound of the fish biting and determine the size. Small fish sound like a slight rattle, medium fish have a more robust rattling sound and big fish sound like a stick (rod) breaking/snapping.

Sounds good so far. I wouldn't need the ability to repair or move locations in a bot I would use, since I prefer sitting at my comp while the bot runs and keeping progress on it myself. Same wth cast light, I do that manually. Still, the auto dumping of non big fish is a nice feature, and I know it's not a sign of a bot, I did that with sovereigns, problem is the chance of bait breaking (only for expensive lures, live bait nobody cares about).

As long as the bot can see the chat, or knows when mooch is highlighted and active, it'll be fine. Still, the macro is a nice workaround till then, I'll be sure to make use of it! :D

(and lucid, I don't suppose you'd share your bot? From fisher to fisher? :o?)
09/21/2014 19:21 lucid#14
Quote:
Originally Posted by TotalInfinity View Post
I wouldn't need the ability to repair or move locations in a bot I would use, since I prefer sitting at my comp while the bot runs and keeping progress on it myself.
Yeah running it attended is best but its good to know it'll keep going if you need a snack or something :)

Quote:
Originally Posted by TotalInfinity View Post
Same wth cast light, I do that manually
Hey, after I'm done programming I like to be reeeeally lazy!

Quote:
Originally Posted by TotalInfinity View Post
Still, the auto dumping of non big fish is a nice feature, and I know it's not a sign of a bot, I did that with sovereigns, problem is the chance of bait breaking (only for expensive lures, live bait nobody cares about).
You definitely lose more lures (maybe 5x-10x more) when doing this but for fish with short (2 in-game hour) windows it's absolutely worthwhile imo. The time savings is maybe up to 50%, but I havent clocked it. For something like sovereigns it may or may not be worthwhile, probably depends on the price of the Yumizuno. As you mentioned about live bait, the only thing you lose are the junk fish since one piece of bait is used per cast regardless.

Edit: Also, about bait... I have it displayed on my UI so I can see which bait is on hook while zoning or on a chocobo. It seems like a small thing but all of us have actually found it incredibly useful.

Quote:
Originally Posted by TotalInfinity View Post
(and lucid, I don't suppose you'd share your bot? From fisher to fisher? :o?)
Sorry, I only share with a select group in my FC xD
09/21/2014 22:38 TotalInfinity#15
Quote:
Originally Posted by lucid View Post
Yeah running it attended is best but its good to know it'll keep going if you need a snack or something :)


Hey, after I'm done programming I like to be reeeeally lazy!


You definitely lose more lures (maybe 5x-10x more) when doing this but for fish with short (2 in-game hour) windows it's absolutely worthwhile imo. The time savings is maybe up to 50%, but I havent clocked it. For something like sovereigns it may or may not be worthwhile, probably depends on the price of the Yumizuno. As you mentioned about live bait, the only thing you lose are the junk fish since one piece of bait is used per cast regardless.

Edit: Also, about bait... I have it displayed on my UI so I can see which bait is on hook while zoning or on a chocobo. It seems like a small thing but all of us have actually found it incredibly useful.


Sorry, I only share with a select group in my FC xD
No worries, it does sound like a nifty bot! I do like the bait display though, I always derp and forget to select new bait when I'm at a new fishing spot. Yeah, it was mainly the Yumizuno cost that made me choose not to discard the fish.

(I'm sure I'll find a way to convince you to let me have it though...)