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

Main Script Always Time Out After Thread Problems.?

Asked by 8 years ago

this is my code.. for some reason every time i test it, it always times out before resuming ... any help is welcome. :)

--Made by iiMeltex


local roundtime = 60 * 3
local finaletime = 1* 60
local intermissiontime = 15

local serverstorage = game:GetService("ServerStorage")
local replicatedstorage = game:GetService("ReplicatedStorage")
local debris = game:GetService("Debris")
local maps = serverstorage:WaitForChild("Maps")
local mapholder = game.Workspace:WaitForChild("Mapholder")

local event = replicatedstorage:WaitForChild("RemoteEvent")
local statustag = replicatedstorage:WaitForChild("StatusTag")
local timertag = replicatedstorage:WaitForChild("TimerTag")


function awardpoints(player, points)
    if player and points then
        local leaderstats = player.FindFirstChild("leaderstats")
        if leaderstats then
            local pointsvalue = leaderstats:FindFirstChild("Points")
            if pointsvalue then
                pointsvalue.Value = pointsvalue.Value + points 
            end
        end
    end
end


function newcharacter(deadplayer, character)    
    local humanoid = character:FindFirstChild("Humanoid")
    if humanoid then
        humanoid.Died:connect(function()
            humanoid.WalkSpeed = 16
            humanoid.UnequipTools()
            local backpack = deadplayer:FindFirstChild("Backpack")
            if backpack then
                backpack:ClearAllChildren()
            end

            local tag = humanoid:FindFirstChild("creator")
            if tag and tag.Value and tag.Value.Parent  == game.Players then
                if tag.Value == hunter and deadplayer == hunter then
                    local wrongdoer = tag.Value
                    if wrongdoer.Character  and wrongdoer.Character.Parent then
                        local wrongdoerhumanoid  = wrongdoer.Character:FindFirstChild("Humanoid")
                        if wrongdoerhumanoid then
                            wrongdoerhumanoid.Health = 0
                        end
                    end
                end 
            end
        end)
    end
end


function playeradded(player)
    local leaderstats = Instance.new("Model")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player

    local wins = Instance.new("IntValue")
    wins.Name = "Wins"
    wins.Parent = leaderstats

    local points = Instance.new("IntValue")
    points.Name = "Points"
    points.Parent = leaderstats


    player.CharacterAdded:connect(function(character)
        newcharacter(player, character)
    end)
    if player.Character and player.Character.Parent then
        newcharacter(player, player.character)
    end
end


game.Players.PlayerAdded:connect(playeradded)


for _, player in pairs(game.Players:GetPlayers()) do
    playeradded(player)
end


while true do   
    while true do
        wait(4)
        contestants = {}
        for _,player in pairs(game.Players:GetPlayers()) do
            if player and player.Character then
                local humanoid = player.Character:WaitForChild("Humanoid")
                if humanoid and humanoid.Health > 0 then
                    table.insert(contestants, player)
                end
            end
        end 
        if #contestants >= 3 then
            break
        else    
            statustag.Value = "Waiting For More Players"
            timertag.Value = -1
        end
    end

    --load a random map
    statustag.Value = "Loading A Random Map"
    timertag.Value = -1
    mapholder:ClearAllChildren()
    wait(2)
    local allmaps = maps:GetChildren()
    local newmap = allmaps[math.random(1, #allmaps)]:clone()
    newmap.Parent = game.Workspace.Mapholder
    wait(2)


    statustag.Value = "Match"
    timertag.Value = roundtime


    --choose hunter
    hunter = contestants[math.random(1, #contestants)]


    --blur


    --teleport all contestants
    local spawnsmodel = newmap:WaitForChild("Spawns")
    local spawns = spawnsmodel:GetChildren()
    for _,player in pairs(contestants) do 
        if player and player.Character and #spawns > 0 then
            local torso = player.Character:WaitForChild("Torso")
            local humanoid = player.Character:WaitForChild("Humanoid")
            local spawnindex = math.random(1, #spawns)
            local spawn = spawns[spawnindex]
            if spawn and torso and humanoid then
                humanoid.Health = 100
                humanoid.WalkSpeed = 16
                table.remove(spawns, spawnindex)
                torso.CFrame = CFrame.new(spawn.Position + Vector3.new(0, 3, 0))

                local matchtag = Instance.new("StringValue")
                matchtag.Name = "Matchtag"
                matchtag.Parent = player.Character

                local backpack = player.FindFirstChild("Backpack")
                if backpack then
                    if player == hunter then
                        local sword = serverstorage:WaitForChild("Bamboo Katana"):clone()
                        sword.Parent = backpack
                        local humanoid = player.Character.Humanoid
                        humanoid.WalkSpeed = 18
                        event:FireClient(player, "Class", "Hunter")

                    else
                        local flashlight = serverstorage:WaitForChild("Flashlight"):clone()
                        flashlight.Parent = backpack
                        event:FireClient(player, "Class", "Hunted")
                    end 
                end
            end
        end
    end
    spawnsmodel:remove()


    --focus


    local localtimer = roundtime
    while localtimer > 0 do
        wait(1)
        localtimer = localtimer - 1
        timertag.Value = localtimer

        activecontestants = {}
        hunteractive = false
        for _,player in pairs(contestants) do 
            if player then
                local character = player.Character
                if character then
                    local matchtag = character:FindFirstChild("Matchtag")
                    local humanoid = character:FindFirstChild("Humanoid")
                    if matchtag and humanoid and humanoid.Health > 0 then
                        if player == hunter then    
                            hunteractive = true 
                        end             
                        table.insert(activecontestants, player)
                    end 
                end
            end
        end
        if #activecontestants <= 1 or not hunteractive then
            break
        end
    end 


    for _,player in pairs(activecontestants) do
        local character = player.Character      
        local matchtag = character:FindFirstChild("Matchtag")
        local humanoid = character:FindFirstChild("Humanoid")
        if player and matchtag and humanoid and humanoid.Health > 0 then
            local backpack = player.FindFirstChild("Backpack")
            local pistol = serverstorage:WaitForChild("Pistol"):clone()
            pistol.Parent = backpack
        end
    end

    statustag.Value = "Finale"
    timertag.Value = finaletime 


    local localtimer = finaletime
    while localtimer > 0 do
        if #activecontestants <= 1 or not hunteractive then
            break
        end     
        wait(1)
        localtimer = localtimer - 1
        timertag.Value = localtimer     

        activecontestants = {}
        hunteractive = false
        for _,player in pairs(contestants) do 
            if player then
                local character = player.Character
                if character then
                    local matchtag = character:FindFirstChild("Matchtag")
                    local humanoid = character:FindFirstChild("Humanoid")
                    if matchtag and humanoid and humanoid.Health > 0 then
                        if player == hunter then    
                            hunteractive = true 
                        end             
                        table.insert(activecontestants, player)
                    end 
                end
            end
        end
    end


    local gameresults = "PlayersWin"
    if hunteractive then
        if #activecontestants >= 2 then
            event:FireAllClients("Results", "HuntedWin")
        else
            gameresults = "HunterWin"
            event:FireAllClients("Results", "HunterWin")
        end
    else
        event:FireAllClients("Results", "HuntedWin")
    end 


    for _,player in pairs(activecontestants) do
        if player then
            if gameresults == "HunterWin" and player == hunter then
                awardpoints(player, 10)
            elseif gameresults ~= "HunterWin" and player ~= hunter then
                awardpoints(player, 4)
            end
        end
    end


    local lobbyspawns = {}
    for _, v in pairs(game.Workspace:WaitForChild("Lobby"):WaitForChild("SpawnPoints"):GetAllChildren()) do
        if v and v.Name == "SpawnLocation" then
            table.insert(lobbyspawns, v)
        end 
    end

    for _,player in pairs(activecontestants) do
        if player then
            awardpoints(player, 1)
            if player.Character then
                local humanoid = player.Character:FindFirstChild("Humannoid")
                if humanoid and humanoid.Health > 0 then
                    humanoid:UnequipTools()
                end
            end
            local randomspawn = lobbyspawns[math.random(1, #lobbyspawns)]
            player.Character:MoveTo(randomspawn.Position)
            local backpack = player:FindFirstChlid("Backpack")
            if backpack then
                backpack:ClearAllChildren()
            end
        end
    end



    statustag.Value = "Intermission"
    timertag.Value = intermissiontime
    local localtimer = intermissiontime
    while localtimer > 0 do
        wait(1)
        localtimer = localtimer - 1
        timertag.Value = localtimer
    end
    wait(0.01)
end

0
What exactly do you mean by time out? I am going to speak on behalf of the Scripting Helpers community that no one will be willing to go through all 309 lines of code to find the one small mistake you made without you giving us a hint as to what exactly is going wrong. M39a9am3R 3210 — 8y
0
At least include the error :/ User#5423 17 — 8y
0
OK so after there are 3 contestants it breaks out of the first while loop in the while loop... but from there it always just says the script stops and my game just dosent execute the rest of the code. iiMeltex 0 — 8y
0
Can you add the output to your question magiccube3 115 — 8y
0
wait? like what happens when i run the code/ iiMeltex 0 — 8y

Answer this question