D3stats/lua/d3stats/sh_level.lua

76 lines
1.6 KiB
Lua
Raw Permalink Normal View History

2020-01-22 14:25:58 +00:00
-- Copyright (c) 2020 David Vogel
--
-- This software is released under the MIT License.
-- https://opensource.org/licenses/MIT
2016-10-05 12:30:35 +00:00
-- Calculate the level from the given XP
function D3stats.CalculateLevel(XP)
2016-10-05 12:30:35 +00:00
local Level = 1
for key, value in pairs(D3stats.Levels) do
2016-10-05 12:30:35 +00:00
if value.XP_needed <= XP then
Level = key
else
break
end
end
return Level
end
-- Check if the level has the given permission
function D3stats.LevelCheckPermission(Level, Permission)
2016-10-05 12:30:35 +00:00
local Granted = false
-- If the permission is not on the list, allow it
if not D3stats.Permissions[Permission] then
return true
end
for key, value in pairs(D3stats.Levels) do
2016-10-05 12:30:35 +00:00
if key <= Level then
if value.Permissions and value.Permissions[Permission] then
Granted = value.Permissions[Permission]
end
else
break
end
end
return Granted
end
-- Returns what level is needed for the given permission
function D3stats.GetPermissionLevel(Permission)
local Level
if not D3stats.Permissions[Permission] then
return 1
end
for key, value in pairs(D3stats.Levels) do
if value.Permissions and value.Permissions[Permission] then
return key
end
end
return nil
end
2016-10-05 12:30:35 +00:00
-- Count the amount of online players who have the permission
if SERVER then
function D3stats.CountPermissionPlayers(Permission, Team)
2016-10-05 12:30:35 +00:00
local Counter = 0
local players = player.GetAll()
for key, ply in pairs(players) do
if Team == nil or ply:Team() == Team then
if D3stats.LevelCheckPermission(ply:D3stats_GetLevel(), Permission) == true then
Counter = Counter + 1
end
2016-10-05 12:30:35 +00:00
end
end
return Counter
end
end