Everything works fine except the Touched function (Line 46) only plays once and never plays again until you re-equip it. How can I fix it to make it play endlessly?
local tool = script.Parent
local handle = tool.Handle
local equip = handle.Equip
local swing = handle.Swing
local quoteA = handle.QuoteA
local quoteB = handle.QuoteB
local hit = handle.Hit
local anim = tool.BatonSwing
local tik = handle.Tick
local damage = tool.HitBox
local debounce = false
tool.Equipped:Connect(function(Mouse)
local character = tool.Parent
local humanoid = character:FindFirstChild("Humanoid")
local arm = character:FindFirstChild("Right Arm")
local torso = character:FindFirstChild("Torso")
local weld = Instance.new("Weld")
local tik = handle.Tick
local deboonce = false
equip:Play()
wait(0.3)
quoteB:Play()
weld.Parent = torso
weld.Part0 = torso
weld.Part1 = arm
weld.C0 = CFrame.new(1.5,0.5,-0.5) * CFrame.fromEulerAnglesXYZ(1.5,0,0)
Mouse.Button1Down:Connect(function()
if not debounce then
debounce = true
tik.Enabled = not tik.Enabled
for i = 1,10 do
weld.C0 = weld.C0 * CFrame.fromEulerAnglesXYZ(0.1,0,0)
wait()
end
swing:Play()
damage.Touched:Connect(function(hit)
if not deboonce then
deboonce = true
-- Problems Here v v v
local char = hit.Parent
local noid = char:FindFirstChild("Humanoid")
local hatnoid = char.Parent:FindFirstChild("Humanoid")
if noid then
print(noid.Name)
quoteA:Play()
handle.Hit:Play()
noid.WalkSpeed = 6
noid.Sit = true
wait(3)
print("You're Free!")
noid.WalkSpeed = 16
noid.Sit = false
else
print(hatnoid.Name)
quoteA:Play()
handle.Hit:Play()
noid.WalkSpeed = 6
hatnoid.Sit = true
wait(3)
print("You're Free!")
noid.WalkSpeed = 16
hatnoid.Sit = false
end
wait(0.1)
-------------
debounce = false
end
end)
for i = 1,5 do
weld.C0 = weld.C0 * CFrame.fromEulerAnglesXYZ(-0.5,0,0) * CFrame.new(0,0.03,0.2)
wait()
end
wait(0.2)
weld.C0 = CFrame.new(1.5,0.5,-0.5) * CFrame.fromEulerAnglesXYZ(1.5,0,0)
debounce = false
end
end)
Mouse.Button1Up:Connect(function()
end)
end)
tool.Unequipped:Connect(function()
local player = game.Players.LocalPlayer
local character = player.Character
local torso = character:FindFirstChild("Torso")
local armweld = torso:FindFirstChild("Weld")
if armweld then
armweld:Destroy()
else
print("Weld was removed by other causes.")
end
end)

4 comments
You put your touched event inside of a Button1Down event, which can’t run unless the button is down.
How do i fix this?
It's inside the 'if's ?
Hold left click down and let someone run the touched event