-- 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, 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-Hunting:EnterZone", zone.name) Citizen.CreateThread(function() while insideZone do local plyPed = PlayerPedId() local InZoneCoordS = GetEntityCoords(plyPed) if not zones[_]:isPointInside(InZoneCoordS) then TriggerEvent("BigDaddy-Hunting: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)