Jump to content
  • 0

pomoc "offline timer"


Twixo

Dotaz

Popis problému:

Ahoj,

 

chcel by som poradiť ako z danej hodnoty zistiť koľko dní bude obsahovať a ak ešte nejaká časť zostane, tak koľko hod. to je. Trošku horšie vysvetlené, ale teraz to asi lepšie vysvetlím.

 

Ide o to, že mám nejakú premennu, napr. new bantime a bude to napr. 360hodín, tak tu je otázka, koľko dní prejde za 360h, to ako neni ťažké 360/24, lenže, nie u každého času sa nedá deliť 24, napr. 50, takže potrebujem zistiť, koľko maximalne dní prejde (u 50h to su 2deni) + ak ostane nejaký čas koľko to je hodín, takže (50hodinový ban = 2dni a 2hod

 

Mna napadlo toto, ale moc to asi nebude fungovať:

 

(v kode)

 

Bol by som rád keby mi pomôžete s tímto problémom.

 

Chyby/varování kompilátoru a při běhu:

--

 

Kód:

 

new dni = timeban/24;
new hodiny = timeban - 24*dni;
new casbanu = dni + hodiny;
//tento kód ma iba napadol, moc som s tímto nerobil, tak sa radšej chcem opýtať a priučiť

 

 

 

Dodatečné poznámky:

--

Link to comment
Share on other sites

10 odpovědí na tuto otázku

Recommended Posts

  • 0

Aha, super. Ďakujem.


Ešte ak sa môžem spýtať, tak každý mesiac ma iný počet dní a + môže byť prestupný rok, nejaká rada ako nastaviť to, že ak nwm ak má hráč ban napr. na 2 mesiace alebo napr. VIP, tak každý z tých mesiacov nemá 30dní, takže x/30 sa nedá, nejaká rada ako to vyriešiť?

Link to comment
Share on other sites

  • 0
  • Globální moderátor

varianta jedna: dávej VIP na 30 nebo 31 dní, ne na měsíce

 

varianta dva: pokud chceš počítat na měsíce, tak to musí začít prvního a končit posledním dnem měsíce, tedy každý měsíc VIP by měl být jinak drahý. Takže si zjistíš jaký měsíc následuje a tolik dní nastavíš. Pokud je přestupný rok tak to můžeš spočítat. (Samozřejmě se bavíme o gregoriánském kalendáři) Jenže tohle mi přijde jako hloupost, protože člověk chce VIP hned a ne čekat na začátek měsíce.

 

Podmínky přestupného roku:

 

Rok je dělitelný čtyřmi kromě celých století, který nejsou dělitelný 400. (1600 je přestupný, 1700 není)

Link to comment
Share on other sites

  • 0

Hip, ospravelnujem sa, ale asi som sa zle vyjadril. Ide o mesiace, kt. nie sú vždy roznako dlhé. Napr. február má 28 dní. Napr. Hrač dostane 26.2. premium na 10 dní. Keby mám systém, že každých 30 dní sa mení mesiac, tak by som mu premium predĺžilo, takže ak by si mi mohol poradiť, pretože ako si hovoril : "Jenže tohle mi přijde jako hloupost, protože člověk chce VIP hned a ne čekat na začátek měsíce." A viacej to je moja chyba, že som sa zle vyjadril. Len čo neviem je, že ak dostane hráč 2mesiace prémia, takže 60d, tak ako zistovať kedy skončí to premium. Napr. dostane to 1.1, takže od 1.1. - 2.3. (feb. v tomto príklade má 28 dní).

Link to comment
Share on other sites

  • 0
  • Globální moderátor

Předdefinuješ si měsíce (new daysinMonth[12] = {31,28,31,...}; // vyplň si to sám), kolik dní v nich jsou. Zjistíš dnešní datum (dále jako d, m, y). Podmínka na zjištění přestupného roku jsem někde psal tak si to jen dovolím zkopírovat:

 

if (% 4 == 0 && (% 100 != 0 ||% 400 == 0 ))

 

Teď je potřeba zajistit zacyklení a zjišťovat jestli nastavený čas (time) je vyšší než zbývající dny v měsíci (time > daysinMonth[m-1]-d).    // m-1 kvůli indexaci od 0

 

Pokud ano, odečteš daysinMonth[m]-d od time a zvýšíš m

Pokud ne, nastavíš den d jako time a ukončíš cyklus

 

A takhle pokračuješ v cyklu dokud nějaký ten zbývající time existuje (resp. pokud je menší než zbývající počet dní v měsíci). 

 

BACHA na případ, kdy je prosinec a převyšuje počet dní, tzn. zvýšit rok (y++), m nastavit na leden.

 

Pak zabalit d, m, y a vrátit jako nové datum – tedy datum ukončení banu/VIP

 

 

Zkus nad tím popřemýšlet, napsat vlastní kód, pokud se někde zasekneš, tak ti pomůžu, ale celý kód ti nenapíšu

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...