dobrograd-13-06-2022/garrysmod/addons/feature-camera/lua/autorun/server/init.lua

84 lines
2.5 KiB
Lua
Raw Normal View History

2023-11-16 15:01:19 +05:00
CFG.use.ent_dbg_camera = {
function(ply, ent)
if ent.pendingWorker ~= ply then return end
return 'Починить', 'octoteam/icons/wrench.png', function(ply, ent)
ent:Use(ply, ply, USE_TOGGLE, 1)
end
end,
function(ply, ent)
if not ply:IsSuperAdmin() then return end
return 'Настроить', 'octoteam/icons/keypad.png', function(ply, ent)
local dt, notifyData = ent:GetNetVar('rotationData', {}), octolib.array.toKeys(ent.notifyData) or {}
local notifyOpts = octolib.table.mapSequential(table.GetKeys(simpleOrgs.orgs), function(v) return {simpleOrgs.orgs[v].name, v, notifyData[v]} end)
notifyOpts[#notifyOpts + 1] = {'Полиция', 'cp', notifyData['cp']}
octolib.request.send(ply, {
pitch = {
name = 'Наклон',
type = 'numSlider',
dec = 0,
min = -45,
max = 30,
default = dt.p or 0,
},
center = {
name = 'Центр',
type = 'numSlider',
dec = 0,
min = -120,
max = 120,
default = dt.center or 0,
},
radius = {
name = 'Радиус вращения',
desc = 'Левая граница: центр - alpha, правая: центр + alpha',
type = 'numSlider',
dec = 0,
min = 0,
max = 90,
default = dt.r or 0,
},
speed = {
name = 'Скорость вращения',
desc = 'Градусы/сек',
type = 'numSlider',
dec = 1,
min = 0,
max = 30,
default = math.deg(dt.v or 0),
},
viewDist = {
name = 'Дальность обзора',
type = 'numSlider',
dec = 0,
min = 500,
max = 2000,
default = dt.viewDist or 1500,
},
notifyData = {
name = 'Оповещения',
desc = 'Выбери, какую организацию будет оповещать камера о всех нарушениях',
type = 'checkGroup',
opts = notifyOpts,
required = true,
},
}, function(data)
if IsValid(ent) then
data.pitch = math.Clamp(data.pitch or dt.p or 0, -45, 30)
data.center = math.Clamp(data.center or dt.center or 0, -120, 120)
data.radius = math.Clamp(data.radius or dt.r or 0, 0, 90)
data.speed = math.Clamp(data.speed or dt.v or 0, 0, 30)
data.viewDist = math.Clamp(data.viewDist or dt.viewDist, 500, 2000)
ent.notifyData = data.notifyData
local ac = math.abs(data.center)
if ac + data.radius > 120 then
data.radius = 120 - ac
end
ent:SetRotationData(data.pitch, data.center, data.radius, math.rad(data.speed), data.viewDist)
end
end)
end
end,
}