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

Turn this into a click to morph script?

Asked by 6 years ago
Edited 6 years ago

How would I go about turning this from a touch to morph into a click to morph script?

function onTouched(hit)
if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent:findFirstChild("RightArm1") == nil then
    local g = script.Parent.Parent.RightArm1:clone()
    g.Parent = hit.Parent
    local C = g:GetChildren()
    for i=1, #C do
        if C[i].className == "Part" or C[i].className == "UnionOperation" or C[i].className == "WedgePart" or C[i].className == "MeshPart" 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["RightUpperArm"]
            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
        if h[i].className == "Part" or C[i].className == "UnionOperation" or C[i].className == "WedgePart" or C[i].className == "MeshPart" then
            h[i].Anchored = false
            h[i].CanCollide = false
        end
    end

end

script.Parent.Touched:connect(onTouched)

1 answer

Log in to vote
0
Answered by 6 years ago
Edited 6 years ago

Just get the player mouse then put your morph function inside Button1Down function, like this :

local plr = game.Players.LocalPlayer
local mouse = plr:GetMouse()

function onClick()
if plr.Character:FindFirstChild("RightArm1") == nil then
    local g = script.Parent.Parent.RightArm1:Clone()
    g.Parent = plr.Character
    local C = g:GetChildren()
    for i=1, #C do
        if C[i].className == "Part" or C[i].className == "UnionOperation" or C[i].className == "WedgePart" or C[i].className == "MeshPart" 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 = plr.Character["RightUpperArm"]
            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
        if h[i].className == "Part" or C[i].className == "UnionOperation" or C[i].className == "WedgePart" or C[i].className == "MeshPart" then
            h[i].Anchored = false
            h[i].CanCollide = false
        end
    end

end

mouse.Button1Down:connect(onClick)

EDIT :

Before, you could detect if the part belong to a player, and if he had a right arm. Now, as we define the player at the beginning, you can just detect if the player has a right arm (we already know that he is a player so , it would be useless to check if he has a Humanoid)

Anyways, i just replaced each "hit" by "plr.Character" in your script

0
Thank you, I'm not sure how to modify the rest but I appreciate the help to get me started felonymartinez 12 — 6y
0
No problem. Before, you could detect if the part belong to a player, and if you can find his right arm. I edited my answer to help you more. I hope it will help you NotZuraax 68 — 6y
0
Thanks a ton! felonymartinez 12 — 6y
Ad

Answer this question