mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
98
addons/sam-master/lua/sam/sh_permissions.lua
Normal file
98
addons/sam-master/lua/sam/sh_permissions.lua
Normal file
@@ -0,0 +1,98 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
if SAM_LOADED then return end
|
||||
|
||||
local permissions = {}
|
||||
|
||||
local give_permission
|
||||
if SERVER then
|
||||
local permissions_to_add = {}
|
||||
|
||||
give_permission = function(name, permission)
|
||||
if sam.ranks.ranks_loaded() then
|
||||
local rank = sam.ranks.get_rank(name)
|
||||
if rank and rank.data.permissions[permission] == nil then
|
||||
sam.ranks.give_permission(name, permission)
|
||||
end
|
||||
else
|
||||
table.insert(permissions_to_add, {name, permission})
|
||||
end
|
||||
end
|
||||
|
||||
hook.Add("SAM.LoadedRanks", "SAM.Command.GivePermissions", function()
|
||||
for k, v in ipairs(permissions_to_add) do
|
||||
give_permission(v[1], v[2])
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
local get_next_Other = function()
|
||||
for i, v in ipairs(permissions) do
|
||||
if v.category == "Other" then
|
||||
return i
|
||||
end
|
||||
end
|
||||
return #permissions + 1
|
||||
end
|
||||
|
||||
function sam.permissions.add(permission, category, rank)
|
||||
if not sam.isstring(category) then
|
||||
category = "Other"
|
||||
end
|
||||
|
||||
local permission_data = {
|
||||
name = permission,
|
||||
category = category,
|
||||
rank = rank,
|
||||
value = value
|
||||
}
|
||||
|
||||
local index = sam.permissions.get_index(permission)
|
||||
if not index then
|
||||
if category ~= "Other" then
|
||||
table.insert(permissions, get_next_Other(), permission_data)
|
||||
else
|
||||
table.insert(permissions, permission_data)
|
||||
end
|
||||
hook.Call("SAM.AddedPermission", nil, permission, category, rank, value)
|
||||
else
|
||||
permissions[index] = permission_data
|
||||
hook.Call("SAM.PermissionModified", nil, permission, category, rank, value)
|
||||
end
|
||||
|
||||
if SERVER and rank then
|
||||
give_permission(rank, permission)
|
||||
end
|
||||
end
|
||||
|
||||
function sam.permissions.get_index(permission)
|
||||
for i, v in ipairs(permissions) do
|
||||
if v.name == permission then
|
||||
return i
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function sam.permissions.remove(permission)
|
||||
local index = sam.permissions.get_index(permission)
|
||||
if index then
|
||||
table.remove(permissions, index)
|
||||
hook.Call("SAM.RemovedPermission", nil, permission)
|
||||
end
|
||||
end
|
||||
|
||||
function sam.permissions.exists(permission)
|
||||
return sam.permissions.get_index(permission) and true or false
|
||||
end
|
||||
|
||||
function sam.permissions.get()
|
||||
return permissions
|
||||
end
|
||||
Reference in New Issue
Block a user