add gs
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
local PlayerPermissionsModule = {}
|
||||
|
||||
local PlayersService = game:GetService("Players")
|
||||
|
||||
local PlayerGroupInfoMap = {}
|
||||
local PlayerGroupInfoMapChanged = Instance.new("BindableEvent")
|
||||
|
||||
local PlayerCanManageInfoMap = {}
|
||||
local PlayerCanManageInfoMapChanged = Instance.new("BindableEvent")
|
||||
|
||||
spawn(function()
|
||||
local RobloxReplicatedStorage = game:GetService("RobloxReplicatedStorage")
|
||||
local RemoveEvent_NewPlayerGroupDetails = RobloxReplicatedStorage:WaitForChild("NewPlayerGroupDetails", math.huge)
|
||||
RemoveEvent_NewPlayerGroupDetails.OnClientEvent:Connect(function(userIdStr, groupDetails)
|
||||
local player = PlayersService:GetPlayerByUserId(tonumber(userIdStr))
|
||||
if player then
|
||||
PlayerGroupInfoMap[player] = groupDetails
|
||||
PlayerGroupInfoMapChanged:Fire()
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
coroutine.wrap(function()
|
||||
local RobloxReplicatedStorage = game:GetService("RobloxReplicatedStorage")
|
||||
local RemoveEvent_NewPlayerCanManageDetails = RobloxReplicatedStorage:WaitForChild("NewPlayerCanManageDetails", math.huge)
|
||||
RemoveEvent_NewPlayerCanManageDetails.OnClientEvent:Connect(function(userIdStr, canManage)
|
||||
local player = PlayersService:GetPlayerByUserId(tonumber(userIdStr))
|
||||
if player then
|
||||
PlayerCanManageInfoMap[player] = canManage
|
||||
PlayerCanManageInfoMapChanged:Fire()
|
||||
end
|
||||
end)
|
||||
end)()
|
||||
|
||||
PlayersService.PlayerRemoving:Connect(function(player)
|
||||
PlayerGroupInfoMap[player] = nil
|
||||
PlayerGroupInfoMapChanged:Fire()
|
||||
end)
|
||||
|
||||
local function NewInGroupFunctionFactory(groupKey)
|
||||
return function(player)
|
||||
while not PlayerGroupInfoMap[player] and player.Parent do
|
||||
PlayerGroupInfoMapChanged.Event:wait()
|
||||
end
|
||||
local groupInfo = PlayerGroupInfoMap[player]
|
||||
if groupInfo and groupInfo[groupKey] then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
local function NewIsLocalizationExpertFunctionFactory()
|
||||
local localizationCheckFunctions = {
|
||||
NewInGroupFunctionFactory("SpanishLocalizationExpert"),
|
||||
NewInGroupFunctionFactory("BrazilianLocalizationExpert"),
|
||||
NewInGroupFunctionFactory("FrenchLocalizationExpert"),
|
||||
NewInGroupFunctionFactory("GermanLocalizationExpert"),
|
||||
}
|
||||
return function(player)
|
||||
for i = 1, #localizationCheckFunctions do
|
||||
if localizationCheckFunctions[i](player) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
local function IsPlaceOwnerFunctionFactory()
|
||||
if game.CreatorType == Enum.CreatorType.Group then
|
||||
return NewInGroupFunctionFactory("PlaceCreator")
|
||||
end
|
||||
return function(player)
|
||||
return player.UserId == game.CreatorId
|
||||
end
|
||||
end
|
||||
|
||||
local function CanPlayerManagePlace(player)
|
||||
while PlayerCanManageInfoMap[player] == nil and player.Parent do
|
||||
PlayerCanManageInfoMapChanged.Event:Wait()
|
||||
end
|
||||
if PlayerCanManageInfoMap[player] ~= nil then
|
||||
return PlayerCanManageInfoMap[player]
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
PlayerPermissionsModule.IsPlayerAdminAsync = NewInGroupFunctionFactory("Admin")
|
||||
PlayerPermissionsModule.IsPlayerInternAsync = NewInGroupFunctionFactory("Intern")
|
||||
PlayerPermissionsModule.IsPlayerStarAsync = NewInGroupFunctionFactory("Star")
|
||||
PlayerPermissionsModule.IsPlayerLocalizationExpertAsync = NewIsLocalizationExpertFunctionFactory()
|
||||
PlayerPermissionsModule.IsPlayerPlaceOwnerAsync = IsPlaceOwnerFunctionFactory()
|
||||
PlayerPermissionsModule.CanPlayerManagePlaceAsync = CanPlayerManagePlace
|
||||
|
||||
return PlayerPermissionsModule
|
||||
Reference in New Issue
Block a user