Letters converted into numbers.
#1

I'm trying to make a script where each player has a Bank Account Number. I want to be able to create this number from the player's name. Every A would be a 1 for example.

Is there an easy way without having to detect every letter inside of a very large switch operator? Thanks.
Reply
#2

Every character is an ASCII number, you don't need a switch statement to get it.
pawn Код:
for(new i; i < strlen(string);i++)
{
     printf("%c = %d",string[i],string[i]);
}
Then you just have to create a formula to create a large number from these small numbers ( easier said than done )

If you want to create a unique random account number for each player, you can try this
pawn Код:
stock returnnewcarid()
{
    new carfile[9],carstring[128];
    for(new i = 0; i <= 8; i++)
    {
        carfile[i] = random(9)+1;
    }
    format(carstring,sizeof(carstring), "%s%d%d%d%d%d%d%d%d%d.ini",CARS_PATH,carfile[0],carfile[1],carfile[2],carfile[3],carfile[4],carfile[5],carfile[6],carfile[7],carfile[8]);
    while(fexist(carstring))
    {
        for(new i = 0; i <= 8; i++)
        {
            carfile[i] = random(9)+1;
        }
        format(carstring,sizeof(carstring), "%s%d%d%d%d%d%d%d%d%d.ini",CARS_PATH,carfile[0],carfile[1],carfile[2],carfile[3],carfile[4],carfile[5],carfile[6],carfile[7],carfile[8]);
    }
    new regstring[12],new_code;
    format(regstring,sizeof(regstring),"%d%d%d%d%d%d%d%d%d",carfile[0],carfile[1],carfile[2],carfile[3],carfile[4],carfile[5],carfile[6],carfile[7],carfile[8]);
    new_code = strval(regstring);
    return new_code;
}
Its written for a car registration system, but you can modify it for your purposes. Just change CAR_PATH to a directory in scriptfiles, and create a new file there for every account number you create ( this will ensure each account number is unique )

I know it seems like a very long way to do this, but I wanted to create a unique 9 digit number with no zeros in it, and thats how I did it. Now that I look at it, there are better ways to do this, but :effort:

[edit] You could also use AUTO_INCREMENT in an sql table
Reply
#3

Is there a way to get make it go back and fourth with ease? Like I can get the player name from the numbers?
Reply
#4

Not directly ( with the suggestion I made) , although you could put the players name in the .ini file that you create.

Otherwise the SQL solution, or even the hashing idea would give you this option.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)