local alamo_tug_fish = {
"fish_salmon",
"fish_mackerel",
"fish_trout",
}
local tugging_locations = {
{id = "AS_01", name = "Alamo Sea", x = 2088.3854980469, y = 4279.0024414063, z = 30.0, capacity = 100, current = 0, size = 250.0, bonuses = {}, itemset = alamo_tug_fish},
}
local WITHIN_ZONE = false
local CURRENT_ZONE = nil
function GiveFishFromSet(location, min, max)
local itemset = location.itemset
local item = itemset[math.random(#itemset)]
local amount = math.random(min, max)
if amount > 0 then
-- Code to give items
TriggerEvent("gd_utils:notify", "Got " .. amount .. "x " .. item)
end
end
-- Main Loop
Citizen.CreateThread(function()
while true do
Wait(0)
local ped = GetPlayerPed(-1)
WITHIN_ZONE = false
CURRENT_ZONE = nil
if IsVehicleModel(GetVehiclePedIsIn(ped, false), "TUG") then
local pos = GetEntityCoords(ped, false)
for _, location in next, tugging_locations do
if not location.world_blip then
local blip = AddBlipForCoord(location.x, location.y, location.z)
SetBlipSprite(blip, 400)
SetBlipColour(blip, 25)
SetBlipAsShortRange(blip, true)
exports['omni_common']:SetBlipName(blip, "Net Fishing Zone")
location.world_blip = blip
end
if not WITHIN_ZONE then
-- Check if we are within the fishing area
local dist = #(vector3(location.x, location.y, location.z) - pos)
if dist < location.size + 150.0 then
-- Within a fishing area
DrawMarker(1, location.x, location.y, location.z, 0, 0, 0, 0, 0, 0, location.size * 2, location.size * 2, 2.0, 255, 255, 255, 255)
-- Make the radius blip if no present
if not location.blip then
local blip = AddBlipForRadius(location.x, location.y, location.z, location.size)
SetBlipAlpha(blip, 150)
SetBlipColour(blip, 25)
location.blip = blip
end
-- Check if we are within the zone itself
if dist < location.size then
-- Within the fishing zone
-- Mark as current zone (for fishing generator and bonus generator)
WITHIN_ZONE = true
CURRENT_ZONE = location
-- Check and draw bonuses
for _bonus_id, bonus in next, location.bonuses do
-- Create bonus blip if not present
if not bonus.blip then
local blip = AddBlipForCoord(bonus.x, bonus.y, location.z)
exports['omni_common']:SetBlipName(blip, "Net Fishing Bonus")
bonus.blip = blip
end
-- Draw Marker on water (fancy!!)
local _, h = GetWaterHeight(bonus.x, bonus.y, 100.0)
DrawMarker(1, bonus.x, bonus.y, h, 0, 0, 0, 0, 0, 0, bonus.size * 2, bonus.size * 2, 2.0, 255, 255, 255, 255)
-- Check distance
local dist = #(vector3(bonus.x, bonus.y, location.z) - pos)
if dist < bonus.size then
RemoveBlip(bonus.blip)
bonus.blip = nil
GiveFishFromSet(location, 3, 8)
table.remove(location.bonuses, _bonus_id)
end
end
end
else
-- Not within a fishing area
-- Remove area blip
if location.blip then
RemoveBlip(location.blip)
location.blip = nil
end
-- Remove bonus blips
for _, bonus in next, location.bonuses do
if bonus.blip then
RemoveBlip(bonus.blip)
bonus.blip = nil
end
end
end
end
end
else
-- Not in a tug
-- Remove blips
for _, location in next, tugging_locations do
if location.world_blip then
RemoveBlip(location.world_blip)
location.world_blip = nil
end
if location.blip then
RemoveBlip(location.blip)
location.blip = nil
end
for _, bonus in next, location.bonuses do
if bonus.blip then
RemoveBlip(bonus.blip)
bonus.blip = nil
end
end
end
end
end
end)
-- Fish Generator Loop
local last_pos = vector3(0.0, 0.0, 0.0)
Citizen.CreateThread(function()
while true do
Wait(2500)
local ped = GetPlayerPed(-1)
if WITHIN_ZONE then
local pos = GetEntityCoords(ped, false)
local dist = #(pos - last_pos)
if dist > 55.0 then
last_pos = pos
-- Make me a fish
-- INSERT CODE TO GIVE FISHES
GiveFishFromSet(CURRENT_ZONE, -2, 2)
end
end
end
end)
-- Bonus Generator Loop
local bonus_wait_time = 35 * 1000
Citizen.CreateThread(function()
while true do
if WITHIN_ZONE then
local zone = CURRENT_ZONE
local bonus = {}
-- Make sure the position is never outside the zone
local function gen()
bonus.x = zone.x + math.random(-zone.size, zone.size)
bonus.y = zone.y + math.random(-zone.size, zone.size)
local dist = #(vector3(bonus.x, bonus.y, 0.0) - vector3(zone.x, zone.y, 0.0))
if dist > zone.size then
gen()
end
end
gen()
bonus.size = 8.0
table.insert(zone.bonuses, bonus)
if #zone.bonuses > 5 then
if zone.bonuses[1].blip then
RemoveBlip(zone.bonuses[1].blip)
end
table.remove(zone.bonuses, 1)
end
end
Wait(bonus_wait_time)
end
end)
Comments