SA-MP Forums Archive
Number separator - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Number separator (/showthread.php?tid=635125)

Pages: 1 2


Number separator - Cyboorg - 01.06.2017

How can i add number comma separator in-game ?

Example : $1200000
to
$1,200,000 ?


Re: Number separator - CheezIt - 01.06.2017

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;
}



Re: Number separator - Cyboorg - 01.06.2017

Where to add this code? What to do?


Re: Number separator - MattTucker - 01.06.2017

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.


Re: Number separator - Cyboorg - 02.06.2017

I added the code in the script but not working yet!


Re: Number separator - Fairuz - 02.06.2017

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


Re: Number separator - Cyboorg - 02.06.2017

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


Re: Number separator - Fairuz - 02.06.2017

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


Re: Number separator - CheezIt - 03.06.2017

* CheezIt lol

Simple wrap around the numbers you want it to format.

FormatNumber(YOUR_NUMBER_OR_VARIABLE_HERE)


Re: Number separator - Cyboorg - 03.06.2017

Can anyone add a video tutorial ?please


Re: Number separator - Ilias_ - 05.06.2017

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


Re: Number separator - skuller12 - 05.06.2017

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;
}



Re: Number separator - CheezIt - 05.06.2017

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!


Re: Number separator - Cyboorg - 05.06.2017

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 ?


Re: Number separator - skuller12 - 05.06.2017

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.


Re: Number separator - CheezIt - 05.06.2017

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.


Re: Number separator - skuller12 - 05.06.2017

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


Re: Number separator - JasonRiggs - 05.06.2017

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


Re: Number separator - GaByM - 05.06.2017

Maybe he means to add commas on HUD?


Re: Number separator - Toroi - 05.06.2017

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.