Szerző Téma: Egy hónapja..  (Megtekintve 642 alkalommal)

Egy hónapja..
« Dátum: 2013. november 09. - 01:12:21 »
0 Show voters
Sziasztok! Hogyan tudnám azt megtudni, hogy a játékos egy hónapnál régebben lépett-e be? Mármint az utolsó belépés és a mostani között eltelt-e egy hónap. Elõre is köszönöm!

Egy hónapja..
« Válasz #1 Dátum: 2013. november 09. - 08:06:51 »
+1 Show voters
Üdv.!
Ha MySQL-t, ha dini-t akármit használsz login kor el kell mentened a dátumot és az idõt.
 

getdate(year, month, day);
gettime(hour, minute, second);

 
Lekérés után elmented
És ha például GameModeInit-nél szeretnéd lekérdezni, akkor egy egyszerû ciklussal megoldható, pl:
 

for(new i = 0;i <= MAX_PLAYERS)
{
//betöltöd a mentett adatokat (év, hónap, nap, óra, perc, msdprc)
}

 
Lekérdezed a mait is, egy egyszerû elágazással pedig le tudod kérdezni, hogy el e telt 1 hónap
Ha megmondod mysql, dini vagy mivel mentesz, akkor meg is tudom neked csinálni :)

Egy hónapja..
« Válasz #2 Dátum: 2013. november 09. - 11:13:33 »
0 Show voters
Köszönöm! Ennyi elég lesz, mert csak azon vaciláltam, hogy gettick count -al nem lehet-e megoldani

Egy hónapja..
« Válasz #3 Dátum: 2013. november 09. - 12:14:01 »
0 Show voters
gettickcount-al nem lehet, mert az a szerver üzemidejét nézi. Tehát ha restartold a szervert, akkor elölrõl kezdi a számolást. Használd inkább a gettime()-t! Ez visszatér a jelenlegi unix idõvel, abból meg simán kitudod számítani, hogy 1 hónapja volt-e fent a játékos, vagy sem.
Úgy csináld, hogy lemented minden bejelentkezésnél, vagy kilépésnél a gettime()-t. Majd amikor leakarod ellenõrizni, hogy a játékos volt-e már a szerveren egy hónapja, akkor betöltöd a lementett gettime()-t és összehasonlítod a (mostani + 1 hónappal). Ha nagyobb a  (mostani + 1 hónap), akkor nem volt fent.
1 hónap = 2628000 mp
 
if(lementett_gettime < gettime() + 2628000)
{
SendClientMessage(playerid, -1, \"Inaktív voltál, ezért...\");
}

 
Ez inkább az alap fájlkezelõ rendszerhez van.
Ha MySQL-t használsz, akkor ez szerencsére egyszerûbb. Ott annyi a lényeg, hogy kell lenni egy olyan oszlopnak, hogy UtoljáraOnline, tehát az, amikor a játékos utoljára volt online a szerveren. Annak sima dátumot kell tartalmaznia, nem kell semmi gettime(), meg semmi hasonló.
Majd evvel a kóddal tudod lekérni:
 
SELECT * FROM `accounts` WHERE DATE_SUB(NOW(),INTERVAL 31 DAY) > LastOn AND Name = \'Jozsi\'

 
Ha nem 0 sorral tér vissza a SQL, akkor értelemszerûen inaktív, ha 0-val, akkor meg aktív a játékos.
« Utoljára szerkesztve: 2013. november 09. - 12:15:36 írta kadaradam »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal