Why won't it teleport players after the first round?

I made a script that teleports players when a round starts, the round repeats but after the first round it won’t teleport the players again.
Script

local Part1 = game.Workspace.Part1
local Part2 = game.Workspace.Part2
local Part3 = game.Workspace.Part3
local Part4 = game.Workspace.Part4
local Part5 = game.Workspace.Part5
local Part6 = game.Workspace.Part6
local Part7 = game.Workspace.Part7
local Part8 = game.Workspace.Part8
local Part9 = game.Workspace.Part9
local Part1Event = game.ReplicatedStorage.Part1Event
local Part2Event = game.ReplicatedStorage.Part2Event
local Part3Event = game.ReplicatedStorage.Part3Event
local Part4Event = game.ReplicatedStorage.Part4Event
local Part5Event = game.ReplicatedStorage.Part5Event
local Part6Event = game.ReplicatedStorage.Part6Event
local Part7Event = game.ReplicatedStorage.Part7Event
local Part8Event = game.ReplicatedStorage.Part8Event
local Part9Event = game.ReplicatedStorage.Part9Event
local StartEvent = game.ReplicatedStorage.StartEvent
local times = 3
local roundon = false
function teleport()
	for _, v in next, game.Players:GetPlayers() do
		v.Character.HumanoidRootPart.CFrame = CFrame.new(-19.647, 12.818, -0.045)
	end
end
function teleport2()
	for _, v in next, game.Players:GetPlayers() do
		v.Character.HumanoidRootPart.CFrame = CFrame.new(-13.997, 43.309, 4.796)
	end
end
while roundon == false do
	wait()
	if roundon == false then
		wait(5)
		teleport()
		roundon = true
		StartEvent:Fire()
		times = 3
	end
end
while true do
	wait(5.2)
	local randompart = math.random(1,9)
	times = times - 1
	print(times)
	if randompart == 1 then
		Part1Event:Fire()
	elseif randompart == 2 then
		Part2Event:Fire()
	elseif randompart == 3 then	
		Part3Event:Fire()
	elseif randompart == 4 then	
		Part4Event:Fire()
	elseif randompart == 5 then	
		Part5Event:Fire()
	elseif randompart == 6 then	
		Part6Event:Fire()
	elseif randompart == 7 then	
		Part7Event:Fire()
	elseif randompart == 8 then
		Part8Event:Fire()
	elseif randompart == 9 then
		Part9Event:Fire()
	end
	if times == 0 then
	wait()
	teleport2()
	roundon = false
	times = 3
end
end

First off, you used :Fire(), rather than :FireServer() or :FireClient() (or :FireAllClients())

Also, to teleport all players, i would do this (USE THIS ONE FOR BEST RESULT AND EFFICIENCY):

local availablespawns = workspace.Spawns:GetChildren() --define this properly, and use :GetChildren() if the spawns are inside a model or folder

for _, player in pairs(game.Players:GetPlayers()) do
    local humpart = player.Character.HumanoidRootPart

    humpart.CFrame = availablespawns[1].CFrame
    table.remove(availablespawns,1)
end

With this, it will teleport all players in the server to a different spawn

You can also do this, if you have already numbered all the spawns:

local spawns = workspace.Spawns --define this properly
local spawnnum = 1

for _, player in pairs(game.Players:GetPlayers()) do
    local humpart = player.Character.HumanoidRootPart
    
    local getspawn = spawns:FindFirstChild("Spawn"..spawnnum)
    humpart.CFrame = getspawn.CFrame
    spawnnum = spawnnum + 1
end

spawnnum = 1
1 Like

I used :Fire() because it was a bindable event, and I did

local Part1 = game.Workspace.Part1
local Part2 = game.Workspace.Part2
local Part3 = game.Workspace.Part3
local Part4 = game.Workspace.Part4
local Part5 = game.Workspace.Part5
local Part6 = game.Workspace.Part6
local Part7 = game.Workspace.Part7
local Part8 = game.Workspace.Part8
local Part9 = game.Workspace.Part9
local Part1Event = game.ReplicatedStorage.Part1Event
local Part2Event = game.ReplicatedStorage.Part2Event
local Part3Event = game.ReplicatedStorage.Part3Event
local Part4Event = game.ReplicatedStorage.Part4Event
local Part5Event = game.ReplicatedStorage.Part5Event
local Part6Event = game.ReplicatedStorage.Part6Event
local Part7Event = game.ReplicatedStorage.Part7Event
local Part8Event = game.ReplicatedStorage.Part8Event
local Part9Event = game.ReplicatedStorage.Part9Event
local StartEvent = game.ReplicatedStorage.StartEvent
local times = 3
local roundon = false
function teleport()
	for _, v in next, game.Players:GetPlayers() do
		v.Character.HumanoidRootPart.CFrame = CFrame.new(-19.647, 12.818, -0.045)
	end
end
function teleport2()
	for _, v in next, game.Players:GetPlayers() do
		v.Character.HumanoidRootPart.CFrame = CFrame.new(-13.997, 43.309, 4.796)
	end
end
while roundon == false do
	wait()
	if roundon == false then
		wait(5)
		local spawns = workspace.GameSpawn
		for _, player in pairs(game.Players:GetPlayers()) do
    			local humpart = player.Character.HumanoidRootPart
   	 		humpart.CFrame = spawns.CFrame
		  end
		roundon = true
		StartEvent:Fire()
		times = 3
	end
end
while true do
	wait(5.2)
	local randompart = math.random(1,9)
	times = times - 1
	print(times)
	if randompart == 1 then
		Part1Event:Fire()
	elseif randompart == 2 then
		Part2Event:Fire()
	elseif randompart == 3 then	
		Part3Event:Fire()
	elseif randompart == 4 then	
		Part4Event:Fire()
	elseif randompart == 5 then	
		Part5Event:Fire()
	elseif randompart == 6 then	
		Part6Event:Fire()
	elseif randompart == 7 then	
		Part7Event:Fire()
	elseif randompart == 8 then
		Part8Event:Fire()
	elseif randompart == 9 then
		Part9Event:Fire()
	end
	if times == 0 then
	wait()
	local spawns2 = workspace.LobbySpawn
		for _, player in pairs(game.Players:GetPlayers()) do
    			local humpart = player.Character.HumanoidRootPart
   	 		humpart.CFrame = spawns2.CFrame
		  end
	roundon = false
	times = 3
end
end

and it still wouldn’t teleport, I had to modify it because there was only one spawn

If there’s only 1 spawn, then why do you have all these events?

--For teleporting players to the map:
for _, player in pairs(game.Players:GetPlayers()) do
    local humpart = player.Character.HumanoidRootPart
    
    humpart.CFrame = map.Spawn.CFrame --define properly
end

--For teleporting players back to the lobby:
for _, player in pairs(game.Players:GetPlayers()) do
    local humpart = player.Character.HumanoidRootPart
    
    humpart.CFrame = lobby.Spawn.CFrame --define properly
end
1 Like

those events are for this

while true do
	wait(5.2)
	local randompart = math.random(1,9)
	times = times - 1
	print(times)
	if randompart == 1 then
		Part1Event:Fire()
	elseif randompart == 2 then
		Part2Event:Fire()
	elseif randompart == 3 then	
		Part3Event:Fire()
	elseif randompart == 4 then	
		Part4Event:Fire()
	elseif randompart == 5 then	
		Part5Event:Fire()
	elseif randompart == 6 then	
		Part6Event:Fire()
	elseif randompart == 7 then	
		Part7Event:Fire()
	elseif randompart == 8 then
		Part8Event:Fire()
	elseif randompart == 9 then
		Part9Event:Fire()
	end

it’s a lava dipping game