NullSect
Systems nominal

Scripts / jobs · v0.6.0

Fishing

A catch minigame, moving markets, tournaments and 30+ catchables, decided by the server.

  • Qbox
  • QBCore
  • ESX

Features

  1. 01

    Catch minigame

    Keep the fish inside the bar until the meter fills. Five fish behaviours, difficulty from species and size.

  2. 02

    Zones and windows

    Freshwater, coast and deep sea, each with its own species. Some only bite at night, at dawn or in a storm.

  3. 03

    Gear and levels

    5 rod tiers, 6 baits, tackle upgrades and 50 levels that unlock rods, zones and boats.

  4. 04

    Moving market

    Prices drift, drop when a species is flooded and one hot species pays extra. Three daily orders.

  5. 05

    Tournaments and events

    Scheduled contests with a live board, fish frenzies, migrating shoals and golden hour.

Requirements

Frameworks
Qbox, QBCore, ESX
Requires
oxmysql
Works with
ox_lib, ox_target, qb-target, qbx / qb vehiclekeys, ox_fuel, LegacyFuel, cdn-fuel, ps-fuel
Version
0.6.0

Recent changes

Read the docs →

0.6.0

  • Poaching (Config.Features.Poaching, Config.Poaching): three protected species (sea turtle, dusky grouper, great white shark; protected = true in data/species.lua, any species can be made protected) bite only in marine reserves (protected = true zones; two example reserves; the location tool can mark any zone) and only while minPolice police are on duty. The fish market does not buy them; a hidden black market buyer does, at blackMarketMultiplier × the market price, in cash (not counted as market earnings). Landing a protected fish, any fish in a reserve, or selling to the black market can send a dispatch alert with an approximate position (ps-dispatch, cd_dispatch, rcore_dispatch, core_dispatch, a custom function, or a built-in alert for police on duty). Police can inspect a nearby player's catch (target option or /fishinspect), confiscate protected fish and fine them from the bank (never below zero). Protected species never appear in orders, tournaments or events, are never the market's hot species and a server record on one is not announced. With Features.Poaching off they sell at the fish market like any other fish. dispatchJobs sets the job list for the dispatch resource (ps-dispatch filters by job type, e.g. { 'leo' }).
  • Fishing crews (Config.Features.Crews, Config.Crew): invite a nearby player (target option or /fishcrew invite; without ox_lib answer with /fishcrew accept or decline), up to 4 members. Members close to each other (or in the same boat) bite up to 15 % faster and earn up to 30 % more catch XP. A crew gets shared goals (fish count, total kg or one species, sized by the crew) with a reward for every member who landed a fish for it, at most 3 per player per hour (a member leaving during the payout does not skip anyone). /fishcrew opens the crew panel; the HUD shows the crew and the goal while fishing.
  • Boat model suntrite was a typo and is now suntrap (the GTA model name). If your edited config or data/locations.json lists suntrite, rename it to suntrap.
  • New achievements (crew goals 5 / 25 / 100, title Skipper) and a Crew goals top list. The journal marks protected species.
  • Location tool: new place type black market; zones get a marine reserve switch.
  • Database schema v3 (automatic with autoMigrate): profile column crew_goals. Without autoMigrate: run sql/upgrade-0.6.0.sql once.
  • New config: Config.Features.Poaching / Crews, Config.Poaching, Config.Crew. Copy them into your config if you keep an edited one; a missing section keeps the feature off (logged at start). New data: protected species in data/species.lua, reserves in data/zones.lua, crew achievements in data/achievements.lua — copy them if you keep edited data files. Run fishinstall again for the three new items.
  • New locale keys: item_ns_fish_sea_turtle / dusky_grouper / great_white, zone_pacific_bluffs_reserve, zone_southern_reserve, dispatch_*, black_*, inspect_*, police_*, crew_*, crewgoal_*, hud_crew*, target_black_market / inspect / crew_invite, loc_*blackmarket*, loc_protected*, badge_protected, ach_crew_goals_*, achstat_crew_goals, title_skipper, board_crew_goals, err_protected_species, err_not_at_black_market, err_not_police, err_target_gone, err_too_far, err_nothing_to_confiscate, err_no_player_near, err_crew_*, err_not_in_crew.

0.5.0

  • Tournaments: timed contests started by a schedule (Config.Tournament.schedule, server clock) or by an admin (/fishtournament start <heaviest|count|weight> <minutes> [species], end, stop). Everyone who lands a fish while one runs takes part (junk and legendary fish do not count). Live board in the new Tournament tab, your place on the HUD, start and winner announced to everyone. Prizes per place (Config.Tournament.prizes); winners who are offline get theirs on their next login. A running tournament survives a restart.
  • Random events (Config.Events), one at a time every 45–90 minutes: fish frenzy (one zone bites twice as fast, less junk), migration (a species visits a zone and bites there), golden hour (more catch XP), market rush (one species sells for double). Announced, zone events flash on the map, the HUD shows a chip while you fish. Admins: /fishevent start <type> [minutes], stop.
  • Achievements and titles (data/achievements.lua, 19 shipped): bronze / silver / gold goals for fish, species, legends, weight, three-star fish, treasure, earnings, orders and tournament wins, with money / XP rewards paid once. Goals reached before the update unlock on the next login. Some give a title you choose in the new Achievements tab; it shows on the licence, the top lists and the tournament board.
  • Top anglers tab: all-time lists for level, fish, heaviest fish, earnings and legends. The journal shows the server record of every species; beating one is announced (Config.Leaderboard.announceRecords).
  • Boat pictures in the rental panel (nui/boats/<model>.webp); boats you add keep the drawing.
  • Database schema v2 (automatic with autoMigrate): new tables ns_fishing_tournaments, ns_fishing_tournament_entries, ns_fishing_prizes, ns_fishing_achievements; new profile columns title, orders_done, tournament_wins, three_star_catches. Without autoMigrate: run sql/upgrade-0.5.0.sql once.
  • New config: Config.Features.Tournaments / Events / Achievements / Leaderboard, Config.Tournament, Config.Events, Config.Achievements, Config.Leaderboard. Copy them into your config if you keep an edited one; a missing feature switch counts as off. New data file: data/achievements.lua (escrow ignored, editable).
  • /fishreset also removes the player's achievements and title.
  • Character names on the profile are refreshed on login (used by the top lists and tournaments).
  • New locale keys: tab_tournament, tab_board, tab_achievements, tkind_*, tournament_*, event_*, board_*, ach_*, achstat_*, title_*, record_announce, badge_server_record, hud_place, ui_* for the new tabs, err_tournament_*, err_event_*, err_title_locked, admin_*tournament*, admin_*event*.

0.4.0

  • The menus show the item pictures from images/ (the same ones the inventory uses): fish crates, rod rack, bait boxes, order slips, journal cards (undiscovered species as a shadow) and the catch tag on the HUD. Items without a picture (e.g. species you add yourself) keep the drawn silhouette; add images/<item>.png to give them one. The price chalkboard keeps its chalk drawings.
  • Photographic materials for every screen (nui/textures/*.webp, about 1.3 MB): wooden shop wall, laminated licence card, a real slate price board, crate planks for the fish you sell, receipt paper for slips and the catch tag, pegboard and tackle box compartments in the shop, brass gauges for upgrades, a cork board for orders, field guide paper for the journal, wet dock planks and a clipboard for boat rental, a brass porthole on the HUD and real water in the minigame. A missing texture falls back to the previous flat look.
  • nui/textures/build.py rebuilds the textures from their sources in nui/textures/raw/ (not loaded by the game).
  • Location tool (/fishlocations, admins): place fish markets, boat docks (seller, boat spawns, return point, boats on offer) and fishing zones (waters, radius, level, boat rule, map circle) in game on a sea chart. Changes are saved to data/locations.json and reach every player at once, no restart. Defaults from config.lua / data/zones.lua can be edited, switched off and restored. Placement: walk to the spot, E places it.
  • Admin commands: /fishlevel, /fishxp, /fishupgrade, /fishgive (also from the server console).
  • Markets, docks and zones are now sent by the server; the HUD shows the names of zones placed in game.
  • New config: Config.Locations (command, file, viewDistance). Copy it into your config if you keep an edited one; without it the defaults are used. Keep data/locations.json when you update.
  • New locale keys: err_no_permission, err_loc_unknown, admin_usage_level / xp / upgrade / give, admin_level_done / target, admin_xp_done / target, admin_upgrade_done, admin_give_done, loc_*.
  • Fix (tests): two catch tests replaced math.random for every later test, so one test failed about 1 run in 15.

Related

Cart

Your cart is empty.