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