P-GaMinG CommuniTy
Welcome To Community!
P-GaMinG CommuniTy
Welcome To Community!
P-GaMinG CommuniTy
Would you like to react to this message? Create an account in a few clicks or log in to continue.


Welcome To GaMinG
 
HomeLatest imagesSearchRegisterLog in

 

 Tips & Tricks

Go down 
AuthorMessage
cristian
Admin
cristian


Mesaje : 109
Data de inscriere : 2011-03-12
Varsta : 28
Localizare : Buzau

Tips & Tricks Empty
PostSubject: Tips & Tricks   Tips & Tricks EmptySat Mar 12, 2011 9:11 am

Tips & Tricks
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 return
Pt 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:


Cod:
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 false

Folosirea ?:
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:


Cod:
new var1=1;
new str[10];
if(var1==1)
str="yeee";
else
str="huuu";
printf("variabila var1 a determinat stringul: %s",str);




Cu '?:'


Cod:
new var1=1;
printf("variabila var1 a determinat stringul:%s",str?("yeee")Sad"huuu"));




Setarea valorii de inceput a unor 'var' din enumuri
Poti 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:


Cod:
enum Dialogs
{
d_Register=101,
d_Login, //va avea valoarea 102.
..
}




Manevrarea valorilor dintr-o variabila cu arrays
Sa 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 TAG
De 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


Cod:
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 functie
Pentru 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:


Cod:
stock upVal()
{
static var;
var++;
return var;
}
//OnFilterScriptInit
printf("%d",upVal());//1
printf("%d",upVal());//2
printf("%d",upVal());//3




Loopuri rapide
Cred 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:


Cod:
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:


Cod:
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.




Back to top Go down
http://p-games.formyjob.net
 
Tips & Tricks
Back to top 
Page 1 of 1

Permissions in this forum:You cannot reply to topics in this forum
P-GaMinG CommuniTy :: P-gaming - SA:MP :: Discutii Scripting / Ajutor Scripting-
Jump to: