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

Destroying previous tool on equip?

This feels like it should be so easy but I can't figure it out. When the player picks up a new tool, I want their currently equipped tool to be destroyed. I tried this:

function Equipped(Mouse)
	Handle.Anchored = false
	Character = Tool.Parent
	Humanoid = Character:FindFirstChild("Humanoid")
	Torso = Character:FindFirstChild("HumanoidRootPart")
	Player = Players:GetPlayerFromCharacter(Character)

	Character:FindFirstChildOfClass("Tool"):Destroy()
	--This line is the important one^^^
end

but it tries to destroy the tool that is being equipped - the parent of the script. I could probably do a longer system with ChildAdded and classname == "Tool" but I feel like this should be an easy thing to do. Any thoughts?

2 comments

1

When you find the first child of an object, it will show the longest existing one. Maybe try renaming the new tool for a second, making an if statement regarding the name, and then changing the name back?

0

Whoops, I forgot about this question. I decided to do it the basic way with a system that destroys the parent when a new tool is equipped. Thanks for the help everyone!

2 answers

✓ Accepted answer
function Equipped(Mouse)
    Handle.Anchored = false
    local  Character = Tool.Parent
    local Children = Character:GetChildren()
    local Humanoid = Character:FindFirstChild("Humanoid")
    local Torso = Character:FindFirstChild("HumanoidRootPart")
    local Player = Players:GetPlayerFromCharacter(Character)

    for i,v in paris(Children) do
        If v.ClassName == "Tool" then
            If v.Name ~= "Tool.Name" then
                v:Destroy()
            end
        end
    end
end

What this does is Looks for all tools located in the character and deletes any that have a different name than the one equipped.

It's as simple as logging the last equipped tool, for example

local previoustool

tool.Equipped:connect(function() if previoustool then previoustool:Remove() end previoustool=tool end)

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