Short answer: Pug's fishing script, sold here as Advanced Fishing, needs PolyZone and oxmysql running before it, optionally ox_lib, one menu and one target resource, plus the two minigames packed inside its own folder. On QBCore, reputation lives in player metadata; on ESX you import one SQL table. Before players touch it, fix three item names in the ESX item block, give the rare treasure item a real definition, and price the ox_inventory shop.

That summary comes from opening the zip itself: fxmanifest.lua, config.lua, readme.md, the SQL file and the Lua that ships unescrowed. Nobody on our side has started this resource on a live server, so take what follows as a reading of the files, not a play report.

The build in the download

The manifest reports version 1.4.1 (fx_version 'cerulean', lua54 'yes'). Pug first released the fishing job on the Cfx.re forum in August 2022, and on 26 August 2025 announced Fishing 2.0, a rewrite covering QBCore, ESX and QBox. The steps here describe 1.4.1 only. A purchase covers updates to this resource for as long as Pug keeps shipping them, so if you want the 2.0 build, write to us from your order email for the newer build rather than trying to apply these notes to it.

Resources to start before pug-fishing

  • PolyZone: the single name in dependencies; the client pulls in five of its zone scripts.
  • oxmysql: @oxmysql/lib/MySQL.lua opens the server script list.
  • ox_lib: included as @ox_lib/init.lua, and the manifest comment says you may hash that line out on a server without it.
  • A menu and a target: Config.Menu is qb-menu or ox_lib; Config.Target is qb-target, ox_target or qtarget.
  • qb-skillbar and qb-lock: both sit under minigames/ with a manifest each, so they install as separate resources. The skilled and professional rods call them by name through Config.SkilledRodGame and Config.ProfessionalRodGame.

The manifest also declares dependency '/assetpacks', which is how escrowed resources load.

Choices in config.lua

Make these first; the item and database steps follow from them.

  • Framework is "QBCore" or "ESX", paired with Config.CoreName (qb-core or es_extended). There is no Qbox option in 1.4.1.
  • Config.InventoryType: qb, ox, lj, quasar or neither.
  • Config.Phone: qb, renewed, quasar, gks or road. It only decides how tournament mail reaches the player; the send code is in client/open.lua.
  • Casting uses control 47, labelled "G" (Config.FishingKey, Config.FishingKeyText).
  • Config.BoatRequired and Config.LockedZones ship as false, so by default neither a boat nor a set zone is required. Switch on locked zones and casting is limited to the polygons in Config.LockedLocationFishingZone.
  • Config.AllUsesPsUiLock moves every rod onto ps-ui circles; Config.NW_fishingGame hands rods to a third-party minigame instead. Leave the first off if you use the second, as the file notes.
  • Config.PugSlingScript defaults to true. It just fires an event for Pug's sling resource after a catch; ignore it if you do not run that.

Items, images and the name mismatches

Each framework has its own folder of item art: (QBCORE-ONLY)/images and (ESX-ONLY)/images carry 35 PNGs apiece. Drop the right set into your inventory's image directory.

QBCore owners get item lines for qb-core/shared/items.lua in the readme, a line for qb-core/server/players.lua that adds the fishingrep metadata field, a tooltip snippet for qb-inventory, and a /giveitem change that gives lures durability: 1000 uses on fishinglure, 1500 on fishinglure2.

ESX owners get a ready block for ox_inventory/data/items.lua. Do not paste it unedited. The loot table in client/open.lua and the prices in Config.SellFishies hand out killerwhale and rainbowtrout, but the block defines killerwhalemeat and rainbow-trout. Rename those two entries to match the code, or players will receive items the inventory does not know.

Both frameworks share one more gap: Config.SuperRareitem is actualbrain, a chest reward given in server/sv_open.lua, and neither item list contains it. Define it, or change the key to an item your server already has.

Reputation storage on ESX

QBCore needs no table, because rep is stored in metadata. ESX needs FishingRep.sql, which creates pug_fishing with id, citizenid and fishingrep. The readme sends you to an (ESX-ONLY-SQL) folder; the file is actually in (ESX-ONLY).

Locations, tournaments, rods and the shop

Everything is placed on the default map, so move these if your map differs:

  • Peds: Config.TournamentPedLoc, Config.SellShopPedPedLoc, Config.GemsBuyingPedLoc.
  • Rod bench: Config.CrafingRodLocation (the typo is in the key name, keep it).
  • Tournament areas: Config.TournamentZone holds tournament1 to tournament4; raise Config.AmountOfZones if you add a fifth.

Timings are in minutes: a tournament can start every 150 (Config.TournamentCooldowns), sign-up stays open for 15 (Config.TournamentTimeToSignUp), and a round lasts 35 (Config.LengOfActiveTournament). Config.CraftRods sets the upgrade path: the skilled rod costs 2000 and needs 350 rep, a base fishingrod and a skill-reel; the professional rod is 5000 and asks for 1000 rep plus a skilled rod and a pro-reel. Catch and gem prices sit in Config.SellFishies and Config.SellGems.

On QBCore the readme asks you to stock fishingrod and fishingbait in a shop you already run. On ox_inventory, server/sv_open.lua registers a "Fish Market" through the pug-fishing:server:OpenShop event. It also lists fishicebox, diving_gear and diving_fill, which appear in neither item list, and every price is 0. Set real prices before the shop goes live.

Setup order, start to finish

  1. Start PolyZone, oxmysql, ox_lib if you keep it, and your menu and target resources.
  2. Install qb-skillbar and qb-lock out of minigames/.
  3. Register the items and copy the images for your framework, applying the renames above.
  4. QBCore: add the fishingrep metadata line. ESX: import FishingRep.sql.
  5. Go through config.lua, then fix the shop list in server/sv_open.lua.
  6. Put ensure pug-fishing below its dependencies in server.cfg.
  7. Test with /fishrep. QBCore registers it for every player; the ESX branch restricts it to admins.

Every Lua file except the manifests appears in escrow_ignore, so you can read and patch the client and server code when something misbehaves.

Related reading

The listing and download for Advanced Fishing cover what ships with it. For another job from the same studio, see Advanced Car Chopping; everything else Pug makes is on the Pug studio page. Pug also appears in our Kevin Scripts vs Pug coke scripts comparison.

Sources