Hello, I have a problem with a tool, what i want to make is a sword that can put the blade in and out the in a blade protector(i'm not sure if its called blade protector) but after doing it, it removes an important part of the tool after few time after taking the blade out then putting it back in, rarely it doesn't, or takes longer than usual.
These are the scripts that i'm using(No errors until the blade is gone and the only error is that the blade is misisng)
Script to weld the tool:
tool = script.Parent
tool.Equipped:Connect(function()
local weld = Instance.new("Weld")
weld.Name = "weld1"
weld.Parent = script.Parent.Handle2
weld.Part0 = script.Parent.Handle2
weld.Part1 = script.Parent.Parent:FindFirstChild("LeftHand")
local weld2 = Instance.new("Weld")
weld2.Name = "weld1"
weld2.Parent = script.Parent.BladeProtectorPart
weld2.Part0 = script.Parent.BladeProtectorPart
weld2.Part1 = script.Parent.BladePart
end)
tool.Unequipped:Connect(function()
local weldha1 = script.Parent.HandlePart:FindFirstChild("weld1")
if weldha1 ~= nil then
weldha1:Destroy()
end
local weldha2 = script.Parent.Handle2:FindFirstChild("weld1")
if weldha2 ~= nil then
weldha2:Destroy()
end
local weldbpp = script.Parent.BladeProtectorPart:FindFirstChild("weld1")
if weldbpp ~= nil then
weldbpp:Destroy()
end
end)
Local Script to be able to put the blade in and out
local tool = script.Parent
local uis = game:GetService("UserInputService")
local out = false
local enabled = true
tool.Equipped:Connect(function()
uis.InputBegan:Connect(function(input, gameprocess)
if not enabled then return end
enabled = false
if input.KeyCode == Enum.KeyCode.E then
local weldbpp = script.Parent.BladeProtectorPart:FindFirstChild("weld1")
local weldha1 = script.Parent.HandlePart:FindFirstChild("weld1")
local weldha2 = script.Parent.Handle2:FindFirstChild("weld1")
if out == true then
out = false
if weldha1 ~= nil then
weldha1:Destroy()
end
local weld01 = Instance.new("Weld")
weld01.Name = "weld1"
weld01.Parent = script.Parent.BladeProtectorPart
weld01.Part0 = script.Parent.BladeProtectorPart
weld01.Part1 = script.Parent.BladePart
elseif out == false then
out = true
if weldbpp ~= nil then
weldbpp:Destroy()
end
local weld0 = Instance.new("Weld")
weld0.Name = "weld1"
weld0.Parent = script.Parent.HandlePart
weld0.Part0 = script.Parent.HandlePart
weld0.Part1 = script.Parent.Parent:FindFirstChild("RightHand")
end
end
wait(0.2)
enabled = true
end)
end)
Pictures: https://imgur.com/a/Vy2w3vd

3 comments
Does this occur randomly or after rapid succession of using the equip / unequip events, if its the latter, try adding a debounce
I believe its random with higher chance of disappearing, like 70% to disappear and 30% not to disappear if not even less but i will try adding a debounce to see if it works
I just noticed, it already has debounce, also played with it a bit and didn't help, i wonder if the issue is the tool itself, will try another model