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

How come this OnClick Morph script doesn't work?

I made an OnClick Morph script where if i click a part my character would wear a vest that i made, But the problem is that i'm not getting anything in the output so i can't tell why it's not working. So im wondering if anyone can help me figure out whats up?

script.Parent.ClickDetector.MouseClick:connect(function(hit)
if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent:findFirstChild("Chest") == nil then
local g = game.ReplicatedStorage.Armor:Clone()
g.Parent = hit.Parent
local C = g:GetChildren()
		for i=1, #C do
			if C[i].className == "Part" then
				local W = Instance.new("Weld")
				W.Part0 = g.Middle
				W.Part1 = C[i]
				local CJ = CFrame.new(g.Middle.Position)
				local C0 = g.Middle.CFrame:inverse()*CJ
				local C1 = C[i].CFrame:inverse()*CJ
				W.C0 = C0
				W.C1 = C1
				W.Parent = g.Middle
			end
				local Y = Instance.new("Weld")
				Y.Part0 = hit.Parent.Torso
				Y.Part1 = g.Middle
				Y.C0 = CFrame.new(0, 0, 0)
				Y.Parent = Y.Part0
		end

		local h = g:GetChildren()
		for i = 1, # h do
			h[i].Anchored = false
			h[i].CanCollide = false
		end
	end
end)

It's a normal script by the way.

1 answer

Because MouseClick does not return a part inside of the character, In your script "Hit" is the Player. So you just need to change the script so it works.


#Final Product This is your finished script

script.Parent.ClickDetector.MouseClick:connect(function(player)
local character = player.Character
if character:FindFirstChild("Humanoid") and character:FindFirstChild("Chest") == nil then
local g = game.ReplicatedStorage.Armor:Clone()
g.Parent = character
local C = g:GetChildren()
        for i=1, #C do
            if C[i].className == "Part" then
                local W = Instance.new("Weld")
                W.Part0 = g.Middle
                W.Part1 = C[i]
                local CJ = CFrame.new(g.Middle.Position)
                local C0 = g.Middle.CFrame:inverse()*CJ
                local C1 = C[i].CFrame:inverse()*CJ
                W.C0 = C0
                W.C1 = C1
                W.Parent = g.Middle
            end
                local Y = Instance.new("Weld")
                Y.Part0 = hit.Parent.Torso
                Y.Part1 = g.Middle
                Y.C0 = CFrame.new(0, 0, 0)
                Y.Parent = Y.Part0
        end

        local h = g:GetChildren()
        for i = 1, # h do
            h[i].Anchored = false
            h[i].CanCollide = false
        end
    end
end)

All I did was replace all the "hit.Parent" to "character".



Hope it helps!

1 comment

0

"16:36:10.375 - Torso is not a valid member of Players" pops up in the output. And also i decided to add prints to see where it stopped working and i saw that it stopped working and saw that it stopped working at line 20. I forgot to mention that i decided to change it to player since it said hit

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