Sorry for the bad English ,it's not my native language.

I did a dash script that had a cooldown of 3 seconds.To show the player the cooldown i did a GUI TextLabel.To do the countdown script,I made that it only activates if it meets the same requirements as the dash script. That's the script.

local seconds = script.Parent.Parent.time
local UIS = game:GetService("UserInputService")
local localPlayer = game.Players.LocalPlayer
repeat wait() until localPlayer.Character ~= nil
local character= localPlayer.Character
local humanoid= character:WaitForChild("Humanoid")
UIS.InputBegan:Connect(function(input)
	if input.KeyCode == Enum.KeyCode.E and seconds.Value == 3 and humanoid:GetState()== Enum.HumanoidStateType.Freefall then
		script.Parent.Text = seconds.Value
		for i=1,seconds.Value do
			wait(1)
			seconds.Value = seconds.Value-1
			script.Parent.Text = seconds.Value
			end
	elseif seconds.Value == 0 then
		seconds.Value = 3
		script.Parent.Text = 'E'
	end
end)

The problem is that if the player spams the E key when the seconds.Value is 3 and Freefalling the player will activate the counter several times what will cause the countdown going to negative numbers and never reseting.

2 comments

0

nevermind i just used a Debounce system.