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

Why does it say this variable is nil?

Asked by 8 years ago

so the variable, coin1c, is nil. on line 43 (coin1c.Parent = script.Parent) why is this?

local CoinDropping = false

    if CoinDropping == false then
        CoinDropping = true
    if script.Parent:FindFirstChild("Coin1") then
        coin1c = script.Parent.Coin1:Clone()
        script.Parent.Coin1.CFrame = script.Parent.PointL.CFrame
        script.Parent.CoinBPos:Clone().Parent = script.Parent.Coin1 
        script.Parent.CoinMover:Clone().Parent = script.Parent.Coin1
        script.Parent.Button.ClickDetector.MouseClick:connect(function()
            script.Parent.Coin1.CoinBPos:Destroy()
        end)
        CoinDropping = false
    elseif script.Parent:FindFirstChild("Coin2") then
        coin2c = script.Parent.Coin2:Clone()
        script.Parent.Coin2.CFrame = script.Parent.PointL.CFrame
        script.Parent.CoinBPos:Clone().Parent = script.Parent.Coin2
        script.Parent.CoinMover:Clone().Parent = script.Parent.Coin2
        script.Parent.Button.ClickDetector.MouseClick:connect(function()
            script.Parent.Coin2.CoinBPos:Destroy()
        end)
        CoinDropping = false
    elseif script.Parent:FindFirstChild("Coin3") then
        coin3c = script.Parent.Coin3:Clone()
        script.Parent.Coin3.CFrame = script.Parent.PointL.CFrame
        script.Parent.CoinBPos:Clone().Parent = script.Parent.Coin3
        script.Parent.CoinMover:Clone().Parent = script.Parent.Coin3
        script.Parent.Button.ClickDetector.MouseClick:connect(function()
            script.Parent.Coin3.CoinBPos:Destroy()
        end)
        CoinDropping = false
    elseif script.Parent:FindFirstChild("Coin4") then
        coin4c = script.Parent.Coin4:Clone()
        script.Parent.Coin4.CFrame = script.Parent.PointL.CFrame
        script.Parent.CoinBPos:Clone().Parent = script.Parent.Coin4
        script.Parent.CoinMover:Clone().Parent = script.Parent.Coin4
        script.Parent.Button.ClickDetector.MouseClick:connect(function()
            script.Parent.Coin4.CoinBPos:Destroy()
        end)
        CoinDropping = false
    else
        script.Parent.PointBoard.Points.Value = 0
        coin1c.Parent = script.Parent
        coin2c.Parent = script.Parent
        coin3c.Parent = script.Parent
        coin4c.Parent = script.Parent
        script.Parent.mainreset.Disabled = true
        script.Parent.mainreset.Disabled = false
        CoinDropping = false
    end
    end

0
You have not defined coin1c in that section. TheDeadlyPanther 2460 — 8y
0
but i made it global to the whole script havent i? bubbaman73 143 — 8y
0
How could i fix this? bubbaman73 143 — 8y

1 answer

Log in to vote
0
Answered by 8 years ago

I think you might want to WaitForChild them at the beginning of the script. Plus, Use Individual If(s) If I'm correct, Your script, it's like, First if checks, no, second, no, third no, after all that, it goes to the else statement, Sadly at the else statement, You're setting the parents without a variable defined, An "If" with an "ElseIf" and "Else" It would only select "One" To do, First to Bottom. First until 1 before bottom, fails, and at the bottom There's an Else, it would (ONLY) go with that else So it means that the variable isn't even Declared by your Ifs EDIT: This might be what i would do for a fix

local CoinDropping = false

if CoinDropping == false then
  CoinDropping = true
  if script.Parent:FindFirstChild("Coin1") then
    coin1c = script.Parent.Coin1:Clone()
    script.Parent.Coin1.CFrame = script.Parent.PointL.CFrame
    script.Parent.CoinBPos:Clone().Parent = script.Parent.Coin1
    script.Parent.CoinMover:Clone().Parent = script.Parent.Coin1
    script.Parent.Button.ClickDetector.MouseClick:connect(function()
    script.Parent.Coin1.CoinBPos:Destroy()
    end)
    CoinDropping = false
  end
  if script.Parent:FindFirstChild("Coin2") then
    coin2c = script.Parent.Coin2:Clone()
    script.Parent.Coin2.CFrame = script.Parent.PointL.CFrame
    script.Parent.CoinBPos:Clone().Parent = script.Parent.Coin2
    script.Parent.CoinMover:Clone().Parent = script.Parent.Coin2
    script.Parent.Button.ClickDetector.MouseClick:connect(function()
    script.Parent.Coin2.CoinBPos:Destroy()
    end)
    CoinDropping = false
  end
  if script.Parent:FindFirstChild("Coin3") then
    coin3c = script.Parent.Coin3:Clone()
    script.Parent.Coin3.CFrame = script.Parent.PointL.CFrame
    script.Parent.CoinBPos:Clone().Parent = script.Parent.Coin3
    script.Parent.CoinMover:Clone().Parent = script.Parent.Coin3
    script.Parent.Button.ClickDetector.MouseClick:connect(function()
    script.Parent.Coin3.CoinBPos:Destroy()
    end)
    CoinDropping = false
  end
  if script.Parent:FindFirstChild("Coin4") then
    coin4c = script.Parent.Coin4:Clone()
    script.Parent.Coin4.CFrame = script.Parent.PointL.CFrame
    script.Parent.CoinBPos:Clone().Parent = script.Parent.Coin4
    script.Parent.CoinMover:Clone().Parent = script.Parent.Coin4
    script.Parent.Button.ClickDetector.MouseClick:connect(function()
    script.Parent.Coin4.CoinBPos:Destroy()
    end)
    CoinDropping = false
  end
  script.Parent.PointBoard.Points.Value = 0
  if coin1c then coin1c.Parent = script.Parent end
  if coin2c then coin2c.Parent = script.Parent end
  if coin3c then coin3c.Parent = script.Parent end
  if coin4c then coin4c.Parent = script.Parent end
  script.Parent.mainreset.Disabled = true end
  script.Parent.mainreset.Disabled = false end
  CoinDropping = false
end

Ad

Answer this question