Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

[Solved] Moves can only be used once even after waiting for cooldown?

Here is the first move script.

local Player = game.Players.LocalPlayer

local Character = Player.Character or Player.CharacterAdded:Wait()

local debounce = false
script.Parent.MouseButton1Click:Connect(function()
	if Character.HumanoidRootPart.Anchored == false then
		if debounce == false then

			debounce = true

			if Player.leaderstats.Nature.Value == "Fire" then
				game.ReplicatedStorage.FireWall:FireServer()
			elseif Player.leaderstats.Nature.Value == "Grass" then
				game.ReplicatedStorage.GWall2:FireServer()
			elseif Player.leaderstats.Nature.Value == "Water" then
				game.ReplicatedStorage.WaWalk2:FireServer()
		wait(9)
				debounce = false
			end
			end
	end
end)

Even after waiting for the 9 seconds, I cant use the move or any other moves from this script.

Here is the second script

local Player = game.Players.LocalPlayer

local Character = Player.Character or Player.CharacterAdded:Wait()

local debounce = false
script.Parent.MouseButton1Click:Connect(function()
		if Character.HumanoidRootPart.Anchored == false then
			if not debounce then

				debounce = true

					if Player.leaderstats.Nature.Value == "Fire" then
						game.ReplicatedStorage.ShootFireBall:FireServer()
					elseif Player.leaderstats.Nature.Value == "Grass" then
						game.ReplicatedStorage.ShootGrassBall:FireServer()
					elseif Player.leaderstats.Nature.Value == "Water" then
						game.ReplicatedStorage.ShootWaterBall:FireServer()
				wait(3)
				debounce = false
			end
			end
		end
end)

I dont know why, but its the same thing with this script. After using this move, the cooldown timer never goes back to false.

2 answers

i've been having the same problem to, i think its just roblox. After I wait the timer the rest of the code breaks, i have had to make whole timers to fix this such as below. Hopefully ROBLOX fixes this. The timer is just a demonstration of what i've had to do!

local Timer = {}
Timer.__index = Timer

function Timer.new()
	local self = setmetatable({}, Timer)

	self._finishedEvent = Instance.new("BindableEvent")
	self.finished = self._finishedEvent.Event

	self._running = false
	self._startTime = nil
	self._duration = nil

	return self
end

function Timer:start(duration)
	if not self._running then
		local timerThread = coroutine.wrap(function()
			self._running = true
			self._duration = duration
			self._startTime = tick()
			while self._running and tick() - self._startTime < duration do
				wait()
			end
			local completed = self._running
			self._running = false
			self._startTime = nil
			self._duration = nil
			self._finishedEvent:Fire(completed)
		end)
		timerThread()
	else
		warn("Warning: timer could not start again as it is already running.")
	end
end

function Timer:getTimeLeft()
	if self._running then
		local now = tick()
		local timeLeft = self._startTime + self._duration - now
		if timeLeft < 0 then
			timeLeft = 0
		end
		return timeLeft
	else
		warn("Warning: could not get remaining time, timer is not running.")
	end
end

function Timer:isRunning()
	return self._running
end

function Timer:stop()
	self._running = false
end

return Timer

Never Mind, I actually just figured this out on my own.

local Player = game.Players.LocalPlayer

local Character = Player.Character or Player.CharacterAdded:Wait()

local debounce = false
script.Parent.MouseButton1Click:Connect(function()
		if Character.HumanoidRootPart.Anchored == false then
			if not debounce then

				debounce = true

					if Player.leaderstats.Nature.Value == "Fire" then
				game.ReplicatedStorage.ShootFireBall:FireServer()
					elseif Player.leaderstats.Nature.Value == "Grass" then
			game.ReplicatedStorage.ShootGrassBall:FireServer()
					elseif Player.leaderstats.Nature.Value == "Water" then
				game.ReplicatedStorage.ShootWaterBall:FireServer()
				end
		wait(3)
		debounce = false
		end
		end
end)

I forgot to end the if Player.leaderstats.Nature.Value == "Fire" then Lol

This discussion is preserved as it was. New answers, comments, and votes are closed.