Kiriixer
(Kiri)
August 18, 2022, 10:36am
1
This script should flicker a beam randomly. it doesnt work
a = true
local beam = script.Parent.lightning1.Beam
function picktimer()
d = 0.105
w = 0.8
r = 0.135
wait(0.1)
end
function disappear()
wait(w)
beam.Enabled = false
wait(d)
beam.Enabled = false
wait(d)
beam.Enabled = false
wait(d)
beam.Enabled = false
wait(d)
beam.Enabled = false
wait(d)
beam.Enabled = true
wait(d)
beam.Enabled = false
wait(d)
beam.Enabled = false
wait(d)
beam.Enabled = true
wait(d)
beam.Enabled = false
beam.CanCollide = false
wait(w)
beam.Enabled = true
beam.CanCollide = true
wait(r)
beam.Enabled = false
wait(r)
beam.Enabled = false
wait(r)
beam.Enabled = false
wait(r)
beam.Enabled = true
wait(r)
beam.Enabled = false
wait(r)
beam.Enabled = true
wait(r)
beam.Enabled = false
wait(r)
beam.Enabled = false
wait(r)
beam.Enabled = false
end
while true do
if a == true then
picktimer()
a = false
else
disappear()
end
end
TestyLike3
(TestyLike3)
August 18, 2022, 10:43am
2
Number 1: Use task.wait() instead
Number 2: Use math.random() for random flickering
Number 3: Use a for loop
Final product:
for i = 0,6 do
beam.Enabled = true
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
end
3 Likes
I suggest that you try to get acquainted with math.random() function
random | math | Roblox Creator Documentation
Here’s an example based on your provided code
while true do task.wait(math.random(80, 135)/100)
if math.random(1, 2) == 1 then
beam.Enabled = false
else
beam.Enabled = true
end
end
1 Like
Kiriixer
(Kiri)
August 18, 2022, 10:45am
4
like this?
a = true
local beam = script.Parent.lightning1.Beam
i = 0.6
for i = 0,6 do
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = true
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = true
task.wait(math.random(0.1,0.8))
beam.Enabled = false
beam.CanCollide = false
task.wait(math.random(0.1,0.8))
beam.Enabled = true
beam.CanCollide = true
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = true
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = true
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = false
task.wait(math.random(0.1,0.8))
beam.Enabled = false
end
TestyLike3
(TestyLike3)
August 18, 2022, 10:49am
5
No. Write it exactly as I have written. That will make it loop 6 times.
Kiriixer
(Kiri)
August 18, 2022, 10:50am
6
it needs to loop infinite times tho
TestyLike3
(TestyLike3)
August 18, 2022, 10:54am
7
If you want it to loop infinitely then atleast have a variable ready to stop it.
local isFlickering = true
local minWait = 0.1
local maxWait = 0.8
repeat
beam.Enabled = true
task.wait(math.random(minWait,maxWait))
beam.Enabled = false
task.wait(math.random(minWait,maxWait))
until not isFlickering
You can set isFlickering to false and it will stop looping. You can also easily change the wait times at the top, though I doubt they’ll do much.
2 Likes