Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <YSI\y_va>
- #define SCM1(%0,%1,%2,%3) \
- do \
- { \
- new _str[145]; \
- format(_str,sizeof(_str),%2,%3); \
- SendClientMessage(%0, %1, _str); \
- } \
- while( FALSE )
- main()
- {
- new StartTick[3], executemessage[] = "Hello, SA-MP";
- StartTick[0] = GetTickCount();
- for(new i = 0; i < 100000; i++)
- {
- SCM1(i, -1, "%s", executemessage);
- }
- StartTick[1] = GetTickCount();
- for(new x = 0; x < 100000; x++)
- {
- SCM2(x, -1, "%s", executemessage);
- }
- StartTick[2] = GetTickCount();
- for(new x = 0; x < 100000; x++)
- {
- SCM3(x, -1, "%s", executemessage);
- }
- printf( "SCM1 took %i ms to send 100,000 messages | Message is '%s'", (GetTickCount( ) - StartTick[ 0 ]), executemessage );
- printf( "SCM2 took %i ms to send 100,000 messages | Message is '%s'", (GetTickCount( ) - StartTick[ 1 ]), executemessage );
- printf( "SCM3 took %i ms to send 100,000 messages | Message is '%s'", (GetTickCount( ) - StartTick[ 2 ]), executemessage );
- }
- stock SCM3(playerid, color, const string[], va_args<>)
- {
- new
- _str[145];
- va_format(_str, sizeof (_str), string, va_start<3>);
- return SendClientMessage(playerid, color, string);
- }
- stock SCM2(playerid, color, fstring[], {Float, _}:...)
- {
- #define BYTES_PER_CELL 4
- static const
- ARGS = 3;
- new n = (numargs() - ARGS) * BYTES_PER_CELL ;
- if (n)
- {
- new message[128], arg_start, arg_end;
- #emit CONST.alt fstring
- #emit LCTRL 5
- #emit ADD
- #emit STOR.S.pri arg_start
- #emit LOAD.S.alt n
- #emit ADD
- #emit STOR.S.pri arg_end
- do
- {
- #emit LOAD.I
- #emit PUSH.pri
- arg_end -= BYTES_PER_CELL ;
- #emit LOAD.S.pri arg_end
- }
- while (arg_end > arg_start);
- #emit PUSH.S fstring
- #emit PUSH.C 128
- #emit PUSH.ADR message
- n += BYTES_PER_CELL * 3;
- #emit PUSH.S n
- #emit SYSREQ.C format
- n += BYTES_PER_CELL ;
- #emit LCTRL 4
- #emit LOAD.S.alt n
- #emit ADD
- #emit SCTRL 4
- return SendClientMessage(playerid, color, message);
- }
- else
- {
- return SendClientMessage(playerid, color, fstring);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment