GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: SSK - 2013. December 04. - 20:45:30

Cím: Timer idõ lekérés kérdés.
Írta: SSK - 2013. December 04. - 20:45:30
Sziasztok!
Egy olyan kérdést tennék fel nektek,hogy hogyan csináljam azt meg hogy elindítok egy Timert és amikor lelép a player lekérje,hogy mennyi idõ telt el a timer idejébõl?
Cím: Timer idõ lekérés kérdés.
Írta: Dfoglalo - 2013. December 04. - 23:09:40
Egy másik timerrel, ami egy változó értékéhez másodpercenként mindig hozzáad egyet (az általad említett timer indulásától kezdve), majd disconnect alatt leállítja a timert, ezzel megkapva, hogy hány másodperc telt el? :hmmm:
Cím: Timer idõ lekérés kérdés.
Írta: Kovacs_Richard - 2013. December 05. - 07:50:26
ezzel a kérdésen én is foglalkoztam már és több megoldást találtam rá:
1. létrehozol 1 tömböt (1 cella = 1 játékos) és egy timer-el növeled a cellák értékét és bármikor letudod kérdezni mióta Online a játékos (mennyi idõt töltött a szerveren)
Ugye te ezt szeretnéd megvalósítani...nem ajánlom, mivel ez terhel a legjobban és nem pontos értéket ad ! ( csak akkor ha a SetTimer-ed pontosan van belõve! mivel nem 1mp-enként fut le az 1000 milisec-es timer )
2. én ezzel kísérleteztem, de sajnos nekem nem úgy mûködött ahogy vártam
http://wiki.sa-mp.com/wiki/GetTickCount
Az elõzõ megoldáshoz képest itt is egy tömböt hozol létre, csak itt mást tárolsz...
Csatlakozásnál eltárolod az aktuális visszatérési értéket (hogy mióta fut a szerver) és kilépésnél ismét lekéred és kivonod a csatlakozásnál mentett értéket:
 
new ConnectData[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
ConnectData[playerid] = GetTickCount();
return 1;
}
public OnPlayerDisconnect(playerid,reason)
{
   new OnlineTime = GetTickCount() - ConnectData[playerid];
return 1;
}

 
és így millisec-ben megkapod, hogy mennyit volt online a játékos
3. megoldás az szinte ugyanaz mint a második csak dátumot+idõt tárolsz el és nem a GetTickCount visszatérési értékét