mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
124 lines
2.4 KiB
Lua
124 lines
2.4 KiB
Lua
--[[
|
|
| 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
|
|
|
|
SAM_IMMUNITY_SUPERADMIN = 100
|
|
SAM_IMMUNITY_ADMIN = 50
|
|
SAM_IMMUNITY_USER = 1
|
|
|
|
function sam.ranks.get_ranks()
|
|
return sam.get_global("Ranks") or {}
|
|
end
|
|
|
|
function sam.ranks.get_rank(rank)
|
|
local ranks = sam.ranks.get_ranks()
|
|
return ranks[rank]
|
|
end
|
|
|
|
function sam.ranks.is_rank(rank)
|
|
if sam.ranks.get_rank(rank) then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
function sam.ranks.is_default_rank(rank)
|
|
return rank == "superadmin" or rank == "admin" or rank == "user"
|
|
end
|
|
|
|
function sam.ranks.inherits_from(rank, rank_2)
|
|
if rank == rank_2 then
|
|
return true
|
|
end
|
|
|
|
while true do
|
|
rank = sam.ranks.get_rank(rank)
|
|
|
|
if rank then
|
|
local inherits_from = rank.inherit
|
|
if inherits_from == rank_2 then
|
|
return true
|
|
end
|
|
|
|
rank = rank.inherit
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
end
|
|
|
|
function sam.ranks.has_permission(rank, permission)
|
|
while true do
|
|
if rank == "superadmin" then
|
|
return true
|
|
end
|
|
|
|
rank = sam.ranks.get_rank(rank)
|
|
|
|
if rank then
|
|
local rank_permission = rank.data.permissions[permission]
|
|
if rank_permission ~= nil then
|
|
return rank_permission
|
|
end
|
|
|
|
rank = rank.inherit
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
end
|
|
|
|
function sam.ranks.get_limit(rank, limit_type)
|
|
while true do
|
|
if rank == "superadmin" then return -1 end
|
|
|
|
rank = sam.ranks.get_rank(rank)
|
|
|
|
if rank then
|
|
local limit = rank.data.limits[limit_type]
|
|
if limit ~= nil then
|
|
return limit
|
|
end
|
|
|
|
rank = rank.inherit
|
|
else
|
|
return cvars.Number("sbox_max" .. limit_type, 0)
|
|
end
|
|
end
|
|
end
|
|
|
|
function sam.ranks.get_immunity(rank)
|
|
rank = sam.ranks.get_rank(rank)
|
|
return rank and rank.immunity or false
|
|
end
|
|
|
|
function sam.ranks.can_target(rank_1, rank_2)
|
|
rank_1, rank_2 = sam.ranks.get_rank(rank_1), sam.ranks.get_rank(rank_2)
|
|
if not rank_1 or not rank_2 then
|
|
return false
|
|
end
|
|
return rank_1.immunity >= rank_2.immunity
|
|
end
|
|
|
|
function sam.ranks.get_ban_limit(rank)
|
|
rank = sam.ranks.get_rank(rank)
|
|
return rank and rank.ban_limit or false
|
|
end
|
|
|
|
if CLIENT then
|
|
hook.Add("SAM.ChangedGlobalVar", "SAM.Ranks.CheckLoadedRanks", function(key, value)
|
|
if key == "Ranks" then
|
|
hook.Call("SAM.LoadedRanks", nil, value)
|
|
hook.Remove("SAM.ChangedGlobalVar", "SAM.Ranks.CheckLoadedRanks")
|
|
end
|
|
end)
|
|
end |