Scripts/resources/[standalone]/PolyZone/creation/client/creation.lua

158 lines
4.0 KiB
Lua
Raw Permalink Normal View History

2024-12-29 20:02:43 +00:00
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