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

Expected 'end' (to close 'do' at line 17), got <eof>; did you forget to close 'then' at line 149?

Whats Wrong?

-- Define variables

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ServerStorage = game:GetService("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local GameLength = 90

local reward = 2

-- Game Loop

while true do

	Status.Value = "Waiting for enough 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) -- Add each player into plrs table
		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 the 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
				table.remove(AvailableSpawnPoints,1)


				-- Give them a sword

				local Knife = ServerStorage.Knife:Clone()
				Knife.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 = "Get ready to play!"

	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 the 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.Gems.Value = plrs[1].leaderstats.Gems.Value + reward
			break
		elseif #plrs == 0 then
			Status.Value = "Nobody won :("
			break
		elseif i == 0 then
			Status.Value = "Times up!"
			break
		end

		wait(1)
	end

	print("End of game")

	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("Knife") then
				player.Backpack.Knife:Destroy()
			end

			if character:FindFirstChild("Knife") then
				character.Knife:Destroy()
			end

		end

		player:LoadCharacter()
	end

	ClonedMap:Destroy()

	Status.Value = "Game ended"

	wait(2)

1 answer

If what you've posted is the entire script, then you need to close the while true do loop on line 17 like the error message told you to. Add one more end right at the end of the script.

1 comment

0

tysm its working now!

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