NumberPlate generator
#1

Hello, I am looking for a script where you can generate a string(like "3r 45 e2" or "12 54 aa" etc.). But they have to be unique, so they have to be generated from an counting number (1 2 3, 1 is for example "11 11 11", 2 "11 11 12" or something like that) splitting the number(111111 = 11 11 11) doesn't do the trick because it doesn't have letters(a b c)
Anyone knows a script that does what I need? Thank you!
Reply
#2

I'm bored, so I'm going to write it completely for you...

pawn Код:
//Defines
#define DBNAME "LicensePlates"
#define LICENSE_FORMAT_US 1
//#define LICENSE_FORMAT_UK 2
//Variables
new DB:DB;               //Database Connection ID
new DBResult:DBResult;   //Database Result (for temporary use)
new gTempString[1024];   //Global Temporary String
new acceptedLetters[26]= //Letters to be used during generation
{
    'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','X','Y','Z'
};
new acceptedNumbers[10]= //Numbers to be used during generation
{
    '1','2','3','4','5','6','7','8','9','0'
};
//Functions
stock EstablishDatabase()
{
    //Determine if database exists or not
    new bool:temp;
    if(fexist(DBNAME))temp=true;

    //Open database (if it doesn't exist, it will be created)
    DB=db_open(DBNAME);

    //If database doesn't exist, create tables
    if(temp)
    {
        gTempString="";
        gTempString="CREATE TABLE IF NOT EXISTS `LicensePlates` (";
        strcat(gTempString,"`ID` INTEGER PRIMARY KEY,");
        strcat(gTempString,"`Text` TEXT ");
        db_free_result(db_query(DB,gTempString));
    }
}

stock bool:CheckDatabaseForLicense(const plate[])
{
    format(gTempString,1024,"SELECT Text FROM LicensePlates WHERE Text='%s'",plate);
    DBResult=db_query(DB,gTempString);
    if(db_num_rows(DBResult)>0)return true;
    return false;
}

stock CreateRandomLicense(format=LICENSE_FORMAT_US,length=6) //plate[] must be at least 1 cell larger than length
{
    if((length>8)||(length<1))return "INVALID";
    new bool:doesntWork=true;
    while(doesntWork)
    {
        gTempString="";
        for(new cell; cell<length; cell++)
        {
            switch(format)
            {
                case LICENSE_FORMAT_US:
                {
                    if(random(2)==1)gTempString[cell]=acceptedLetters[random(sizeof(acceptedLetters))];
                    else gTempString[cell]=acceptedNumbers[random(sizeof(acceptedLetters))];
                }
                //case LICENSE_FORMAT_UK
            }
        }
        if(!strlen(gTempString))return "INVALID";
        if(!CheckDatabaseForLicense(gTempString))doesntWork=false;
    }
    return gTempString;
}

stock AddLicenseToDatabase(const plate[])
{
    if(CheckDatabaseForLicense(plate))return 0;
    format(gTempString,1024,"INSERT INTO LicensePlates (Text) VALUES('%s')",plate);
    db_free_result(db_query(DB,gTempString));
}
I haven't tested it, or even compiled it. But with this you have the functions to create a database, add to it and check it with simple functions
Reply
#3

thanks!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)