[TUT] Brojanje & Odbrojavanje.

Započeo J0PS0NEE, Avgust 07, 2013, 10:18:18 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

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



     
   



lepo, pohvale
RESPECT: Blaeks, Yui_Sang, Gagi, Kapetan Husein, Luksa, Slay, Denis_Lapi, Zoran(Dude)

Programski jezici koje koristim: C, C#, Visual Basic, HTML, CSS, PHP (tek ucim).


Citat: |LZ| Bugi poslato Avgust 07, 2013, 10:24:32 PRE PODNE
lepo, pohvale
u kakvom sam stanju i u koje doba sam pisao, dobro je ikako.
Uglavnom, zahvaljujem :*