đŸ”Ŧ
RX Scripts
STOREDISCORD
  • 👋Overview
  • Find us
    • 🔗Store
    • 🔗Discord
    • 🔗Youtube
  • 🌐Scripts
    • Garages
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Reports PRO
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Mining
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Fishing
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Player Stores
      • đŸ› ī¸Installation
      • 🚚Jobs DLC
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Drug Labs
      • đŸ› ī¸Installation
      • âœˆī¸Operation DLC
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Hunting
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Plantation
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Gang Wars
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Šī¸Events
    • Housing
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Šī¸Events
    • Chopshop
      • đŸ› ī¸Installation
      • 📝Configurables
    • Death System
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Šī¸Events
    • Recyclers
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Smelters
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Crates & Storages
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Šī¸Exports
      • â†Šī¸Events
    • Black Markets
      • đŸ› ī¸Installation
      • 📝Configurables
    • Hazard Zones
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Report System
      • đŸ› ī¸Installation
      • 📝Configurables
      • â†Ēī¸Exports
      • â†Šī¸Events
    • Billing System
      • đŸ› ī¸Installation
      • â†Ēī¸Exports
      • â†Šī¸Events
Powered by GitBook
On this page
  • Config files
  • Opensource files
  1. Scripts
  2. Fishing

Configurables

In this page, you can see everything that can be configured/changed within this script.

Config files

--[[
BY RX Scripts Š rxscripts.xyz
--]]

--[[
    FISHING ZONES CAN BE FOUND IN config/zones.lua
    FISHES CAN BE FOUND IN config/fishes.lua
    FISHING RODS CAN BE FOUND IN config/rods.lua
    LEVELS CAN BE FOUND IN config/levels.lua
    BAITS & NETS CAN BE FOUND IN config/usables.lua
    MISSIONS CAN BE FOUND IN config/missions.lua
    TRANSLATIONS CAN BE FOUND IN locales/*.lua
    IN HERE YOU CAN FIND THE MORE GENERIC / NOT VERY LONG LISTS CONFIGURATIONS
--]]

Config = {}

Config.SaveInterval = 10                           -- Minutes (Set to 'false' to disable saving on interval, only on server shutdown, or important reached levels)
Config.DiscordWebhook = ''                         -- Discord webhook to send important logs (Set to '' to disable)
Config.Locale = 'en'
Config.ImgDirectory = 'ox_inventory/web/images/'   -- The directory where the images are stored.

Config.AnchorBoats = {
    enabled = true,
    keybind = 'B',
}

Config.FishingLicense = {
    enabled = true, -- Set to false to disable the whole fishing license
    buyable = true, -- Set to false to disable buying the license, use exports to give the license to a player
    price = 1500,
    moneyType = 'bank',
    restricts = {
        catching = true,   -- If true, catching a fishing without a license will notify the police and catching will give no benefits
        shopNPC = true,    -- If true, you need a fishing license to open the shop NPC
        sellNPC = true,    -- If true, you need a fishing license to open the sell NPC
        fishingNPC = true, -- If true, you need a fishing license to open the fishing NPC
        boatRenting = true, -- If true, you need a fishing license to rent a boat
    },
}

Config.FishingNPC = { -- NPC to buy fishing license (if enabled) & see routes, level etc..
    enabled = true,   -- Set to false to disable the fishing NPC
    coords = vector3(1317.1320, 4304.3735, 37.0333),
    heading = 49.1477,
    model = 'a_m_m_hillbilly_01',
    blip = {
        enabled = true,
        sprite = 68,
        color = 3,
        label = 'Fisherman',
        display = 2,
        scale = 0.7,
        shortrange = true,
    },
}

Config.ShopNPC = {  -- NPC that opens a shop
    enabled = true, -- Set to false to disable the shop npc
    route = true,   -- If true, the shop NPC will have a route in the fishing npc
    label = 'Fishing Shop',
    moneyType = 'bank',
    model = 'a_m_m_hillbilly_01',
    coords = vector3(1429.5470, 4377.7417, 43.5993),
    heading = 48.8148,
    blip = {
        enabled = true,
        sprite = 68,
        color = 3,
        display = 2,
        scale = 0.7,
        shortrange = true,
    },
    categories = {
        ['Rods'] = {
            { item = 'spinning_rod', amount = 1, price = 2500, label = 'Spinning Rod', requiredLevel = 0, mystery = false },
            { item = 'spincast_rod', amount = 1, price = 1500, label = 'Spincast Rod', requiredLevel = 1, mystery = false },
            { item = 'baitcast_rod', amount = 1, price = 5000, label = 'Baitcast Rod', requiredLevel = 2, mystery = true },
        },
        ['Baits'] = {
            { item = 'worms', amount = 10, price = 2500, label = 'Worms', requiredLevel = 0, mystery = false },
        },
        ['Nets'] = {
            { item = 'net_sm', amount = 1, price = 5000, label = 'Fishing Net (Small)', requiredLevel = 0, mystery = false },
            { item = 'net_md', amount = 1, price = 10000, label = 'Fishing Net (Medium)', requiredLevel = 1, mystery = false },
            { item = 'net_xl', amount = 1, price = 15000, label = 'Fishing Net (XL)', requiredLevel = 2, mystery = true },
        },
    },
}

Config.SellNPC = {  -- NPC that opens a shop to sell fishing stuff
    enabled = true, -- Set to false to disable the selling shop npc
    route = true,   -- If true, the sell NPC will have a route in the fishing npc
    label = 'Fish Selling',
    moneyType = 'bank',
    model = 'a_m_m_hillbilly_01',
    coords = vector3(1381.5995, 4381.9585, 44.1885),
    heading = 188.0122,
    blip = {
        enabled = true,
        sprite = 68,
        color = 3,
        display = 2,
        scale = 0.7,
        shortrange = true,
    },
    categories = { -- Price is per 1
        ['Fishes'] = {
            { item = 'pike',    price = 250,  label = 'Pike',    requiredLevel = 0, mystery = false },
            { item = 'carp',    price = 250,  label = 'Carp',    requiredLevel = 0, mystery = false },
            { item = 'piranha', price = 500,  label = 'Piranha', requiredLevel = 1, mystery = false },
            { item = 'salmon',  price = 1000, label = 'Salmon',  requiredLevel = 2, mystery = false },
            { item = 'shark',   price = 5000, label = 'Shark',   requiredLevel = 3, mystery = true },
        },
    },
}

Config.BoatRentals = { -- Boat rentals (clear table to disable)
    ['Lake Boats'] = {
        model = 'a_m_m_hillbilly_01',
        locations = {
            {
                coords = vector3(1302.5350, 4226.8096, 32.9079),
                heading = 90.5534,
                spawnCoords = vector4(1317.1467, 4217.6895, 29.6056, 254.5664),
                returnCoords = vector3(1305.8408, 4217.5796, 29.7579)
            },
        },
        moneyType = 'bank',
        boats = {
            { model = 'speeder', label = 'Speeder', rentInterval = 30, intervalPrice = 1500, deposit = 10000, requiredLevel = 0, mystery = false },
            { model = 'dinghy',  label = 'Dinghy',  rentInterval = 30, intervalPrice = 2500, deposit = 10000, requiredLevel = 1, mystery = false },
        },
        blip = {
            enabled = true,
            sprite = 68,
            color = 3,
            display = 2,
            scale = 0.7,
            shortrange = true,
        },
    },
    ['Sea Boats'] = {
        model = 'a_m_m_hillbilly_01',
        locations = {
            {
                coords = vector3(-753.3140, -1510.9105, 4.0118),
                heading = 0.5534,
                spawnCoords = vector4(-793.1320, -1516.2852, -0.6457, 114.4813),
                returnCoords = vector3(-799.6685, -1487.3918, -0.5698)
            },
            {
                coords = vector3(23.9022, -2804.3582, 4.7018),
                heading = 353.9784,
                spawnCoords = vector4(36.3151, -2810.0308, 0.1431, 174.8118),
                returnCoords = vector3(57.3152, -2804.7424, -0.0486)
            },
            {
                coords = vector3(3865.6052, 4463.6816, 1.7162),
                heading = 96.9204,
                spawnCoords = vector4(3880.2327, 4480.1450, -0.4719, 268.6510),
                returnCoords = vector3(3876.4958, 4444.5576, -0.4764)
            },
        },
        moneyType = 'bank',
        boats = {
            { model = 'speeder', label = 'Speeder', rentInterval = 30, intervalPrice = 1500, deposit = 10000, requiredLevel = 0, mystery = false },
            { model = 'dinghy',  label = 'Dinghy',  rentInterval = 30, intervalPrice = 2500, deposit = 10000, requiredLevel = 1, mystery = false },
            {
                model = 'tug',        -- Boat model
                label = 'Tug',        -- Boat label
                rentInterval = 30,    -- In minutes, every rentInterval minutes, the player will be charged the intervalPrice
                intervalPrice = 5000, -- Price per interval
                deposit = 10000,      -- Deposit to rent the boat, will be returned when the boat is returned
                requiredLevel = 2,    -- Required fishing level to rent the boat
                mystery = true,      -- If true, the boat will be a mystery boat when not unlocked
            },
        },
        blip = {
            enabled = true,
            sprite = 68,
            color = 3,
            display = 2,
            scale = 0.7,
            shortrange = true,
        },
    },
}

--[[
    ONLY CHANGE THIS PART IF YOU HAVE RENAMED SCRIPTS SUCH AS FRAMEWORK, TARGET, INVENTORY ETC
    RENAME THE SCRIPT NAME TO THE NEW NAME
--]]
---@type table Only change these if you have changed the name of a resource
Resources = {
    FM = { name = 'fmLib', export = 'new' },
    OXTarget = { name = 'ox_target', export = 'all' },
    QBTarget = { name = 'qb-target', export = 'all' },
}
IgnoreScriptFoundLogs = false
--[[
BY RX Scripts Š rxscripts.xyz
--]]

Config.Fishes = {
    ['Carp'] = { -- Must be unique
        item = 'carp',
        findChance = 30, -- Recommended to keep between 1 - 100 (individual chance, no need to sum all fishes up to 100)
        requiredLevel = 0, -- Required level to find the fish
        xp = {
            catchGain = 5, -- XP gained from catching the fish
        },
        difficulty = { -- Difficulty for catching the fish through the minigame
            fishSpeed = 2000,
            fishJumpRange = 50,
            catchTime = { min = 30, max = 60 }, -- Random time in seconds to finish the catching minigame, otherwise fails
        }
    },
    ['Pike'] = { -- Must be unique
        item = 'pike',
        findChance = 30, -- Recommended to keep between 1 - 100 (individual chance, no need to sum all fishes up to 100)
        requiredLevel = 0, -- Required level to find the fish
        xp = {
            catchGain = 5, -- XP gained from catching the fish
        },
        difficulty = { -- Difficulty for catching the fish through the minigame
            fishSpeed = 2000,
            fishJumpRange = 50,
            catchTime = { min = 30, max = 60 }, -- Random time in seconds to finish the catching minigame, otherwise fails
        }
    },
    ['Piranha'] = { -- Must be unique
        item = 'piranha',
        findChance = 20, -- Recommended to keep between 1 - 100 (individual chance, no need to sum all fishes up to 100)
        requiredLevel = 1, -- Required level to find the fish
        xp = {
            catchGain = 10, -- XP gained from catching the fish
        },
        difficulty = { -- Difficulty for catching the fish through the minigame
            fishSpeed = 1500,
            fishJumpRange = 70,
            catchTime = { min = 30, max = 60 }, -- Random time in seconds to finish the catching minigame, otherwise fails
        }
    },
    ['Salmon'] = { -- Must be unique
        item = 'salmon',
        findChance = 10, -- Recommended to keep between 1 - 100 (individual chance, no need to sum all fishes up to 100)
        requiredLevel = 2, -- Required level to find the fish
        xp = {
            catchGain = 20, -- XP gained from catching the fish
        },
        difficulty = { -- Difficulty for catching the fish through the minigame
            fishSpeed = 1000,
            fishJumpRange = 80,
            catchTime = { min = 30, max = 60 }, -- Random time in seconds to finish the catching minigame, otherwise fails
        }
    },
    ['Shark'] = { -- Must be unique
        item = 'shark',
        findChance = 3, -- Recommended to keep between 1 - 100 (individual chance, no need to sum all fishes up to 100)
        requiredLevel = 3, -- Required level to find the fish
        xp = {
            catchGain = 50, -- XP gained from catching the fish
        },
        difficulty = { -- Difficulty for catching the fish through the minigame
            fishSpeed = 500,
            fishJumpRange = 100,
            catchTime = { min = 30, max = 60 }, -- Random time in seconds to finish the catching minigame, otherwise fails
        }
    },
}
--[[
BY RX Scripts Š rxscripts.xyz
--]]

Config.FishingRods = {
    ['Spinning Rod'] = { -- Must be unique
        item = 'spinning_rod', -- Item name
        requiredLevel = 0, -- Required level to use the rod
        breakChance = 30, -- Chance to break the rod on failed catch
        difficulty = { -- Difficulty for catching the fish through the minigame
            reelPower = 5,
            progressPenalty = 3,
            progressIncrement = 2,
            baitSpeed = 2000,
        },
        multipliers = {
            xpGain = 1.0, -- 0% more xp on catching (1.0 is 100%)
        }
    },
    ['Spincast Rod'] = { -- Must be unique
        item = 'spincast_rod', -- Item name
        requiredLevel = 1, -- Required level to use the rod
        breakChance = 20, -- Chance to break the rod on failed catch
        difficulty = { -- Difficulty for catching the fish through the minigame
            reelPower = 7,
            progressPenalty = 4,
            progressIncrement = 3,
            baitSpeed = 1500,
        },
        multipliers = {
            xpGain = 1.1, -- 0% more xp on catching (1.0 is 100%)
        }
    },
    ['Baitcast Rod'] = { -- Must be unique
        item = 'baitcast_rod', -- Item name
        requiredLevel = 3, -- Required level to use the rod
        breakChance = 10, -- Chance to break the rod on failed catch
        difficulty = { -- Difficulty for catching the fish through the minigame
            reelPower = 10,
            progressPenalty = 5,
            progressIncrement = 4,
            baitSpeed = 1000,
        },
        multipliers = {
            xpGain = 1.3, -- 0% more xp on catching (1.0 is 100%)
        }
    },
}
--[[
BY RX Scripts Š rxscripts.xyz
--]]

Config.Baits = {
    ['worms'] = { -- Item name of the bait
        requiredLevel = 0, -- Required level to use this bait
        attractTime = { min = 5, max = 30 }, -- Random time in seconds the bait will attract fishes
        attracts = { -- Fishes that will be attracted by this bait (key from config/fishes.lua)
            'Carp',
            'Pike',
            'Piranha',
            'Salmon',
            'Shark',
        }
    },
}

Config.MaximumNets = 3 -- Maximum nets that can be laying down at the same time per player
Config.MinDistanceNets = 50 -- Minimum required distance between nets

Config.Nets = { -- Nets to throw in zones to catch fish living in that specific zone over time
    ['net_sm'] = { -- Item name to use the net
        label = 'Fishing Net (Small)', -- Label of the net
        requiredLevel = 0, -- Required level to use this net
        catchTime = { min = 5, max = 10 }, -- Random time in minutes to catch 1 fish (based on the spawnChance of a fish)
        maximumFish = 20, -- Maximum fish that can be caught by the net
        xp = {
            throwGain = 10, -- XP gained from throwing the net
            catchGain = 1, -- XP gained from 1 fish caught by the net or -1 to use the fish xp
            returnGain = 10, -- XP gained from returning the net
        },
        allowedZones = { -- Zones where this net can be thrown (key from config/zones.lua)
            'Lake',
        },
        allowedBoats = { -- Boat models where this net can be thrown & returned
            'speeder',
            'dinghy',
            'tug',
        },
        blip = { -- Blip that will be shown on the map when thrown for the player
            enabled = true,
            sprite = 68,
            color = 24,
            display = 2,
            scale = 0.7,
            shortrange = true,
        },
    },
    ['net_md'] = { -- Item name to use the net
        label = 'Fishing Net (Medium)', -- Label of the net
        requiredLevel = 1, -- Required level to use this net
        catchTime = { min = 5, max = 10 }, -- Random time in minutes to catch 1 fish (based on the spawnChance of a fish)
        maximumFish = 30, -- Maximum fish that can be caught by the net
        xp = {
            throwGain = 10, -- XP gained from throwing the net
            catchGain = 1, -- XP gained from 1 fish caught by the net or -1 to use the fish xp
            returnGain = 10, -- XP gained from returning the net
        },
        allowedZones = { -- Zones where this net can be thrown (key from config/zones.lua)
            'Lake',
            'Deep Sea',
        },
        allowedBoats = { -- Boat models where this net can be thrown & returned
            'speeder',
            'tug',
        },
        blip = { -- Blip that will be shown on the map when thrown for the player
            enabled = true,
            sprite = 68,
            color = 24,
            display = 2,
            scale = 0.7,
            shortrange = true,
        },
    },
    ['net_xl'] = { -- Item name to use the net
        label = 'Fishing Net (XL)', -- Label of the net
        requiredLevel = 2, -- Required level to use this net
        catchTime = { min = 5, max = 10 }, -- Random time in minutes to catch 1 fish (based on the spawnChance of a fish)
        maximumFish = 50, -- Maximum fish that can be caught by the net
        xp = {
            throwGain = 10, -- XP gained from throwing the net
            catchGain = 1, -- XP gained from 1 fish caught by the net or -1 to use the fish xp
            returnGain = 10, -- XP gained from returning the net
        },
        allowedZones = { -- Zones where this net can be thrown (key from config/zones.lua)
            'Deep Sea',
        },
        allowedBoats = { -- Boat models where this net can be thrown & returned
            'tug',
        },
        blip = { -- Blip that will be shown on the map when thrown for the player
            enabled = true,
            sprite = 68,
            color = 24,
            display = 2,
            scale = 0.7,
            shortrange = true,
        },
    }
}
--[[
BY RX Scripts Š rxscripts.xyz
--]]

Config.FishingZones = {
    ['Lake'] = {
        requiredLevel = 0, -- Required level to fish in these zones
        zones = {
            {
                type = 'sphere',
                coords = vector3(366.6110, 3929.9873, -5.6992),
                radius = 250,
                debug = false,
                route = {
                    enabled = true,
                    coords = { x = 366.6110, y = 3929.9873},
                },
            },
            {
                type = 'sphere',
                coords = vector3(1174.3335, 3960.6455, 31.8587),
                radius = 250,
                debug = false,
                route = {
                    enabled = true,
                    coords = { x = 1174.3335, y = 3960.6455},
                },
            },
            {
                type = 'sphere',
                coords = vector3(2061.5610, 4253.6553, 31.2383),
                radius = 250,
                debug = false,
                route = {
                    enabled = true,
                    coords = { x = 2061.5610, y = 4253.6553},
                },
            },
        },
        fishes = {
            'Carp',
            'Pike',
            'Piranha',
        },
        route = {
            enabled = true,
            coords = { x = -1774.0654, y = -1796.2740},
        },
        blip = {
            enabled = true,
            sprite = 317,
            color = 3,
            display = 2,
            scale = 0.7,
            shortrange = true,
        },
        radiusBlip = {
            enabled = true,
            color = 3,
            alpha = 80,
            shortrange = true,
        }
    },
    ['Deep Sea'] = {
        requiredLevel = 1, -- Required level to fish in these zones
        zones = {
            {
                type = 'sphere',
                coords = vector3(-2731.9763, -1860.8646, -0.7885),
                radius = 1000,
                debug = false,
                route = {
                    enabled = true,
                    coords = { x = -2731.9763, y = -1860.8646},
                },
            },
            {
                type = 'sphere',
                coords = vector3(354.1269, -4476.5508, -0.8757),
                radius = 1000,
                debug = false,
                route = {
                    enabled = true,
                    coords = { x = 354.1269, y = -4476.5508},
                },
            },
            {
                type = 'sphere',
                coords = vector3(5130.1904, 5211.5317, -0.2383),
                radius = 1000,
                debug = false,
                route = {
                    enabled = true,
                    coords = { x = 5130.1904, y = 5211.5317},
                },
            },
        },
        fishes = {
            'Carp',
            'Pike',
            'Piranha',
            'Salmon',
            'Shark',
        },
        blip = {
            enabled = true,
            sprite = 317,
            color = 3,
            display = 2,
            scale = 0.7,
            shortrange = true,
        },
        radiusBlip = {
            enabled = true,
            color = 3,
            alpha = 80,
            shortrange = true,
        }
    }
}
--[[
BY RX Scripts Š rxscripts.xyz
--]]

Config.MaxMissions = 6 -- Max amount of missions that can be active at the same time (make sure its 1 less than the amount of missions in the table below so it can rotate)

Config.Missions = {
    -- Catch Missions
    ["Catch 20x Pike"] = {
        endTime = 12, -- Time in hours to complete the mission (after this a random other mission will start)
        type = 'catch', -- 'catch' or 'netCatch'
        amount = 20, -- Amount of catches required
        fish = 'Pike', -- Fish to catches (key from config/fishes.lua)
        rewards = {
            xp = 50, -- Set to 0 to disable
            money = 1000, -- Set to 0 to disable
            moneyType = 'bank',
            items = { -- Empty table to disable
            }
        }
    },
    ["Catch 15x Piranha"] = {
        endTime = 24, -- Time in hours to complete the mission (after this a random other mission will start)
        type = 'catch', -- 'catch' or 'netCatch'
        amount = 15, -- Amount of catches required
        fish = 'Piranha', -- Fish to catches (key from config/fishes.lua)
        rewards = {
            xp = 100, -- Set to 0 to disable
            money = 2000, -- Set to 0 to disable
            moneyType = 'bank',
            items = { -- Empty table to disable
                { item = 'worms', amount = 20 },
            }
        }
    },
    ["Catch 10x Salmon"] = {
        endTime = 48, -- Time in hours to complete the mission (after this a random other mission will start)
        type = 'catch', -- 'catch' or 'netCatch'
        amount = 15, -- Amount of catches required
        fish = 'Salmon', -- Fish to catches (key from config/fishes.lua)
        rewards = {
            xp = 200, -- Set to 0 to disable
            money = 5000, -- Set to 0 to disable
            moneyType = 'bank',
            items = { -- Empty table to disable
                { item = 'worms', amount = 30 },
            }
        }
    },
    ["Catch 5x Shark"] = {
        endTime = 72, -- Time in hours to complete the mission (after this a random other mission will start)
        type = 'catch', -- 'catch' or 'netCatch'
        amount = 5, -- Amount of catches required
        fish = 'Shark', -- Fish to catches (key from config/fishes.lua)
        rewards = {
            xp = 300, -- Set to 0 to disable
            money = 5000, -- Set to 0 to disable
            moneyType = 'bank',
            items = { -- Empty table to disable
                { item = 'worms', amount = 50 },
            }
        }
    },
    -- Net Missions
    ["Catch 5x Pike with Net"] = {
        endTime = 24, -- Time in hours to complete the mission (after this a random other mission will start)
        type = 'netCatch', -- 'catch' or 'netCatch'
        amount = 5, -- Amount of throws required
        fish = 'pike', -- Fish to catches (key from config/fishes.lua)
        rewards = {
            xp = 300, -- Set to 0 to disable
            money = 5000, -- Set to 0 to disable
            moneyType = 'bank',
            items = { -- Empty table to disable
                { item = 'worms', amount = 50 },
            }
        }
    },
}
--[[
BY RX Scripts Š rxscripts.xyz
--]]

Config.Levels = { -- Levels must be incremental by 1, starting from 1
    -- level 0 is the default starter level everyone has
    [1] = 100, -- 100 xp needed to reach level 1
    [2] = 350,
    [3] = 650,
    [4] = 1100,
    [5] = 1900,
    [6] = 2800,
    [7] = 4000,
}

Opensource files

--[[
BY RX Scripts Š rxscripts.xyz
--]]

function ShowTextUI(text, opts)
    lib.showTextUI(text, opts)
end

function HideTextUI()
    lib.hideTextUI()
end

function AddFishingNPCTarget(ped)
    if OXTarget then
        OXTarget:addLocalEntity(ped, {
            {
                label = 'Open Fisherman',
                name = 'openFishingNPC',
                icon = 'fas fa-fish',
                distance = 2.5,
                onSelect = function(data)
                    OpenFishingUI()
                end,
            }
        })
    elseif QBTarget then
        QBTarget:AddTargetEntity(ped, {
            options = {
                {
                    label = 'Open Fisherman',
                    icon = 'fas fa-fish',
                    targeticon = 'fas fa-fish',
                    action = function(entity)
                        OpenFishingUI()
                    end,
                }
            },
            distance = 2.5,
        })
    end
end

function AddShopNPCTarget(npc)
    if OXTarget then
        OXTarget:addLocalEntity(npc, {
            {
                label = 'Open Fishing Shop',
                name = 'openFishingShop',
                icon = 'fas fa-shopping-cart',
                distance = 2.5,
                onSelect = function(data)
                    OpenShopNPC()
                end,
            }
        })
    elseif QBTarget then
        QBTarget:AddTargetEntity(npc, {
            options = {
                {
                    label = 'Open Fishing Shop',
                    icon = 'fas fa-shopping-cart',
                    targeticon = 'fas fa-shopping-cart',
                    action = function(entity)
                        OpenShopNPC()
                    end,
                }
            },
            distance = 2.5,
        })
    end
end

function AddSellNPCTarget(npc)
    if OXTarget then
        OXTarget:addLocalEntity(npc, {
            {
                label = 'Open Fishing Selling',
                name = 'openFishingSelling',
                icon = 'fas fa-shopping-cart',
                distance = 2.5,
                onSelect = function(data)
                    OpenSellNPC()
                end,
            }
        })
    elseif QBTarget then
        QBTarget:AddTargetEntity(npc, {
            options = {
                {
                    label = 'Open Fishing Selling',
                    icon = 'fas fa-shopping-cart',
                    targeticon = 'fas fa-shopping-cart',
                    action = function(entity)
                        OpenSellNPC()
                    end,
                }
            },
            distance = 2.5,
        })
    end
end

function AddBoatRentalNPCTarget(npc, rentalName, locIndex)
    if OXTarget then
        OXTarget:addLocalEntity(npc, {
            {
                label = 'Open '..rentalName,
                name = 'openBoatRental',
                icon = 'fas fa-ship',
                distance = 2.5,
                onSelect = function(data)
                    OpenBoatRental(rentalName, locIndex)
                end,
            }
        })
    elseif QBTarget then
        QBTarget:AddTargetEntity(npc, {
            options = {
                {
                    label = 'Open '..rentalName,
                    icon = 'fas fa-ship',
                    targeticon = 'fas fa-ship',
                    action = function(entity)
                        OpenBoatRental(rentalName, locIndex)
                    end,
                }
            },
            distance = 2.5,
        })
    end
end

function RemoveShopNPCTarget(ped)
    if OXTarget then
        OXTarget:removeLocalEntity(ped, 'openFishingShop')
    elseif QBTarget then
        QBTarget:RemoveTargetEntity(ped, 'Open Fishing Shop')
    end
end

function RemoveSellNPCTarget(ped)
    if OXTarget then
        OXTarget:removeLocalEntity(ped, 'openFishingSelling')
    elseif QBTarget then
        QBTarget:RemoveTargetEntity(ped, 'Open Fishing Selling')
    end
end

function RemoveTarget(ent, name)
    if OXTarget then
        OXTarget:removeLocalEntity(ent, name)
    elseif QBTarget then
        QBTarget:RemoveTargetEntity(ent, name)
    end
end

function GetPlacingBaitCoords()
    local coords = GetEntityCoords(PlayerPedId())
    local forward = GetEntityForwardVector(PlayerPedId())
    coords = coords + forward
    local ret, z = GetGroundZFor_3dCoord(coords.x, coords.y, coords.z, 0, false)
    coords = vector3(coords.x, coords.y, z)
  
    local heading = GetEntityHeading(PlayerPedId())

    return coords, heading
end

function PlayPlaceBaitAnim()
    FM.anim.play({
        anim = 'base',
        dict = 'amb@world_human_gardener_plant@male@base',
        duration = 3000,
    })
end

function GetItemsAmounts()
    return FM.callback.sync('fishing:getItemsAmounts')
end

function StartFishingMinigame(reelPower, progressPenalty, progressIncrement, baitSpeed, fishSpeed, fishJumpRange, catchTime, baitName, fishName)
    local res = promise.new()

    SetNuiFocus(true, true)
    SendReactMessage('startFishing', {
        reelPower = reelPower,
        progressPenalty = progressPenalty,
        progressIncrement = progressIncrement,
        baitSpeed = baitSpeed,
        fishSpeed = fishSpeed,
        fishJumpRange = fishJumpRange,
        catchTime = catchTime,
        baitName = baitName,
        fishName = fishName,
    })

    return res
end

---@param type 'returnBoat' | 'returnNet'
function ShowMarker(type, coords)
    if type == 'returnBoat' then
        DrawMarker(35, coords, 0, 0, 0, 0, 0, 0, 3.0, 3.0, 3.0, 255, 100, 100, 100, false, true, 2, false, false, false, false)
    elseif type == 'returnNet' then
        DrawMarker(32, coords, 0, 0, 0, 0, 0, 0, 3.0, 3.0, 3.0, 100, 100, 255, 100, true, true, 2, false, false, false, false)
    end
end

function ShowHelpNotification(msg, thisFrame, beep, duration)
    AddTextEntry('helpNotification', msg)

    if thisFrame then
        DisplayHelpTextThisFrame('helpNotification', false)
    else
        if beep == nil then
            beep = true
        end
        BeginTextCommandDisplayHelp('helpNotification')
        EndTextCommandDisplayHelp(0, false, beep, duration or -1)
    end
end

local function notifyPolice(coords, msg)
    local blip = AddBlipForCoord(coords.x, coords.y, coords.z)
    SetBlipSprite(blip, 161)
    SetBlipScale(blip, 1.0)
    SetBlipColour(blip, 1)
    SetBlipAsShortRange(blip, false)
    BeginTextCommandSetBlipName("STRING")
    AddTextComponentString(_L('blip_suspicious_fishing_activity'))
    EndTextCommandSetBlipName(blip)

    FM.utils.notify(msg, 'error')

    Wait(20000)
    RemoveBlip(blip)
end

RegisterNetEvent('fishing:notifyPolice', function(coords, msg)
    notifyPolice(coords, msg)
end)
--[[
BY RX Scripts Š rxscripts.xyz
--]]

local function getPoliceSources()
    local players = FM.utils.getPlayers()
    local policeSources = {}

    for src, p in pairs(players) do
        if p.getJob().name == 'police' then
            policeSources[#policeSources+1] = src
        end
    end

    return policeSources
end

function NotifyPolice(coords, msg)
    local police = getPoliceSources()

    for _, src in pairs(police) do
        TriggerClientEvent('fishing:notifyPolice', src, coords, msg)
    end
end

function HasFishingLicense(src)
    local p = FM.player.get(src)
    if not p then return false end

    local identifier = p.getIdentifier()
    if not Fishers[identifier] then return false end

    return Fishers[identifier].license
end

--[[
    esx_licenses INTEGRATION FOR CHECKING FISHING LICENSE
    UNCOMMENT FUNCTION BELOW
    RENAME 'fishing_license_name_here' TO YOUR FISHING LICENSE NAME
    REMOVE/COMMENT THE FUNCTION ABOVE: function HasFishingLicense(src) ...... end
]]
-- function HasFishingLicense(src)
--     local hasLicense = promise.new()

--     TriggerEvent('esx_license:checkLicense', src, 'fishing_license_name_here', function(bool)
--         hasLicense:resolve(bool)
--     end)

--     return Citizen.Await(hasLicense)
-- end

FM.callback.register('fishing:getItemsAmounts', function(src)
    local p = FM.player.get(src)
    if not p then return end

    local items = p.getItems()
    local amounts = {}

    for _, item in pairs(items) do
        if amounts[item.name] then
            amounts[item.name] = amounts[item.name] + item.amount
        else
            amounts[item.name] = item.amount
        end
    end

    return amounts
end)

RegisterNetEvent('fishing:onLicenseBought', function(playerId)
    -- This event will be called whenever a player bought a fishing license
end)
PreviousInstallationNextExports

Last updated 6 months ago

🌐
📝