Number separator
#1

How can i add number comma separator in-game ?

Example : $1200000
to
$1,200,000 ?
Reply
#2

pawn Код:
stock FormatNumber(integer, const separator[] = ",")
{
    new string[16];
    valstr(string, integer);

    if(integer >= 1000)
    {
        for(new i = (strlen(string) - 3); i > 0; i -= 3)
        {
            strins(string, separator, i);
        }
    }
    return string;
}
Reply
#3

Where to add this code? What to do?
Reply
#4

The code "CheezIt" replied is the function you should use to do such thing.

Add anywhere in your script. Preferably the last lines to avoid confusion. (ensuring it's not in the scoop of other functions/callbacks)

Then you can use it as follows, for example:
Код:
new x=1;
new str[128];
format(str,sizeof(str), "%s", FormatNumber(x));
printf(str);
The reason we used "%s" - which is normally for strings - instead of "%d" - which is normally for integers -because the function format number returns a string, not an integer, so take care not to get confused.
Reply
#5

I added the code in the script but not working yet!
Reply
#6

Quote:
Originally Posted by Cyboorg
Посмотреть сообщение
I added the code in the script but not working yet!
Tell us how you used it.
Reply
#7

I simply,added it in the gamemode script ?
And then compiled script
Reply
#8

No,it doesn't work like that,you should follow what MattTucker said.
Reply
#9

* CheezIt lol

Simple wrap around the numbers you want it to format.

FormatNumber(YOUR_NUMBER_OR_VARIABLE_HERE)
Reply
#10

Can anyone add a video tutorial ?please
Reply
#11

Quote:
Originally Posted by Cyboorg
View Post
Can anyone add a video tutorial ?please
just add CheezIt's code
Reply
#12

Try this:

Code:
stock FormatNumber(number)
{
   new Str[15];
   format(Str, 15, "%d", number);

   if (strlen(Str) < sizeof(Str))
   {
      if (number >= 1000 && number < 10000 || number >= -1000 && number < -10000)
             strins( Str, ",", 1, sizeof(Str));

      else if (number >= 10000 && number < 100000 || number >= -10000 && number < -100000)
           strins(Str, ",", 2, sizeof(Str));

      else if (number >= 100000 && number < 1000000 || number >= -100000 && number < -1000000)
           strins(Str, ",", 3, sizeof(Str));

      else if (number >= 1000000 && number < 10000000 || number >= -1000000 && number < -10000000)
           strins(Str, ",", 1, sizeof(Str)),strins(Str, ",", 5, sizeof(Str));

      else if (number >= 10000000 && number < 100000000 || number >= -10000000 && number < -100000000)
           strins(Str, ",", 2, sizeof(Str)),strins(Str, ",", 6, sizeof(Str));

      else if (number >= 100000000 && number < 1000000000 || number >= -100000000 && number < -1000000000)
           strins(Str, ",", 3, sizeof(Str)),strins(Str, ",", 7, sizeof(Str));

      else if (number >= 1000000000 && number < 10000000000 || number >= -1000000000 && number < -10000000000)
           strins(Str, ",", 1, sizeof(Str)),
           strins(Str, ",", 5, sizeof(Str)),
           strins(Str, ",", 9, sizeof(Str));
      else format(Str, 10, "%d", number);
   }
   else  format( Str, 15, "<BUG>" );
   return Str;
}
Reply
#13

Quote:
Originally Posted by skuller12
View Post
Try this:

Code:
stock FormatNumber(number)
{
   new Str[15];
   format(Str, 15, "%d", number);

   if (strlen(Str) < sizeof(Str))
   {
      if (number >= 1000 && number < 10000 || number >= -1000 && number < -10000)
             strins( Str, ",", 1, sizeof(Str));

      else if (number >= 10000 && number < 100000 || number >= -10000 && number < -100000)
           strins(Str, ",", 2, sizeof(Str));

      else if (number >= 100000 && number < 1000000 || number >= -100000 && number < -1000000)
           strins(Str, ",", 3, sizeof(Str));

      else if (number >= 1000000 && number < 10000000 || number >= -1000000 && number < -10000000)
           strins(Str, ",", 1, sizeof(Str)),strins(Str, ",", 5, sizeof(Str));

      else if (number >= 10000000 && number < 100000000 || number >= -10000000 && number < -100000000)
           strins(Str, ",", 2, sizeof(Str)),strins(Str, ",", 6, sizeof(Str));

      else if (number >= 100000000 && number < 1000000000 || number >= -100000000 && number < -1000000000)
           strins(Str, ",", 3, sizeof(Str)),strins(Str, ",", 7, sizeof(Str));

      else if (number >= 1000000000 && number < 10000000000 || number >= -1000000000 && number < -10000000000)
           strins(Str, ",", 1, sizeof(Str)),
           strins(Str, ",", 5, sizeof(Str)),
           strins(Str, ",", 9, sizeof(Str));
      else format(Str, 10, "%d", number);
   }
   else  format( Str, 15, "<BUG>" );
   return Str;
}
My eyes!!! Dang you!
Reply
#14

Quote:
Originally Posted by skuller12
View Post
Try this:

Code:
stock FormatNumber(number)
{
   new Str[15];
   format(Str, 15, "%d", number);

   if (strlen(Str) < sizeof(Str))
   {
      if (number >= 1000 && number < 10000 || number >= -1000 && number < -10000)
             strins( Str, ",", 1, sizeof(Str));

      else if (number >= 10000 && number < 100000 || number >= -10000 && number < -100000)
           strins(Str, ",", 2, sizeof(Str));

      else if (number >= 100000 && number < 1000000 || number >= -100000 && number < -1000000)
           strins(Str, ",", 3, sizeof(Str));

      else if (number >= 1000000 && number < 10000000 || number >= -1000000 && number < -10000000)
           strins(Str, ",", 1, sizeof(Str)),strins(Str, ",", 5, sizeof(Str));

      else if (number >= 10000000 && number < 100000000 || number >= -10000000 && number < -100000000)
           strins(Str, ",", 2, sizeof(Str)),strins(Str, ",", 6, sizeof(Str));

      else if (number >= 100000000 && number < 1000000000 || number >= -100000000 && number < -1000000000)
           strins(Str, ",", 3, sizeof(Str)),strins(Str, ",", 7, sizeof(Str));

      else if (number >= 1000000000 && number < 10000000000 || number >= -1000000000 && number < -10000000000)
           strins(Str, ",", 1, sizeof(Str)),
           strins(Str, ",", 5, sizeof(Str)),
           strins(Str, ",", 9, sizeof(Str));
      else format(Str, 10, "%d", number);
   }
   else  format( Str, 15, "<BUG>" );
   return Str;
}


YEs,but i don't know how to add separator per numbers, i added this code on my GM and no effect ?
Reply
#15

Quote:
Originally Posted by Cyboorg
View Post
YEs,but i don't know how to add separator per numbers, i added this code on my GM and no effect ?
Explain what you mean by the number separator.
Reply
#16

Quote:
Originally Posted by Cyboorg
View Post
YEs,but i don't know how to add separator per numbers, i added this code on my GM and no effect ?
Don't use his code, it's rubbish.

Here's an example:
pawn Code:
public OnPlayerConnect(playerid)
{
    new string[144], var = 215161241;
    format(string, sizeof(string), "Without the use of function: %d - With prior use: %s", var, FormatNumber(var));
    SendClientMessage(playerid, -1, string);
    return 1;
}

FormatNumber(integer, const separator[] = ",")
{
    new string[16];
    valstr(string, integer);

    if(integer >= 1000)
    {
        for(new i = (strlen(string) - 3); i > 0; i -= 3)
        {
            strins(string, separator, i);
        }
    }
    return string;
}
You will get the following message in-game when you connect:


If you still don't know how to use the function then there is absolutely no way to help you any further.
Reply
#17

Quote:
Originally Posted by CheezIt
View Post
Don't use his code, it's rubbish.

Here's an example:
pawn Code:
public OnPlayerConnect(playerid)
{
    new string[144], var = 215161241;
    format(string, sizeof(string), "Without the use of function: %d - With prior use: %s", var, FormatNumber(var));
    SendClientMessage(playerid, -1, string);
    return 1;
}

FormatNumber(integer, const separator[] = ",")
{
    new string[16];
    valstr(string, integer);

    if(integer >= 1000)
    {
        for(new i = (strlen(string) - 3); i > 0; i -= 3)
        {
            strins(string, separator, i);
        }
    }
    return string;
}
You will get the following message in-game when you connect:


If you still don't know how to use the function then there is absolutely no way to help you any further.
It is known, you are a fetus, this code is used on many Romanian servers and does not even produce a bug.

My code works as follows:

Ex:

Your code

Code:
format(string, 256, "Money: $%d", FormatNumber(money));
My code:

Code:
format(string, 256, "Money: $%s", FormatNumber(money));
My function is string type, it requires %s
Reply
#18

But it ain't string, he wants to make commas between each 3 numbers, which means Integer mister not string..
Reply
#19

Maybe he means to add commas on HUD?
Reply
#20

Quote:
Originally Posted by JasonRiggs
View Post
But it ain't string, he wants to make commas between each 3 numbers, which means Integer mister not string..
If it has commas between then it wouldn't be integer.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)