Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SendClientMessageFormatted(playerid, color, fstring[], {Float, _}:...)
- {
- new n = numargs() * 4;
- if (n == 3 * 4)
- {
- return SendClientMessage(playerid, color, fstring);
- }
- else
- {
- new message[128];
- new arg_start;
- new arg_end;
- new i = 0;
- #emit CONST.pri fstring
- #emit ADD.C 0x4
- #emit STOR.S.pri arg_start // first parameters's offset
- #emit LOAD.S.pri n
- #emit ADD.C 0x8
- #emit STOR.S.pri arg_end // last parameters's offset
- // pushing variable arguments
- for (i = arg_end; i >= arg_start; i -= 4)
- {
- #emit LCTRL 5
- #emit LOAD.S.alt i
- #emit ADD
- #emit LOAD.I
- #emit PUSH.pri
- }
- // pushing normal arguments
- #emit PUSH.S fstring // format string
- #emit PUSH.C 128 // sizeof(message)
- #emit PUSH.ADR message // the string which format() will write in
- #emit PUSH.S n // number of arguments * 4, always must be passed for natives
- #emit SYSREQ.C format
- // clearing the stack
- i = n / 4 + 1;
- while (--i >= 0)
- {
- #emit STACK 0x4
- }
- return SendClientMessage(playerid, color, message);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement