I tried to make a game same as AlvinBlox's Sword Fight game and I couldn't loop my script After the match ended it would never start a new one It would be stuck as "Player 1 has won" Here is my script: local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ServerStorage = game:GetService("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local reward = 10

local GameLength = 120

-- Game Loop

while true do

Status.Value = "Waiting for more players"

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

Status.Value = "Intermission"

wait(10)

local plrs = {}

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

wait(2)

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("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 = "Prepare to Fight!"

wait(2)

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
		else
			if character:FindFirstChild("GameTag") then
				-- They are still alive
				print(player.Name.." is still in the game!")
			else
				--they are dead
				table.remove(plrs,x)
				print(player.Name.." has been removed!")				
			end
		
		end
	else
		table.remove(plrs,x)
	    print(player.Name.." has been removed!")
	end
end

Status.Value = "There are "..i.." seconds remaining, and "..#plrs.." players left"

if #plrs == 1 then
	-- Last person standing
	Status.Value = "The winner is "..plrs[1].Name
	plrs[1].leaderstats.Coins.Value = plrs[1].leaderstats.Coins.Value + reward
	break
elseif #plrs == 0 then
	Status.Value = "Nobody has won!"
	break
elseif i == 0 then
	Status.Value = "Times up!"
	break
end
wait(1)

end print("End of game") wait(2)

for i, player in pairs(game.Players:GetPlayers()) do character = player.Character

if not character then
	table.remove(plrs,x)
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:Destory()

Status.Value = "Game ended" wait(2) end

2 comments

0

Use proper code blocking; You're more likely to receive help this way.

0

Yes please organize your code and I will help. I made the same sword game and it works for me.