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

'<eof>' expected near end???

I have an error that said "'' expected near end" and I don't know what it means.

-- 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 = 5 

-- Game Loop

while true do
 
 Status.Value = "Waiting for enough players"
 
 repeat wait() until game.Players.NumPlayers >= 2 
 
 Status.Value = "Intermisson"
 
 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 Map
 
 local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")
 
 if not SpawnPoints then
  print ("Spawnpoints not found!")
 end
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)
 
 
      local Sword = ServerStorage.Sword:Clone()
      Sword.Parent = player.Backpack
 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)
				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.Robux.Value = plrs[1].leaderstats.Robux.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

8 comments

0

like jesus what is this

0

fyi eof stands for end of file but please fix the tags

0

You Script have extra ends.

0

Code block expected on line 1.

0

Can you please make your script look better..? Organize it. This hurts my eyes :/

0

Remove end in line 164

0

Indent the code properly and you will be able to fix it yourself.

1 answer

You have extra ends here and there and also never really actually ended your while loop as well.

For future reference, to fix these sort of problems, begin by pasting it in a new file and start indenting on every new scope you have. You just need to be patience of this kinds of things.

Here is your fixed code. Of course since you know the script better than anybody else, you might have to change here and there. I indented it and fixed it through my general understanding of your code.

But do please double check.

while true do
    Status.Value = "Waiting for enough players"
    
    repeat wait() until game.Players.NumPlayers >= 2 
    
    Status.Value = "Intermisson"
    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
    
    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
                character:FindFirstChild("HumanoidRootPart").CFrame = AvailableSpawnPoints[1].CFrame 
                table.remove(AvailableSpawnPoints,1)
                local Sword = ServerStorage.Sword:Clone()
                Sword.Parent = player.Backpack
            else
                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)
                    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.Robux.Value = plrs[1].leaderstats.Robux.Value + reward
            break
        elseif #plrs == 0 then
            Status.Value = "Nobody won!"
            break
        elseif i == 0 then
            Status.Value = "Time up!"
            break
        end
    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

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