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

Why does my script freeze at this point?

Asked by 9 years ago

Hello, I have been working on a minigame script, and the game seems to work perfectly, but when enough people are playing it freezes at this part on the script randomly.

To summarize: The script can work with 20 people, but after awhile it randomly breaks displaying one of those texts as hints.

I'm not sure if it freezes because a player leaves the game or what. Can someone help me put a check in the script to prevent it from breaking? Any help would be really appreciated!

while cc < 2 do
        cc = 0
        c = game.Players:GetChildren()
        for num, obj in pairs(c) do
            if obj:FindFirstChild("Playing") then
                if obj.Playing.Value then
                    cc = cc + 1
                end
            end
        end
        h.Text = "Need at least 2 players to begin games"
        wait(1)
    end
    h.Text = "New round will begin soon..."
    wait(3)
    h.Text = "Choosing random game..."
    wait(3)
    m = game.Lighting.Minigames:GetChildren()
    mg = m[math.random(1,#m)]
    map = mg.Map
    set_spawns(map)
    map.Parent = game.Workspace
    h.Text = (""..mg.Name)
    wait(5)
    h.Text = "Get ready to fight..."
    wait(2)
    c = game.Players:GetChildren()

1 answer

Log in to vote
0
Answered by
Discern 1007 Moderation Voter
9 years ago

So I'm going to assume this is the whole script. You are ending the while loop early, so once the script ends, it stops because it's not inside a loop. The script will run regardless of player count.

while true do --Note this loop has an "end" all the way at the end of the script. The script will keep repeating itself now.
    while cc < 2 do
            cc = 0
            c = game.Players:GetChildren()
            for num, obj in pairs(c) do
                if obj:FindFirstChild("Playing") then
                    if obj.Playing.Value then
                        cc = cc + 1
                    end
                end
            end
            h.Text = "Need at least 2 players to begin games"
            wait(1)
        end
        h.Text = "New round will begin soon..."
        wait(3)
        h.Text = "Choosing random game..."
        wait(3)
        m = game.Lighting.Minigames:GetChildren()
        mg = m[math.random(1,#m)]
        map = mg.Map
        set_spawns(map)
        map.Parent = game.Workspace
        h.Text = (""..mg.Name)
        wait(5)
        h.Text = "Get ready to fight..."
        wait(2)
        c = game.Players:GetChildren()
end
0
It is not the whole script, just the part the script freezes on sometimes. Patsfan100 0 — 9y
Ad

Answer this question