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

How to call a function when an element from array is touched?

So I'm trying to do a script that prints something when the circle it's touched by a player. (workspace > folder > model > "Circle") But I still get the error attempt to call a nil value

visible_planets = workspace.planets:GetDescendants()
hidden_planets_folder = game.ReplicatedStorage.planets

circles = {}

for key, model in pairs(visible_planets) do

	if model.ClassName == "Model" then
		circle = model:FindFirstChild("Circle")
		table.insert(circles, circle)
		print(table.getn(circles))
	end
end

function get_planet(x)
	local partParent = x.Parent
	local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")
	if humanoid then
		print('ball touched')
	end
end

for k,v in pairs(circles) do
	v.Touched:Connect(get_planet(v))
end

1 comment

0

Error basically means you tried to call a value from a function that is nil.

1 answer

✓ Accepted answer

Remember that when a function as an argument with a () is provided, that argument will be equal to what that function returns, not the function itself. The solution here is to remove the (v). The 'hit' argument will still be provided.

2 comments

0

Thank you! It worked.

0

Not to ask for reputation, but please accept my answer.

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