Hello,
I am working on a gui based game. I want a gui button to have a cooldown after being pressed.
Here is what I tried (you can ignore most of it, I'm just concerned about the debounce).
function clicked(plr) debounce = true if debounce == true then debounce = false local player = game.Players.LocalPlayer local edulvl = player.Education.Value local x = game.ReplicatedStorage.Work:InvokeServer(edulvl) local y = text(edulvl) script.Parent.Parent.Parent.Status.Visible = true script.Parent.Parent.Parent.Status.TextLabel.Text = (y.." "..x.." dollars") wait(5) script.Parent.Parent.Parent.Status.Visible = false debounce = true end end
I thought I had my debounce set up correctly, but it doesn't seem to work.
Help would be appreciated
Define debounce outside the click function because you are basically resetting the debounce, setting it to true upon clicking the button, thus removing the cooldown
local debounce = true function clicked(plr) if debounce == true then debounce = false local player = game.Players.LocalPlayer local edulvl = player.Education.Value local x = game.ReplicatedStorage.Work:InvokeServer(edulvl) local y = text(edulvl) script.Parent.Parent.Parent.Status.Visible = true script.Parent.Parent.Parent.Status.TextLabel.Text = (y.." "..x.." dollars") wait(5) script.Parent.Parent.Parent.Status.Visible = false debounce = true end end
Remove the debounce = true
on line 2, and define it outside the function. You are resetting the debounce every time you click it which essentially counteracts the point of the debounce.
local debounce = true local function clicked(plr) if debounce then debounce = false -- code goes here debounce = true end end
Hope this helps! :)