Szerző Téma: Játszott óra kiszámolása  (Megtekintve 835 alkalommal)

Játszott óra kiszámolása
« Dátum: 2014. augusztus 22. - 19:02:02 »
0 Show voters
Hali!
Játszott órákat próbálom megoldani,viszont jó lenne timer nélkül,hogy ne laggoljon.
Úgy képzeltem,hogy feljövök a szerverre,lekérem az idõt,amikor lemegy akkor is lekérem. És a kettõt kivonom egymásból.
A kérdésem,ha egy játékos feljön 23:30-kor és lemegy éjjel 1:00 -kor,akkor ezt a kettõt hogy számítsam ki ?
« Utoljára szerkesztve: 2014. augusztus 22. - 19:08:14 írta Dfoglalo »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Játszott óra kiszámolása
« Válasz #1 Dátum: 2014. augusztus 22. - 19:08:01 »
0 Show voters
Megvannak rá a pluginok, illetve a függvények, na meg a pontos algoritmusok, de szerintem hagyd a fenébe. Inkább használj timert, ugyanis hiteddel ellentétben egyáltalán nem laggoltat, sok játékos esetében sem. Én is nyugalommal használom a timereket. Nem véletlenül vannak. Állítsd be õket 1 percre, melybõl kiszámolható a pontos eltöltött idõ.
 
new EltoltottIdo = 123; // 2 óra és 3 perc
printf(\"A szerveren eltöltött idõd: %d óra %d perc\", EltoltottIdo / 60, EltoltottIdo % 60); // A szerveren eltöltött idõd: 2 óra 3 perc

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
Játszott óra kiszámolása
« Válasz #2 Dátum: 2014. augusztus 22. - 19:16:38 »
0 Show voters
Idézetet írta: Dfoglalo date=1408727281\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"50278\" data-ipsquote-contentclass=\"forums_Topic
Megvannak rá a pluginok, illetve a függvények, na meg a pontos algoritmusok, de szerintem hagyd a fenébe. Inkább használj timert, ugyanis hiteddel ellentétben egyáltalán nem laggoltat, sok játékos esetében sem. Én is nyugalommal használom a timereket. Nem véletlenül vannak. Állítsd be õket 1 percre, melybõl kiszámolható a pontos eltöltött idõ.
 
new EltoltottIdo = 123; // 2 óra és 3 perc
printf(\"A szerveren eltöltött idõd: %d óra %d perc\", EltoltottIdo / 60, EltoltottIdo % 60); // A szerveren eltöltött idõd: 2 óra 3 perc

 

Ez a világ legnagyobb hülyesége. Szerintem. ( A figyelmeztetésem miatt, most nem adok mínuszt, hanem leírom a véleményem, örüljetek. :gumicsirke: )
Az idõzítõ ilyesfajta feladatra teljes mértékben felesleges!
Van egy egyszerû módja a játszott óra kiszámításának!
Létezik egy olyan, hogy Unix Idõ (rákattintva megtudhatod pontosan, hogy mi is az), mégpedig samp-ban is van alap függvény hozzá, amivel le lehet kérni..
Ami nem más mint a gettime függvény.
Gyakorlati példa 1 játékidõ kiszámolásához...
 
public OnPlayerConnect(playerid) {
    SetPVarInt(playerid, \"Connect_UNIXTIME\", gettime()); //elmentsük csatlakozáskor, a jelenlegi UNIX idõt..
    return 1;
}
public OnPlayerDisconnect(playerid, reason) {
    new EltoltottIdo = gettime() - GetPVarInt(playerid, \"Connect_UNIXTIME\");
    //és akkor Dfoglalo példája most jön a dologba..
    printf(\"A szerveren eltöltött idõd: %d óra %d perc\", EltoltottIdo / 60, EltoltottIdo % 60); // A szerveren eltöltött idõd: 2 óra 3 perc
    return 1;
}

 
És akkor jön a kérdés, hogy hogyan mentsem.. Egyszerû.. 2 megoldás létezik.. A sz*rakodósat le se írom, csak a kézenfekvõt..
Minden kilépéskor elmented ezt a EltoltottIdo változó értékét, mint eltöltött idõ.. Betöltéskor pedig úgy mented a változót, hogy:
 
SetPVarInt(playerid, \"Connect_UNIXTIME\", gettime() - BETÖLTÖTTIDÕVÁLTOZÓJA); //elmentsük csatlakozáskor, a jelenlegi UNIX idõt.. + kivonjuk ebbõl az összegbõl a betöltött idõt

 
AFK Time-ot is ki lehet vonogatni.. Ha azt is ilyen alapon mentegeted, akkor logikával megtudod oldani..
[mod]Javítottam a

taget

tagre![/mod]

Dupla hozzászólás automatikusan összefûzve. ( [time]2014. augusztus 22. 19:23:37[/time] )

Nekem te ne javítsad. Nekem a sima code tag a szimpatikus.. Nem értem miért kell módosítgatni..
[mod]Azért, mert benne van a szabályzatban. :)[/mod]
« Utoljára szerkesztve: 2014. augusztus 22. - 19:33:46 írta Dfoglalo »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Játszott óra kiszámolása
« Válasz #3 Dátum: 2014. augusztus 22. - 19:32:59 »
0 Show voters
Az igaz, hogy ki lehet vonogatni az idõt is; ezért is írtam, hogy
 
Megvannak rá a pluginok, illetve a függvények, na meg a pontos algoritmusok[/quote]
Pontosan ilyeneket használ te is. De ha ez neked hülyeség, akkor hülyeség az is, amit te írtál. Fõleg mivel felhasználtad benne az én kódomat is. Most jöhetsz azzal, hogy de nem, te nem arra értetted, de mivel az egészet beidézted, ezért az egészre értetted. Mindegy, felejtsük el, viszont a mellett nem tudok elmenni, hogy hibás kódot írsz:
 
Idézetet írta: Pedró date=1408727798\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"50278\" data-ipsquote-contentclass=\"forums_Topic
Gyakorlati példa 1 játékidõ kiszámolásához...
 
public OnPlayerConnect(playerid) {
    SetPVarInt(playerid, \"Connect_UNIXTIME\", gettime()); //elmentsük csatlakozáskor, a jelenlegi UNIX idõt..
    return 1;
}
public OnPlayerDisconnect(playerid, reason) {
    new EltoltottIdo = gettime() - GetPVarInt(playerid, \"Connect_UNIXTIME\");
    //és akkor Dfoglalo példája most jön a dologba..
    printf(\"A szerveren eltöltött idõd: %d óra %d perc\", EltoltottIdo / 60, EltoltottIdo % 60); // A szerveren eltöltött idõd: 2 óra 3 perc
    return 1;
}

 

Erre most én is mondhatnám:
 

Ez a világ legnagyobb hülyesége. Szerintem.
 
[/quote]
Miért? Azért, mert az unix idõ másodperceket számol, nem pedig perceket. Innentõl pedig egyértelmû, hogy teljesen más eredményeket fogsz kapni, ha ezt használod. Csak a poén kedvéért leteszteltem és pár másodperc fent lét után 12 percet írt.

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
Játszott óra kiszámolása
« Válasz #4 Dátum: 2014. augusztus 22. - 19:36:29 »
0 Show voters
HMM. Nem lenne neki szabad 12 percet írni. :)
Ja igen.. Bocs..  A szöveg.. Óra = Perc .. Perc = Másodperc..
Javítva:
 
public OnPlayerConnect(playerid) {
    SetPVarInt(playerid, \"Connect_UNIXTIME\", gettime()); //elmentsük csatlakozáskor, a jelenlegi UNIX idõt..
    return 1;
}
public OnPlayerDisconnect(playerid, reason) {
    new EltoltottIdo = gettime() - GetPVarInt(playerid, \"Connect_UNIXTIME\");
    //és akkor Dfoglalo példája most jön a dologba..
    printf(\"A szerveren eltöltött idõd: %d perc %d másodperc\", EltoltottIdo / 60, EltoltottIdo % 60); // A szerveren eltöltött idõd: 2 perc 3 másodperc
    return 1;
}

 
[mod]Javítottam a

taget

tagre![/mod]
« Utoljára szerkesztve: 2014. augusztus 22. - 19:42:51 írta Dfoglalo »

Játszott óra kiszámolása
« Válasz #5 Dátum: 2014. augusztus 22. - 20:22:21 »
0 Show voters
Köszi mindenkinek a segítséget! :)
Dfoglalo amit írt,az alapján megoldottam Timerekkel,mûködik is jól. Még pedig,én a /stat -ba csak a játszott órát fogom ki iratni,így percekbe mentem el,majd azt elosztom 60-al így megkapom az 1 játszott órát,ha 60 percet játszik,nekem így tökéletes,köszönöm. A Szervert meg csak fejlesztgetem és ha olyan állapotba lesz akkor elindítom,nem vagyok idõhöz kötve,szóval ha egyszer kedvem támad akkor átírom,valahogy máshogy. Addig is köszi a segítséget! :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal