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.