Jump to content

Vreau sa invat YSI Timers.


GroWy
 Share

Recommended Posts

  • Username : TheSnitzelAdv
  • Problema întâlnită: Nu este chiar o problema.
  • Detalii despre problemă: Vreau sa invat sa folosest YSI Timers.
  • Ce ai încercat să faci înainte să postezi?: Incerc sa invat sa folosesc YSI Timers.
  • Cod sursa (recomandat pastebin.com) : -
  • Alte detalii : Eu pana acum am lucrat clean cu functiile oferite de samp si putine include-uri, insa vreau sa invat sa ma folosesc de YSI Timers. Vreau sa invat ce este acela un task, un ptask, un timer, un ptimer, vreau sa invat unde si cum se folosesc/definesc.

 

 

Link to comment
Share on other sites

1 oră în urmă, iMatt a spus:

Eu personal nu folosesc ysi_timers, dar daca vrei sa inveti iti recomand acest tutorial: http://forum.sa-mp.com/showthread.php?t=571044

La acela m-am uitat, am inteles minim cateva chestii insa nu ma prea ajuta. Este altceva cand iti explica un om care vorbeste 'pe limba ta' si stie sa le foloseasca.

 

 

Link to comment
Share on other sites

23 minutes ago, TheSnitzelAdv said:

La acela m-am uitat, am inteles minim cateva chestii insa nu ma prea ajuta. Este altceva cand iti explica un om care vorbeste 'pe limba ta' si stie sa le foloseasca.

Vorbeste cu Leonard sau EraSy, ei se descurca bine rau cu ysi timers.

 

Link to comment
Share on other sites

  • Administrator

@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. ? 

Link to comment
Share on other sites

1 oră în urmă, Leonard a spus:

@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 de la pornirea 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. ? 

Da, am o intrebare, care este diferenta intre timer si task, adica vad ca ambele pot fii per player.

 

 

Link to comment
Share on other sites

  • Administrator
Acum 5 minute, TheSnitzelAdv a spus:

Da, am o intrebare, care este diferenta intre timer si task, adica vad ca ambele pot fii per player.

Daca erai mai atent la ce am zis referitor la timer, poate intelegeai.

 

ptask este per player, dar e apelat continuu cand jucatorul se conecteaza.

timer este la fel ca ptask, dar este apelat doar cand jucatorul face o actiune ce declanseaza acest timer.

- - - - - - - - - - - - - - - - -

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

Link to comment
Share on other sites

1 oră în urmă, Leonard a spus:

Daca erai mai atent la ce am zis referitor la timer, poate intelegeai.

 

ptask este per player, dar e apelat continuu cand jucatorul se conecteaza.

timer este la fel ca ptask, dar este apelat doar cand jucatorul face o actiune ce declanseaza acest timer.

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

Am inteles acuma, multumesc mult de ajutor. Esti cel mai de treaba. ?

 

 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...