Ad
Log in to vote
0

While true loop works first time but not second?

Asked by 9 months ago
Edited 9 months ago

So, I have a while true loop and part of it, is this:

while true do
    MScreen = game.Lighting.MurderScreen:Clone()
    MScreen.Parent = V.PlayerGui
    repeat wait() until MScreen.Parent == V.PlayerGui
    MScreen.Name = "MurderScreen"
    wait()
    repeat wait() print("Waiting") until MScreen:FindFirstChild("MurderType")  -- ERROR LINE
    wait(10)
end

whenever it goes a second time, it can never find MurderType but it always works the first time

Full script: (error at line 150)

if Re >= 2 then
        wait()
    while true do
        wait()
        local R = game.Workspace.InGame:GetChildren()
    local Re = #R
        if Re >= 2 then
    local pLayers = game.Workspace.InGame:GetChildren()
    if #pLayers ~= 0 then
    Picking.Visible = false
    Playeri.Visible = true
    Days.Visible = true
    Playeri.Text = "Players Left: " .. #pLayers
    local Time = game.Lighting.ClockTime
    Time = 12
    while true do
        if Time >= 20 then break end
        if game.Workspace.Reported.Value == true then break end
    game.Lighting:SetMinutesAfterMidnight(Time*60)
    wait(0.1)
    Time = Time + 0.05
    print(Time)
    end
    if game.Workspace.Reported.Value == true then 
        game.Lighting.ClockTime = 12
        for i,v in pairs(game.Players:GetChild()) do
            if v.Winner.Value == true then
                Winner = v.Name
            end
        end
        Days.Visible = false
        Playeri.Visible = false
        Picking.Text = Winner .. " found out who the murderer was"
        Picking.Visible = true
        wait(3)
        Picking.Text = "It was..."
        wait(3)
        Picking.Text = game.Workspace.Murderer.Value
        wait(2)
        game.Workspace.CoinGiver.Disabled = false
        repeat wait() until game.Workspace.CoinGiver.Disabled == false
        Days.Visible = false
        Playeri.Visible = false
        Picking.Text = "Everyone Now Gets Coins!!"
        Picking.Visible = true
        wait(3)
        break
    end
    if #IN >= 1 then 
        for i,v in pairs(game.Workspace.DeadBody:GetChildren())do
            v:Remove()
        end
    end
    for i,v in pairs(game.Workspace.InGame:GetChildren()) do
        local V = game.Players:FindFirstChild(v.Name)
            V.PlayerGui.Black.Frame.In.Disabled = false
            V.PlayerGui.Black.Frame.Out.Disabled = true
            wait(5)
        if v.Name == game.Workspace.Murderer.Value then
            print("Found")
            local V = game.Players:FindFirstChild(v.Name)
            MScreen = game.Lighting.MurderScreen:Clone()
            MScreen.Parent = V.PlayerGui
            repeat wait() until MScreen.Parent == V.PlayerGui
            MScreen.Name = "MurderScreen"
            local Players = game.Workspace.InGame:GetChildren()
            local Ran1 = math.random(1,#Players)
            local P1 = Players[Ran1]
            local Ran2 = math.random(1,#Players)
            local P2 = Players[Ran2]
            local Ran3 = math.random(1,#Players)
            local P3 = Players[Ran3]
            wait(10)
            if P1.Name == game.Workspace.Murderer.Value then
                while true do
                    wait()
                    local Ran1 = math.random(1,#Players)
                    local P1 = Players[Ran1]
                    if P1.Name ~= game.Workspace.Murderer.Value then MScreen.Players.Player1.Text = P1.Name 
                    MScreen.Players.Player1.PlayerName.Value = P1.Name break end
                end
                else
            MScreen.Players.Player1.Text = P1.Name
            MScreen.Players.Player1.PlayerName.Value = P1.Name
            end
            if P2.Name == game.Workspace.Murderer.Value or P1.Name then
            while true do
                    if #Players <= 2 then MScreen.Players.Player2.Text = "Eliminated" break end
                    wait()
                    local Ran2 = math.random(1,#Players)
                    local P2 = Players[Ran2]
                    if P2.Name ~= game.Workspace.Murderer.Value and P2.Name then MScreen.Players.Player2.Text = P2.Name 
                    MScreen.Players.Player1.PlayerName.Value = P1.Name break end
                    end
            else
            MScreen.Players.Player2.Text = P2.Name
            MScreen.Players.Player2.PlayerName.Value = P2.Name
            end
            if P3.Name == game.Workspace.Murderer.Value or P2.Name then
            while true do
                if #Players <= 3 then MScreen.Players.Player3.Text = "Eliminated" break end
                    wait()
                    local Ran3 = math.random(1,#Players)
                    local P3 = Players[Ran2]
                    if P3.Name ~= game.Workspace.Murderer.Value and P3.Name then MScreen.Players.Player3.Text = P3.Name 
                    MScreen.Players.Player1.PlayerName.Value = P1.Name break end
                end
                else
            MScreen.Players.Player3.Text = P1.Name
            MScreen.Players.Player3.PlayerName.Value = P3.Name
            end
            local Murders = game.Lighting.KillingWays:GetChildren()
            local Ran1 = math.random(1,#Murders)
            M1 = Murders[Ran1]
            if #Murders >= 2 then
            local Ran2 = math.random(1,#Murders)
            M2 = Murders[Ran2]
            if #Murders >= 3 then
            local Ran3 = math.random(1,#Murders)
            M3 = Murders[Ran3]
            end
            end
            MScreen.MurderType.Option1.Text = M1.Value
            MScreen.MurderType.Option1.Type.Value = M1.Name
            print(M1.Value)
            if M2 ~= nil then
            if M2.Value == M1.Value then
            for i,v in pairs(game.Lighting.KillingWays:GetChildren()) do
                    if v.Value ~= M1.Value then 
                    M2 = v
end
                end
            end
            MScreen.MurderType.Option2.Text = M2.Value
            MScreen.MurderType.Option2.Type.Value = M2.Name
            end
            end
            if M3 ~= nil then
                print("VAUT")
            if M3.Value == M1.Value then
            for i,v in pairs(game.Lighting.KillingWays:GetChildren()) do
                    if v.Value ~= M1.Value then
                        if v.Value ~= M2.Value then
                    M3.Value = v.Value
                    print(M3.Value)
                        end
                    end
                    end
            end
            repeat wait() print("Waiting") until MScreen:FindFirstChild("MurderType") 
                                                 --ERROR LINE ABOVE
            local MurderType = MScreen:WaitForChild("MurderType")
            MScreen:WaitForChild("MurderType").Option3.Text = M3.Value
            MScreen.MurderType.Option3.Type.Value = M3.Name
            if M3.Value == M2.Value then
            for i,v in pairs(game.Lighting.KillingWays:GetChildren()) do
                    if v.Value ~= M1.Value then
                        if v.Value ~= M2.Value then
                    M3.Value = v.Value
                        end
                    end
                    end
            end

            MurderType.Option3.Text = M3.Value
            MurderType.Option3.Type.Value = M3.Name
            end
            local MScreen = game.Players:FindFirstChild(game.Workspace.Murderer.Value).PlayerGui:WaitForChild("MurderScreen")
    end 
            MScreen.MurderType.Option1.Script.Disabled = false  
            MScreen.MurderType.Option2.Script.Disabled = false
            MScreen.MurderType.Option3.Script.Disabled = false      
            MScreen.Players.Player1.Script.Disabled = false
            MScreen.Players.Player2.Script.Disabled = false 
            MScreen.Players.Player3.Script.Disabled = false
            wait()  
            MScreen.Enabled = true
            while true do 
                wait()
                print("Waiting")
                if MScreen.Enabled == false then break end
            end
            MScreen:Remove()
            wait()
            print("Done")
            local IN = game.Workspace.DeadBody:GetChildren()
            for i,v in pairs(game.Workspace.InGame:GetChildren()) do
                local V = game.Players:FindFirstChild(v.Name)
                V.PlayerGui.Black.Frame.In.Disabled = true
                V.PlayerGui.Black.Frame.Out.Disabled = false
            end
        end 
        else
            print("Disabled")
        game.Workspace.CoinGiver.Disabled = false
        repeat wait() until game.Workspace.CoinGiver.Disabled == false
        Days.Visible = false
        Playeri.Visible = false
        Picking.Text = "Giving Players Coins"
        Picking.Visible = true
        wait(3)
        break
        end
    end

        end
0
why is there a copy of this in the newer threats? RiskoZoSlovenska 192 — 9mo
0
idk justintubba123 -2 — 9mo

Answer this question