repeat wait()until script.Parent:FindFirstChild("\072\097\110\100\108\101")local f={}function ClearOldWelds(f)for f,S in pairs(f)do if S:IsA("\087\101\108\100")then S:Destroy()end end end function Equipped()local S=script.Parent:FindFirstChild("\072\097\110\100\108\101")if not S then return end local v=S:GetChildren()for v,h in pairs(script.Parent:GetChildren())do if h:IsA("\066\097\115\101\080\097\114\116")and h~=S then local v for f,S in pairs(f)do if f==h then v=S break end end if not v then f[h]=h.CFrame:inverse()*S.CFrame h.Anchored=false v=f[h]end local l=Instance.new("\087\101\108\100")l.Part0=S l.Part1=h l.C0=CFrame.new()l.C1=v l.Parent=S end end ClearOldWelds(v)S.Anchored=false end Equipped()script.Parent.Equipped:connect(Equipped)
 
repeat wait() until script.Parent:FindFirstChild("Handle")
local welds={}
function ClearOldWelds(tbl)
	for _,v in pairs(tbl) do
		if v:IsA('Weld') then
			v:Destroy()
		end
	end
end

function Equipped()
	local handle=script.Parent:FindFirstChild('Handle')
	if not handle then return end
	local tble=handle:GetChildren()
	for _,v in pairs(script.Parent:GetChildren()) do
		if v:IsA('BasePart') and v~=handle then
			local c1
			for _1,v1 in pairs(welds) do
				if _1==v then
					c1=v1
					break
				end
			end
			if not c1 then
				welds[v]=v.CFrame:inverse()*handle.CFrame
				v.Anchored=false
				c1=welds[v]
			end
			local weld=Instance.new('Weld')
					weld.Part0=handle
					weld.Part1=v
					weld.C0=CFrame.new()
					weld.C1=c1
					weld.Parent=handle
		end
	end
	ClearOldWelds(tble)
	handle.Anchored=false
end
Equipped()
script.Parent.Equipped:connect(Equipped)
