StaR-GaMinG
Would you like to react to this message? Create an account in a few clicks or log in to continue.

StaR-GaMinG

Welcome to StriKe-ShoT!
 
HomeHome  SearchSearch  Latest imagesLatest images  Chat  RegisterRegister  Log inLog in  

 

 Tips & Tricks

Go down 
AuthorMessage
AuD_CuLoRi

AuD_CuLoRi


Mesaje Mesaje : 121
Inscris In Inscris In : 2011-03-15

Tips & Tricks Empty
PostSubject: Tips & Tricks   Tips & Tricks EmptyThu Mar 24, 2011 3:33 pm

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:
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 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:
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 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:
Code:
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
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 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:
Code:
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:
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.
Back to top Go down
https://stargaming.forumgratuit.ro
 
Tips & Tricks
Back to top 
Page 1 of 1

Permissions in this forum:You cannot reply to topics in this forum
StaR-GaMinG :: Strike - Shot | Sa:Mp :: Discutii Scripting / Ajutor Scripting-
Jump to: