78 lines
2.7 KiB
Lua
78 lines
2.7 KiB
Lua
if not SERVER then return end
|
|
|
|
-- Таблица групп, которым разрешён административный доступ к Physgun
|
|
local AdminGroups = {
|
|
["superadmin"] = true,
|
|
["super admin"] = true,
|
|
["owner"] = true,
|
|
["curator"] = true,
|
|
["sudo-curator"] = true,
|
|
["asist-sudo"] = true,
|
|
["admin"] = true,
|
|
["st.admin"] = true,
|
|
["projectteam"] = true,
|
|
["teh.admin"] = true,
|
|
["ivent"] = true,
|
|
["st.event"] = true,
|
|
["event"] = true,
|
|
["specadmin"] = true,
|
|
["assistant"] = true,
|
|
["disp"] = true,
|
|
}
|
|
|
|
-- Хук для Physgun: позволяем администраторам поднимать энтити и игроков
|
|
hook.Add("PhysgunPickup", "!!!!Admin_PhysgunPickup_Fix", function(ply, ent)
|
|
if not IsValid(ply) then return end
|
|
|
|
local group = ply:GetUserGroup()
|
|
if AdminGroups[group] then
|
|
-- Если это игрок, SAM уже имеет свою логику, но мы подтверждаем наше разрешение
|
|
if ent:IsPlayer() then
|
|
-- Запрещаем поднимать суперадминов если мы просто "админ" (опционально)
|
|
-- if group == "admin" and ent:IsSuperAdmin() then return false end
|
|
return true
|
|
end
|
|
|
|
-- Для всех остальных энтитей — разрешаем
|
|
return true
|
|
end
|
|
end)
|
|
|
|
-- Хук для ToolGun: позволяем администраторам использовать инструменты на защищённых объектах
|
|
hook.Add("CanTool", "!!!!Admin_CanTool_Fix", function(ply, tr, tool)
|
|
if IsValid(ply) and AdminGroups[ply:GetUserGroup()] then
|
|
return true
|
|
end
|
|
end)
|
|
|
|
-- Хук для Properties (ПКМ меню): позволяем администраторам видеть всё
|
|
hook.Add("CanProperty", "!!!!Admin_CanProperty_Fix", function(ply, property, ent)
|
|
if IsValid(ply) and AdminGroups[ply:GetUserGroup()] then
|
|
return true
|
|
end
|
|
end)
|
|
|
|
-- Хук для Unfreeze: позволяем администраторам размораживать объекты
|
|
hook.Add("CanPlayerUnfreeze", "!!!!Admin_CanPlayerUnfreeze_Fix", function(ply, ent, phys)
|
|
if IsValid(ply) and AdminGroups[ply:GetUserGroup()] then
|
|
return true
|
|
end
|
|
end)
|
|
|
|
-- Принудительная регистрация привилегий в CAMI для Helix и SAM
|
|
hook.Add("InitPostEntity", "!!!!Admin_CAMI_Permissions_Fix", function()
|
|
if CAMI then
|
|
CAMI.RegisterPrivilege({
|
|
Name = "Helix - Bypass Prop Protection",
|
|
MinAccess = "admin"
|
|
})
|
|
|
|
-- Для SAM
|
|
if SAM_LOADED and sam then
|
|
sam.permissions.add("can_physgun_players", nil, "admin")
|
|
end
|
|
end
|
|
end)
|
|
|
|
print("[ADMIN FIX] Physics and Prop Protection bypass for 'admin' and 'curator' groups loaded.")
|