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

How do I get children of GetChildren()?

Hello, I would like to know how I could get the children of a GetChildren()

In my game, I have a model that contains parts containing pointlights. What I would like to do is set PointLight.Enabled to false using a for loop, however I am unsure how I would reference all of these pointlights?

Here is my current script:

(The model containing the parts that contain pointlights is "Model" - top line)

local parts = game.Workspace.Model:GetChildren()
local power = game.Workspace.Value

while true do
	wait(1)
	if power.Value > 0 then
	power.Value = power.Value - 1
	if power.Value == 0 then
		for i, v in pairs(parts) do
			v.Material = Enum.Material.SmoothPlastic
 		end

		else
			for i, v in pairs(parts) do
			v.Material = Enum.Material.Neon
			end
	end
end
end

1 comment

1 answer

GetChildren() returns only the first children of a parent. GetDescendants(), on the other hand, returns the children of the children as well. If you want to use the value like a timer which turns lights off when it reaches 0, and whenever someone makes it a negative value the lights come on, try this.

local descendants = game.Workspace.Model:GetDescendants()
local power = game.Workspace.Value

while true do
	wait(1)
	if power.Value > 0 then
		power.Value = power.Value -1
	elseif power.Value == 0 then
		for i=1, #descendants do
			if descendants[i]:IsA("BasePart") then
				descendants[i].Material = "SmoothPlastic"
				if descendants[i].PointLight then
					descendants[i].PointLight.Enabled = false
				end
			end
		end
	else
		for i=1, #descendants do
			if descendants[i]:IsA("PointLight") then
				descendants[i].Parent.Material = "Neon"
				descendants[i].Enabled = true
			end
		end
	end
end

If you simply want a loop to turn off any PointLights in a model, try this:

local descendants = game.Workspace.Model:GetDescendants()
for i=1, #descendants do
	if descendants[i]:IsA("PointLight") then
		descendants[i].Enabled = false
	end
end

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