Search code examples
luanumbersroblox

/Lua/ How to do this (idk how to call that lol)


I need to make a trolleybus number, which won't repeat for game. For example, there is a number "101" and there musn't be more "101". How to do that? I have a code, but I know, he won't work and I won't test it lol

function giveNumber()
local number = math.random(100, 199)
local takedNumbers = {}
local i = 0
local massiv = i+1
script.Parent.pered.SurfaceGui.TextLabel.Text = number
script.Parent.zad.SurfaceGui.TextLabel.Text = number
script.Parent.levo.SurfaceGui.TextLabel.Text = number
script.Parent.pravo.SurfaceGui.TextLabel.Text = number

takedNumbers[massiv] = {number}
end 
script.Parent.Script:giveNumber() // what I wrote here? idk...

if number == takedNumbers[massiv] then 
    giveNumber()
end


i didn't test it, because I think it won't work because this code is something bad


Solution

  • I think this will serve your needs.

    In the function generateUniqueNumber, the script loops until it found a number that is not yet in the array. (in other words, that it hasn't given out yet)

    Once it found that number, it will insert it into the table to remember that it has given it out, and then it will return the number.

    Then on the bottom of the script we just give the numbers to the buses :-)

    --[[
        Goal: Give all buses a unique number
    ]] 
    
    -- Variables
    local takenNumbers = {};
    
    -- This function returns a random number in the range [100, 199] that has not been taken yet
    function generateUniqueNumber()
        local foundNumber = false;
    
        while not foundNumber do
            randomNumber = math.random(100, 199);
    
            if not table.find(takenNumbers, randomNumber) then
                table.insert(takenNumbers, randomNumber);
                return randomNumber;
            end
        end
    end
    
    -- This function sets the number of the bus
    script.Parent.pered.SurfaceGui.TextLabel.Text = tostring(generateUniqueNumber());
    script.Parent.zad.SurfaceGui.TextLabel.Text = tostring(generateUniqueNumber());
    script.Parent.levo.SurfaceGui.TextLabel.Text = tostring(generateUniqueNumber());
    script.Parent.pravo.SurfaceGui.TextLabel.Text = tostring(generateUniqueNumber());
    

    2 things:

    1. I didn't test this code as Roblox is not installed on the pc I'm currently on.
    2. Please try formatting your code nicely next time. It greatly improves the readability! For example, you can use this website: https://codebeautify.org/lua-beautifier