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

Is there a way to shorten a Script ? Cause im lazzy.

Asked by
Gigaset39 111
2 years ago
Edited 2 years ago

Hello from Romania, is there a way to shorten a script?

 local Dice = math.random(1,3) 
    hint.Value = '3'
    wait(0.9)
    hint.Value = '2'
    wait(0.9)
    hint.Value = '1'
    wait(0.9)

    if Dice == 1 then

        P.CanCollide = false 
           end
           if Dice == 2 then

        P.CanCollide = false 
           end
            if Dice == 3 then

        P.CanCollide = false 
           end
    end

Now, let say i want to do that to happen 6 more times, i could copy & paste,right? ,but let say im too lazy, what then? is there a way to shorten this out? i tryed to do:

    Local Game1 = local Dice = math.random(1,3) 
      hint.Value = '3'
       wait(0.9)
       hint.Value = '2'
       wait(0.9)
       hint.Value = '1'
       wait(0.9)

    if Dice == 1 then

        P.CanCollide = false 
           end

Basicaly, i tryed to make a word mean a entire script. but it doesent work, it wold be cool tought. :D :D :D

2 answers

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

It really depends on what you're trying to accomplish. If its all going to be CanCollide = false then you could check for a range of numbers or enter all acceptable numbers into a table and check that if they're scattered around. (1) Otherwise I would have a table with a function for each number, which would make it easier to read, as you wouldn't write if Dice == __ every time. (2) examples shown below for each

ex1.

Dice = math.random(1,3)
--first
nums = {1,3}
if table.find(nums, Dice) then
    CanCollide = false
end
--second
if Dice >=1 and Dice <=3 then
    CanCollide = false
end

ex2.

Dice = math.random(1,3) -- gets you a random number 1-3
local functions = {
    [1] = function(P) -- example of changing cancollide on P specifically 
        P.CanCollide = false
    end,

    [2] = function() -- example of another function
        print("landed on a 2, nothing happens in this example except this print")
    end,
}
if functions[Dice] then -- checks if the result from the dice is inside the table
-- in this case, if it lands on a 3, nothing happens because i only put [1] and [2] in the table. 
    functions[Dice]() -- runs function for rolled value, should work like any other function
-- if you want to change P's property may want to use functions[Dice](P), in top example if you look inside table
end

there are probably better ways but these are the two that i could think of at the time that to me would be easier to type.

0
hi, could u edit and add more explanations? just if you want. Gigaset39 111 — 2y
0
just to the 2 ex. Gigaset39 111 — 2y
0
just to the 2 ex. Gigaset39 111 — 2y
0
im not the best at explaining things, if theres a specific part you didn't understand let me know and ill try to explain it, otherwise i did add a few comments which hopefully helps BulletproofVast 1033 — 2y
Ad
Log in to vote
0
Answered by 2 years ago
Edited 2 years ago
local Dice
for i = 1, 7, 1 do
    Dice = math.random(1,3)
    for i = 3, 1, -1 do
        hint.Value = i
        task.wait(0.9)
    end

    if Dice == 1 then
        P.CanCollide = false
    elseif Dice == 2 then
        P.CanCollide = false
    elseif Dice == 3 then
        P.CanCollide = false
    end
end

Answer this question