Jump to content

[PAWN] Numărătoare inversă (Countdown)


Tupi
 Share

Recommended Posts

În acest tutorial vă voi prezenta cum se poate realiza un sistem pentru o numărătoare înversă care să fie afișată pentru toți jucătorii

 

 

Înainte de toate eu am folosit urmatoarele include-uri: a_samp, zcmd, sscanf2, am definit SCM-ul.

#include <a_samp>
#include <zcmd>
#include <sscanf2>
  
#define SCM SendClientMessage

 

1. Creăm o variabilă care vă salva numarul de secunde penrtu numărătoarea inversă:

new CountdownSeconds;

 

2. Creăm textdraw-ul pentru numărătoarea inversă:

CountdownTD = TextDrawCreate(261.333465, 61.807411, "~r~Countdown: ~w~30");
TextDrawLetterSize(CountdownTD, 0.393333, 1.475553);
TextDrawAlignment(CountdownTD, 1);
TextDrawColor(CountdownTD, -1);
TextDrawSetShadow(CountdownTD, 0);
TextDrawSetOutline(CountdownTD, 1);
TextDrawBackgroundColor(CountdownTD, 255);
TextDrawFont(CountdownTD, 1);
TextDrawSetProportional(CountdownTD, 1);

 

3. Pentru început vom crea comanda în sine pentru numărătoarea inversă

CMD:countdown(playerid, params[])
{
	new seconds;
	if(sscanf(params, "i", seconds)) return SCM(playerid, -1, "Foloseste: /countdown <secunde>"); //verificam daca in comanda s-a folosit un numar de secunde
        if(seconds < 3 || seconds > 300) return SCM(playerid, -1, "Secunde invalide! (Min: 3 - Max: 300)"); //daca numarul de secunde este mai mic de 3 sau mai mare de 300, ii 	       trimitem un mesaj
    	CountdownSeconds = seconds; //setam variabilei CountdownSeconds valoarea secundelor introduse
      	Countdown(); //executam functia Countdown
	return 1;
}

 

4. Creăm funcția Countdown pe care am pus să o execute la finalul comenzii

function Countdown() 
{
	new string[30]; //cream o variabila pentru informarea jucatorilor cu privire la numarul de secunde setate
	format(string, sizeof(string), "~r~Countdown: ~w~%d", CountdownSeconds); //o formatam in felul urmator
	TextDrawSetString(CountdownTD, string); //setam textdraw-ului pentru numaratoarea inversa text-ul formatat mai sus
	TextDrawShowForAll(CountdownTD); //afisam textdraw-ul pentru toti jucatorii
	if(CountdownSeconds > -1) { //verificam daca variabila CountdownSeconds are valoarea mai mare de -1
		new CountdownTimer; //cream o variabila pentru timer
		CountdownTimer = SetTimer("Countdown", 1000, 0); //setam variabilei create un timer pentru pe aceiasi functie cu un interval de 1 secunda
	}
	CountdownSeconds --; //scadem valoarea 1 de fiecare data cand timer-ul executa functia
	if(CountdownSeconds == 0) TextDrawSetString(CountdownSeconds, "~b~Go!"); //daca variabila ajunge la valoarea 0, setam un alt text pentru a fi afisat jucatorilor
	if(CountdownSeconds == -1) { //daca variabila ajunge la valoarea -1
		TextDrawHideForAll(CountdownSeconds); //ascundem textdraw-ul pentru toti jucatorii.
		KillTimer(CountdownTimer); //distrugem timer-ul setat mai sus.
	}
	return 1;
}

 

Cam aceasta este baza unui sistem pentru o numărătoare inversă(countdown), de aici se poate pleca la ceva mult mai complex dacă este cazul. Sper că v-a fost de ajutor acest tutorial. Pentru orice întrebare/nelămurire puteți trimite un PM la un Programmer sau să deschideți un topic in secțiunea Help and Discussions.

Link to comment
Share on other sites

  • Tupi locked this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.