Jump to content

[TUTORIAL#4] Cum sa ne folosim de iteratori pentru optimizare? by nobilzeus


nobilzeusAdv
 Share

Recommended Posts

  • Username: nobilzeusAdv
  • Creator: nobilzeusAdv
  • Tutorial/Ghid: reply to see
  • [hide]
Pentru inceput ce sunt iteratori? sunt niste variabile sa zicem asa care stocheaza mai multe numere, de ex: 1 2 3 4 5
Noi o sa ne folosim de iteratori pentru o usoara optimizare si unele functii incluse care sunt folositoare
pe langa adaugarea si stergerea unui iterator, avem si functiile :
Iter_count(groupa); acesta functie ne spune cate id uri sunt in ea, si recomand utilizarea acestei functii in loc sa facem alta functie sa numaram numarul de jucatori de exemplu.
iter_first(grupa); aceasta functie ne spune primul id din ea, de ex: poate vreti sa afisati primul jucator care a intrat pe server, puteti folosi aceasta functie
Iter_last.. Iter_Clear si multe alte functii
Acum sa trecem la tutorial!

1)Cum folosim un iterator?
Pentru inceput ai nevoie de acest include: https://github.com/pawn-lang/YSI-Includes
Cum gandim? Un foreach parcurge fiecare id pana la numarul maxim de jucatori, de exemplu 100
de ce sa folosim aceasta varianta care parcurge 0 1 2 ... 99 
cand putem sa folosim un iterator care parcurge doar id urile care sunt in el
Ok, o sa ne referim la un sistem de paint, nu ai de ce sa folosesti foreach( new i : Player) care verifica toate id urile cand tu ai 5 jucatori in paint
2) Definirea si folosirea unui iterator:
new JUCATORMAXIM = 20;
new Iterator:PaintPlayer<JUCATORIMAXIM>; // daca vreti puteti pune MAX_PLAYERS, dar in paint nu intra oricum mai mult de 20-30 pe un sv de 100 playeri
La comanda de intrat in paint adaugati:
 if(Iter_Count(PaintPlayer) >= 20) return scm.. maxim 20 jucatori // daca sunt peste 20 de id uri in iteratorul nostru nu v-a putea intra in paint.
 Apoi adaugati Iter_Add(PaintPlayer,playerid);// adaugam id ul nostru in iterator

Cautati unde se foloseste in gm foreach la sistemul de paint, de exemplu unde se reseteaza variabilele sau unde se afiseaza scorul
si de ex: folosim foreach(new i : PaintPlayer) paintkill[i] = 0; etc
Unde jucatorul iese din paint folosim Iter_Remove(PaintPlayer, playerid); // scoatem id ul nostru din iterator
Putem trimite mesage,functii,stock uri prin aceasta metoda.
de exemplu normal folosim if(inpaint[i] == 1) scm...
noi nu trebuie sa mai facem aceasta verificare deoarece jucatorul e logic ca e in paint deoarece se afla in iterator, trimitem direct mesajul

  Cam atat despre Paint, 
  Recomand cate un iterator pentru fiecare factiuni,admin,helper,vip,leader,yt,derby,orice sistem care are mai multi jucatori, orice lucru care trece aiurea prin 100 de id uri, mai bine il trecem doar prin 5
  
 Pentru orice intrebare sau neintelegere astept reply,pm
 
  Daca mai vreti tutoriale, reply cu tutorial!

 

Edited by nobilzeusAdv
Link to comment
Share on other sites

  • 3 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...