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

How to change touch giver to clicks giver by GUI?

Hey! I have a script which puts on a player vest while he was touching the giver, but how can I change it to wearing this vest by clicking in the menu GUI?

this is this script

function onTouched(hit)
	if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent:findFirstChild("Chest") == nil then
		local g = script.Parent.Parent.Chest: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 == "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.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
		hit.Parent.Saude.Protecao.VestProtect.Value = 50
		hit.Parent.Saude.Protecao.VestVida.Value = 100
	end
end

script.Parent.Touched:connect(onTouched)

1 answer

✓ Accepted answer

Place this LocalScript inside of the button in your menu GUI.

script.Parent.MouseButton1Click:Connect(function()
	local g = script.Parent.Parent.Chest:clone() -- I'm not where your original script was located, but check to make sure that this is correctly referencing g still.
	local player = game.Players.LocalPlayer --  player that clicked on the GUI
        g.Parent = player
        local C = g:GetChildren()
        for i=1, #C do
		if C[i].className == "Part" or C[i].className == "UnionOperation" 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

                	local Y = Instance.new("Weld")
                	Y.Part0 = player.Character.Humanoid.Torso
                	Y.Part1 = g.Middle
                	Y.C0 = CFrame.new(0, 0, 0)
                	Y.Parent = Y.Part0

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

        		player.Saude.Protecao.VestProtect.Value = 50
        		player.Saude.Protecao.VestVida.Value = 100
			end
		end
	end
end)

Hope this helps!

5 comments

0

error in line 19 "Torso is not a valid member of player"

0

On line 19, try "player.Humanoid.Torso".

0

Now I have "Humanoid is not a valid member of player"

0

Oh sorry, that was a dumb mistake of mine. Humanoid is a part of Character. player.Character.Humanoid.Torso then

0

Still not works, now it's not writes anything but thank you fot help

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