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)