Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

A nil value problem?

This script, with the error, starts at line 23 with 'local g'. It should do the exact same thing as local h on line 4. But, it breaks and line 82 saying that 'g is a nil value' I do not understand why it is breaking...

found1 = script.Parent.Parent.PurchasedObjects:FindFirstChild("Dropper1")
builder1 = script.Parent.Parent.PurchasedObjects:FindFirstChild("Hut1")
builder2 = script.Parent.Parent.PurchasedObjects:FindFirstChild("Hut2")
local h
for _, v in pairs (builder1:GetChildren()) do
    local names = {
    ["Peter"] = true,
    ["Carson"] = true,
	["Hunter"] = true,
    ["Alex"] = true,
	["Joe"] = true,
    ["Bob"] = true,
	["Tyler"] = true,
    ["Colt"] = true,
    ["Reed"] = true,
    }
    if names[v.Name] ~= nil then
        h = v
        break
    end
end

local g
if script.Parent:FindFirstChild("builder2") then
for _, v in pairs (builder2:GetChildren()) do
    local names = {
	["Kristopher"] = true,
	["Dani"] = true,
	["Ember"] = true,
	["Akira"] = true,
	["Cat"] = true,
	["Kelsey"] = true,
	["Sibon"] = true
    }
    if names[v.Name] ~= nil then
        g = v
        break
    end
end
end

model1 = found1.disap:GetChildren()

  if found1 then
	if builder1.Available.Value == true then
		builder1.Available.Value = false
		print(h)
		h.IdleAnim.Disabled = true
		h.BuildAnim.Disabled = false
		h.Torso.CFrame = CFrame.new(found1.disap.e.Position.x,found1.disap.e.Position.y,found1.disap.e.Position.z +3.66)
		found1.Drop.Transparency = 1
		found1.Drop.CanCollide = false
			for i, v in pairs(model1)do
				if v.ClassName ~= "Part" then
					v.Transparency = 1
					v.CanCollide = false
				else
					v.Transparency = 1
					v.CanCollide = false
				end
			end
		wait(found1.IdleTime.Value)
		found1.Drop.Transparency = 0.5
		found1.Drop.CanCollide = false
			for i, v in pairs(model1)do
				if v.ClassName ~= "Part" then
					v.Transparency = 0
					v.CanCollide = true
				else
					v.Transparency = 0
					v.CanCollide = true
				end
			end
		builder1.Available.Value = true
		h.Torso.CFrame = CFrame.new(builder1.Telebrick.Position.x,builder1.Telebrick.Position.y, builder1.Telebrick.Position.z)
		h.BuildAnim.Disabled = true
		h.IdleAnim.Disabled = false
		script.Disabled = true
	else
		builder2.Available.Value = false
		print(g)
		g.IdleAnim.Disabled = true
		g.BuildAnim.Disabled = false
		g.Torso.CFrame = CFrame.new(found1.disap.e.Position.x,found1.disap.e.Position.y,found1.disap.e.Position.z +3.66)
		found1.Drop.Transparency = 1
		found1.Drop.CanCollide = false
			for i, v in pairs(model1)do
				if v.ClassName ~= "Part" then
					v.Transparency = 1
					v.CanCollide = false
				else
					v.Transparency = 1
					v.CanCollide = false
				end
			end
		wait(found1.IdleTime.Value)
		found1.Drop.Transparency = 0.5
		found1.Drop.CanCollide = false
			for i, v in pairs(model1)do
				if v.ClassName ~= "Part" then
					v.Transparency = 0
					v.CanCollide = true
				else
					v.Transparency = 0
					v.CanCollide = true
				end
			end
		builder2.Available.Value = true
		g.Torso.CFrame = CFrame.new(builder2.Telebrick.Position.x,builder2.Telebrick.Position.y, builder2.Telebrick.Position.z)
		g.BuildAnim.Disabled = true
		g.IdleAnim.Disabled = false
		script.Disabled = true
	end		
	end	
	

1 answer

g can be nil

You write

if names[v.Name] ~= nil then
        g = v
        break
    end

But provide no escape condition for if g is then nil.

This discussion is preserved as it was. New answers, comments, and votes are closed.