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

Why doesn't this script work?

Asked by 10 years ago

I just wrote a new script that is basically an entire game's basic round functioning, but it won't even start to function from the beginning. When I join the game, it won't update my Gui, and I'm not sure why. Here's my code:

while true do --begin loop
    IntermissionTime = 30
    a = game.Players:GetChildren()
    x = 4 - #a
    if #a < 4 then --check for numplayers
        for i,v in pairs(a) do
            v.PlayerGui.ScreenGui.Frame.RoundTime.Text = x.." more players are needed to start the round."
        end
    elseif #a >= 4 then
        repeat --intermission timer run
        wait(1)
        for i,v in pairs(a) do --change playergui intermission text
        IntermissionTime = IntermissionTime - 1
        player.PlayerGui.ScreenGui.Frame.RoundTime.Text = "Intermission: "..IntermissionTime
        end
        until
        IntermissionTime == 0
    end
    if IntermissionTime == 0 then --begin round
        for i,v in pairs(a) do --change playergui text to round beginning
            a.PlayerGui.ScreenGui.Frame.RoundTime.Text = "Round beginning!"
        end
        wait(5)
        -- randomly choose 1 player
        local players = {game.Players:GetChildren()}
        local randomPlayer = math.random(1,#players)
        randomPlayer.TeamColor = BrickColor.new("Bright red")
        m = Instance.new("Message")
        m.Parent = game.Workspace
        m.Text = randomPlayer.." is the Juggernaut this round."
        wait(5)
        m:Destroy()

        -- spawn random map
        maps = {Map1, Map2, Map3, Map4, Map5}
        randomMap = math.random(1,#maps)
        clone = game.Lighting..randomMap:clone()
        clone.Parent = game.Workspace

        -- delete lobby spawnlocations
        spawns = game.Workspace.Lobby:GetChildren()
        for i,v in pairs(spawns) do --reparent spawnlocations
            if v:IsA("SpawnLocation") then
                v.Parent = game.Lighting
            end
        end

        --spawn players
        for i,v in pairs(a) do --kill players
            v.Character:WaitForChild("Humanoid").Health = 0
        end

        --begin round timer
        RoundTime = 300
        repeat
        wait(1)
        for i,v in pairs(a) do
            RoundTime = RoundTime - 1
            a.PlayerGui.ScreenGui.Frame.RoundTime.Text = "Time Left: "..RoundTime
        end
        until
        RoundTime == 0

        if Roundtime == 0 then --round end
            for i,v in pairs(a) do --change playergui
                v.PlayerGui.ScreenGui.Frame.RoundTime.Text = "Round over!"
            end
            for i,v in pairs(game.Lighting:GetChildren()) do --reassign spawnlocation parents to workspace
                if v:IsA("SpawnLocation") then
                    v.Parent = game.Workspace
                end
            end
            for i,v in pairs(game.Workspace:GetChildren()) do --destroy map
                if v.Name == "Map%d" then
                    v:Destroy()
                end
            end
            for i,v in pairs(a) do
                v.Character:WaitForChild("Humanoid").Health = 0
            end

        end --end roundend if statement
    end --end round begin   
end --end loop

Answer this question