Scripts/resources/[ps]/ps-zones/Main.lua

84 lines
2.4 KiB
Lua
Raw Normal View History

2024-12-29 20:28:24 +00:00
local Zones = {}
local Active = {}
local Combo = nil
local function UpdateComboZone(zone)
if Combo == nil then
Combo = ComboZone:Create({zone}, {name="combo", debugPoly=false})
Active[zone["name"]] = zone
Combo:onPlayerInOutExhaustive(function(isPointInside, point, insideZones, enteredZones, leftZones)
if enteredZones then
for i=1, #enteredZones do
--print("Entered: " ..enteredZones[i]["name"])
TriggerEvent("ps-zones:enter", enteredZones[i]["name"], enteredZones[i]["data"])
TriggerServerEvent("ps-zones:enter", enteredZones[i]["name"], enteredZones[i]["data"])
end
end
if leftZones then
for i=1, #leftZones do
--print("Left: " ..leftZones[i]["name"])
TriggerEvent("ps-zones:leave", leftZones[i]["name"], leftZones[i]["data"])
TriggerServerEvent("ps-zones:leave", leftZones[i]["name"], leftZones[i]["data"])
end
end
end)
else
Combo:AddZone(zone)
Active[zone["name"]] = zone
end
end
local function ZoneExist(name)
if Active[name] then
return true
else
return false
end
end
exports("CreateBoxZone", function(name, point, length, width, data)
if ZoneExist(name) then return print("Zone with that name already exists") end
if not data then data = {} end
data.name = name
local box = BoxZone:Create(point, length, width, data)
UpdateComboZone(box)
end)
exports("CreatePolyZone", function(name, points, data)
if ZoneExist(name) then return print("Zone with that name already exists") end
if not data then data = {} end
data.name = name
local poly = PolyZone:Create(points, data)
UpdateComboZone(poly)
end)
exports("CreateCircleZone", function(name, point, radius, data)
if ZoneExist(name) then return print("Zone with that name already exists") end
if not data then data = {} end
data.name = name
local circle = CircleZone:Create(point, radius, data)
UpdateComboZone(circle)
end)
exports("CreateEntityZone", function(name, entity, data)
if ZoneExist(name) then return print("Zone with that name already exists") end
if not data then data = {} end
data.name = name
local entity = EntityZone:Create(entity, data)
UpdateComboZone(entity)
end)
exports("DestroyZone", function(name)
if not ZoneExist(name) then return print("Zone doesn't exist") end
if Active[name] then
Combo:RemoveZone(name)
Active[name]:destroy()
Active[name] = nil
end
end)