atlasFishing behavior lives in one file:
Config.enabled is force-set to false if the name guard fails (AtlasFishing.ResourceOk == false). Keep the folder named atlasFishing.Global switches
boolean
default:"true"
Master on/off. Automatically forced to
false if the resource folder is renamed (the name guard sets ResourceOk = false).boolean
default:"false"
Extra debug output while testing. Turn it off before release.
Fisherman ped — Config.ped
One ped with a two-option interaction: Supplies (open the shop) and Sell (sell your catch).
string
default:"s_m_m_cntrybar_01"
Ped model.
vec4
default:"vec4(-1819.42, -1193.62, 14.31, 134.0)"
Position and heading (the fourth value is heading). The default is a placeholder — move it.
string
default:"WORLD_HUMAN_STAND_FISHING"
Ambient pose for the ped. Optional.
table
How players reach the menu. See Interaction method below.
table
Map blip —
enabled, sprite, color, scale, label.Interaction method
interact.method decides how players open the ped menu. The same options apply to the boat-rental ped.
string
default:"interact"
interact · target · textui. Use target only if ox_target or qb-target is installed and detected; otherwise keep interact or textui.number
default:"2.5"
Distance at which the interaction becomes available.
number
default:"1.4"
Extra comfort range for the marker / prompt.
string
default:"E"
Key used by
interact and textui methods.string
default:"fish"
Bridge marker style shown over the ped.
Rod — Config.rod
A single rod — progression is bait-only. The rod is registered usable automatically (Bridge.Inventory.RegisterUsableItem(Config.rod.item)).
string
default:"fishing_rod"
Inventory item the player uses to fish. If you rename it, update your inventory definition and
Config.shop.items.table
Held rod prop —
model, bone, pos (offset), rot (rotation).table
Fishing idle animation —
dict, clip, flag.Casting — Config.cast
boolean
default:"true"
Require the player to face water before casting.
boolean
default:"true"
Allow fishing while in a boat.
number
default:"3000"
Cast progress-bar duration, in milliseconds.
number
default:"4000"
Minimum random idle wait before the bite/minigame, in milliseconds.
number
default:"12000"
Maximum random idle wait before the bite/minigame, in milliseconds.
string
default:"X"
Key to stop fishing mid-attempt.
Rarity tiers — Config.tiers
Base weights — the probability of each tier with neutral bait and no zone bonus. Higher number = more likely.
Baits — Config.baits
An ordered list. Each bait has a price, a fail chance (catch nothing), and per-tier weight multipliers.
string
required
Inventory item key for the bait.
string
required
Display name in the supplies shop and bait radial.
number
required
Shop price. Should match the matching
Config.shop.items entry.number
required
Chance (0–1) to catch nothing on a successful minigame. Better bait should fail less.
table
required
Per-tier weight multipliers —
junk, common, uncommon, rare, epic, legendary. A 0.0 makes that tier impossible with this bait.string
Optional per-bait image URL for the bait radial that overrides
Config.Images. Without it the radial uses the images/ art (then the bridge’s fish icon). Separate from the inventory PNG.Fish & junk — Config.fish
Every catch entry: item key, label, rarity tier, sell price, held prop, and an optional intra-tier weight.
string
required
Inventory item key. Must exist in your inventory for the player to receive the catch (junk entries omit a granted item — see below).
string
required
Display name.
string
required
One of
junk, common, uncommon, rare, epic, legendary.number
Sell price. Junk entries omit
price (they are not sellable items).string
required
Prop model used for the ground spawn / held-fish presentation.
number
default:"1"
Optional bias within a tier — lower makes a fish rarer among its tier-mates (e.g. the Golden Koi at
0.3).Junk — Config.junk
item key — they are not granted to the inventory, only shown as a “you pulled up junk” result with a real shell/critter prop. Set enabled = false to remove junk from the catch pool entirely.
Hotspot zones — Config.zones
Players can fish anywhere; standing inside a zone applies its per-tier multipliers on top of bait. Zones only ever boost (or reduce) odds — they never gate fishing.
string
required
Unique zone ID.
string
required
Display / debug name.
vec3
required
Zone center.
number
required
Zone radius in game units.
table
required
Per-tier multipliers applied while inside the zone. Tiers you omit are unchanged (multiplier of 1).
Catch sequence — Config.catchSeq
The ground spawn, pickup, hold animation, and the flopping-fish effect after a successful catch.
number
default:"1.4"
Raycast circle radius around the ped used to find a ground spot for the catch.
table
Pickup animation —
dict, clip, flag, durationMs.table
Carry/hold animation —
dict, clip, flag.number
default:"2600"
How long the player holds up the catch, in milliseconds.
table
Held-prop attachment (left hand) —
bone, pos, rot.table
The whole-entity flop the fish does on the ground before pickup. Driven by entity motion (not bones), so it works on every prop.
Flop tuning keys
Flop tuning keys
enabled— turn the flop on/off.durationMs— flop time before the player reaches for it.sideRoll— base roll that lays the fish on its side. If a model lies the wrong way, setsideRoll = 0andpitch = 90instead.pitch— alternate axis for laying the fish flat.speed— flop tempo.rockDeg— how far it rocks past the side-roll each slap.yawDeg— side-to-side body swing.hop— vertical hop height (m) per slap.groundOffset— rest height above the ground (≈ the fish’s half-thickness).decay—0..1, how much the flopping tires out over the duration.
Minigames — Config.minigame
Selects and tunes the four NUI minigames. Each game’s difficulty block is sent to its NUI.
string
default:"random"
random picks from pool each catch; static always uses static.string
default:"tension"
The minigame used when
mode = 'static'.number
default:"2500"
Anti-cheat floor: a
success reported faster than this is rejected server-side. Keep it near default unless you also shorten the games.string[]
The minigames eligible in
random mode.boolean
default:"true"
Procedural UI sounds in the minigames. Set
false to mute.tension, whirlpool, castmeter, rhythm) are documented in full on the Minigames page.
Death cancellation — Config.death
boolean
default:"true"
When on, an in-progress fishing attempt (cast, bite wait, or minigame) is cancelled if the player dies — so they are never left stuck in a fishing state.
atlasBridge. If your server uses a custom death system and fishing does not cancel on death, route your framework’s death event through the bridge with a convar in server.cfg:
Selling — Config.sell
string
default:"select"
all sells everything at once; select lets the player choose what to sell.string
default:"radial"
When
mode = 'select': radial (radial menu) or input (number input).string
default:"bank"
Bridge money account paid into — typically
cash or bank.Supplies shop — Config.shop
The custom NUI shop that sells the rod and baits. Every key here must exist in your inventory.
string
default:"Fishing Supplies"
Shop window title.
string[]
default:"{ 'cash', 'bank' }"
Accounts the player may pay with. The first entry is the default.
table[]
required
Catalog entries —
key, label, price. Keep prices in sync with Config.baits[].price.Boat rental — Config.boatrental
Optional. A second ped opens a boat shop NUI; the server spawns the chosen boat. One rental per player; a 1s client tracker despawns the boat if the renter strays past cleanupDistance, and the bridge auto-cleans it on disconnect.
boolean
default:"true"
Enables the rental ped and boat shop. Set
false to remove the system.string
default:"cash"
Account rentals are charged from —
cash or bank. Flat fee, no refund.boolean
default:"true"
Drop the player into the boat on spawn.
number
default:"180.0"
Despawn the rental if the renter gets this far (m) from it.
number
default:"1000"
Distance-tracker tick. Only runs while a rental is active.
table
Rental ped —
model, coords, scenario, interact (same options as the fisherman), blip.vec4
default:"vec4(-1850.6, -1235.9, 0.2, 200.0)"
Water spawn point for the rented boat. Placeholder — move it to valid water.
vec4
default:"vec4(-2100.0, -1020.0, 12.0, 90.0)"
Offscreen showroom point for the boat preview camera.
string
default:"nil"
Optional explicit image template where
{model} is replaced with the boat model (a local or CDN URL). When set it wins; when nil, boat art comes from Config.Images (then the inline SVG fallback).table[]
Boat catalog —
model, label, price (flat session cost), desc. Defaults are stock GTA V boats from seashark up to tug.Artwork — Config.Images
Artwork loads from the resource’s images/ folder by default — drop PNGs named by item/boat key, no CDN required. The 31 item images (rod, baits, fish) ship pre-filled; the boat folder is empty for you to add your own renders. Files are served straight to the UI over CEF’s nui:// protocol, so there’s nothing to host.
base .. key .. '.' .. extension, e.g. nui://atlasFishing/images/items/ + fish_tuna + .png. The default config:
Missing files fall back gracefully. If a file isn’t present, that one item or boat shows its built-in placeholder (a glyph icon, or the inline SVG for boats) — never a broken image. So you can drop art in piece by piece; each item lights up as soon as its PNG exists.
Use a CDN instead
Point anybase at an https:// URL and the script builds CDN URLs the same way. Override per-surface (Shops, BoatRental, Radial) when that art lives in a different folder; a per-surface base falls back to base.
string
default:"png"
File extension appended to every key (without the dot).
string
default:"nui://atlasFishing/images/items/"
Global base, used by any surface that doesn’t set its own. A trailing
/ is optional. A local nui:// path by default; set an https:// URL for a CDN. Empty/nil → placeholder.string
default:"nil"
Base for the supplies shop (rod + baits). Keyed by item key.
nil → falls back to base.string
default:"nui://atlasFishing/images/boats/"
Base for the boat-rental showroom. Keyed by boat model. Overridden by
Config.boatrental.imageUrl if that template is set.string
default:"nil"
Base for the bait and sell radials. Keyed by item key.
nil → falls back to base.Player messages — Config.notify
Short, customer-facing strings. Keep them brief so they fit a notification.
Editable hooks
editable/client.lua and editable/server.lua expose Fishing.Hooks — callbacks that fire at key moments. They are safe to edit, load before the rest of each side, and run as no-ops when left empty. Use them for logging, custom rewards, or HUD toggles.
