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

How can I make it so that when I touch a part from a folder of parts the same function happens?

So, I have tried something that i thought could work, turns out it really doens't

Basically i have 3 parts in the workspace and i put them all inside a folder named "Parts"

After that I create a table named parts which has all of the Folder's parts in it (hence why i used game.Workspace.Parts:GetChildren())

Then i ran a for loop so when a player (well, right now when anything) touches any of the parts, a print function runs

I thought this would work, but it really doesn't, can anyone help? I'd appreciate it

local parts = {game.Workspace.Parts:GetChildren()}

for i, v in pairs(parts) do
	v.Touched:Connect(function()
		print("one of the parts has been touched")
	end)
end

1 answer

✓ Accepted answer

Your parts variable looks like this visually:

{
	{
		[1] = Part,
		[2] = Part,
		[3] = Part
	}
}

See the problem? A table inside a table, so the only thing you get when looping through the parts variable is only:

{
	[1] = Part,
	[2] = Part,
	[3] = Part
}

To solve the problem you would need to remove the curly brackets {} around the game.Workspace.Parts:GetChildren().

Fixed code:

local parts = game.Workspace.Parts:GetChildren()

for i, v in pairs(parts) do
    v.Touched:Connect(function()
        print("one of the parts has been touched")
    end)
end

1 comment

0

thank you very much, i appreciate the help

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