43 lines
1.2 KiB
Lua
43 lines
1.2 KiB
Lua
local PlayerPermissionsModule = {}
|
|
|
|
local function HasRankInGroupFunctionFactory(groupId, requiredRank)
|
|
local hasRankCache = {}
|
|
assert(type(requiredRank) == "number", "requiredRank must be a number")
|
|
return function(player)
|
|
if player and player.UserId > 0 then
|
|
if hasRankCache[player.UserId] == nil then
|
|
local hasRank = false
|
|
pcall(function()
|
|
hasRank = player:GetRankInGroup(groupId) >= requiredRank
|
|
end)
|
|
hasRankCache[player.UserId] = hasRank
|
|
end
|
|
return hasRankCache[player.UserId]
|
|
end
|
|
return false
|
|
end
|
|
end
|
|
|
|
local function IsInGroupFunctionFactory(groupId)
|
|
local inGroupCache = {}
|
|
return function(player)
|
|
if player and player.UserId > 0 then
|
|
if inGroupCache[player.UserId] == nil then
|
|
local inGroup = false
|
|
pcall(function()
|
|
inGroup = player:IsInGroup(groupId)
|
|
end)
|
|
inGroupCache[player.UserId] = inGroup
|
|
end
|
|
return inGroupCache[player.UserId]
|
|
end
|
|
return false
|
|
end
|
|
end
|
|
|
|
PlayerPermissionsModule.IsPlayerAdminAsync = IsInGroupFunctionFactory(1200769)
|
|
PlayerPermissionsModule.IsPlayerInternAsync = HasRankInGroupFunctionFactory(2868472, 100)
|
|
PlayerPermissionsModule.IsPlayerStarAsync = IsInGroupFunctionFactory(4199740)
|
|
|
|
return PlayerPermissionsModule
|