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

I've got an error I just can't seem to squash, can anyone help me out?

this = script.Parent

function fademodel(part, modelname)
	if part ~= nil then
		model = game.Lighting.Models:findFirstChild(modelname)
		modelchildren = model:GetChildren()
		tempmodel = Instance.new("Model")
		tempmodel.Name = model.Name
		tempmodel.Parent = game.workspace.FadeModelTest.Models
		for i, v in ipairs(modelchildren) do
			
			local t = v:clone()
			local temp = v.CFrame
			t.Parent = tempmodel
			t.CFrame = temp
			wait(.25)
			
		end
	end
end

print("here")
this.Touched:connect(fademodel(part))

This is my script. I'm trying to make a part that, when you touch it, it will bring a model out from the lighting but in a more light on resources kind of way. The issue is, that this line: this.Touched:connect(fademodel(part)) is throwing the error: Attempt to connect failed: Passed value is not a function

I've got a feeling it's just some dumb typo that I can't seem to find, but it might be something else. Any help would be appreciated.

1 answer

✓ Accepted answer

Touched events have one built in parameter. It is built in, so you do not have to define it with an argument. This parameter is hit or part, which is automatically equal to the part that hit the brick. Don't try adding other parameters, as it probably won't work right. You should also check if the part that touched the brick is truly a player. For this we can use the GetPlayerFromCharacter() method.

Also, you're basically creating a clone of the model you put in Lighting, and putting it in workspace. But why would you do it the way you're doing it, instead of just using the Clone()method? So,

this = script.Parent
modelname = "modenamehere"

function fademodel(part)
	if game.Players:GetPlayerFromCharacter(part.Parent) then
		local clone = game.Lighting[modelname]:Clone()
		clone.Parent = game.Workspace.FadeModelTest.Models
	end
end

print("here")
this.Touched:connect(fademodel)

Hope i helped!

1 comment

0

Thanks for the help, I wanted to do it with the for loop because I'm going to be using this with very high brick count models so I don't want to lag players by moving everything at once.

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