Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

'<eof>' expected near end???

Asked by
Daigox 0
5 years ago
Edited 5 years ago

I have an error that said "'<eof>' 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

0
like jesus what is this tacotown2 119 — 5y
0
fyi eof stands for end of file but please fix the tags GoldAngelInDisguise 297 — 5y
0
You Script have extra ends. ksony 54 — 5y
View all comments (4 more)
0
Code block expected on line 1. User#5423 17 — 5y
0
Can you please make your script look better..? Organize it. This hurts my eyes :/ HeyItzDanniee 252 — 5y
0
Remove end in line 164 yHasteeD 1819 — 5y
0
Indent the code properly and you will be able to fix it yourself. Zafirua 1348 — 5y

1 answer

Log in to vote
1
Answered by 5 years ago
Edited 5 years ago

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
Ad

Answer this question