Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How to add a debounce (cooldown) to a Text Button?

Asked by 6 years ago

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).

01function clicked(plr)
02     debounce = true
03    if debounce == true then
04        debounce = false
05        local player = game.Players.LocalPlayer
06        local edulvl = player.Education.Value
07        local x = game.ReplicatedStorage.Work:InvokeServer(edulvl)
08        local y = text(edulvl)
09        script.Parent.Parent.Parent.Status.Visible = true
10        script.Parent.Parent.Parent.Status.TextLabel.Text = (y.." "..x.." dollars")
11        wait(5)
12        script.Parent.Parent.Parent.Status.Visible = false
13        debounce = true
14    end
15end

I thought I had my debounce set up correctly, but it doesn't seem to work.

Help would be appreciated

2 answers

Log in to vote
1
Answered by 6 years ago
Edited 6 years ago

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

01local debounce = true
02function clicked(plr)
03    if debounce == true then
04        debounce = false
05        local player = game.Players.LocalPlayer
06        local edulvl = player.Education.Value
07            local x = game.ReplicatedStorage.Work:InvokeServer(edulvl)
08            local y = text(edulvl)
09            script.Parent.Parent.Parent.Status.Visible = true
10            script.Parent.Parent.Parent.Status.TextLabel.Text = (y.." "..x.." dollars")
11            wait(5)
12            script.Parent.Parent.Parent.Status.Visible = false
13            debounce = true
14        end
15    end
0
Thank you for your response bluestreakejjp 41 — 6y
Ad
Log in to vote
1
Answered by
chomboghai 2044 Moderation Voter Community Moderator
6 years ago
Edited 6 years ago

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.

01local debounce = true
02local function clicked(plr)
03    if debounce then
04        debounce = false
05 
06        -- code goes here
07 
08        debounce = true
09    end
10end

Hope this helps! :)

0
Hello and thank you for your reply. Doing that would cause the debounce variable to become undefined, breaking the whole script. bluestreakejjp 41 — 6y
0
You have to define it outside the function. chomboghai 2044 — 6y
0
Thank you for your responses, you have been helpful. bluestreakejjp 41 — 6y
0
ACTUALLY, that would not break the whole entire script. If Debounce is equal to a nil value, a blank value. Then saying if debounce then is completely useless. In this case, he's defining the local variable "Debounce" with a boolean value of true, and hes stating if debounce which is the same as saying if debounce == true then. User#21998 0 — 6y

Answer this question