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

How to I make this script smaller? [closed]

Asked by 10 years ago

Okay so the following script is involving a Gui. How would I shorten this script and make it do the same thing?

clicked = script.Parent.Parent.OverLay

    clicked.BackgroundTransparency = 0.9
    wait(0.1)
    clicked.BackgroundTransparency = 0.8
    wait(0.1)
    clicked.BackgroundTransparency = 0.7
    wait(0.1)
    clicked.BackgroundTransparency = 0.6
    wait(0.1)
    clicked.BackgroundTransparency = 0.5
    wait(0.1)
    clicked.BackgroundTransparency = 0.4
    wait(0.1)
    clicked.BackgroundTransparency = 0.3
    wait(0.1)
    clicked.BackgroundTransparency = 0.2
    wait(0.1)
    clicked.BackgroundTransparency = 0.1
    wait(0.1)
    clicked.BackgroundTransparency = 0

When I try to shorten it I come up with this result but it never works.

clicked = script.Parent.Parent.OverLay

for i = 1,10 do
wait(0.1)
clicked.BackgroundTransparency = clicked.BackgroundTransparency-0.1
end

Help please.

Locked by BlueTaslem

This question has been locked to preserve its current state and prevent spam and unwanted comments and answers.

Why was this question closed?

4 answers

Log in to vote
7
Answered by 10 years ago

I didn't test this personally!

for i = 1.0, 0, -0.1 do
    clicked.BackgroundTransparency = i
    wait(0.1)
end

Hope I helped

0
Thank you :) ObscureEntity 294 — 10y
Ad
Log in to vote
8
Answered by
coo1o 227 Moderation Voter
10 years ago

NOTE: The code used here is untested, but should work.

This is in fact easy to do, use a for loop like so:

clicked = script.Parent.Parent.OverLay

for i = 1, 10 do
clicked.BackgroundTransparency = clicked.BackgroundTransparency-0.1
wait(0.1)
end

This should loop ten times and each loop should bring the transparency down by 0.1.

Explanation

Ok, so a for loop is a very basic loop to use and takes three arguments: iterator variable (= start value), end value and increment. Ok so a for loop will start on the iterator value and will keep looping the given code until the iterator value (Which is added by the increment every time it loops) equals the end value.

The iterator value is written as a variable (For example; i = 1) and every time the for loop loops, the iterator value will be added with the increment until the start value (Which is the number the iterator value is assigned to) is equal to the end value.

So in this code the loop will loop ten times since it takes ten loops to make the start value equal to the end value. The increment is not written because it's actually an optional argument and if it's not defined (Such as in the answer code I gave you) the increment will be (By default) 1.

And yes, the iterator value can be used anywhere in the loop since it's a variable; for example:

for i = 1, 10 do
print('The iterator value is ' .. i)
wait()
end

For the official wiki page on the for loop (And the other loops), click here!

Hoped this helped

~coo1o

Log in to vote
3
Answered by
Vividex 162
10 years ago

You would have to use a for loop, which runs a certain code an amount of times, in this case, 0.9 counting down to 0 which would be .9 times, so it would be run .9 times, an example of a for loop is..

for i = 0, 1, .1 do --Addresses that it starts from 0 and ends at 1, going up by .1's
    game.Workspace.Baseplate.Transparency = i --Labels the item
    wait() --Just so your studio won't crash when Playing Solo or Running
end --Ends the loop

If you are thinking of a while loop, well there is a difference. A while loop runs something an infinite amount of times, but can be broken with "break" An example of a while loop is..

while true do --Tells the kind of loop
    game.Workspace.Baseplate.CanCollide = false --Labels the functions
    wait(1)
    game.Workspace.Baseplate.CanCollide = true
end

Or you can substitute the "true" part in "while true do" with things such was wait() or 5 < 9 or 5 > 9 which of course would run if that equation is true, so answering your question, you would do a for loop:

clicked = script.Parent.Parent.OverLay

for i = .9, 0, -.1 do --Labels the type of loop, starts at .9, ends at 0, goes down by 1
    clicked.BackgroundTransparency = i --Labels what its used on
    wait() --Incase of studio crash
end --Ends

Hope it helped :)

Log in to vote
-6
Answered by 10 years ago
for i = minimum,maximum do
minimum = 1
maximum = 10
wait(0.1)
Clicked.Background.Transparency = Clicked.Background.Transparency-0.1

If that doesn't work, just do yours but try

clicked.Background.Transparency

Instead of the current way you were doing it. You're welcome if it works though, I'm not the brightest of all scripters, I tried my best.

1
1) You defined minimum and maximum inside the for loop 2) You forgot an end 3) It's BackgroudTransparency Thewsomeguy 448 — 10y