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

How do i chance this script?

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

✓ Accepted answer

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.

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