Pozdrav Älanovi :-*,
Danas ću vam pokazati kako da da napravite Brojanje i Odbrojavanje, koristeći obiÄne varijable i tajmere.
KoristiÄemo: y_commands, y_timers i sscanf2
BROJANJE:
Na vrhu skripte dodajte slijedeće varijable:
new Do[MAX_PLAYERS] = -1;
new jVarijabla[MAX_PLAYERS] = -1;
Definišimo jedan timer ispod varijabli:
new Timer: jBrojanje[MAX_PLAYERS];
OK, ajde da napravimo komandu kojom Äemo pokretati taj timer:
YCMD:broji(playerid, params[], help)
{
#pragma unused help
new odbroja, dobroja;
if(sscanf(params, "ii", odbroja, dobroja)) return SendClientMessage(playerid, -1, "Koristite: /broji [Pocetni broj] [Zavrsni broj]");
if(jVarijabla[playerid] != -1) return SendClientMessage(playerid, -1, "(greska) Brojanje je vec u toku!");
if(odbroja < 0) return SendClientMessage(playerid, -1, "(greska) Nije moguce poceti brojati ako je pocetni broj ispod 0!");
if(dobroja < 0) return SendClientMessage(playerid, -1, "(greska) Nije moguce brojati ispod 1!");
jVarijabla[playerid] = odbroja;
Do[playerid] = dobroja;
jBrojanje[playerid] = repeat BrojanjeBrojeva(playerid);
return 1;
}
Da malo pojasnimo:
** new odbroja, dobroja; (oznacavamo parametre na sscanf)
if(sscanf(params, "ii", odbroja, dobroja)) ( parametar I = An integer)
jVarijabla[playerid] = odbroja; (pamti poÄetni broj)
Do[playerid] = dobroja; (pamti zavrsni broj)
jBrojanje[playerid] = repeat BrojanjeBrojeva(playerid); (Ponavlja naš tajmer za odredjeno sekundi (Trebamo ga definisat(napraviti))) **
KonaÄno, ajde da napravimo timer:
timer BrojanjeBrojeva[1000](playerid)
{
return 1;
}
Da odma razjasnimo:
** timer BrojanjeBrojeva[1000](playerid) (Dosta je sliÄno publicu, samo ima viÅ¡ka osnovu "[1000]" i umjesto "public" se piÅ¡e "timer", znaÄi "[1000]" je vrijeme timera u ovom sluÄaju 1000ms/1s. (staviti po želji)**
timer BrojanjeBrojeva[1000](playerid)
{
printf(" Varijabla je na broju: %d/%d", jVarijabla[playerid],Do[playerid]);
jVarijabla[playerid] ++;
if(jVarijabla[playerid] == Do[playerid])
{
stop jBrojanje[playerid];
jVarijabla[playerid] = -1;
Do[playerid] = -1;
}
return 1;
}
Pojašnjenje:
** printf("Varijabla je na broju: %d/%d", jVarijabla[playerid],Do[playerid]); (Ispisivanje varijabli, na trenutnom broju i do kojeg broja ide)
jVarijabla[playerid] ++; (poveÄava "jVarijabla" svaki sekund za jedan)
if(jVarijabla[playerid] == Do[playerid]) (Ako je odabrani broj stigao do odredjenog broja)
stop jBrojanje[playerid]; (Zaustavljanje timera, automacki nakon zavrsetka brojanja)
jVarijabla[playerid] = -1; (Vracanje varijablje u prvobitni oblik)
Do[playerid] = -1; (Vracanje varijablje u prvobitni oblik) **
ODBROJAVANJE:
Koristićemo iste varijable, samo Äemo napraviti novu komandu i drugi timer.new Timer: jOdbrojavanje[MAX_PLAYERS];
Komanda:
YCMD:odbroji(playerid, params[], help)
{
#pragma unused help
new odbroja, dobroja;
if(sscanf(params, "ii", odbroja, dobroja)) return SendClientMessage(playerid, -1, "Koristite: /odbroji [Pocetni broj] [Zavrsni broj]");
if(jVarijabla[playerid] != -1) return SendClientMessage(playerid, -1, "(greska) Brojanje je vec u toku!");
if(odbroja < 0) return SendClientMessage(playerid, -1, "(greska) Nije moguce poceti brojati ako je pocetni broj ispod 0!");
if(dobroja < 0) return SendClientMessage(playerid, -1, "(greska) Nije moguce brojati ispod 1!");
jVarijabla[playerid] = odbroja;
Do[playerid] = dobroja;
jBrojanje[playerid] = repeat OdbrojavanjeBrojeva(playerid);
return 1;
}
** Uglavnom je sve ostalo isto, samo se promjenio Timer "OdbrojavanjeBrojeva(playerid);" **
Pravljenje jos jednog timera:
timer OdbrojavanjeBrojeva[1000](playerid)
{
printf(" Varijabla je na broju: %d/%d", jVarijabla[playerid],Do[playerid]);
jVarijabla[playerid] --;
if(jVarijabla[playerid] == Do[playerid])
{
stop jBrojanje[playerid];
jVarijabla[playerid] = -1;
Do[playerid] = -1;
}
return 1;
}
** I Kod tajmera uglavnom ostaje sve isto, samo Å¡to dolazi promjena kod varijable "jVarijabla", znaÄi ta varijabla se oduzima za 1, to jeste smanjuje stoga koristimo "--". **
Nadam se da sam vam uspio pomoći u tutorialu, moguće su greške jer je 10:19 nisam spavao cjelu noć i ne znam šta tipkam :(
- Jopsonee