Advertisement
Pedro_Miranda

[PAWN] - SendClientMessageFormatted (Função) * Y_Less

May 19th, 2012
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 1.31 KB | None | 0 0
  1. SendClientMessageFormatted(playerid, color, fstring[], {Float, _}:...)
  2. {
  3.     new n = numargs() * 4;
  4.  
  5.     if (n == 3 * 4)
  6.     {
  7.         return SendClientMessage(playerid, color, fstring);
  8.     }
  9.     else
  10.     {
  11.         new message[128];
  12.         new arg_start;
  13.         new arg_end;
  14.         new i = 0;
  15.  
  16.         #emit CONST.pri  fstring
  17.         #emit ADD.C    0x4
  18.         #emit STOR.S.pri arg_start // first parameters's offset
  19.  
  20.         #emit LOAD.S.pri n
  21.         #emit ADD.C    0x8
  22.         #emit STOR.S.pri arg_end  // last parameters's offset
  23.  
  24.         // pushing variable arguments
  25.         for (i = arg_end; i >= arg_start; i -= 4)
  26.         {
  27.             #emit LCTRL    5
  28.             #emit LOAD.S.alt i
  29.             #emit ADD
  30.             #emit LOAD.I
  31.             #emit PUSH.pri
  32.         }
  33.         // pushing normal arguments
  34.         #emit PUSH.S  fstring // format string
  35.         #emit PUSH.C  128   // sizeof(message)
  36.         #emit PUSH.ADR message // the string which format() will write in
  37.         #emit PUSH.S  n    // number of arguments * 4, always must be passed for natives
  38.         #emit SYSREQ.C format
  39.  
  40.         // clearing the stack
  41.         i = n / 4 + 1;
  42.         while (--i >= 0)
  43.         {
  44.             #emit STACK 0x4
  45.         }
  46.  
  47.         return SendClientMessage(playerid, color, message);
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement