Hello,
I would like to be able to give the “Tester” rank for my group game to only be able to play and not edit.
The issue is that ROBLOX only gives me the ability to give edit ability in the Roles Settings in the group and only Public or Private in the Game Settings.
I’ve tried to see if there are any work-around but I haven’t found any. I tried looking on the Dev Forum however I still couldn’t find any help.
If you have any idea on how to make this work, please let me know.
Thanks,
Arian
The only way to have it work like that would be a whitelist system with the game public.
By that I mean just having it so if the player is in the group with the matching rank or higher it would allow them to join but if not then they would get kicked.
The Roblox group Maximillian has a similar system in-place for their games as seen in their group games except they use UserID as the method to find whitelisted players then kick.
This can be done like this.
local minimum = 255 --minium group rank
local groupId = --GroupID
game.Players.PlayerAdded:Connect(function(plr)
if plr:GetRankInGroup(groupId) >= minimum then
print("Whitelisted Tester")
else
plr:Kick("Closed Development Testing.")
end
end)
That’s a good script, but I would suggest checking their rank via getgroupsasync, as it does not cache like :GetRankInGroup() does. While this may not be a big issue, if a player is not a tester, and they are ranked a tester, then they must join a new server to gain access, they can’t join any previous servers because their group rank will not update to show they are a tester. The two scripts below will make it so the group rank is not cached.
Module Script
local GroupService = {}
function GroupService:GetRankInGroup(player, group)
if not player then
return false
end
for _, x in pairs(game:GetService("GroupService"):GetGroupsAsync(player.UserId)) do
if x.Id == group then
return x.Rank
end
end
return 0
end
function GroupService:GetRoleInGroup(player, group)
if not player then
return false
end
for _, x in pairs(game:GetService("GroupService"):GetGroupsAsync(player.UserId)) do
if x.Id == group then
return x.Role
end
end
return "Guest"
end
return GroupService
Kick Script
local GroupService = game:GetService("ServerScriptService"):WaitForChild("GroupService")
local GS = require(GroupService)
local minimum = 255 --minium group rank
local groupId = 12345 --GroupID
game.Players.PlayerAdded:Connect(function(plr)
if GS:GetRankInGroup(plr, groupId) < minimum then
plr:Kick("Closed Development Testing.")
end
end)