158 lines
4.0 KiB
Lua
158 lines
4.0 KiB
Lua
|
lastCreatedZoneType = nil
|
||
|
lastCreatedZone = nil
|
||
|
createdZoneType = nil
|
||
|
createdZone = nil
|
||
|
drawZone = false
|
||
|
|
||
|
RegisterNetEvent("polyzone:pzcreate")
|
||
|
AddEventHandler("polyzone:pzcreate", function(zoneType, name, args)
|
||
|
if createdZone ~= nil then
|
||
|
TriggerEvent('chat:addMessage', {
|
||
|
color = { 255, 0, 0},
|
||
|
multiline = true,
|
||
|
args = {"Me", "A shape is already being created!"}
|
||
|
})
|
||
|
return
|
||
|
end
|
||
|
|
||
|
if zoneType == 'poly' then
|
||
|
polyStart(name)
|
||
|
elseif zoneType == "circle" then
|
||
|
local radius = nil
|
||
|
if #args >= 3 then radius = tonumber(args[3])
|
||
|
else radius = tonumber(GetUserInput("Enter radius:")) end
|
||
|
if radius == nil then
|
||
|
TriggerEvent('chat:addMessage', {
|
||
|
color = { 255, 0, 0},
|
||
|
multiline = true,
|
||
|
args = {"Me", "CircleZone requires a radius (must be a number)!"}
|
||
|
})
|
||
|
return
|
||
|
end
|
||
|
circleStart(name, radius)
|
||
|
elseif zoneType == "box" then
|
||
|
local length = nil
|
||
|
if #args >= 3 then length = tonumber(args[3])
|
||
|
else length = tonumber(GetUserInput("Enter length:")) end
|
||
|
if length == nil or length < 0.0 then
|
||
|
TriggerEvent('chat:addMessage', {
|
||
|
color = { 255, 0, 0},
|
||
|
multiline = true,
|
||
|
args = {"Me", "BoxZone requires a length (must be a positive number)!"}
|
||
|
})
|
||
|
return
|
||
|
end
|
||
|
local width = nil
|
||
|
if #args >= 4 then width = tonumber(args[4])
|
||
|
else width = tonumber(GetUserInput("Enter width:")) end
|
||
|
if width == nil or width < 0.0 then
|
||
|
TriggerEvent('chat:addMessage', {
|
||
|
color = { 255, 0, 0},
|
||
|
multiline = true,
|
||
|
args = {"Me", "BoxZone requires a width (must be a positive number)!"}
|
||
|
})
|
||
|
return
|
||
|
end
|
||
|
boxStart(name, 0, length, width)
|
||
|
else
|
||
|
return
|
||
|
end
|
||
|
createdZoneType = zoneType
|
||
|
drawZone = true
|
||
|
drawThread()
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent("polyzone:pzfinish")
|
||
|
AddEventHandler("polyzone:pzfinish", function()
|
||
|
if createdZone == nil then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
if createdZoneType == 'poly' then
|
||
|
polyFinish()
|
||
|
elseif createdZoneType == "circle" then
|
||
|
circleFinish()
|
||
|
elseif createdZoneType == "box" then
|
||
|
boxFinish()
|
||
|
end
|
||
|
|
||
|
TriggerEvent('chat:addMessage', {
|
||
|
color = { 0, 255, 0},
|
||
|
multiline = true,
|
||
|
args = {"Me", "Check your server root folder for polyzone_created_zones.txt to get the zone!"}
|
||
|
})
|
||
|
|
||
|
lastCreatedZoneType = createdZoneType
|
||
|
lastCreatedZone = createdZone
|
||
|
|
||
|
drawZone = false
|
||
|
createdZone = nil
|
||
|
createdZoneType = nil
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent("polyzone:pzlast")
|
||
|
AddEventHandler("polyzone:pzlast", function()
|
||
|
if createdZone ~= nil or lastCreatedZone == nil then
|
||
|
return
|
||
|
end
|
||
|
if lastCreatedZoneType == 'poly' then
|
||
|
TriggerEvent('chat:addMessage', {
|
||
|
color = { 0, 255, 0},
|
||
|
multiline = true,
|
||
|
args = {"Mig", "Kommandoen understøtter kun BoxZone og CircleZone for nu!"}
|
||
|
})
|
||
|
|
||
|
end
|
||
|
|
||
|
local name = GetUserInput("Indtast navn (Eller efterlad tom og brug sidste zones navn):")
|
||
|
if name == nil then
|
||
|
return
|
||
|
elseif name == "" then
|
||
|
name = lastCreatedZone.name
|
||
|
end
|
||
|
createdZoneType = lastCreatedZoneType
|
||
|
if createdZoneType == 'box' then
|
||
|
local minHeight, maxHeight
|
||
|
if lastCreatedZone.minZ then
|
||
|
minHeight = lastCreatedZone.center.z - lastCreatedZone.minZ
|
||
|
end
|
||
|
if lastCreatedZone.maxZ then
|
||
|
maxHeight = lastCreatedZone.maxZ - lastCreatedZone.center.z
|
||
|
end
|
||
|
boxStart(name, lastCreatedZone.offsetRot, lastCreatedZone.length, lastCreatedZone.width, minHeight, maxHeight)
|
||
|
elseif createdZoneType == 'circle' then
|
||
|
circleStart(name, lastCreatedZone.radius, lastCreatedZone.useZ)
|
||
|
end
|
||
|
drawZone = true
|
||
|
drawThread()
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent("polyzone:pzcancel")
|
||
|
AddEventHandler("polyzone:pzcancel", function()
|
||
|
if createdZone == nil then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
TriggerEvent('chat:addMessage', {
|
||
|
color = {255, 0, 0},
|
||
|
multiline = true,
|
||
|
args = {"Mig", "Zone-oprettelse annulleret!"}
|
||
|
})
|
||
|
|
||
|
drawZone = false
|
||
|
createdZone = nil
|
||
|
createdZoneType = nil
|
||
|
end)
|
||
|
|
||
|
-- Drawing
|
||
|
function drawThread()
|
||
|
Citizen.CreateThread(function()
|
||
|
while drawZone do
|
||
|
if createdZone then
|
||
|
createdZone:draw()
|
||
|
end
|
||
|
Wait(0)
|
||
|
end
|
||
|
end)
|
||
|
end
|