Y_TIMERS
Posto vidim da ljudi idalje, iz bog zna kog razloga, koriste SetTimer i SetTimerEx, odlucio sam napraviti cool tutorial na temu Y_Timers koji su definitivno laksa i bolja varijanta..NAMENJENO POCETNICIMAOvaj include se nalazi unutar YSI!
Pa da pocnemo..
POZIVANJE TIMERA
Pre svega, kako pozivamo najobcniji timer
Za pozivanje koristimo "defer"
[pawn]defer NekiTimer(vrednosti koje zelimo preneti);[/pawn]
Ovo deluje zbunjujuce, ali sada cu pokazati upotrebu u tipa robu banke..
[pawn]CMD:robbanka(playerid, params[])
{
defer BankaRobTimer(playerid);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, 0x1874CDFF, "Zapoceo si pljacku banke!Ukoliko izadjes, pljacka ce se prekinuti!");
return 1;
} [/pawn]
Iznad se nalazi najprostija komanda za rob banke.. Pre svega, defer sluzi kao i SetTimer, pritom kod njega ne moramo da definisemo timer, vec samo da ga "upotrebimo"
Unutar [pawn]( )[/pawn] mozemo videti "playerid", znaci da prenosimo varijablu playerid, takodje mozemo preneti bilo koju varijablu i da pritom moze da se iskoristi unutar samog timera..
Kako oznaciti kraj timera??
[pawn]timer BankaRobTimer[90000](playerid)
{
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid, 0x1874CDFF, "Uspesno si opljackao banku!");
GivePlayerMoney(playerid, 90000);
}[/pawn]
Za to koristimo "timer", prosto, brzo, lako i jednostavno :D
Sta ovo sve znaci??
timer BankaRobTimer[90000](playerid) ->
timer -> Naznacavamo da je timer, da ne objasnjavam previse xD
BankaRobTimer -> Ovde navodimo ime timera
[90000] -> Broj u milisekundama nakon koga ce se timer zavrsiti
(playerid) -> varijabla koju smo preneli u timer
Sve ovo unutar timera :
[pawn]TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid, 0x1874CDFF, "Uspesno si opljackao banku!");
GivePlayerMoney(playerid, 90000); [/pawn]
Je zapravo ono sto se desi kada se timer zavrsi..
PTASK
Ovo je zanimljiva stvar, za sta sluzi PTASK?
PTASK je timer koji vrti za svakog igraca posebno, nesto nalik onoga sto vidjate na mnogo modova za PlayerTD-ove, banka, plata..
To je jedan nacin na koji moze da se koristi, on se ponavlja neogranicen broj puta ukoliko se ne zaustavi..
[pawn]ptask TimerIgrac[1000](playerid)
{
new banka[10], zlato[10], plata[10], level[5];
format(banka, 10, "%d$", PlayerInfo[playerid][pBankaNovac]);
PlayerTextDrawSetString(playerid,BankaTD[playerid], banka);
format(zlato, 10, "%dg", PlayerInfo[playerid][pBankaZlato]);
PlayerTextDrawSetString(playerid, ZlatoTD[playerid], zlato);
format(plata, 10, "%d$", PlayerInfo[playerid][pPlata]);
PlayerTextDrawSetString(playerid, PlataTD[playerid], plata);
format(level, 5, "%d", PlayerInfo[playerid][pLevel]);
PlayerTextDrawSetString(playerid, LevelTD[playerid], level);
}[/pawn]
Ovo je jedan primer, na svaku jednu sekundu da se igracu "update-uju" tdovi za platu, zlato, level i novac u banci.. Ukoliko samo odradite ovo, timer ce sam da se automatski pokrene kada igrac udje na server, tako da ne morate da brinete gde ce te ga staviti itd itd..
TASK
Task je ista stvar kao i PTASK, ponavljajuci timer koji vrti za sve igrace.. Ovo bi mozda biti neke server poruke ili tako nesto, zavisi sta preferirate.
Takodje se koristi isto kao i PTASK, samo bez varijabli
[pawn]task ImeTimera[vreme]()[/pawn]
STOPIRANJE TIMERA
Ukoliko ipak zelite da zaustavite odredjeni timer, ide malo na cudniji nacin :/
[pawn]
new Timer:NovoImeTimera; //Prvo cemo napraviti novu varijablu NovoImeTimera
NovoImeTimera = defer NasTimer(playerid); //Zatim cemo pokrenuti timer
stop NasTimer; //Koristimo "stop" da bi ga zaustavili kada to nama odgovara
[/pawn]
Takodje, NasTimer koristimo kao i obican timer, pozivamo ga, zatim koristimo "timer" da bi oznacili sta ce se desiti kada se zavrsi
"Stop" koristimo kada zelimo da timer prestane a pritom ne dodje do kraja, tako da ukoliko ga "stopiramo", ono sto smo stavili da se desi u "timer" se nece ni desiti..
ZAKLJUCAK
Po meni, jako korisna stvar, pogotovo za pocetnike, takodje je mnogo "optimizovanija" nego SetTimer i SetTimerEx..
Svako ima svoje misljenje..
Prvi mi je tutorial, tako da prihvatam svaku kritiku.. Tutorial je takodje namenjen pocetnicima, tako da sam se potrudio pojasnim uz razne primere, sto bolje mogu.
Hvala na citanju <3 ;D
Lepo objasnjeno, pocetnik sam i shvatio sam sve kako valja. Veoma korisno i jednostavno :D
Poceo sam da koristim ima 2-3 meseca od kada je muma objavio njegov V mod i video sam to , tako da dosta je bolje i lakse nego sa settimer po meni, za vas ne znam, posluzice dosta :]
Prekjucer sam poceo bas ovo raditi na mom modu , tako da si oke sve objasnio, fin tutorial :D