Fishing Script | Advanced

Preview: YouTube

Tebex: Buy for 19.99€ + VAT

Config
_4p = {

    Framework = "esx", -- Framework you are using (esx, qbcore or custom)

    dbsettings = { -- DATABASE SETTINGS
        leaderboardUpdate = 5 --[[UPDATE LEADERBOARD EVERY X MINUTES, TO PREVENT HIGH SERVER LOADS]] * 60000,
        savePlayerData = 5 --[[SAVE PLAYER DATA EVERY X MINUTES, TO PREVENT DATA LOSS]] * 60000,
    },

    rod_settings = {
        item = "rod", -- ITEM NAME FOR THE FISHING ROD
        breakingsettings = { -- ROD BREAKING SETTINGS
            enabled = true, -- ENABLE ROD BREAKING
            chance = 3, -- CHANCE OF ROD BREAKING (1-100)
            maxFish = 25, -- MAX FISHES YOU CAN CATCH WITH THE ROD (0 = unlimited, till rod breaks)
            -- maxFish = 0 -- MAX FISHES YOU CAN CATCH WITH THE ROD (0 = unlimited, till rod breaks)
        },
        throw_odds = {
            perfect = 100, -- ODDS FOR CATCHING A FISH
            good = 90, -- ODDS FOR CATCHING A FISH
            ok = 70, -- ODDS FOR CATCHING A FISH
            bad = 50, -- ODDS FOR CATCHING A FISH
        },
        pull_out_time = 1500, -- TIME TO PULL OUT THE ROD (IN MS)

        UseItemKeyStandart = "G", -- DEFAULT KEY TO USE THE ROD

        timeToFish = math.random(5000, 10000), -- TIME TO FISH (IN MS)
    },

    
    notify = function(message, source)
        if IsDuplicityVersion() then
            if _4p.Framework == "esx" then
                TriggerClientEvent("esx:showNotification", source, message)
            elseif _4p.Framework == "qbcore" then
                TriggerClientEvent("QBCore:Notify", source, message)
            else
                print("^1[4p-FishingScript] ^3You are using a custom framework, please add a notification function to the config.lua^7")
            end
        else
            if _4p.Framework == "esx" then
                Framework.object.ShowNotification(message)
            elseif _4p.Framework == "qbcore" then
                Framework.object.Functions.Notify(message)
            else
                print("^1[4p-FishingScript] ^3You are using a custom framework, please add a notification function to the config.lua^7")
            end
        end
    end,


    lang = "en", -- LANGUAGE AT BOTTOM OF CONFIG.lua

    generalSettings = {

        command = "fish",

        nicknameProtection = {
            kick = false,
            kickText = "You have been kicked from the server for inappropriate behavior. Please follow the server rules and guidelines to avoid future penalties.",

            names = {
                -- Offensive Terms: The list includes a wide range of offensive terms
                "x","y",
            },
            urls = {
                -- URLs: The URLs contain known spam domains and typical URL patterns that are often used for advertising or phishing.
                "discord.gg/", "https://", "http://", "www.", ".com", ".net", ".org",
            },
            htmlTags = {
                -- HTML Tags: The list includes HTML tags that can be used for Cross-Site Scripting (XSS) attacks. This helps ensure that no HTML tags can be used in usernames, which increases the security of your Server.
                "<script", "</script>", "<iframe", "</iframe>", "<img", "</img>", 
                "<object", "</object>", "<embed", "</embed>", "<form", "</form>", 
                "<input", "</input>", "<button", "</button>", "<link", "</link>",
                "<style", "</style>", "<meta", "</meta>", "<base", "</base>",
                "<body", "</body>", "<head", "</head>", "<html", "</html>", 
                "<title", "</title>", "<div", "</div>", "<span>", "</span>", 
                "<a", "</a>", "<b", "</b>", "<i>", "</i>", "<p", "</p>", "<u>", "</u>", 
                "<center", "</center>", "<marquee", "</marquee>", "<script", "</script>"
            },
        },

        XPPerRarity = { -- XP PER FISH RARITY           
            ["A++"] = 100,
            ["A"] = 50,
            ["B"] = 25,
            ["C"] = 10
        },

        levelNicknames = { -- LEVEL NICKNAMES FOR EVERY 10 LEVELS
            [0] = "Curious Beginner",
            [10] = "Experienced Angler",
            [20] = "Master of Waters",
            [30] = "Fishing Captain",
            [40] = "Legendary Angler",
            [50] = "Supreme Fishmaster",
            [60] = "Guardian of the Deep Waters",
            [70] = "High Sea Fisher",
            [80] = "Virtuoso Angler",
            [90] = "Grandmaster of the Art of Fishing",
            [100] = "God of the Ocean"
        },
    
        RarityMinSell = { -- MINIMUM SELL AMOUNT FOR EVERY RARITY
            ["A++"] = 1,
            ["A"] = 2,
            ["B"] = 5,
            ["C"] = 10
        },

        fishData = { -- FISH DATA FOR THE FISHING SCRIPT (you can easily add more fish, but remember to add the img to the (html/img/fish) folder, with the same name as the fish)
            {name = "Lilawellen-Handfisch", rarity = "A++", chance = 0.1, price_per_fish = 11250.0},
            {name = "Aqua-Tigerneonbarsch", rarity = "A++", chance = 0.5, price_per_fish = 2250.0},
            {name = "Feuerwellen-Handfisch", rarity = "A++", chance = 1.5, price_per_fish = 750.0},
            {name = "Prisma-Nebelfisch", rarity = "A++", chance = 2.5, price_per_fish = 450.0},
            {name = "Goldflossen-Punktbarsch", rarity = "A", chance = 3.0, price_per_fish = 225.0},
            {name = "Feuerfrost-Linienbarsch", rarity = "A", chance = 4.5, price_per_fish = 180.0},
            {name = "Regenbogen-Korallenbarsch", rarity = "A", chance = 5.0, price_per_fish = 135.0},
            {name = "Sonnenstrahlen-Feuerbarsch", rarity = "A", chance = 7.0, price_per_fish = 96.4},
            {name = "Mystik-Kristallbarsch", rarity = "A", chance = 8.0, price_per_fish = 84.4},
            {name = "Sonnenstreifen-Clownfisch", rarity = "B", chance = 10.0, price_per_fish = 45.0},
            {name = "Himmelspunkt-Perlfisch", rarity = "B", chance = 12.0, price_per_fish = 37.5},
            {name = "Goldschatten-Stripenbarsch", rarity = "B", chance = 13.0, price_per_fish = 34.6},
            {name = "Nachtklinge-Schwertfisch", rarity = "B", chance = 10.0, price_per_fish = 45.0},
            {name = "Nachtwald-Streifenbarsch", rarity = "B", chance = 17.0, price_per_fish = 26.5},
            {name = "Glanzstrahl-Silberfisch", rarity = "C", chance = 20.0, price_per_fish = 11.3},
            {name = "Azur-Kometenbarsch", rarity = "C", chance = 45.0, price_per_fish = 5.0},
            {name = "Zebra-Glanzbarsch", rarity = "C", chance = 19.0, price_per_fish = 11.8},
            {name = "Waldwelle-Fisch", rarity = "C", chance = 30.0, price_per_fish = 7.5},
            {name = "Sternenblitz-Aquabarsch", rarity = "C", chance = 20.0, price_per_fish = 11.3}
        },        

        levels = { -- LEVEL DATA FOR THE FISHING SCRIPT, (you can easily add more levels, the level at the top is the max level)
            { level = 100, needxp = 23500 },
            { level = 99, needxp = 23250 },
            { level = 98, needxp = 23000 },
            { level = 97, needxp = 22750 },
            { level = 96, needxp = 22500 },
            { level = 95, needxp = 22250 },
            { level = 94, needxp = 22000 },
            { level = 93, needxp = 21750 },
            { level = 92, needxp = 21500 },
            { level = 91, needxp = 21250 },
            { level = 90, needxp = 21000 },
            { level = 89, needxp = 20750 },
            { level = 88, needxp = 20500 },
            { level = 87, needxp = 20250 },
            { level = 86, needxp = 20250 },
            { level = 85, needxp = 20000 },
            { level = 84, needxp = 19750 },
            { level = 83, needxp = 19500 },
            { level = 82, needxp = 19250 },
            { level = 81, needxp = 19000 },
            { level = 80, needxp = 18750 },
            { level = 79, needxp = 18500 },
            { level = 78, needxp = 18250 },
            { level = 77, needxp = 18000 },
            { level = 76, needxp = 17750 },
            { level = 75, needxp = 17500 },
            { level = 74, needxp = 17250 },
            { level = 73, needxp = 17500 },
            { level = 72, needxp = 17250 },
            { level = 71, needxp = 17000 },
            { level = 70, needxp = 16750 },
            { level = 69, needxp = 16500 },
            { level = 68, needxp = 16250 },
            { level = 67, needxp = 16000 },
            { level = 66, needxp = 15750 },
            { level = 65, needxp = 15500 },
            { level = 64, needxp = 15250 },
            { level = 63, needxp = 15000 },
            { level = 62, needxp = 14750 },
            { level = 61, needxp = 14500 },
            { level = 60, needxp = 14250 },
            { level = 59, needxp = 14000 },
            { level = 58, needxp = 13750 },
            { level = 57, needxp = 13500 },
            { level = 56, needxp = 13250 },
            { level = 55, needxp = 13000 },
            { level = 54, needxp = 12750 },
            { level = 53, needxp = 12500 },
            { level = 52, needxp = 12250 },
            { level = 51, needxp = 12000 },
            { level = 50, needxp = 11750 },
            { level = 49, needxp = 11500 },
            { level = 48, needxp = 11250 },
            { level = 47, needxp = 11000 },
            { level = 46, needxp = 10750 },
            { level = 45, needxp = 10500 },
            { level = 44, needxp = 10250 },
            { level = 43, needxp = 10000 },
            { level = 42, needxp = 9750 },
            { level = 41, needxp = 9500 },
            { level = 40, needxp = 9250 },
            { level = 39, needxp = 9000 },
            { level = 38, needxp = 8750 },
            { level = 37, needxp = 8500 },
            { level = 36, needxp = 8250 },
            { level = 35, needxp = 8000 },
            { level = 34, needxp = 7750 },
            { level = 33, needxp = 7500 },
            { level = 32, needxp = 7250 },
            { level = 31, needxp = 7000 },
            { level = 30, needxp = 6750 },
            { level = 29, needxp = 6500 },
            { level = 28, needxp = 6250 },
            { level = 27, needxp = 6000 },
            { level = 26, needxp = 5750 },
            { level = 25, needxp = 5500 },
            { level = 24, needxp = 5250 },
            { level = 23, needxp = 5000 },
            { level = 22, needxp = 4750 },
            { level = 21, needxp = 4500 },
            { level = 20, needxp = 4250 },
            { level = 19, needxp = 4000 },
            { level = 18, needxp = 3700 },
            { level = 17, needxp = 3450 },
            { level = 16, needxp = 3150 },
            { level = 15, needxp = 3000 },
            { level = 14, needxp = 2750 },
            { level = 13, needxp = 2500 },
            { level = 12, needxp = 2350 },
            { level = 11, needxp = 2100 },
            { level = 10, needxp = 1900 },
            { level = 9, needxp = 1600 },
            { level = 8, needxp = 1400 },
            { level = 7, needxp = 1250 },
            { level = 6, needxp = 1000 },
            { level = 5, needxp = 850 },
            { level = 4, needxp = 600 },
            { level = 3, needxp = 500 },
            { level = 2, needxp = 300 },
            { level = 1, needxp = 0 }
        }
    },
    
    language = { -- TRANSLATION FOR THE FISHING SCRIPT
        ["en"] = {
            noRodNotification = "You have no fishing rod.",
            nearWaterNotification = "Move closer to the water.",
            baitThrownNotification = "You have thrown the bait into the water.",
            noFishCaughtNotification = "You didn't catch any fish.",
            useRodKeyMapping = "Use fishing rod",
            sellFishNotification = "You need to sell at least %d of this fish.",
            rodBrokeNotification = "Your fishing rod broke.",
    
            -- UI GENERAL
            BigText = "FISHING",
            quitButton = "Quit",
    
            throwRod = "Cast Rod",
            throwRodSpace = "Press Space to cast the rod",
            newCatch = "NEW CATCH!",
            catchProbability = "Probability: %s%",

            -- LEVEL UP
            levelUp = "NEW LEVEL!",
            levelUpText = "You have reached level %s!",
            levelUpMax = "You have reached the maximum level!",
    
            -- Settings Page
            pageTitleSettings = "Settings",
            rank = "Rank: #%s",
            name = "Name: ",
            nickname = "Nickname: ",
            level = "Level: ",
            leaderboard = "Leaderboard: #",
            fishCaught = "Fish caught: ",
            manageNotifications = "Manage notifications",
            off = "Off",
            on = "On",
            settingsDescriptionTitle = "Settings",
            settingsDescriptionDescription = "You can set your own nickname by simply clicking on it and entering a new one. Your nickname will be displayed on the leaderboard, and other players will no longer see your real name.",
    
            -- Fish Page
            pageTitleFish = "Rarities",
            fishText01 = "Rarity",
            fishText02 = "Min. Amount",
            fishText03 = "Probability",
    
            -- Sell Page
            pageTitleSell = "Sell",
            inventoryTitle = "YOUR INVENTORY",
            selectedFish = "Selected Fish",
            todaysPrice = "Today's Price: ",
            sellingAmount = "Selling Amount",
            sellButton = "Sell",
            sellAllButton = "Sell All",
            fishSold = "FISH SOLD!",
            sellFishMessage = "You sold %dx %s for %s dollars!",

            -- Achievements Page
            pageTitleAchievements = "Achievements",
            totalFish = "Total fish caught: %s",
            achievementsDescriptionTitle = "Achievements",
            achievementsDescriptionDescription = "Here you can see a list of all the fish you've caught and how many of them you've caught. You can also see how many different types of fish you've caught in total.",

            -- Leaderboard Page
            pageTitleLeaderboard = "Leaderboard",
            playerLuckRate = "Luck Rate:",
            playerFishCaught = "Fish Caught:",
            leaderboardDescriptionTitle = "Leaderboard",
            leaderboardDescriptionDescription = "Here you can see the best anglers on the server. You can see what statistics they have and how they compare to other players, maybe you can beat them!",

            -- TIMING LABELS
            BadTimingTitle = "Bad Timing",
            BadTimingDesc = "The probability of catching a fish is now low!",
            OKTimingTitle = "OK Timing",
            OKTimingDesc = "The probability of catching a fish is now a little higher!",
            GoodTimingTitle = "Good Timing",
            GoodTimingDesc = "The probability of catching a fish is now higher!",
            PerfectTimingTitle = "Perfect Timing",
            PerfectTimingDesc = "The probability of catching a fish is 100%!",
        },
        ["de"] = {
            noRodNotification = "Du hast keine Angelrute.",
            nearWaterNotification = "Stelle dich näher ans Wasser.",
            baitThrownNotification = "Du hast den Köder ins Wasser geworfen.",
            noFishCaughtNotification = "Du hast keinen Fisch gefangen.",
            useRodKeyMapping = "Angelrute benutzen",
            sellFishNotification = "Du musst mindestens %d von diesem Fisch verkaufen.",
            rodBrokeNotification = "Deine Angelrute ist kaputt gegangen.",
    
            -- UI GENERAL
            BigText = "ANGELN",
            quitButton = "Verlassen",
            
    
            throwRod = "Angel auswerfen",
            throwRodSpace = "Drücke die Leertaste, um die Angel auszuwerfen",
            newCatch = "NEUER FANG!",
            catchProbability = "Wahrscheinlichkeit: %s%",
            
            -- LEVEL UP
            levelUp = "NEUES LEVEL!",
            levelUpText = "Du hast Level %s erreicht!",
            levelUpMax = "Du hast das maximale Level erreicht!",

            -- Settings Page
            pageTitleSettings = "Einstellungen",
            rank = "Rang: #%s",
            name = "Name: ",
            nickname = "Spitzname: ",
            level = "Level: ",
            leaderboard = "Rangliste: #",
            fishCaught = "Fische gefangen: ",
            manageNotifications = "Benachrichtigungen verwalten",
            off = "Aus",
            on = "An",
            settingsDescriptionTitle = "Einstellungen",
            settingsDescriptionDescription = "Du kannst dir deinen eigenen Spitznamen geben, indem du einfach darauf klickst und ihn eingibst. Dein Spitzname wird auf der Bestenliste angezeigt, und andere Spieler werden deinen echten Namen nicht mehr sehen.",
    
            -- Fish Page
            pageTitleFish = "Seltenheiten",
            fishText01 = "Seltenheit",
            fishText02 = "Min. Anzahl",
            fishText03 = "Wahrscheinlichkeit",

            -- Sell Page
            pageTitleSell = "Verkaufen",
            inventoryTitle = "DEIN INVENTAR",
            selectedFish = "Ausgewählter Fisch",
            todaysPrice = "Heutiger Preis: ",
            sellingAmount = "Verkaufsmenge",
            sellButton = "Verkaufen",
            sellAllButton = "Alles verkaufen",
            fishSold = "FISCH VERKAUFT!",
            sellFishMessage = "Du hast %dx %s für %s Dollar verkauft!",

            
            -- Achievements Page
            pageTitleAchievements = "Erfolge",
            totalFish = "Gesamt gefangene Fischarten: %s",
            achievementsDescriptionTitle = "Erfolge",
            achievementsDescriptionDescription = "Hier siehst du eine Liste aller gefangenen Fische und wie viele du von ihnen gefangen hast. Du kannst auch sehen, wie viele Fischarten du insgesamt gefangen hast.",
    
            -- Leaderboard Page
            pageTitleLeaderboard = "Bestenliste",
            playerLuckRate = "Glücksrate:",
            playerFishCaught = "Gefangene Fische:",
            leaderboardDescriptionTitle = "Bestenliste",
            leaderboardDescriptionDescription = "Hier siehst du die besten Angler des Servers. Du kannst sehen, welche Statistiken sie haben und wie sie im Vergleich zu anderen Spielern abschneiden, vielleicht kannst du sie ja überholen!",
    
            -- TIMING LABELS
            BadTimingTitle = "Schlechtes Timing",
            BadTimingDesc = "Die Wahrscheinlichkeit, einen Fisch zu fangen, ist jetzt niedrig!",
            OKTimingTitle = "Akzeptables Timing",
            OKTimingDesc = "Die Wahrscheinlichkeit, einen Fisch zu fangen, ist jetzt ein wenig höher!",
            GoodTimingTitle = "Gutes Timing",
            GoodTimingDesc = "Die Wahrscheinlichkeit, einen Fisch zu fangen, ist jetzt höher!",
            PerfectTimingTitle = "Perfektes Timing",
            PerfectTimingDesc = "Die Wahrscheinlichkeit, einen Fisch zu fangen, beträgt 100%!",
        },
        ["pl"] = {
            noRodNotification = "Nie masz wędki.",
            nearWaterNotification = "Zbliż się do wody.",
            baitThrownNotification = "Rzuciłeś przynętę do wody.",
            noFishCaughtNotification = "Nie złapałeś żadnej ryby.",
            useRodKeyMapping = "Użyj wędki",
            sellFishNotification = "Musisz sprzedać co najmniej %d z tej ryby.",
            rodBrokeNotification = "Twoja wędka się złamała.",
    
            -- UI GENERAL
            BigText = "RYBOŁÓWSTWO",
            quitButton = "Wyjdź",
    
            throwRod = "Rzut wędki",
            throwRodSpace = "Naciśnij spację, aby rzucić wędkę",
            newCatch = "ZŁAPANY!",
            catchProbability = "Prawdopodobieństwo: %s%",
    
            -- LEVEL UP
            levelUp = "NOWY POZIOM!",
            levelUpText = "Osiągnąłeś poziom %s!",
            levelUpMax = "Osiągnąłeś maksymalny poziom!",
    
            -- Settings Page
            pageTitleSettings = "Ustawienia",
            rank = "Ranking: #%s",
            name = "Imię: ",
            nickname = "Pseudonim: ",
            level = "Poziom: ",
            leaderboard = "Ranking: #",
            fishCaught = "Złowione ryby: ",
            manageNotifications = "Zarządzaj powiadomieniami",
            off = "Wyłączone",
            on = "Włączone",
            settingsDescriptionTitle = "Ustawienia",
            settingsDescriptionDescription = "Możesz ustawić swój własny pseudonim, klikając na niego i wpisując nowy. Twój pseudonim będzie wyświetlany na liście najlepszych graczy, a inni gracze nie zobaczą już twojego prawdziwego imienia.",
    
            -- Fish Page
            pageTitleFish = "Rzadkości",
            fishText01 = "Rzadkość",
            fishText02 = "Min. Ilość",
            fishText03 = "Prawdopodobieństwo",

            -- Sell Page
            pageTitleSell = "Sprzedaj",
            inventoryTitle = "TWÓJ EKWIPUNEK",
            selectedFish = "Wybrana ryba",
            todaysPrice = "Dzisiejsza cena: ",
            sellingAmount = "Ilość sprzedaży",
            sellButton = "Sprzedaj",
            sellAllButton = "Sprzedaj wszystko",
            fishSold = "RYBA SPRZEDANA!",
            sellFishMessage = "Sprzedałeś %dx %s za %s dolarów!",

            -- Achievements Page
            pageTitleAchievements = "Osiągnięcia",
            totalFish = "Łącznie złowione ryby: %s",
            achievementsDescriptionTitle = "Osiągnięcia",
            achievementsDescriptionDescription = "Tutaj możesz zobaczyć listę wszystkich złowionych ryb i ile z nich złapałeś. Możesz również zobaczyć, ile różnych gatunków ryb złapałeś łącznie.",

            -- Leaderboard Page
            pageTitleLeaderboard = "Ranking",
            playerLuckRate = "Wskaźnik szczęścia:",
            playerFishCaught = "Złowione ryby:",
            leaderboardDescriptionTitle = "Ranking",
            leaderboardDescriptionDescription = "Tutaj możesz zobaczyć najlepszych wędkarzy na serwerze. Możesz zobaczyć, jakie statystyki posiadają i jak się mają w porównaniu do innych graczy, może uda ci się ich pokonać!",

            -- TIMING LABELS
            BadTimingTitle = "Zły czas",
            BadTimingDesc = "Prawdopodobieństwo złapania ryby jest teraz niskie!",
            OKTimingTitle = "OK czas",
            OKTimingDesc = "Prawdopodobieństwo złapania ryby jest teraz nieco wyższe!",
            GoodTimingTitle = "Dobry czas",
            GoodTimingDesc = "Prawdopodobieństwo złapania ryby jest teraz wyższe!",
            PerfectTimingTitle = "Idealny czas",
            PerfectTimingDesc = "Prawdopodobieństwo złapania ryby wynosi 100%!",
        }
    }
}

NOW WITH QBCORE SUPPORT!

If you’re experiencing any issues, don’t worry! We’ve got you covered. Simply open a ticket in our Discord, and our team will work hard to assist you.

:fish: Key Features:

🡂 Competition with leaderboard

🡂 Adjust fishing locations, difficulty, and rewards to fit your server’s theme and style

🡂 Exciting sound effects (watch previewto hear)

🡂 Easy Config

🡂 No more AFK-Fishing. (We can add AFK if there are enough requests)

🡂 Personalize: Set up custom leaderboard displays and tailor sound effects to match your server’s vibe.







4p-crafting: click
4p-repairkit: click
4p-pausemenu: click
4p-dice: click

Code is accessible No
Subscription-based No
Lines (approximately) 2000
Requirements es_extended
Support Yes
6 Likes

beautiful design! nice work

5 Likes

can i add my own fish & how many players are on the leaderboard in the same time?

5 Likes

Yes you can, how much you want, and top 10 players

5 Likes