Aici vor fi presentate unele trucuri pe care le puteti folosi in pawn,pentru a va ajuta.
Comentarii,dar fara /* */Poate pe unii va enerveaza culoarea verde deschis.Astfel,daca vrei sa adaugi un comentariu,MAI LUNG,poti folosi un 'fals' #if defined .
Exemplu:
....cod
#if defined comm
Bla bla bla bla
#endif
Va aparea simplu si nu va da erori
Fast 'boolen' value returnPt cei ca nu stiu,boolen are ca 'valori' true si false . Se poate folosi si o variabila simpla,care ia valori de 0 si 1 (sau mai mare de 1).
Daca vrei sa verifici daca variabila are valoarea 0 sau mai mult poti folosi dublu !
ex:
- Code:
-
new var1=11;
new var2=0;
if(!!var1)
print("var1 este true");
else
print("var1 este false");
if(!!var2)
print("var2 este true");
else
print("var2 este false");
new bool:var3=!!var1;//true
in consola va aparea:
[18:40:05] var1 este true
[18:40:05] var2 este falseFolosirea ?:Ele sunt folosite pentru a returna o valoare daca o variabila are valoarea >0 si alta valoare daca variabila are valoarea ==0
Le poti folosi pentru a returna un string intr-un alt string.
CODUL DINAINTE:
- Code:
-
new var1=1;
new str[10];
if(var1==1)
str="yeee";
else
str="huuu";
printf("variabila var1 a determinat stringul: %s",str);
Cu '?:' - Code:
-
new var1=1;
printf("variabila var1 a determinat stringul:%s",str?("yeee"):("huuu"));
Setarea valorii de inceput a unor 'var' din enumuriPoti folosi 'enum'uri pentru dialoguri sau altele(practic),iar pentru a seta valoarea de la care vor pleca variabilile din enumuri trebuie pus la prima variabila valoarea.
ex:
- Code:
-
enum Dialogs
{
d_Register=101,
d_Login, //va avea valoarea 102.
..
}
Manevrarea valorilor dintr-o variabila cu arraysSa zicem ca ai nevoie de o variabila cu mai multe arrays si toate sa aiba aceiasi valoare.Pentru asta se poate folosi '...'
Exemplu:
new Var1[20]={10,...};
Tot odata,poti sa faci variabile cu arrays care sa aiba valori pare si impare
new Var1[20]={0,2,...}; // 0 2 4 6 8 10 12 14 16 18 20 ... pana la 20 variabile(incepe de la 0 ,se termina la 19)
Valoarea unei variabile cu TAGDe multe ori,cand vrem sa folosim variabile cu TAG ,intr-un string,sau altceva, apare warningul "tag mismatch".
De exemplu,la un TextDraw,daca incercam sa printam in consola valoare lui(folosind numele variabilei care il reprezinta) ,va aparea warningul.Folosint _:var va determina automat TAGul variabilei si nu vei mai primi warninguri
- Code:
-
new Text:test;
test=TextDrawCreate(12,12,"-");
printf("%d",test);//INCORECT
printf("%d",Text:test);//INCORECT
printf("%d",_:test);//Corect
Declarearea doar o data a unei variabile care este intr-o functiePentru a declara o variabila intr-o functie doar o data se foloseste static , in loc de new. Ea isi va pastra valoarea si dupa ce functia sa terminat.
Exemplu:
- Code:
-
stock upVal()
{
static var;
var++;
return var;
}
//OnFilterScriptInit
printf("%d",upVal());//1
printf("%d",upVal());//2
printf("%d",upVal());//3
Loopuri rapideCred ca multi dintre voi stiti " for(new i;i<MAX_PLAYERS;i++) " dar de multe ori uitati sa schimbati valoare la MAX_PLAYERS.Va prezint un truc prin care nu mai trebuie sa schimbati valoarea MAX_PLAYERS si totusi se aplica la toate sloturile si este la fel de rapid ca prima varianta:
- Code:
-
for ( new i,slots = GetMaxPlayers( ); i < slots; i++ )
{
if ( !IsPlayerConnected( i ) )
continue;//sarim peste,aka break;goto loop;
//cod..
}
Aplicarea unei functii si returnarea unei valori in aceasi linie
Da,este posibil.
Exemplu:
- Code:
-
if(PlayerInfo[playerid][Mute]==1)return SendClientMessage(playerid,-1,"Taci te' drecu!"),0;//desi functia SendClientMessage va returna 1,punand 0 la sfarsit va returna 0,adica functia in care a fost introdus codul se va termina.