De exemplu, va este lene sa tot scrieti SendClientMessage( playerid, COLOR, "Mesaj"); de fiecare data?
Cu un mic [font=courier new]#define[/font] se poate rezolva!
Uitati un exemplu de prescurtare de comanda(FOLOSITI ACEASTA PRESCRUTARE DACA FOLOSIT ACEASI CULOARE SI PARAMETRU DE PLAYERID)
Code: Select all
#define SCML(%0) SendClientMessage( playerid, 0x8BA7FBFF, %0);
Exemplu de folosire:
Code: Select all
if( strcmp( cmdtext, "/kill", true) == 0 )
{
SetPlayerHealth(playerid, 0.0);
SCML("Te-ai omorat!");
return 1;
}
Code: Select all
if( strcmp( cmdtext, "/kill", true) == 0 ) return SetPlayerHealth(playerid, 0.0),SCML("Te-ai omorat!");
Uite un alt exemplu de prescurtare.Eu am luato de la Y_Less din topicul lui "Code Optimizations"Si am modificat.
Code: Select all
#if !defined FALSE
stock
bool:FALSE = false;
#endif
#define FormMessage(%0,%1,%2,%3)\
do\
{\
new str[130];\
format(str, sizeof (str), (%2), %3);\
SendClientMessage((%0),(%1), str);\
}\
while ( FALSE )
#define FormMessageForAll(%0,%1,%2)\
do\
{\
new str[ 130 ];\
format( str, sizeof ( str ), ( %1 ), %2);\
SendClientMessageToAll( ( %0 ), str);\
}\
while ( FALSE )
Ca sa nu mai folosest format(string(...) )
Vei folosi
Code: Select all
FormMessage( playerid, 0xFD2F17FF, "Ai %d bani scor %d", GetPlayerMoney( playerid ), GetPlayerSore( playerid ) );
Eu am trecut de la stilul vechi la cel modern si sofisticat.
mere ca prin minune, este chiar bun.
Mai puteti face MULTE alte prescurtati uitati un alt exemplu
Code: Select all
#define COMMAND(%0) if( strcmp( cmdtext, %0, true) == 0 )
Code: Select all
COMMAND("/kill")
{
new Nume[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nume, sizeof( Nume) );
SetPlayerHealth( playerid, 0.0 );
//Si acuma folosind prescurtarea de deasupra
SCML("Te-ai omorat");
FormMessageForAll( playerid, 0xFD2F17FF, "Playerul %s s-a sinucis!",Nume);
return 1;
}