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

How do i chance this script?

Asked by 8 years ago

So here is the script

function onTouched(hit)
    local d = hit.Parent:GetChildren() -- start of hat remover
    for i=1, #d do 
        if (d[i].className == "Hat") then 
            d[i]:remove() 
        end 
    end -- end of hat remover
    if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent:findFirstChild("Face") == nil then
        local g = script.Parent.Parent.Face:clone()
        g.Parent = hit.Parent
        local C = g:GetChildren()
        for i=1, #C do
            if C[i].className == "Part" or C[i].className == "UnionOperation" 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
                g.Middle.Transparency = 1
            end
                local Y = Instance.new("Weld")
                Y.Part0 = hit.Parent.Head
                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

script.Parent.Touched:connect(onTouched)

What I am trying to figure out is How to make this work for a image button/regular button In a Gui.

All help is aprreciated ^^

1 answer

Log in to vote
1
Answered by 8 years ago

First, move your trigger to a Button click.

script.Parent.Touched:connect(onTouched)

becomes

script.Parent.MouseButton1Click:connect(onTouched)

Second, determine the Player
Because buttons don't give you the player clicking them, we'll have to work our way up and out.

local Player = script
repeat Player = script.Parent until script.Parent == game.Players

Third, get the Character
This one is easy - The Player has a property for it

local d = Player.Character

End result:

local Player = script
repeat Player = script.Parent until script.Parent == game.Players
function onTouched()
    local d = Player.Character
    if not d then return end -- Sometimes the Character is not there.
    for i=1, #d do 
        if (d[i].className == "Hat") then 
            d[i]:remove() 
        end 
    end -- end of hat remover
    if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent:findFirstChild("Face") == nil then
        local g = script.Parent.Parent.Face:clone()
        g.Parent = hit.Parent
        local C = g:GetChildren()
        for i=1, #C do
            if C[i].className == "Part" or C[i].className == "UnionOperation" 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
                g.Middle.Transparency = 1
            end
                local Y = Instance.new("Weld")
                Y.Part0 = hit.Parent.Head
                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

script.Parent.MouseButton1Click:connect(onTouched)

Because you're not allowed to enjoy yourself on SH, I'd advise you to cry when you come onto this site. That way you won't get downvoted.
Ad

Answer this question