Skip to content

Usage ​

How to fish ​

  1. Equip a fishing rod from your inventory.
  2. Stand near water and face it - the resource checks that water is in front of you.
  3. Use the rod item to cast your line.
  4. Wait for a bite, then interact to reel in.

By default, players can only fish inside designated fishing zones. Set AllowFishingOutsideZones = true in configs/zones.lua to allow fishing anywhere near water with reduced loot (common and uncommon only). Toggle zone blips at the Fishery NPC to find them on the map.

Zones ​

There are two zone types, each requiring a different bait:

Zone typeRequired baitNotable catches
Freshwaterfishing_bait_wormBullhead, Carp, Catfish, Perch, Rainbow Trout, Northern Pike, Jellyfish
Saltwaterfishing_bait_lugwormCroaker, Flounder, Sardine, Salmon, Tuna, Barracuda, Coral Grouper, Jellyfish

Zones on the map

Fishing zone blips can be toggled from the Fishery NPC (Selling Station).

Catch rates ​

Weighted catch probability within a designated zone:

RarityFreshwaterSaltwater
Common~70%~76%
Uncommon~20%~20%
Rare~9%~3%
Very Rare~1%~0.9%
Treasure (case)~0.1%~0.1%

Outside a zone the pool is limited to common and uncommon only.

Fishing rods ​

Higher-tier rods increase the weight of fish caught (heavier = higher sell price) and last longer before breaking.

RodRarityWeight modDurability loss/castShop price
BasicUncommon×0.81%$100
SportRare×1.00.5%$200
ProfessionalEpic×1.20.2%$550
AquaEpic×1.50.15%$750
GoldenLegendary×1.50.1%$1,000
Prodigy / SunsetEpic×1.4 / ×1.50.15%Tournament/challenge reward

Trash loot ​

Alongside fish, you can occasionally reel in trash items such as a fishing boot or a plastic cup. Using a fishing boot from your inventory opens a random loot roll:

ItemChanceAmount
Scrapmetal35%1–2
Rubber20%1–3
Gold Coins15%3–7
Ring10%2–5

Selling ​

Bring caught fish to a Selling Station and interact with the NPC to sell. Price is calculated from the fish's base value multiplied by its actual weight.

Daily challenges ​

Three challenges are generated each day. Challenge types:

TypeDescription
Catch X amountCatch a total of X fish
Catch X of a speciesCatch X fish of a specific species
Catch X kgCatch fish totalling X kg

Completing a daily challenge pays a cash reward ($250–$1,500 depending on difficulty). Progress and rewards are tracked at the Fishing Profile Board NPC.

Weekly & monthly rewards ​

The top fishers over a week or month earn prizes delivered to their personal winnings stash:

PeriodTop prize
WeeklyGolden fishing rod + $2,000 cash
MonthlyTrophy + Golden fishing rod + $5,000 cash

Configuration ​

configs/zones.lua ​

Each zone entry follows this structure:

lua
{
    name   = "Zone Name",
    coords = vector3(x, y, z),  -- centre of the zone
    radius = 150.0,              -- zone radius in metres
    bait   = "fishing_bait_worm",
    loot   = FreshwaterLoot,     -- or SaltwaterLoot
    zone   = "Freshwater",       -- or "Saltwater"
}

configs/loot.lua ​

Key variables:

VariableDescription
FishingLootAll fish species with weight range, model and base price
FishingLootTablesFish assigned to rarity tiers per zone type
FreshwaterLoot / SaltwaterLootWeighted rarity chances per zone type
PricesSell price per rarity tier per zone type

configs/fishing_rods.lua ​

Each rod entry:

lua
rod_item_name = {
    weight  = 1.0,      -- catch weight multiplier
    consume = 0.005,    -- durability lost per cast (1.0 = fully broken)
    price   = 200,      -- shop price (omit for non-purchasable rods)
    rarity  = "RARE",
    model   = `pr_fishingrod_03`,
}

configs/challenges.lua ​

VariableDescription
DailyChallengesNumber of daily challenges generated (default: 3)
ChallengesChallenge types with step amounts and cash rewards
Rewards.weekly / Rewards.monthlyItem + cash reward pool for tournament winners

configs/stations.lua ​

VariableDescription
FisheryBlipMap blip settings for selling station NPCs (sprite, color, scale)
SellingStationsList of selling station locations and headings
FishingProfileNPCPosition and blip settings for the profile board NPC
lua
FisheryBlip = {
    sprite = 317,
    color = 3,
    scale = 0.85,
}

Exports ​

For scripts that replace the default ped + ox_target UI, prp-fishing exposes client-side exports:

ExportReturnsDescription
ToggleZoneBlips()booleanToggle fishing zone blips. Returns the new visibility state.
SetZoneBlips(show)booleanExplicitly show (true) or hide (false) zone blips. Returns the visibility state.
AreZoneBlipsVisible()booleanCurrent zone blip visibility.
OpenSellShop()—Open the fish sell shop (server event).
OpenChallenges()—Open the daily challenges menu.
OpenWinnings()—Open the player's winnings stash.

Example:

lua
-- From a custom job selector or qb-menu replacement
exports['prp-fishing']:SetZoneBlips(true)
exports['prp-fishing']:OpenSellShop()
exports['prp-fishing']:OpenChallenges()