I'm trying to make a script for a tool where pressing the X button would only play the animation if my tool was equipped. Problem is, when i unequipped the tool i can continue to press x again and the animation would still play.
-//Services local UIS = game:GetService('UserInputService') --//Variables local tool = script.Parent local player = game.Players.LocalPlayer local char = player.Character --//Use this since it's a local script inside a tool player.CharacterAdded:Connect(function(character) char = character local hum = char:WaitForChild('Humanoid') --//Animation local spinSlash = hum:LoadAnimation(tool.Animation) -- i have the animation inside the tool. --//Equipped tool.Equipped:Connect(function() --//Input local debounce = false UIS.InputBegan:Connect(function(input) if input.KeyCode == Enum.KeyCode.X and not debounce then debounce = true spinSlash:Play() wait(2) debounce = false end end) end) --//Unequipped tool.Unequipped:Connect(function() spinSlash:Stop() end) end)
Again, i only want the x button to play the animation when the tool is equipped.
Try this:
--//Equipped tool.Equipped:Connect(function() --//Input local debounce = false local playSlash = UIS.InputBegan:Connect(function(input) if input.KeyCode == Enum.KeyCode.X and not debounce then debounce = true spinSlash:Play() wait(2) debounce = false end end) end) --//Unequipped tool.Unequipped:Connect(function() playSlash:Disconnect() spinSlash:Stop() end) end)
It makes the 'pressing X' event a variable so that it can be disconnected once you unequip the item.
To answer your question, you were doing nothing wrong, it was just that you need to do a little bit extra to get the :Connect() to stop.