Please read Ok, I've been struggling for past 2 days now to make this work, I'm almost there I got this problem yesterday and I still haven't figured out how to fix it. I made this script where if you walk on a platform you get a sword and if you leave the sword disappears. it works fine, but when I equip the tool the script detects that I have stopped touching the part and destroys the sword. I'm using Touched and TouchEnded.

Script inside a part in workspace

local ToolNames = {"Sword"}
local Storage = game:GetService("ServerStorage")
local Players = game:GetService("Players")
local part = script.Parent
local debounce = false
local tofastman = true

function RemoveWeapons(parent)
    local weapons = parent:GetChildren()
    for i = 1,#weapons do
            if (weapons[i].className == "Tool") then
                  weapons[i]:Destroy()
          end
     end
end

local function onTouched(part)
	 Player = Players:GetPlayerFromCharacter(part.Parent)
	     if Player and Player.Character then
	     if (part == part.Parent["Left Leg"]) then
         if debounce == false then
	     debounce = true
		    Backpack = Player:WaitForChild("Backpack")
		    for i = 1, #ToolNames do
			local Tool = Storage:FindFirstChild(ToolNames[i])
			if Tool then
			Tool:clone().Parent = Backpack
			tofastman = false
		    end
		end
		end
		end
	end
end

local function onLeft(part)
	if tofastman == false then
          Player.Character.Humanoid:UnequipTools()
           RemoveWeapons(Backpack)
	       debounce = false
	  tofastman = true
	end
end

part.Touched:Connect(onTouched)
part.TouchEnded:Connect(onLeft)

1 comment

0

Depending upon your setup I would go for a distance check, position check or ray based solution. Using the touched evetn for this is not going to yield the best results.