hi! i have an object that a player needs to click in order for an event to happen, how would i make it so that theres a “cooldown” and they can only click it once before the object destroys?
You could use wait() to make a cooldown I guess.
where do i put the script again? also, does it work for a local script?
Hm um depends on what you will use the cooldown for and how. If its the script gave you when you tocuhed the doll it dissapears you could put a wait() before transparency is set to 1
OOPS i meant to ask this for the other post LOL
User interfaces (mouse, keyboard, etc) only work in LocalScripts.
i posted that reply on the wrong post, i’m sorry!
Just add a debounce?
local Part = script.Parent
local DB = false
local function RemoveObject()
local DestroyCheck = workspace:FindFirstChild("YourPartNameHere")
if not DB and DestroyCheck then
DB = true
print("The debounce has been set to true!")
DestroyCheck:Destroy()
wait(5)
DB = false
print("The debounce has been set to false!")
end
end
Part.ClickDetector.MouseClick:Connect(RemoveObject)
(late sorry) what does the last part for? “Part.ClickDetector.MouseClick:Connect(RemoveObject)”
It connects an event. Events are like signals that will fire when certain conditions are met.
In this event, it will fire when the ClickDetector receives a mouse click, hence it’s called a “MouseClick” event. Connect
is used here to connect the event to a function; when the Event is fired, it will run the function.
mhm, but why is there a clicked event at the bottom? what is it used for in the debounce
You are asking a cooldown when a ClicKDetector is clicked, right?
This script tells us that the MouseClick event will only register if it is not currently in cooldown.
local doll2 = game.Workspace.dolls.CHAIR1doll
local sound = doll.Parent.Sound
local one = game.Lighting.one
local two = game.Lighting.two
local number = game.Workspace.numberSeven.seven
local Part = script.Parent
local DB = false
one.Enabled = false
two.Enabled = false
number.Transparency = 1
doll.MouseClick:Connect(function()
local function RemoveObject()
local DestroyCheck = workspace:FindFirstChild("doll1")
if not DB and DestroyCheck then
DB = true
print("The debounce has been set to true!")
DestroyCheck:Destroy()
wait(5)
DB = false
print("The debounce has been set to false!")
end
end
Part.ClickDetector.MouseClick:Connect(RemoveObject)
sound:Play()
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
local part = script.Parent --part, our our doll
local playersService = game:GetService('Players') -- emmber players isa service and we have to get that
local player = playersService:FindFirstChildOfClass('Player') --Were finding the player
local leaderstats = player:FindFirstChild("leaderstats") --the leaderstats we made
local dolls = leaderstats:FindFirstChild('Dolls') --Our dolls number
dolls.Value = dolls.Value + 1 --Adds 1 to our doll count
for i,v in pairs(workspace.dolls.doll1:GetDescendants()) do
if v:IsA("BasePart") or v:IsA("Decal") then
v.Transparency = 1
if v.Transparency == 1 then
doll:Destroy()
end
for i,v in pairs(workspace.dolls.CHAIR1doll:GetDescendants()) do
if v:IsA("BasePart") or v:IsA("Decal") then
v.Transparency = 0
number.Transparency = 0
end
end
end
end
end)```
here is my script (ignore how messy it is), this made the whole thing not work, is it in the wrong place?
Ok what is this
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
one.Enabled = true
wait(.03)
one.Enabled = false
wait(.03)
two.Enabled = true
wait(.03)
two.Enabled = false
wait(.03)
Maybe use a loop? Introduction to Scripting | Roblox Creator Documentation
like i said just ignore the mess bc im not too worried abt that rn, im really focused on fixing this debounce.
The debounce should work, if you want the loop, here it is:
for i = 0, 20, 1 do -- Will repeat 20 times
one.Enabled = true
task.wait(.03)
one.Enabled = false
task.wait(.03)
two.Enabled = true
task.wait(.03)
two.Enabled = false
task.wait(.03)
end
great, the loop works, but the debounce still does not. i put it under the mouseclick function with the one/two loop and now its like there isnt a debounce at all and i can still spam click the thing
If the one/two loop running is what you mean by “doesn’t work”, it’s because it just runs automatically, the Part.ClickDetector.MouseClick:Connect
isn’t stopping it, especially if no one clicks the detector. You can put the entire thing in the RemoveObject
function in the debounce if statement
im sorry its 4 am and im so tired and confused
the debounce does not work, i can still spam click the thing before it destroys