PARTNERI:
-UPOZORENJE-

Samo registrovani članovi mogu da vide/koriste forum u celini.
Prijavite se ili registrujte nalog na Balkan SA-MP forumu.


Autor Tema: [Tutorial] Very basic yet so useful y_iterate tutorial :D  (Pročitano 1078 puta)

0 članova i 1 gost pregledaju ovu temu.

Van mreže Osamu Dazai

Very basic yet so useful y_iterate tutorial :D
« poslato: Avgust 24, 2019, 15:30:10 posle podne »
- YSI_Data\y_iterate -

Å ta je y_iterate?
To je još jedna od brojnih funkcija YSI paketa koja na omogućava brže pristupanje "indexima" koje mi kreiramo.


Zašto?
Zato što je brže nego korišćenje ostalih loopova, u daljem tekstu će biti objašnjeno zašto.


Kako se koristi?
Prosto je, prvo treba da kreiramo varijablu koja ima tag Iterator, ja ću u ovom primeru koristiti primer za učitavanje kuća iz baze.
Pawno Code: [Izaberi]
const MAX_HOUSES = 500;
new Iterator:House<MAX_HOUSES>;

Sada smo kreirali iterator koji u sebi sadrži 500 mesta za nove vrednosti koje ćemo skladištiti dalje u tutorialu.

Sada treba da Init-ujemo (inicijalizujemo) taj Iterator, to uradite pre učitavanja iz baze ili gde ćete ga već koristiti :)

Pawno Code: [Izaberi]
public OnGameModeInit()
{
    Iter_Init(House);
    //Loading
    return 1;
}

Sada ću vam pokazati kako da dodate određenu vrednost u ovom slučaju unique ID kuće u Iterator.

Pawno Code: [Izaberi]
stock HouseLoaded(houseid)
{
    // Ovaj kod se izvrÅ¡io kada smo učitali kuću `houseid` iz baze.
    Iter_Add(House, houseid);
}
Sada smo dodali 'houseid' u Iterator House

Dobro, ali šta sada, zašto smo ga dodali?

Recimo želimo da proverimo neÅ¡to za sve kuće, Vi bi ste  verovatno uradili neÅ¡to na fazon
Pawno Code: [Izaberi]
for(new i = 1; i <= MAX_HOUSES) { //code }i unutar ove provere bi morali dodati jos provera tipa da li je je ID kuce validan i još dosta toga u zavisnosti od DBa koji koristite tj da li kuca postoji itd;
Dok u foreach-u ne morate to raditi jer smo sigurni da kuća postoji jer je Iter_Add izvršen i foreach će pristupati samo indexima koji si dodati u njega putem te funkcije.

Pawno Code: [Izaberi]
foreach(new houseID : House)
{
    //Ovde ne treba nikakva provera da li kuca postoji u bazi i slicno jer smo je dodali kada smo je inicijalizovali.
    if(houseID == 69)
        break;
}

Brisanje vrednosti iz iteratora:

Pawno Code: [Izaberi]
YCMD:deletehouse(playerid, args[])
{
    //Code...
    Iter_Remove(House, id_izbrisane_kuce);
}

!!! PAŽNJA SADA MOLIM !!!
!!! Nikad ali nikada ne koristite Iter_Remove unutar samog foreach loop-a nego Iter_SafeRemove !!!

Pawno Code: [Izaberi]
native Iter_SafeRemove(Iterator:Name<>, value, &next);Iterator:Name<> - Ime iteratora
value - vrednost koju brišete
&next - ovo vraća sledeći id na koji će foreach da ide, koristite i, i (i, j, k šta već budete koristili) slobodno.
Primer:
Iter_SafeRemove(Items, i, i);

Pawno Code: [Izaberi]
native Iter_Random(Iterator:Name<>);Ova funkcija će uzeti Random vrednost iz Iteratora, na primer Players iterator je integrated u y_iterate i ako budete želeli recimo da napravite "happy ID" onda samo ovo iskoristite i dat će random igraču koji je konektovan na server nešto, mada ovde treba provera da li je igrač ulogovan ili jednostavno kreirajte iterator za ulogovane igrače.

Pawno Code: [Izaberi]
native Iter_Count(Iterator:Name<>);Ova funkcija uzima ukupan broj već dodatih vrednosti unutar iteratora, primer:
Pawno Code: [Izaberi]
printf("Na serveru je kreirano %d kuća.", Iter_Count(House));
Pawno Code: [Izaberi]
native Iter_Clear(IteratorArray:Name[]<>);Ova funkcija restartuje Iterator na default (brise sve vrednosti iz njega i sta je menjano od kada je inicijalizovan)

Pawno Code: [Izaberi]
native Iter_FastClear(IteratorArray:Name[]<>);Ova funkcija direktno null-uje ceo iterator, brža je od Iter_Clear-a jer ona koristi loop.

Pawno Code: [Izaberi]
native Iter_Alloc(Iterator:Name<>)Ova funkcija traži prazno mesto u Iteratoru i vraća ga (return-a ga).

Pawno Code: [Izaberi]
native Iter_Next(Iterator:Name<>, current_index)Uzima sledeću vrednost iz iteratora, current_index je na primer i a ono će vratiti vrednost posle i.

Pawno Code: [Izaberi]
native Iter_Prev(Iterator:Name<>, current_index)Suprotno od Iter_Next

Pawno Code: [Izaberi]
native Iter_First(Iterator:Name<>)Uzima prvu vrednost iteratora.

Pawno Code: [Izaberi]
native Iter_End(Iterator:Name<>)Uzima vrednost iza MAX_HOUSE (verujem da ovo postoji zbog jagged Array-a koji vam daje mogućnost menjanja maksimalnih elemenata array-a).

Pawno Code: [Izaberi]
native Iter_Last(Iterator:Name<>)Uzima poslednju vrednost iteratora.

Za sve funkcije možete videti Wiki, ovo bi bilo to od osnovnih :D
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons

Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin

Citat: Vodka Play
Obožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.
 
Korisnici koji su se zahvalili: M U M I X Z Λ

Van mreže YumikoJR

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #1 poslato: Avgust 24, 2019, 15:45:22 posle podne »
Super :)
 
Korisnici koji su se zahvalili: Osamu Dazai

Van mreže Osamu Dazai

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #2 poslato: Avgust 24, 2019, 15:48:40 posle podne »
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons

Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin

Citat: Vodka Play
Obožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.
 
Korisnici koji su se zahvalili: YumikoJR

Na mreži #ТHΞV1ЛЛΛϾHΛ_

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #3 poslato: Avgust 24, 2019, 15:49:35 posle podne »
Extraa mackenzzii :D
Nosi Gucci kao Knele!
Odakle si, sele?

 

Van mreže Vasic

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #4 poslato: Avgust 24, 2019, 15:52:57 posle podne »
Nemoj davat takve naslove temi, napisi Basic y_iterate Tutorial i tjt, napisa roman u naslovu..
Tutorijal je odlican. :)

Van mreže M U M I X Z Λ

  • Ne treba vjerovati ljudima s kojima smo se tek sprijateljili, a koji pokazuju da smo im draži od njihovih starih prijatelja – tako će se ponaÅ¡ati i s nama kada steknu nove prijatelje.
  • Godfather
  • *
  • Poruke: 10190
  • Broj zahvalnica: 900
Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #5 poslato: Avgust 24, 2019, 15:57:47 posle podne »
Za saferemove nisam znao, good :D
 

Van mreže Osamu Dazai

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #6 poslato: Avgust 24, 2019, 16:04:15 posle podne »
Extraa mackenzzii :D
Hvala bebs <3

Nemoj davat takve naslove temi, napisi Basic y_iterate Tutorial i tjt, napisa roman u naslovu..
Tutorijal je odlican. :)
A moram malo, nece drugacije uć haha

Za saferemove nisam znao, good :D
Bot.si <3
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons

Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin

Citat: Vodka Play
Obožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.
 
Korisnici koji su se zahvalili: M U M I X Z Λ

Van mreže 6cadilab9

  • Balkan Underground Owner
  • Super Moderator
  • Godfather
  • *
  • Poruke: 2585
  • Broj zahvalnica: 138
  • Pol: Muškarac
  • Just a nigga tryna help
Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #7 poslato: Avgust 24, 2019, 16:08:30 posle podne »
Basic jeste ali nepotpuno dosta, postoje i tzv 2d iteratori, na 2d iteratorima koristis iter init metodu da ga inicijalizujes, za ostale iteratore nema potrebe osim ako se ne koristi zeexov kompajler.
 

Van mreže Osamu Dazai

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #8 poslato: Avgust 24, 2019, 16:10:33 posle podne »
Basic jeste ali nepotpuno dosta, postoje i tzv 2d iteratori, na 2d iteratorima koristis iter init metodu da ga inicijalizujes, za ostale iteratore nema potrebe osim ako se ne koristi zeexov kompajler.
//Svakako sve ima ovde: https://forum.sa-mp.com/showthread.php?t=571159

EDIT: Evo i ovaj https://forum.sa-mp.com/showthread.php?t=570937

EDIT 2: Koristim Zeexov :D

EDIT 3: Sad mislim ne znam ni zasto otvaram sve ovo kada imas sve i jos detaljnije od kreatora inc-ova na wikipediji al eto ako neko bas toliko ne zna engleski i hoce da "skripta" bez njega evo mu ovo
« Poslednja izmena: Avgust 24, 2019, 16:14:18 posle podne Osamu Dazai »
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons

Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin

Citat: Vodka Play
Obožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.
 

Van mreže xLanmi

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #9 poslato: Avgust 25, 2019, 09:59:13 pre podne »
Dobar :)
One And Only
Old Member
Since AVGUST 2013. :)
 
Korisnici koji su se zahvalili: Osamu Dazai

Van mreže Osamu Dazai

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #10 poslato: Avgust 25, 2019, 10:11:22 pre podne »
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons

Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin

Citat: Vodka Play
Obožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.
 

Van mreže imnaithan

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #11 poslato: Avgust 25, 2019, 13:11:25 posle podne »
BadBoi   8)


Give Honor To The One Who Deserve It



 

Van mreže Osamu Dazai

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #12 poslato: Avgust 25, 2019, 13:25:57 posle podne »
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons

Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin

Citat: Vodka Play
Obožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.
 

Van mreže xLanmi

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #13 poslato: Avgust 25, 2019, 21:51:21 posle podne »
Da li je bolje tipa vozila sistem, uraditi sa iteratorima ili ne?
Moze malo objasnjenje brzine i to?

Razlika izmedju loop-a koji prolazi kroz vozila i iteratora?
Da li je mogucnost da zabaguje ovo sa Iter_Counter i Iter_FreeCount kako vec..

Ako mozes da odgovoris na sva pitanja, bio bih jako zahvalan.. :)
Ja po nacinu skriptanja vise preferiram loop pa ono voleo bih da objasnis pa da vidim sta cu :)
Hvala
One And Only
Old Member
Since AVGUST 2013. :)
 

Van mreže Osamu Dazai

Odg: Very basic yet so useful y_iterate tutorial :D
« Odgovor #14 poslato: Avgust 25, 2019, 22:19:14 posle podne »
Da li je bolje tipa vozila sistem, uraditi sa iteratorima ili ne?
Moze malo objasnjenje brzine i to?

Razlika izmedju loop-a koji prolazi kroz vozila i iteratora?
Da li je mogucnost da zabaguje ovo sa Iter_Counter i Iter_FreeCount kako vec..

Ako mozes da odgovoris na sva pitanja, bio bih jako zahvalan.. :)
Ja po nacinu skriptanja vise preferiram loop pa ono voleo bih da objasnis pa da vidim sta cu :)
Hvala
Pa pazi, sam koncept Iteratora je da brzo prođeš kroz svaki i ne pristupaš mestima koja nisu popunjena, ne verujem da bi išta moglo da zabaguje ali kao što sam napisao u postu oko Iter_SafeRemove -a gde treba da se koristi, a za brzinu imaš u temi gde sam pokazivao razliku između for i foreach za bitove, razlika je 945ms

EDIT: Ipak je razlika bila  1400ms
« Poslednja izmena: Avgust 25, 2019, 22:21:04 posle podne Osamu Dazai »
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons

Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin

Citat: Vodka Play
Obožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.