Files
Elite-Gaming-FiveM/resources/BigDaddy-Fishing/polyzones.lua
T
2026-02-21 14:30:25 -08:00

89 lines
2.5 KiB
Lua

-- THERE IS NOTHING IN THIS FILE THAT SHOULD BE CHANGED UNLESS YOU WANTED TO BREAK THE SCRIPT
local jsonZones = LoadResourceFile(GetCurrentResourceName(), "zones.json")
local zoneData = json.decode(jsonZones)
local zones = {}
for _, zone in pairs(zoneData) do
local vectors = {}
for _, pt in ipairs(zone.points) do
table.insert(vectors, vector2(pt.x, pt.y))
end
zones[zone.name] = PolyZone:Create(vectors, {
name = zone.name,
debugGrid = false,
gridDivisions=30,
minZ = zone.minZ,
maxZ = zone.maxZ
})
end
--for _, zone in pairs(zones) do
-- print("zone: " .. zone.name)
--end
Citizen.Wait(10000)
local insideZones = {}
Citizen.CreateThread(function()
while true do
local plyPed = PlayerPedId()
local coord = GetEntityCoords(plyPed)
Citizen.Wait(500)
for _, zone in pairs(zones) do
if zones[_]:isPointInside(coord) then
if (not insideZones[_]) then
insideZones[_] = true
local insideZone = true
TriggerEvent("BigDaddy-Fishing:EnterZone", zone.name)
Citizen.CreateThread(function()
while insideZone do
local plyPed = PlayerPedId()
local InZoneCoordS = GetEntityCoords(plyPed)
if not zones[_]:isPointInside(InZoneCoordS) then
TriggerEvent("BigDaddy-Fishing:LeaveZone", zone.name)
insideZone = false
insideZones[_] = false
end
Citizen.Wait(500)
end
end)
end
end
end
end
end)
exports('GetZoneCenter', function(polyname)
return zones[polyname]:getBoundingBoxCenter()
end)
exports('IsPointInPoly', function(polyname, coord)
if zones[polyname]:isPointInside(coord) then
return true
end
return false
end)
exports('IsPointInAnyPoly', function(coord)
for _, poly in pairs(zones) do
local name = poly.name
if zones[name]:isPointInside(coord) then
return true
end
end
return false
end)
exports('GetZoneBounds', function (polyname)
local zone = zones[polyname]
print(zone.name)
local min = zones[polyname]:getBoundingBoxMin()
local max = zones[polyname]:getBoundingBoxMax()
return min.x .. ',' .. min.y .. ',' .. max.x .. ',' .. max.y;
end)