Foreach

Post Reply
RoberTo
Global Moderator
Global Moderator
Posts: 1380
Joined: Sun Dec 26, 2010 9:31 pm
Jucator SA:MP ?: Da
Nick:: RoberTo
Jucator CS ?: Da
Location: Craiova
Contact:

Foreach

Post by RoberTo »

[center]Foreach[/center]
[center]Tutorial[/center]

Introducere :
Foreach a fost create de Y_Less , acesta are functia de a inlocuii loop-urile ( loops ) intrun mod nou , foarte rapid si eficient.

Exemplu :

[font=courier]for ( new i = 0; i != MAX_PLAYERS; ++i )
{
if ( IsPlayerConnected( i ) )
{
printf("Player %d is connected", i );
}
}[/font]

devine simplu

[font=courier]foreach (Player, i)
{
printf("Player %d is connected", i );
}[/font]

Edit: Nu faceti [font=courier]foreach ( Player, i )[/font] cu spatii pentru ca va da eroare .
Multumesc lui Zh3r0 pentru ca ma atentionat .

Includere :
Acest include foloseste acest sistem deci ce tu trebuie sa
folosesti

[font=courier]#include <foreach>[/font]

Dupa aceea poti inlocui loop-urile cu codul de mai sus.
Pentru a folosi acest sistem intrun filescript foloseste

[font=courier]#define FILTERSCRIPT
#include <foreach>
[/font]

Daca deja ai macroul FILTERSCRIPT ai grija sa fie deasupra include-ului foreach.

Declaratie :
Pentru a declara un singur iterator ( inca un lucru la care poti folosi foreach ) foloseste :

[font=courier]new[/font] Iterator:MyIterator<10>;

Acest lucru va declara iteratorul cu 10 sloturi.

Folosire :
Pentru a folosi propriu iterator foloseste :

[font=courier]foreach (MyIterator, var)
{
printf("var %d is active", var );
}[/font]

Pentru a adauga iteme foloseste :
[font=courier]Iter_Add(MyIterator, 7);[/font]

Pentru a sterge iteme foloseste :
[font=courier]Iter_Remove(MyIterator, 7);[/font]

Pentru a lua un item rapid dintr-un iterator ( este foarte bun pentru a lua random players ) foloseste :
[font=courier]Iter_Random(MyIterator);[/font]

Pentru playeri ar trebui sa fie :
[font=courier]new randomplayer = Iter_Random(Player);[/font]
Functii :
  • [li][font=courier]Iterator:nume<marime>[/font][/li]
Creezi un nou iterator cu numele dat si maximul de valori detinute. Sistemul defineste iteratoarele automat :
Player - Toti playerii conectati
Bot (0.3) - Toti botii conectati
NPC (0.3) - Toti botii conectati ( lafel ca la Bot )
Character (0.3) - Toti playeri si botii conectati

  • [li][font=courier]Iter_Add(name, value)[/font][/li]
Adauga o valoare la iterator. Se face automat pentru iteratoarele de mai sus.
  • [li][font=courier]Iter_Remove(name, value)[/font][/li]
Sterge o valoare la iterator. Se face automat pentru iteratoarele de mai sus.
  • [li][font=courier]Iter_Clear(name)[/font][/li]
Reseteaza complet un iterator. Sterge toate datele.
  • [li][font=courier]Iter_Random(name)[/font][/li]
Returneaza o valoare la intamplare. Folositor pentru selectarea unui player la intamplare.
  • [li][font=courier]Iter_Count(name)[/font][/li]
Returneaza numarul de iteme dintr-un iterator. De exemplu numarul de playeri conectati.
  • [li][font=courier]IteratorArray:name[num]<size>[/font][/li]
Creeaza un nou iterator multidimensional cu numele si valoarea maxima.
  • [li][font=courier]Iter_Init(name)[/font][/li]
Daca faci un iteratori multidimensional trebuie neaparat sa sa apelezi la aceasta functie inainte de a pune ceva in el.
  • [li][font=courier]Iter_Func2(name, index, pars)[/font][/li]
Aceste functii au fost scoase din ultima versiune .

Daca adaugi "2" dupa oricare functie de mai sus si daca adaugi un index dupa nume si dupa toti cei lalti parametri vei creea un iterator multidimensional .
Un exemplu :

[font=courier]new IteratorArray:My2d[ 3 ]<5>;

Iter_Init2( My2d );
Iter_Add2( My2d, 1, 4 );[/font]

Acesta va creea 3 5 elemente si adauga elementul 4 la al doilea.

Optiuni de compilare :
Defineste astea inainte de a include foreach pentru a functiona.
  • [li]FOREACH_NO_BOTS[/li]
Daca vrei ca loop-urile doar pentru playeri foloseste acest include pentru a exclude bot-looping chiar si in 0.3.
  • [li]FOREACH_NO_PLAYERS[/li]
Acesta exclude toti playerii si boti .

Multiple Dimensions :
Versiunea anterioara a avut "Iter_Func2" - acestea au fost scoase in favoarea unor sintaxe.

Acum poti avea iteratori multidimensionali. Pentru exemplu poti avea un array de iterators de la vehiculele playerilor :

[font=courier]foreach (PlayerVehicles[ playerid ], veh)
{
// Fa ceva cu vehiculul playerului
}[/font]

Pentru array multidimensional trebuie sa folosesti :

[font=courier]Iter_Init(iterator);[/font]


---------------------------------------------------------------------------------------------------------------------------------------------------


Sper ca am tradus acest tutorial destul de clar si sa facut inteles.
In caz ca am gresit ceva rog moderatorii / administratorii sa dea EDIT si sa corecteze.

Postul original de catre Y_Less .


Edit: Aceasta a fost postul cu numarul 200 pentru mine.
---------------------------------------------------------------------------------------------------------------------------------------------------
Vrei un host de calitate si serios pentru serverul tau?
VEZI SERVERE HOSTATE LA NOI : http://www.zonek.ro/index.php?option=com_lgsl&Itemid=5
0763.55.9997 Comanda ACUMA OFERTA LIMITATA
Y: zonek_telecom | http://www.zonek.ro
- Nu te baga in pat nervos, stai treaz si "lupta". http://forum.zonek.ro inscrie-te si vezi cum se manifesta...
- Pentru schimb de Linkuri Intra AICi : linkex
Image
- Pentru cereri de Parteneriate prin Bannere Intra AICI
Image
Image
Post Reply

Return to “Tutoriale”