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

How do I add a debounce to this morph script?

Hey there, I was wondering how I'd add a debounce to this morph script so the player can't equip it lots of times, which will end up causing lag. Any help would be greatly appreciated! :D

Here is the script: (Chest only)

function onTouched(hit)
	if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent:findFirstChild("Chest1") == nil then
		local g = script.Parent.Parent.Chest1: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.UpperTorso
				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
end

script.Parent.Touched:connect(onTouched)

1 comment

0

dude theres been so many questions asked about debounce. please try googling before u ask

1 answer

try googling before you ask. However, this is how it would be done.

local debounce=false--declared the debounce
function onTouched(hit)
if debounce==false then--this is where it checks the debounce
debounce=true--sets to true
    if hit.Parent:FindFirstChild("Humanoid") ~= nil and hit.Parent:findFirstChild("Chest1") == nil then
        local g = script.Parent.Parent.Chest1: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.UpperTorso
                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
wait(0.5)--to stop people from spamming; it u can remove it if u want to
debounce=false--sets to false again
end
end

script.Parent.Touched:connect(onTouched)

1 comment

0

mark as answer if it worked or post a comment with any errors if it didnt

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