Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

How can you give every player only ONE random role?

When I start a server with this script,(5 players), the different players are assigned to multiple random roles. How can I give every player only ONE role? My script(Try using it in Roblox Studio):

local Players = game:GetService("Players")
local Roles = game.ReplicatedStorage.roles:GetChildren()

Allavailableplayers = {}
Villagers = {}
Werewolves ={}
Arsonists = {}
Hunters ={}
Mediums ={}
Seers ={}
Jesters ={}
Witches ={}

Wolfcount = 0

function Werewolf()
	repeat 
	local werewolf = Allavailableplayers[math.random(1,#Allavailableplayers)]
	table.insert(Werewolves,1,werewolf)
	table.remove(Allavailableplayers,1)
	Wolfcount = Wolfcount+1
	until Wolfcount == 3
end

game.Players.PlayerAdded:Connect(function(plr)
table.insert(Allavailableplayers,1,plr)
print("Need/s a role: ")
print(table.unpack(Allavailableplayers))
wait(10)
if table.getn(Players:GetPlayers()) == 5
then
	print("Enough players to play.")

for i, Randomplayer in pairs(Allavailableplayers)
do
if table.getn(Werewolves) < 3
then
	Werewolf()
	print("Werewolves: ")
	print(table.unpack(Werewolves))
end	
end

for i,Randomplayer in pairs(Allavailableplayers)
do			
local Randomtablenumber = math.random(1,7)
wait(1)
if Randomtablenumber == 1
   then
	 table.insert(Villagers,1,Randomplayer)
	table.remove(Allavailableplayers,1)
	print("Villagers: ")
	print(table.unpack(Villagers))
elseif Randomtablenumber == 2
   then
	 table.insert(Arsonists,1,Randomplayer)
	table.remove(Allavailableplayers,1)
	print("Arsonists: ")
	print(table.unpack(Arsonists))
elseif Randomtablenumber == 3
   then
	 table.insert(Hunters,1,Randomplayer)
	table.remove(Allavailableplayers,1)
	print("Hunters: ")
	print(table.unpack(Hunters))
elseif Randomtablenumber == 4
   then
	table.insert(Witches,1,Randomplayer)
	table.remove(Allavailableplayers,1)
	print("Witches: ")
	print(table.unpack(Witches))
elseif Randomtablenumber == 5
   then
	table.insert(Jesters,1,Randomplayer)
	table.remove(Allavailableplayers,1)
	print("Jesters: ")
	print(table.unpack(Jesters))
elseif Randomtablenumber == 6
   then
	table.insert(Mediums,1,Randomplayer)
	table.remove(Allavailableplayers,1)
	print("Mediums: ")
	print(table.unpack(Mediums))
elseif Randomtablenumber == 7
   then
	table.insert(Seers,1,Randomplayer)
	table.remove(Allavailableplayers,1)
	print("Seers: ")
	print(table.unpack(Seers))

end
end
else
print("At least 5 players have to join.")
end
end)

Thanks in advance.

1 answer

I believe you would need a script that goes down the list of players one by one and individually assigning a role and then have a variable for that role saying weather it is taken or not:

player 1--> random role-->(werewolf gets picked)-->set werewolf variable as taken player 2--> random role-->(werewolf gets picked again)-->check if werewolf = taken-->if it is taken pick another role

et cetera

This discussion is preserved as it was. New answers, comments, and votes are closed.