Jump to content

Cum sa afli timpul si data adevarata si sa o folosesti in gamemode


TheBetaFox

Recommended Posts

Cum sa afli timpul si data adevarata si sa o folosesti in gamemode


Inainte de a incepe, se presupune ca aveti deja experienta in Pawno, si acceptati faptul ca nu explic mai detaliat de atat.


NOTE: Data obtinuta este, din cate stiu, cea a computerului pe care este hostat serverul.

SUMAR: Acest tutorial arata un exemplu al folosirii functiilor 'gettime' si 'getdate' si cum ai putea arata jucatorului cat este ceasul si in ce data suntem.


Am observat ca multi nu stiu cum sa obtina data si timpul in SA-MP, asa ca am decis sa scriu un tutorial despre getdate si gettime.


Intai, declaram variabile pentru zi, luna, an si secunda, minut, ora.

new zi, luna, an, secunda, minut, ora;
Folosim gettime(ora, minut, secunda) si getdate(an, luna, zi). Astfel, ora se stocheaza in variabla 'ora', anul in variabila 'an' s.a.m.d.
new zi, luna, an, secunda, minut, ora;
gettime(ora, minut, secunda);
getdate(an, luna, zi);

Bun.. acum, sa zicem ca dorim sa scriem textul 'SERVER: Este ora **:**:**, iar data este **.**.****.' De asemenea, dorim sa 'activam' aceasta cu ajutorul unei comenzi.
COMMAND:timp(playerid, params[])
{
	new zi, luna, an, secunda, minut, ora;
	gettime(ora, minut, secunda);
	getdate(an, luna, zi);
	return 1;
}

Bun, avem variabilele intr-o comanda, dar ce facem acum? Nu putem trimite SendClientMessage direct, asa ca va trebui sa formatam un string! La lista variabilelor pe care le 'detinem' deja, adauga 'string', cu marimea 128, asa:
COMMAND:timp(playerid, params[])
{
	new zi, luna, an, secunda, minut, ora, string[128];
	gettime(ora, minut, secunda);
	getdate(an, luna, zi);
	format(string, sizeof(string), "SERVER: Este ora %02d:%02d:%02d, iar data este %02d.%02d.%04d.", ora, minut, secunda, zi, luna, an);
	return 1;
}

Multi dintre voi probabil au intrat in ceata, caz in care v-as recomanda sa cititi http://wiki.sa-mp.com/wiki/Format pentru a intelege functia 'format' mai bine. Pentru cei care au o idee si stiu ca %d este folosit pentru integer se vor intreba ce-i cu '02' sau '04' intre % si d. Ei, bine, acel '02' se asigura ca numarul va avea intotdeauna doua cifre; ca exemplu: daca sunt si doua secunde, nu o sa vezi '2', ci '02'. Fara acest '02', timpul ar putea aparea asa: '2:4:8'. Cu, va fi '02:04:08'. Diferenta la an este, desigur, deoarece anul are 4 cifre. Nu ar fi nevoie, vazand ca nu prea cred ca vom trece in anul 10,000 prea curand... Dar, asa imi place. :) Ziceti-mi voi, ala arata a timp? Mie nu-mi arata, sigur. Dar stai! Daca incerci comanda, vei vedea ca nu primesti nici un mesaj! Asta e din cauza ca nici nu l-am trimis! Adauga SendClientMessage(playerid, -1, string), iar astfel stringul va fi trimis jucatorului ca un mesaj. (NOTITA: -1 poate fi inlocuit cu orice culoare.)
COMMAND:timp(playerid, params[])
{
	new zi, luna, an, secunda, minut, ora, string[128];
	gettime(ora, minut, secunda);
	getdate(an, luna, zi);
	format(string, sizeof(string), "SERVER: Este ora %02d:%02d:%02d, iar data este %02d.%02d.%04d.", ora, minut, secunda, zi, luna, an);
	SendClientMessage(playerid, -1, string);
	return 1;
}


Provocari:

1. Incearca sa pui data si timpul intr-un textdraw, si cu ajutorul timerilor sa il updatezi la fiecare secunda.

2. Incearca sa faci lucrurile in serverul tau mai 'dinamice', cu evenimente unice, care se vor intampla doar de zile cum ar fi de Martisor, de ziua indragostitilor, de Craciun, de Revelion, sau fa comenzile sa reactioneze intr-un mod ciudat daca zi = 1 si luna = 4 (1 Aprilie) :)


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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. For more details you can also review our Terms of Use and Privacy Policy.