CONFIGURATION FILE
Config = {}
Config.Debug = false -- Enable debug mode for development
-- Framework Settings
Config.Framework = "qb" -- Framework type: "qb" for QB-Core, "esx" for ESX
Config.NotifyType = "qb" -- "qb", "esx", "ox", "custom"
Config.Inventory = {
type = "qb", -- "qb", "ox", "esx"
}
Config.Interaction = {
type = "ox_lib", -- "qb-target", "ox_target", "ox_lib"
distance = 2.0,
options = {
normal = {
icon = "fas fa-fish",
label = "Fish Shop",
text = "[E] Fish Shop" -- For DrawText
},
illegal = {
icon = "fas fa-skull",
label = "Talk with Stranger",
text = "[E] Talk with Stranger" -- For DrawText
}
}
}
Config.Webhooks = {
illegal_sales = "DISCORD_WEBHOOK_URL",
normal_sales = "DISCORD_WEBHOOK_URL"
}
-- Location Settings
Config.Locations = {
FishShop = {
coords = vector4(-1856.18, -1230.25, 13.02, 314.97), -- Shop NPC location
model = "a_m_y_beach_01", -- NPC model hash
scenario = "WORLD_HUMAN_STAND_FISHING", -- NPC idle animation
},
IllegalShop = {
coords = vector4(-1857.88, -1228.57, 13.02, 319.02), -- Black market NPC location
model = "g_m_m_armboss_01", -- NPC model hash
scenario = "WORLD_HUMAN_STAND_IMPATIENT", -- NPC idle animation
}
}
-- Boat Rental Configuration
Config.BoatRental = {
npc = {
coords = vector4(-1797.89, -1224.82, 1.60, 228.36),
model = "s_m_y_dockwork_01",
scenario = "WORLD_HUMAN_CLIPBOARD",
},
spawn = {
coords = vector4(-1786.07, -1231.72, 1.48, 139.97)
},
vehicleKeys = "qb", -- "qb", "qs", "wasabi", "custom"
rental_duration = false, -- false for unlimited time
deposit = 500, -- Deposit
boats = {
fishing_boat = {
label = "Fishing Boat",
price = 1000,
image = "fishing_boat.png",
model = "tug",
description = "Standard fishing boat, perfect for beginners"
},
speed_boat = {
label = "Speed Boat",
price = 1500,
image = "speed_boat.png",
model = "dinghy",
description = "Fast boat for experienced fishermen"
},
luxury_yacht = {
label = "Luxury Yacht",
price = 2000,
image = "luxury_yacht.png",
model = "marquis",
description = "Luxury yacht with all amenities"
}
}
}
Config.Controls = {
cancel_fishing = {
key1 = 73, -- X
key2 = 178, -- DEL
label = "[X] or [DEL] - Stop Fishing"
}
}
-- Item Configuration
Config.Items = {
--Fishing equipment
fishingrod = {
label = "Fishing Rod",
price = 1000,
image = "fishing-rod.png",
type = "equipment"
},
fishbait = {
label = "Fishing Bait",
price = 50,
image = "bait.png",
type = "equipment"
},
-- Normal fish
tuna = {
label = "Tuna",
price = 250,
image = "fish1.png",
type = "normal_fish"
},
bass = {
label = "Bass",
price = 150,
image = "fish3.png",
type = "normal_fish"
},
trout = {
label = "Trout",
price = 150,
image = "fish4.png",
type = "normal_fish"
},
cod = {
label = "Cod",
price = 150,
image = "fish5.png",
type = "normal_fish"
},
salmon = {
label = "Salmon",
price = 300,
image = "fish2.png",
type = "normal_fish"
},
mackerel = {
label = "Mackerel",
price = 300,
image = "fish6.png",
type = "normal_fish"
},
-- Illegal fish
shark = {
label = "Shark",
price = 2500,
image = "shark.png",
type = "illegal_fish"
},
dolphin = {
label = "Dolphin",
price = 3000,
image = "dolphin.png",
type = "illegal_fish"
},
killerwhale = {
label = "Killer Whale",
price = 3000,
image = "killer_whale.png",
type = "illegal_fish"
}
}
-- Notification System Configuration
Config.Notifications = {
bought_item = {
title = "Fish Shop",
description = "You bought %sx %s for $%s",
type = "success"
},
sold_item = {
title = "Fish Shop",
description = "You sold %sx %s for $%s",
type = "success"
},
not_enough_money = {
title = "Fish Shop",
description = "You don't have enough money!",
type = "error"
},
fishing = {
start = {
title = "Fishing",
message = "You started fishing...",
type = "info"
},
no_rod = {
title = "Error",
message = "You need a fishing rod!",
type = "error"
},
no_bait = {
title = "Error",
message = "You need bait!",
type = "error"
},
wrong_zone = {
title = "Error",
message = "You need to be in a fishing zone!",
type = "error"
},
fish_escaped = {
title = "Fishing",
message = "The fish got away!",
type = "error"
},
fish_caught = {
title = "Fishing",
message = "You caught a %s!",
type = "success"
},
no_police = {
title = "Error",
message = "Not enough police in the city!",
type = "error"
}
},
boat_rental = {
rented = {
title = "Boat Rental",
message = "You rented a %s for $%s. Don't forget to return it in %d minutes!",
type = "success"
},
returned = {
title = "Boat Rental",
message = "You returned the boat and got your deposit back: $%s",
type = "success"
},
already_renting = {
title = "Boat Rental",
message = "You are already renting a boat!",
type = "error"
},
not_enough_money = {
title = "Boat Rental",
message = "You need $%s to rent this boat! ($%s rental + $%s deposit)",
type = "error"
}
}
}
Config.NotifySystem = {
type = "default", -- Notification system: "default", "okoknotify", "mythic", "ox", "custom"
triggers = {
okoknotify = {
resource = "okokNotify",
trigger = "Alert" -- exports['okokNotify']:Alert()
},
mythic = {
resource = "mythic_notify",
trigger = "DoHudText" -- exports['mythic_notify']:DoHudText()
},
ox = {
resource = "ox_lib",
trigger = "notify" -- lib.notify()
}
}
}
-- Fishing System Settings
Config.Fishing = {
required_items = {
rod = "fishingrod",
bait = "fishbait"
},
fishing_zones = {
normal = {
vector3(-1850.0, -1250.0, 1.0),
vector3(-1750.0, -1150.0, 1.0),
},
illegal = {
vector3(-2050.0, -1450.0, 1.0),
vector3(-1950.0, -1350.0, 1.0),
},
radius = 50.0
},
catch_time = {
min = 5000,
max = 15000
},
catch_chances = {
normal = {
-- Regular fish pool (95% total chance)
tuna = 25, -- Common commercial fish (25% chance)
salmon = 20, -- Valuable sport fish (20% chance)
bass = 20, -- Popular game fish (20% chance)
trout = 15, -- Freshwater favorite (15% chance)
cod = 10, -- Standard market fish (10% chance)
mackerel = 5, -- Small commercial catch (5% chance)
-- Rare illegal catches (5% total chance)
shark = 2, -- Rare protected species (2% chance)
dolphin = 2, -- Protected marine mammal (2% chance)
killerwhale = 1 -- Extremely rare catch (1% chance)
-- Total: 100%
},
illegal = {
-- Regular fish pool (75% total chance)
tuna = 20, -- Still common but reduced (20% chance)
salmon = 15, -- Less frequent here (15% chance)
bass = 15, -- Standard catch (15% chance)
trout = 10, -- Occasional catch (10% chance)
cod = 10, -- Regular market fish (10% chance)
mackerel = 5, -- Least common regular fish (5% chance)
-- Illegal catches (25% total chance)
shark = 10, -- Protected species, higher chance (10% chance)
dolphin = 8, -- Increased chance of rare catch (8% chance)
killerwhale = 7 -- Still rare but more common (7% chance)
-- Total: 100%
}
},
minigame = {
required = true,
difficulty = {
normal = {
type = {'easy', 'easy', 'medium'},
duration = 2000,
keys = {'w', 'a', 's', 'd'}
},
illegal = {
type = {'medium', 'medium', 'hard'},
duration = 1500,
keys = {'q', 'e', 'r', 'f'}
}
}
},
animations = {
start = "mini@tennis@serve",
fishing = "WORLD_HUMAN_STAND_FISHING",
catch = "mini@tennis@return_serve"
}
}
Config.Blips = {
normal = {
zones = true, -- Show fishing zone blips
shop = true, -- Show fish shop blip
settings = {
shop = {
sprite = 68, -- Fish shop icon
color = 3, -- Blue color
scale = 0.7, -- Medium size
label = "Fish Shop"
},
zones = {
sprite = 404, -- Zone marker
color = 3, -- Blue color
scale = 0.6, -- Slightly smaller
label = "Fishing Zone",
radius = 150.0 -- Zone radius size (in units)
}
}
},
illegal = {
zones = true, -- Show illegal zone blips
shop = true, -- Show black market blip
settings = {
shop = {
sprite = 141, -- Skull icon
color = 1, -- Red color
scale = 0.7, -- Medium size
label = "Black Market"
},
zones = {
sprite = 404, -- Zone marker
color = 1, -- Red color
scale = 0.6, -- Slightly smaller
label = "Illegal Fishing Zone",
radius = 250.0 -- Zone radius size (in units)
}
}
}
}
Config.AntiCheat = {
enabled = true,
max_attempts = 3, -- Maximum attempts in 10 seconds
cooldown = 10000, -- Cooldown time in milliseconds
punishment = {
type = "kick", -- "kick" or "ban"
reason = "Fishing exploit detected!"
}
}
Config.Cache = {
enabled = true,
duration = 300000 -- Cache time (5 minutes)
}
-- Notify function
Config.Notify = function(message, title, type, length)
if Config.NotifySystem.type == "default" then
if Config.Framework == "qb" then
exports['qb-core']:GetCoreObject().Functions.Notify(message, ttype, length)
else
ESX.ShowNotification(message)
end
elseif Config.NotifySystem.type == "okoknotify" then
exports['okokNotify']:Alert(title or "Fish Shop", message, length or 5000, type or 'info')
elseif Config.NotifySystem.type == "mythic" then
exports['mythic_notify']:DoHudText(type or 'inform', message, length or 5000)
elseif Config.NotifySystem.type == "ox" then
lib.notify({
title = title,
description = message,
type = type or 'info',
duration = length or 5000
})
elseif Config.NotifySystem.type == "custom" then
TriggerEvent("janiel-fishing:notify", message, type, length)
end
end
Last updated