function getTeams()
	local teamNum = 1
	repeat wait()		
		local spectators = {}
		local teams = {"Red", "Blue"}
		local players = game.Players:GetChildren()
		for index, player in pairs(players) do
			if (player.TeamColor == game.Teams["Spectators"].TeamColor) then
				if (player.Character:findFirstChild("Torso")) then
					table.insert(spectators, player)
				end
			end
		end
		local randomPlayer = spectators[math.random(1, #spectators)]
		randomPlayer.TeamColor = game.Teams[teams[teamNum]].TeamColor
		local spectatorNum = 0
		local players = game.Players:GetChildren()
		for index, player in pairs(players) do
			if (player.TeamColor == game.Teams["Spectators"].TeamColor) then
				if (player.Character:findFirstChild("Torso")) then
					spectatorNum = spectatorNum + 1
				end
			end
		end
		teamNum = (teamNum == 1) and 2 or 1
	until (spectatorNum == 0)
end

What I have here is a function which gives a player a random team. The problem is that they aren't random. Every single person who joins is put onto red team. The point of this script being so long and complex is to make it so if someone joins halfway through a game, they don't cause everyone else to have their teams changed.

1 comment

0

have you tried an on player entered script instead? as soon as they enter assign them to a random team, then you dont have to worry about the player messing up the other teams. That or your problem could be you're not using math.randomseed(Tick()) < copy that line of code and put it towards the beginning of your script just past the locals. Your math.random might not be random enough. lol