Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How come this OnClick Morph script doesn't work?

Asked by 8 years ago

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

Log in to vote
0
Answered by 8 years ago

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!

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 purplemetro3421 5 — 8y
Ad

Answer this question