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

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

2 answers

Log in to vote
1
Answered by 5 years ago
Edited 5 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

    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

0
Thank you for your response bluestreakejjp 41 — 5y
Ad
Log in to vote
1
Answered by
chomboghai 2044 Moderation Voter Community Moderator
5 years ago
Edited 5 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.

local debounce = true
local function clicked(plr)
    if debounce then
        debounce = false

        -- code goes here

        debounce = true
    end
end

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 — 5y
0
You have to define it outside the function. chomboghai 2044 — 5y
0
Thank you for your responses, you have been helpful. bluestreakejjp 41 — 5y
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 — 5y

Answer this question