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

While Loop only running once but not a second time and beyond?

Asked by
35390 0
3 years ago

Hi I got this code from Alvin Blox's sword fight game tutorial but I have greatly modified it. My problem is that the main while loop is not repeating to go onto the next game. Its working once but after that its not re-running. Below I have my code. Please help me out it will mean a lot to me.

-- Define variables

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ServerStorage = game:GetService("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local GameLength = 20

local reward = 15

--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 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)




            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
                        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"


        wait(1)

    end 
    print("End of game")



    ClonedMap:Destroy()
    game.Players:Destroy()


end


0
while true do BuildBiggerGames -2 — 3y
1
Are you checking the output for any errors? Errors stop the rest of the code from running. thecelestialcube 123 — 3y
0
Yeah... It's the fact that you just attempted to destroy a Service lmao... Get rid of line 115. Ziffixture 6913 — 3y

1 answer

Log in to vote
-1
Answered by 3 years ago

Here.

local loopcount = 0

while true do
    if loopcount >= 2 then
        loopcount = loopcount + 1
        -- do what the loop should do
    else
        return
    end
end

Tell me if this worked. If it did, mark it as an answer.

0
I don't see how this fixes the problem thecelestialcube 123 — 3y
Ad

Answer this question