GTA-Center.com » Forum
http://www.gta-center.com/forums/

[GUIDA]Timer
http://www.gta-center.com/forums/viewtopic.php?f=40&t=647
Pagina 1 di 1

Autore:  Alby Fire [ 22/01/2011, 14:14 ]
Oggetto del messaggio:  [GUIDA]Timer

Salve, in questa guida vi spiegherò come meglio potrò come utilizzare i timer su sa-mp.
Ci sono 2 diversi tipi di timer
• Il SetTimerEx: la sua struttura si presenta così:
Codice:
SetTImerEx(funzione, intervallo, variabile booleana, formato variabile, parametri)


La Funzione: consiste nel nome del callback o della funzione che dovrà far funzionare il timer.
L'Intervallo: è settato in ms (millisecondi) e serve ad indicare dopo quanto dovrà agire la funzione, o se la variabile booleana sarà settata a true, indica ogni quanto agirà la funzione
La Variabile Booleana: serve ad indicare se il timer dovrà ripetersi o meno
Il formato variabile: serve ad indicare che tipo di variabile si andrà ad utilizzare nel timer, esistono 6 diversi tipi di variabili:
Formati i e d, servono per timer con variabili integer (con numeri interi)
Formato a, serve a creare un timer con variabili in array
Formato s, serve a creare un timer con variabili string per le stringhe di testo
Formato f, serve a creare un timer con variabili float (con numeri decimali)
Formato b, serve a creare un timer con variabili booleane (variabili che possono assumere 2 valori true o false)
Parametri: infine ci sono i parametri che servono a specificare il timer, esempio:
Codice:
forward vita(playerid);
public vita(playerid)
{
    SetPlayerHealth(playerid, 250);
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/vita", cmdtext, true) == 0)
    {
      SetTimerEx("vita", 500, true, "d", playerid);
      return 1;
    }
    return 0;
}

In questo caso abbiamo creato un timer che setta la vita a 250 HP, ogni 500ms(che equivalgono a mezzo secondo), si ripete (notare la variabile booleana settata a true), e con il parametro settato per il player che digiterà il comando (playerid)

• Il SetTimer: questo timer a differenza del SetTimerEx ha molti meno parametri da settare e la sua struttura si presenterà più semplice:
Codice:
SetTimer(funzione, intervallo, variabile booleana)


La Funzione: consiste nel nome del callback o della funzione che dovrà far funzionare il timer.
L'Intervallo: è settato in ms (millisecondi) e serve ad indicare dopo quanto dovrà agire la funzione, o se la variabile booleana sarà a true, indica ogni quanto agirà la funzione
La Variabile Booleana: serve ad indicare se il timer dovrà ripetersi o meno.
Presenta questi 3 parametri da settare che hanno lo stesso significato del SetTimerEx.
Esempio:
Codice:
forward vita(playerid);
public vita(playerid)
{
    SetPlayerHealth(playerid, 250);
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/vita", cmdtext, true) == 0)
    {
      SetTimer("vita", 500, true);
      return 1;
    }
    return 0;
}

Bene, a questo punto avrete settato il vostro timer, scegliendo il SetTimerEx o il SetTimer più semplice, ora avrete bisogno sicuramente anche di un modo con cui stoppare il timer, per farlo dovrete utilizzare la funzione

• KillTimer: questa funzione nativa serve a stoppare il timer da voi startato prima, la struttura del KillTimer si presenta così:
Codice:
KillTimer(timerid)

Il timerid: sarà la variabile da voi assegnata al timer
Per poterlo utilizzare dovrete assegnare una variabile al vostro SetTimer/SetTimerEx, esempio:
Codice:
//in Alto
new timerVita[MAX_PLAYERS];
//CallBack
forward vita(playerid);
public vita(playerid)
{
    SetPlayerHealth(playerid, 250);
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/vita", cmdtext, true) == 0)
    {
      timerVita[playerid] = SetTimer("vita", 500, true);
      return 1;
    }
    if (strcmp("/vitaoff", cmdtext, true) == 0)
    {
      KillTimer(timerVita[playerid]);
      return 1;
    }
    return 0;
}

A questo punto facendo /vitaoff avrete "killato" (stoppato) il vostro timer e potrete subire danni senza che il timer ricarichi la vita, i timers possono essere killati o risettati infinite volte.

N.B: se nella vostra GameMode utilizzerete molti timers con intervalli di pochi millisecondi, il vostro server laggherà.

Guida creata da: Alby Fire

Spero che sarà di aiuto a qualcuno che vorrà imparare l'uso e la sintassi dei timer :D.
I commenti sono ben accetti, non lo sono i "facepalm" o altri commenti e faccine sgradevoli, se nella guida ho commesso qualche errore o dimenticato qualcosa di cruciale, scrivetelo sotto e lo aggiungerò personalmente.
Alla prossima :awesome:

Autore:  Giovanni94m [ 22/01/2011, 14:16 ]
Oggetto del messaggio:  Re: [GUIDA]Timer

Ottima guida Alby ;)

Autore:  barletheking [ 22/01/2011, 14:28 ]
Oggetto del messaggio:  Re: [GUIDA]Timer

Bravo

Autore:  Angelo [ 22/01/2011, 14:29 ]
Oggetto del messaggio:  Re: [GUIDA]Timer

bella guida, complimenti ;)

Autore:  Alby Fire [ 22/01/2011, 14:33 ]
Oggetto del messaggio:  Re: [GUIDA]Timer

Grazie ^^

Autore:  Peppinux AKA Peppe_Stasu [ 22/01/2011, 15:20 ]
Oggetto del messaggio:  Re: [GUIDA]Timer

Complimenti.

Autore:  mitosking [ 22/01/2011, 19:14 ]
Oggetto del messaggio:  Re: [GUIDA]Timer

Fantastica... Continua cosi ;)

Pagina 1 di 1 Tutti gli orari sono UTC + 1 ora [ ora legale ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/