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

Why I have error "Expected<eof>, got 'end'?

-- Define variables

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local SeverStorage = game:GetService("ServerStorage")

local MapsFolder = SeverStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local GameLength = 50

local reward = 100

--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 = AvailableMap[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 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
	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
					--Lef 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) 
					end
				end
				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 = "Then winner is "..plrs[1].Name
			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 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("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

3 comments

0

I have red line in last line

0

Code is from alvinbloxx. Please make your own attempt rather than copying down his crappy code.

1 answer

I fixed your issue with the end (you had too many), but you're having scoping issues. plrs and ClonedMap are unknown in the scope you're using them in. You'll have to figure that one out.

-- Define variables
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerStorage = game:GetService("ServerStorage")
local MapsFolder = ServerStorage:WaitForChild("Maps")
local Status = ReplicatedStorage:WaitForChild("Status")
local GameLength = 50
local reward = 100
--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 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
    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
                    --Lef 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) 
                    end
                end
                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 = "Then winner is "..plrs[1].Name
            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 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("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)

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