The title explains it. Im trying to make a delay when the button is pressed it waits 60 seconds until the user can click again. Heres my code. The problem is that if db == true the user can click multiple times and cause the timer to mess up.

local button = script.Parent
local player = game.Players.LocalPlayer
local bases = workspace.Bases:GetChildren()
local base

for i,v in pairs(bases)do
	local owner = v:FindFirstChild("Owner")
	if owner.Value == player.Name then
		base = v
	end
end

local db = false
button.MouseButton1Click:Connect(function()
	if db == false then
		db = true
		game.ReplicatedStorage.Events.Shield:FireServer(player,base)
	end
	if db == true then
		for i = 60, 0 , -1 do
			script.Parent.Text = "Delay: " .. i
			wait(1)
		end
		db = false
	end
end)

1 comment

0

You could use the Active property in the TextButton, and make it so when they click, it sets Active to false until the debounce is over.