Pavel Tuček 1 Odesláno: 25. Leden, 2016 Share Odesláno: 25. Leden, 2016 (upraveno) Zdravím, mám udelanej system, že když se hráč odpojí, tak se uloží jeho gettime() . Já bych ted potřeboval, jak vypočítat z toho času, kdy byl naposled online. Napr. "Naposled online před 2 dny." nebo "Naposled online před 48 hod." Edited 25. Leden, 2016 by Pavel Tuček Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 25. Leden, 2016 Globální moderátor Share Odesláno: 25. Leden, 2016 Načíst aktuální gettime, tzn. dostaneš nějakej ten unixovej timestamp a odečteš hodnotu kdy se odpojil. Z toho akorát vypočítáš kolik dní/hodin/minut/sekund uběhlo a vyformatuješ do "Naposled online před %s", kde %s bude řetězec skládající se z čísla a formu času. Link to comment Share on other sites More sharing options...
0 Pavel Tuček 1 Odesláno: 25. Leden, 2016 Author Share Odesláno: 25. Leden, 2016 Jak to říct.. ja mám IQ 2 takže mi nejde do hlavy jak vypočítat z toho ty dny/hodiny Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 25. Leden, 2016 Globální moderátor Share Odesláno: 25. Leden, 2016 (upraveno) Tak pro jednoduchost, máš 48600 sekund. Víš že hodina má 60*60s = 3600s. Na hodiny převedeš tak, že vydělíš 48600/3600 = 13h Na minuty by to bylo 48600/60 = 810min Těch možností je spoustu, je na tobě jak si vybereš, která varianta se ti píše nejlépe. Klidně si udělej množinu units s časy a vzít ho cyklem nebo rozvětvením ifů EDIT: if ( rozdil > 3600 ) string = rozdil/3600 hodiny if ( rozdil < 3600 ) string = rozdil/60 minuty if ( rozdil < 60) string = rozdil sekundy Nebo mnozina[][] = { { 3600, "hodiny" }, { 60, "minuty" }, { 1 , "sekundy" }}; for( i = 0; i < sizeof(mnozina) ; i++ ) { if(rozdil < mnozina[1]) continue; cas = rozdil/mnozina[1]; strins(date,mnozina[2]); // tímhle si nejsem jistej a každopádně stejně je tenhle blok spíše takovej pseudo pseudo-kódu break; } a pak vypsat string = cas date. Čeština má nevýhodu v tom, že má skloňování. Tudíž jestli to chceš mít hezky, tak budeš ještě muset vyformátovat. Edited 25. Leden, 2016 by HighPrint Link to comment Share on other sites More sharing options...
0 Pavel Tuček 1 Odesláno: 25. Leden, 2016 Author Share Odesláno: 25. Leden, 2016 new cas = (gettime() - dini_Int(file, "Offline"))/3600/60*24; format(string, sizeof(string), "%.2f", cas); Ukazuje to 0.00 .... co s tím? Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 25. Leden, 2016 Globální moderátor Share Odesláno: 25. Leden, 2016 Dělíš 3600 a pak ještě 60? Nechápu... a zkus datový typ Float Link to comment Share on other sites More sharing options...
0 Pavel Tuček 1 Odesláno: 25. Leden, 2016 Author Share Odesláno: 25. Leden, 2016 (upraveno) (gettime() - dini_Int(file, "Offline"))/3600 Toto mi furt házi 0 Edited 25. Leden, 2016 by Pavel Tuček Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 25. Leden, 2016 Globální moderátor Share Odesláno: 25. Leden, 2016 (upraveno) Máš už to upravený na datový typ Float? + nech si vypsat gettime() a ten Offline a postni to sem edit:// co já si pamatuju, tak to v pawn se řeší samo... asi jsem se mýlil Edited 28. Leden, 2016 by HighPrint Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 27. Leden, 2016 Share Odesláno: 27. Leden, 2016 (upraveno) sice si tam muzes dat datovy typ float. ale dokud delis cele cislo celym vzdycky ti to hodi cele cislo new Float:cas = floatmul(floatdiv(gettime()-dini_Int(file,"Offline"),3600*60),24); predpoklaam ze setim 0.00 snazis aby si v tom 00 mel minuty ale musis myslet nato ze hodiny maji 60 minutovej system zato integer pracuje s desitkovou soustavou. Edited 27. Leden, 2016 by ATomas Link to comment Share on other sites More sharing options...
0 Mattsy 29 Odesláno: 28. Leden, 2016 Share Odesláno: 28. Leden, 2016 sice si tam muzes dat datovy typ float. ale dokud delis cele cislo celym vzdycky ti to hodi cele cislo new Float:cas = floatmul(floatdiv(gettime()-dini_Int(file,"Offline"),3600*60),24);predpoklaam ze setim 0.00 snazis aby si v tom 00 mel minuty ale musis myslet nato ze hodiny maji 60 minutovej system zato integer pracuje s desitkovou soustavou. čiže keď dám 10/3 tak mi to hodí 3 a nemusím dávať float kvôli 3,33 periodických? to je len príklad....keď by som dal 20/3 tak by to malo byť 6.66...vráti mi to 6 alebo 7? kedže 6 sa zaokrúhľuje hore Link to comment Share on other sites More sharing options...
0 Matess 36 Odesláno: 28. Leden, 2016 Share Odesláno: 28. Leden, 2016 Vrátí ti to celé číslo bez zaokrouhlení, v tvém případě tedy 6. 200 sec na minuty -> 200/60 = 3 200%60 = 20 = 3:20 Link to comment Share on other sites More sharing options...
0 vladasavel 26 Odesláno: 28. Leden, 2016 Share Odesláno: 28. Leden, 2016 proč místo složitého konvertování gettime(); si proste neuložíš při disconnectu getdate(); ano sice to máš dva řádky do souboru navíc ale máš to zjednodušení o to nepříjemné(pro mě nepříjemné ) konvertování gettime(); Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 28. Leden, 2016 Share Odesláno: 28. Leden, 2016 proč místo složitého konvertování gettime(); si proste neuložíš při disconnectu getdate(); ano sice to máš dva řádky do souboru navíc ale máš to zjednodušení o to nepříjemné(pro mě nepříjemné ) konvertování gettime(); A co je na tom prijemnejsiho ? Potom nasledne budes slozite pocitat s nekolika cisly naraz, aby jsi zjistil kdy byl vlastne online (nechce "razitko casu", ale spocitat jak 'dlouho'), zde je unix time asi nejlepsi metodou. Jediny problem ktery on ma je matematika, myslenka je spravna Link to comment Share on other sites More sharing options...
0 vladasavel 26 Odesláno: 28. Leden, 2016 Share Odesláno: 28. Leden, 2016 Ajoo sory moje chyba..blbe jsem precetl jeho prblém že nechce datum ale časově v mintách/hodinách/dnech Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 29. Leden, 2016 Globální moderátor Share Odesláno: 29. Leden, 2016 čiže keď dám 10/3 tak mi to hodí 3 a nemusím dávať float kvôli 3,33 periodických? to je len príklad....keď by som dal 20/3 tak by to malo byť 6.66...vráti mi to 6 alebo 7? kedže 6 sa zaokrúhľuje hore Vždy se zaokruhluje dolů. Link to comment Share on other sites More sharing options...
Dotaz
Pavel Tuček 1
Zdravím,
mám udelanej system, že když se hráč odpojí, tak se uloží jeho gettime() . Já bych ted potřeboval, jak vypočítat z toho času, kdy byl naposled online. Napr. "Naposled online před 2 dny." nebo "Naposled online před 48 hod."
Edited by Pavel TučekLink to comment
Share on other sites
14 odpovědí na tuto otázku
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now