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

I keep getting a message saying 'end' expected (to close 'while' at line 17) near '<eof>', help??

Asked by 5 years ago

Here is my code

-- Define Variables

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ServerStorage = game:GetService("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local GameLength = 60

local reward = 25

--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 AvaliableMaps = MapsFolder:GetChildren()

local ChosenMap = AvaliableMaps[math.random(1,#AvaliableMaps)]

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 AvaliableSpawnPoints = SpawnPoints:GetChildren()

for i, player in pairs(plrs) do

if player then

character = player.Character

if character then

--Teleport them

character:FindFirstChild("HumanoidRootPart").CFrame = AvaliableSpawnPoints[1].CFrame

table.remove(AvaliableSpawnPoints,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 = "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

--Still alive

print (player.name.." is still in the game!")

else

--They are dead

table.remove(plrs, x)

print(player.name.." has been eliminated!")

end

end

else

table.remove(plrs, x)

print(player.name.." has been eliminated!")

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.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's 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()

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
Please fix code formatting gullet 471 — 5y
0
Please, use the button in the editor that lets you post code. It is way too hard to read this. LisaF854 93 — 5y

2 answers

Log in to vote
0
Answered by 5 years ago

Place

end

at the end of the script

Ad
Log in to vote
0
Answered by 5 years ago

As xXCyberProXx said, you need a closing end to close your while loop.

Here's the formatted code, with an end added on line 145.

```` -- Define Variables local ReplicatedStorage = game:GetService("ReplicatedStorage") local ServerStorage = game:GetService("ServerStorage") local MapsFolder = ServerStorage:WaitForChild("Maps") local Status = ReplicatedStorage:WaitForChild("Status") local GameLength = 60 local reward = 25

-- 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 AvaliableMaps = MapsFolder:GetChildren() local ChosenMap = AvaliableMaps[math.random(1,#AvaliableMaps)]

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 AvaliableSpawnPoints = SpawnPoints:GetChildren()

for i, player in pairs(plrs) do if player then character = player.Character if character then --Teleport them character:FindFirstChild("HumanoidRootPart").CFrame = AvaliableSpawnPoints[1].CFrame table.remove(AvaliableSpawnPoints,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 = "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
        --Still alive
        print (player.name.." is still in the game!")
      else
        --They are dead
        table.remove(plrs, x)
        print(player.name.." has been eliminated!")
      end
    end
  else
    table.remove(plrs, x)
    print(player.name.." has been eliminated!")
  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.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’s 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()

    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 end ````

0
Thank you for making the code readable. Indentation is a powerful tool that actually helps avoid these kinds of issues. LisaF854 93 — 5y

Answer this question