@TheSnitzelAdv hmm, y_timers...
Pentru a face un timer global, sintaxa e urmatoarea:
task name[ delay ]( )
{
return 1;
}
Exemplu:
#define oneSecond 1000
task oneSecondTimer[ oneSecond ]( )
{
foreach( new x : Player )
{
SendClientMessage( x, -1, "Acesta este un timer de 1 secunda, global." );
}
return 1;
}
Pentru timer-ul per player, avem urmatoarea sintaxa:
ptask name[ delay ]( playerid )
{
return 1;
}
E la fel ca la timer-ul global, doar ca aici adaugi parametrul playerid si nu mai ai nevoie de foreach pentru a parcurge o categorie de jucatori.
Exemplu:
ptask playerTimer[ oneSecond ]( playerid )
{
if( IsPlayerConnected(playerid) )
{
playerVariables[ playerid ][ pSeconds ] ++;
}
return 1;
}
Se pot creea si timere care sa fie executate intr-un anumit timp per player.
Pentru astea, avem nevoie de o variabila timer cu parametrul 'MAX_PLAYERS'.
new Timer: variabilaTimer[MAX_PLAYERS];
Sa creem timer-ul:
timer variabilaTimer[ 1000 ]( playerid )
{
SendClientMessage( playerid, -1, "Acest mesaj va fi afisat dupa x secunde dupa apelarea timer-ului." );
return 1;
}
x - timpul introdus in parametrul 'deelay'.
Mai pe scurt, acest timer, este apelat dupa numarul de secunde introdus in parametrul 'deelay' a-l timer-ului.
Cum apelam timer-ul creat?
YCMD:start( playerid, params[], help )
{
defer variabilaTimer[ playerid ];
return 1;
}
defer - functia care apeleaza timer-ul
Cum oprim timer-ul?
YCMD:stop( playerid, params[], help )
{
stop variabilaTimer[ playerid ];
return 1;
}
stop - functia care opreste timer-ul
Ca sa nu avem probleme cu timerele, la OnPlayerDisconnect( playerid, reason ) o sa le oprim.
public OnPlayerDisconnect( playerid, reason )
{
stop variabilaTimer[ playerid ];
return 1;
}
Sper ca ai inteles, daca ai intrebari, nu ezita sa le lasi mai jos. ?