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

My Main Script Always Times Out When I Test In A Server?

Asked by 7 years ago
Edited 7 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
Edited for code block. M39a9am3R 3210 — 7y
0
what did you edit? Thanks for the comment iiMeltex 0 — 7y
0
I made the script into a code block, the site wasn't picking up you were using code blocks except for certain areas that were tabbed. Make sure you put your code into the ~~~~~~ when you make posts on Scripting Helpers. M39a9am3R 3210 — 7y
0
thanks and put my code in the what? it is not showing up iiMeltex 0 — 7y

Answer this question