I am making a FPS (First Person Shooter), but the problem is, when the intermission gets to 0, it only teleports one of the players, I have no idea why this is, here is the code!

local rs = game:GetService("ReplicatedStorage")
local status = rs:WaitForChild("StatusValue")

while true do
	while game.Players.NumPlayers < 2 do
		status.Value = "There needs to be two more players to start the game!"
		repeat wait(2) until game.Players.NumPlayers >= 2
	end
	
	for i = 30, 0,-1 do
		status.Value = "Intermission: "..i
		wait(1)
	end
	
	_G.gameplayers = {}	
	for i, v in pairs(game.Players:GetPlayers()) do
		if v then
			table.insert(_G.gameplayers, v.Name)
		end
	end
	


local spawns = workspace:WaitForChild('Spawns'):GetChildren()
for _, player in pairs(game.Players:GetPlayers()) do
	if player and #spawns > 0 then
		local torso = player.Character:WaitForChild('Torso')
		local allspawns = math.random(1, #spawns)
		local randomspawn = spawns[allspawns]
		if randomspawn and torso then
			table.remove(spawns, allspawns)
			torso.CFrame = CFrame.new(randomspawn.Position + Vector3.new(0,2,0))
			local gun = game.ReplicatedStorage["MP40"]:Clone()
			gun.Parent = player.Backpack
		end
	end
end
	
	while true do
	wait(1)

	if #_G.gameplayers == 1 then
		for i, v in pairs(_G.gameplayers) do
			if v ~= nil then
				status.Value = v.. ' is the winner! Well done!'


				game.Players[v].leaderstats.cash.Value = game.Players[v].leaderstats.cash.Value + 10
				
				break
			end
			
		end
		break
	else
		status.Value = "Match in Progress"
	end
end
	wait(5)

	end