[EASY]-Cum sa faci o prescurtare la o functie.
Posted: Mon Oct 24, 2011 5:43 am
Deci aici am sa va invat cum sa faceti o prescurtare la o functie, ca sa va fie mai usoara viata de scripting.
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)
%0 are rol ca un string, si cand vei folosi SCML(" Mesaj"); prin definitie, deoarece ai pus un %0, vei trimite un mesaj.
Exemplu de folosire:
Sau uite un alt exemplu care iti va economisi randuri.
Punand o virgula dupa o functie poti executa un sir de functii cand dai return sau else
Uite un alt exemplu de prescurtare.Eu am luato de la Y_Less din topicul lui "Code Optimizations"Si am modificat.
Aceasta functie te va ajuta sa economisesti destule randuri!Deoarece cand formatezi un string trebuie sa ai vreo 3-5 randuri ocupate. E, asa faci mai usor.
Ca sa nu mai folosest format(string(...) )
Vei folosi
Daca pui asta intr-o comanda de gen /stats si o dezvolti, vai avea succes si performanta.
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
Si se va putea folosi in acest caz
Sper ca v-am ajutat prin acest tutorial sa intelegi ceva.
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;
}