Ü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 :)
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.