[TUTORIAL] Kad i kako koristiti y_timers

Započeo faberge, Maj 15, 2024, 10:02:57 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Kako koristiti Y_Tajmere:

Inicijalizacija: Pre korišćenja y_tajmera, potrebno je inicijalizovati ga koristeći funkciju CreateTimer(). Ova funkcija vraća referencu na kreirani tajmer, koju kasnije možete koristiti da se pozivate na njega.

Postavljanje kašnjenja: Nakon što imate referencu na tajmer, možete postaviti kašnjenje koristeći funkciju SetTimer(). Ova funkcija uzima referencu na tajmer, kašnjenje u milisekundama, i boolean vrednost koja označava da li tajmer treba da se ponavlja ili ne.

Poziv povratnog poziva tajmera: Takođe, potrebno je definisati funkciju povratnog poziva koja će biti izvršena kada tajmer istekne. Ova funkcija treba da ima specifičan potpis (TimerCallback(timerid, params[])) i biće automatski pozvana od strane SAMP servera kada tajmer istekne.

Pokretanje tajmera: Nakon postavljanja kašnjenja i definisanja funkcije povratnog poziva, možete pokrenuti tajmer koristeći funkciju StartTimer(). Ova funkcija uzima referencu na tajmer i pokreće odbrojavanje do isteka određenog kašnjenja.

Obrada događaja tajmera: Kada tajmer istekne, funkcija povratnog poziva će automatski biti pozvana od strane SAMP servera. Unutar ove funkcije, možete definisati akcije koje želite da izvršite kada se događaj tajmera desi.

Čišćenje: Nakon korišćenja y_tajmera, dobra praksa je očistiti ga zaustavljanjem tajmera koristeći funkciju StopTimer() i brisanjem ga koristeći funkciju DeleteTimer() kako biste oslobodili sve alocirane resurse.

Kada koristiti Y_Tajmere:

Odgodjene akcije: Y_tajmeri su korisni kada treba da izvršite određene akcije nakon specifičnog kašnjenja, kao što su stvaranje objekata, pokretanje događaja ili izvršavanje periodičnih zadataka.

Ohlađivanje: Mogu se koristiti za implementaciju mehanizama ohlađivanja za određene akcije ili sposobnosti u igri, sprečavajući njihovo prečesto korišćenje.

Planiranje: Y_tajmeri su korisni za planiranje zadataka ili događaja koji će se desiti kasnije, kao što su vremenski ograničene misije, događaji ili scenariji.

Animacija ili efekti: Ako želite da kreirate animacije ili posebne efekte koji se dešavaju nakon kašnjenja, y_tajmeri mogu biti korišćeni da ih pokrenu u odgovarajuće vreme.

Upravljanje resursima: Y_tajmeri takođe mogu biti korišćeni u svrhu upravljanja resursima, kao što je oslobađanje privremenih resursa ili resetovanje stanja nakon određenog perioda.

U suštini, y_tajmeri su moćan alat u SAMP PAWN programiranju za izvršavanje odloženih akcija, implementiranje ohlađivanja, planiranje događaja i efikasno upravljanje resursima. Pružaju fleksibilnost i kontrolu nad vremenom različitih elemenata igre, unapređujući ukupno iskustvo igranja.


#include <a_samp>

// Definišemo niz tajmera cooldownTimer[MAX_PLAYERS] kako bismo sačuvali tajmere ohlađivanja za svakog igrača.
new Timer:cooldownTimer[MAX_PLAYERS];

// Definišemo trajanje ohlađivanja u milisekundama (npr. 10 sekundi)
const COOLDOWN_DURATION = 10000;

// Povratna funkcija za tajmer ohlađivanja
forward TimerCallback(timerid, params[]);

// Komanda koju igrači mogu koristiti (npr. /primer)
CMD:primer(playerid, params[]) {
    // Proveravamo da li je tajmer ohlađivanja igrača aktivan
    if (IsTimerActive(cooldownTimer[playerid])) {
        // Igrač je još uvek na ohlađivanju
        SendClientMessage(playerid, COLOR_RED, "Sačekajte malo pre ponovne upotrebe komande.");
    } else {
        // Igrač nije na ohlađivanju, izvršavamo akciju komande

        // Na primer, šaljemo poruku koja pokazuje da je komanda uspešno izvršena
        SendClientMessage(playerid, COLOR_GREEN, "Komanda izvršena uspešno!");

        // Pokrećemo tajmer ohlađivanja za igrača
        cooldownTimer[playerid] = SetTimer(COOLDOWN_DURATION, false, "TimerCallback", playerid);
    }
}

// Implementacija povratne funkcije tajmera
public TimerCallback(timerid, params[]) {
    new playerid = params[0];

    // Proveravamo da li je tajmer ohlađivanja za igrača istekao
    if (timerid == cooldownTimer[playerid]) {
        // Period ohlađivanja je završen, zaustavljamo tajmer
        StopTimer(cooldownTimer[playerid]);

        // Resetujemo referencu na tajmer
        cooldownTimer[playerid] = INVALID_TIMER;

        // Obaveštavamo igrača da je period ohlađivanja završen
        SendClientMessage(playerid, COLOR_YELLOW, "Sada možete ponovo koristiti komandu.");
    }

    return 1; // Vraćamo 1 da bismo označili da je povratna funkcija obrađena
}
U ovom primeru:

U ovom primeru:

Definišemo niz tajmera cooldownTimer[MAX_PLAYERS] kako bismo čuvali tajmere ohlađivanja za svakog igrača.
Postavljamo trajanje ohlađivanja na 10 sekundi (10,000 milisekundi).
Kada igrač koristi /primer komandu, proveravamo da li je njihov tajmer ohlađivanja aktivan. Ako jeste, obaveštavamo ih da su još uvek na ohlađivanju. Inače, izvršavamo akciju komande, pokrećemo tajmer ohlađivanja za igrača i obaveštavamo ih da je komanda uspešno izvršena.
Definišemo povratnu funkciju TimerCallback koja obrađuje istek tajmera ohlađivanja. Kada tajmer ohlađivanja istekne, zaustavljamo tajmer, resetujemo referencu na tajmer i obaveštavamo igrača da je period ohlađivanja završen.
Не Сегодня