mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
124
lua/sam/ranks/sh_ranks.lua
Normal file
124
lua/sam/ranks/sh_ranks.lua
Normal file
@@ -0,0 +1,124 @@
|
||||
--[[
|
||||
| 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
|
||||
Reference in New Issue
Block a user