Debounce problems

what i want: every 2 seconds you can punch

local script:

local debounce = false
local punch = script.Parent
local Handle = punch:FindFirstChild("Handle")

local REP = game:GetService("ReplicatedStorage")
local rar = REP:FindFirstChild("rar")
local function slash()
	debounce = true
	rar:FireServer(Handle)
	end


punch.Activated:Connect(slash)
task.wait(2)
debounce = false

normal script:


local tool = script.Parent
local REP = game:GetService("ReplicatedStorage")
local rar = REP:FindFirstChild("rar")
local function onTouched(partOther)
	
rar.OnServerEvent:Connect(function(player, Handle)

		
	print("working")
	local humanOther = partOther.Parent:FindFirstChild("Humanoid")
		if not humanOther then return end
	
		humanOther:TakeDamage(5)
		
	end)	 
		end
tool.Handle.Touched:Connect(onTouched)

local debounce = false
local punch = script.Parent
local Handle = punch:FindFirstChild("Handle")

local REP = game:GetService("ReplicatedStorage")
local rar = REP:FindFirstChild("rar")

local function slash()
	if debounce then
		return
	end
	debounce = true
	rar:FireServer(Handle)
	task.wait(2)
	debounce = false
end


punch.Activated:Connect(slash)
1 Like