84 lines
2.4 KiB
Lua
84 lines
2.4 KiB
Lua
|
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)
|