mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-08-17 15:06:02 +01:00
Some people accidentally, mistakenly, and without any malicious intent forget to attribute code from this resource to its source. This change will hopefully assist people, so that they do not make that mistake again.
138 lines
3.9 KiB
Lua
138 lines
3.9 KiB
Lua
--[[
|
|
https://github.com/overextended/ox_lib
|
|
|
|
This file is licensed under LGPL-3.0 or higher <https://www.gnu.org/licenses/lgpl-3.0.en.html>
|
|
|
|
Copyright (c) 2025 Linden <https://github.com/thelindat/fivem>
|
|
]]
|
|
|
|
local function formatNumber(num)
|
|
return tostring(num):gsub(",", ".")
|
|
end
|
|
|
|
local parse = {
|
|
poly = function(data)
|
|
local points = {}
|
|
for i = 1, #data.points do
|
|
points[#points + 1] = ('\t\tvec3(%s, %s, %s),\n'):format((data.points[i].x), (data.points[i].y), data.zCoord)
|
|
end
|
|
|
|
local pattern
|
|
if data.format == 'function' then
|
|
pattern = {
|
|
'local poly = lib.zones.poly({\n',
|
|
('\tname = "%s",\n'):format(data.name),
|
|
'\tpoints = {\n',
|
|
('%s\t},\n'):format(table.concat(points)),
|
|
('\tthickness = %s,\n'):format(data.height),
|
|
'})\n',
|
|
}
|
|
elseif data.format == 'array' then
|
|
pattern = {
|
|
'{\n',
|
|
('\tname = "%s",\n'):format(data.name),
|
|
'\tpoints = {\n',
|
|
('%s\t},\n'):format(table.concat(points)),
|
|
('\tthickness = %s,\n'):format(data.height),
|
|
'},\n'
|
|
}
|
|
elseif data.format == 'target' then
|
|
pattern = {
|
|
'exports.ox_target:addPolyZone({\n',
|
|
('\tname = "%s",\n'):format(data.name),
|
|
'\tpoints = {\n',
|
|
('%s\t},\n'):format(table.concat(points)),
|
|
('\tthickness = %s,\n'):format(data.height),
|
|
'})\n'
|
|
}
|
|
end
|
|
|
|
return table.concat(pattern)
|
|
end,
|
|
box = function(data)
|
|
local pattern
|
|
if data.format == 'function' then
|
|
pattern = {
|
|
'local box = lib.zones.box({\n',
|
|
('\tname = "%s",\n'):format(data.name),
|
|
('\tcoords = vec3(%s, %s, %s),\n'):format(
|
|
formatNumber(data.xCoord),
|
|
formatNumber(data.yCoord),
|
|
formatNumber(data.zCoord)
|
|
),
|
|
('\tsize = vec3(%s, %s, %s),\n'):format(
|
|
formatNumber(data.width),
|
|
formatNumber(data.length),
|
|
formatNumber(data.height)
|
|
),
|
|
('\trotation = %s,\n'):format(formatNumber(data.heading)),
|
|
'})\n',
|
|
}
|
|
elseif data.format == 'array' then
|
|
pattern = {
|
|
'{\n',
|
|
('\tname = "%s",\n'):format(data.name),
|
|
('\tcoords = vec3(%s, %s, %s),\n'):format(
|
|
formatNumber(data.xCoord),
|
|
formatNumber(data.yCoord),
|
|
formatNumber(data.zCoord)
|
|
),
|
|
('\tsize = vec3(%s, %s, %s),\n'):format(
|
|
formatNumber(data.width),
|
|
formatNumber(data.length),
|
|
formatNumber(data.height)
|
|
),
|
|
('\trotation = %s,\n'):format(formatNumber(data.heading)),
|
|
'},\n',
|
|
}
|
|
elseif data.format == 'target' then
|
|
pattern = {
|
|
'exports.ox_target:addBoxZone({\n',
|
|
('\tname = "%s",\n'):format(data.name),
|
|
('\tcoords = vec3(%s, %s, %s),\n'):format(data.xCoord, data.yCoord, data.zCoord),
|
|
('\tsize = vec3(%s, %s, %s),\n'):format(data.width, data.length, data.height),
|
|
('\trotation = %s,\n'):format(data.heading),
|
|
'})\n',
|
|
}
|
|
end
|
|
|
|
return table.concat(pattern)
|
|
end,
|
|
sphere = function(data)
|
|
local pattern
|
|
if data.format == 'function' then
|
|
pattern = {
|
|
'local sphere = lib.zones.sphere({\n',
|
|
('\tname = "%s",\n'):format(data.name),
|
|
('\tcoords = vec3(%s, %s, %s),\n'):format(data.xCoord, data.yCoord, data.zCoord),
|
|
('\tradius = %s,\n'):format(data.height),
|
|
'})\n',
|
|
}
|
|
elseif data.format == 'array' then
|
|
pattern = {
|
|
'{\n',
|
|
('\tname = "%s",\n'):format(data.name),
|
|
('\tcoords = vec3(%s, %s, %s),\n'):format(data.xCoord, data.yCoord, data.zCoord),
|
|
('\tradius = %s,\n'):format(data.height),
|
|
'},\n',
|
|
}
|
|
elseif data.format == 'target' then
|
|
pattern = {
|
|
'exports.ox_target:addSphereZone({\n',
|
|
('\tname = "%s",\n'):format(data.name),
|
|
('\tcoords = vec3(%s, %s, %s),\n'):format(data.xCoord, data.yCoord, data.zCoord),
|
|
('\tradius = %s,\n'):format(data.height),
|
|
'})\n',
|
|
}
|
|
end
|
|
|
|
return table.concat(pattern)
|
|
end,
|
|
}
|
|
|
|
RegisterNetEvent('ox_lib:saveZone', function(data)
|
|
if not source or not IsPlayerAceAllowed(source, 'command') then return end
|
|
local output = (LoadResourceFile(cache.resource, 'created_zones.lua') or '') .. parse[data.zoneType](data)
|
|
SaveResourceFile(cache.resource, 'created_zones.lua', output, -1)
|
|
end)
|