So, im trying to make an system to choose an role for each player, and also choose a map for all players, so i tried this:

local roundLength = 10
local intermissionLength = 5
local status = game.ReplicatedStorage.IntermissionStatus
local inround = game.ReplicatedStorage.InRound
local chosenRandomNumberValue = game.ReplicatedStorage.chosenNumber
local displaychosenrole = game.StarterGui.areyoumurdorsherifforinno.Chosen.TextLabel
local player = game.Players.LocalPlayer
local chosenRoleValue = game.ReplicatedStorage.TheChosenRole

local randomMapNumber = math.random(1,3)


local mineshaft = game.Workspace.MineshaftSpawn
local milbase = game.Workspace.MilbaseSpawn
local lobby = game.Workspace.LobbySpawn
local ravenRock = game.Workspace.ravenrockSpawn

local function roundTimer()
	
	while wait() do
		for i = intermissionLength, 1, -1 do
			inround.Value = false
			wait(1)
			status.Value = "Intermission: ".. i .." seconds left!"
			wait(1)
			
		end
		for i = roundLength, 1, -1 do
			inround.Value = true
			wait(1)
			status.Value = "Game: ".. i .." seconds left!"
			
		end
		
	end
	
end

inround.Changed:Connect(function()
	if inround.Value == true then	
		
		for _, player in pairs(game.Players:GetChildren()) do
			local randomNumber = math.random(1,3)
			local char = player.Character
			if randomMapNumber == 1 then
				
				char.HumanoidRootPart.CFrame = mineshaft.CFrame
			elseif randomMapNumber == 2 then
				char.HumanoidRootPart.CFrame = milbase.CFrame
			elseif randomMapNumber == 3 then
				char.HumanoidRootPart.CFrame = ravenRock.CFrame
			end
		
			
			if randomNumber == 1 then
				player.TeamColor = BrickColor.new("Institutional white")	
				chosenRoleValue.Value = "MURDERER"
			elseif randomNumber == 2 then
				player.TeamColor = BrickColor.new("Institutional white")
				chosenRoleValue.Value = "SHERIFF"
			elseif randomNumber == 3 then
				player.TeamColor = BrickColor.new("Institutional white")
				chosenRoleValue.Value = "INNOCENT"
			end
			
		end
	else
		for _,player in pairs(game.Players:GetChildren()) do
			local char = player.Character
			char.HumanoidRootPart.CFrame = lobby.CFrame		
			player.TeamColor = BrickColor.new("Medium stone grey")
			chosenRoleValue.Value = "NEUTRAL"
			
		end
	end
	
end)


spawn(roundTimer)	

And of course, it chooses an map for each player, and every player has the same role.. I tried switching it, and even doing it in another script, also i this is in "ServerScriptService", ofc its a normal script. Also does it need to be a local script, because if it does then how do i do that then, because i cant put a local script in "ServerScriptStorage". Also i want to make it so that only 1 player gets murderer, and only one sheriff, all the others become innocents.

5 comments

1

You can store the different roles in a table, then let it randomly choose one of the roles u put in the table, and when a certain role is taken you remove it from the table.

0

I mean this is just another way to do it,

0

why are you settings everyones team color to the same color

0

@testing34545 because i have 2 teams, playing and waiting, so that in the chat the murderer isnt red, and so on.

0

so how do i make it that only murderer and sheriff get removed, and everyone else becomes innocent? please post this as an answer, also i have no clue how to do the tables..