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

Rounds don't reset, Winner doesn't return to the lobby. How do I fix this?

So I'm making a sword fight game. After defeating the other players, the last player standing doesn't get teleported back to the lobby, and the game doesn't get ready for the next round, and the status bar gui forever says (Playername) won! I've tested this in a real game with friends, the output doesn't say anything wrong, and the script is in ServerScriptStorage.

Script:

--Define variables

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ServerStorage = game:GetService("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local GameLength = 60

local reward = 1

--Game loop (Plrs = Players)

while true do

Status.Value = "Waiting for players"

repeat wait(1) until game.Players.NumPlayers >= 2

Status.Value = "Intermission"

wait(30)

local plrs = {}

for i, player in pairs(game.Players:GetPlayers()) do
	if player then
		table.insert(plrs,player) --Add each player into Players table
	end
end

wait(5)

local AvailableMaps = MapsFolder:GetChildren()

local ChosenMap = AvailableMaps[math.random(1,#AvailableMaps)]

Status.Value = ChosenMap.Name.." Chosen"

local ClonedMap = ChosenMap:Clone()
ClonedMap.Parent = workspace

--Teleport Players to map

local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")

if not SpawnPoints then
	print("Map SpawnPoints not found!")
end

local AvailableSpawnPoints = SpawnPoints:GetChildren()

for i, player in pairs(plrs) do
	if player then
		character = player.Character
		
		if character then
			--Teleport them
			
			character:FindFirstChild("HumanoidRootPart").CFrame = AvailableSpawnPoints[1].CFrame + Vector3.new(0,10,0)
			table.remove(AvailableSpawnPoints,1)
			
			
			--Give them a sword
			
			local Sword = ServerStorage.Sword:Clone()
			Sword.Parent = player.Backpack
			
			local GameTag = Instance.new("BoolValue")
			GameTag.Name = "GameTag"
			GameTag.Parent = player.Character
			
		else
			--There is no character!
			if not player then
				table.remove(plrs,i)
			end
		end
	end
end


Status.Value = "Game Starting..."

wait(5)

for i = GameLength,0,-1 do
	
	for x, player in pairs(plrs) do
		if player then
			
			character = player.Character
			
			if not character then
				--Left Game or something
				table.remove(plrs,x)
			else
				if character:FindFirstChild("GameTag") then
					--They are still alive
					print(player.Name.." is still alive.")
				else
					--They are ded
					table.remove(plrs,x)
					print(player.Name.." has died!")
				end
			end
		else
			table.remove(plrs,x)
			print(player.Name.." has died!")
		end
	end
	
	Status.Value = "Time left: "..i.." seconds. | Players alive: "..#plrs.."."
	
	if #plrs == 1 then
		--Last Player Stading
		Status.Value = plrs[1].Name.." won!"
		plrs[1].leaderstats.Bucks.Value = plrs[1].leaderstats.Bucks.Value + reward
		break
	elseif #plrs == 0 then
		Status.Value = "Nobody won."
		break
	elseif i == 0 then
		Status.Value = "Time's up!"
		break
	end
	
	wait(1)
end

print("Game has ended.")

wait(2)

for i, player in pairs(game.Players:GetPlayers()) do
	character = player.Character
	
	if not character then
		--Ignore them
	else
		if character:FindFirstChild("GameTag") then
			character.GameTag:Destroy()
		end
		
		if player.Backpack:FindFirstChild("Sword") then
			player.Backpack.Sword:Destroy()
		end
		
		if character:FindFirstChild("Sword") then
			character.Sword:Destroy()
		end
		
	end
	
	player:LoadCharacter()
end

ClonedMap:Destroy()

Status.Value = "Game ended."

	wait(2)
end

1 answer

✓ Accepted answer

You're missing the code that teleports the players back to intermission when the round ends. Make a boolean value named InRound or something and teleport players to the map when it's set to true, and teleport them back to intermission when InRound is set to false.

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