Reklama
Strona 1 z 2 12 OstatniaOstatnia
Pokazuje wyniki od 1 do 15 z 16

Temat: [7.92][c++] Odliczanie premium.

  1. #1
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny [7.92][c++] Odliczanie premium.

    Witam mój problem polega na tym, że silnik źle odlicza premium tzn. dni odlicza prawidłowo, ale gdy wartość premDays będzie posiadała 0 to podczas logowania nie wyświetla się, że do końca zostało jeszcze kilka godzin.

    Czyli
    posiadamy premium na 5 dni > 4 > 3 > 2 > 1 > (godziny - a tak naprawdę okno wyświetla, że nie ma już premium (ale tak naprawdę jest))

    Wniosek: w kodzie brakuje informacji, aby również pokazywał godzinę.

    Nie znam się na c++ w 100 % lecz nie mam całkowitego pojęcia jak się za to zabrać - dlatego proszę was o pomoc.

    Z góry dziękuje.
    http://ots.tibiaserver.pl/tibiaserver.gif

  2. #2
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    Cytuj GM Esio napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Wniosek: w kodzie brakuje informacji, aby również pokazywał godzinę.
    Client tibii nie jest stworzony by wyświetlać godziny, przynajmniej jak mi się wydaję to nigdy nie był (nie daje 100% pewności).

    Jeśli zaś chcesz utrzymywać cały czas wartość 1 dzień (gdy jest poniżej dnia) aż do odliczenia czasu premium do końca to przed wysłaniem klientowi dni sprawdź czy (premiumticks < 60*60*24 && premiumticks > 0) jeśli tak to wyślij 1 dzień do końca.

  3. Reklama
  4. #3
    Avatar Killavus
    Data rejestracji
    2005
    Położenie
    Wrocław
    Wiek
    32
    Posty
    915
    Siła reputacji
    19

    Domyślny

    Cytuj bolek napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Client tibii nie jest stworzony by wyświetlać godziny, przynajmniej jak mi się wydaję to nigdy nie był (nie daje 100% pewności).

    Jeśli zaś chcesz utrzymywać cały czas wartość 1 dzień (gdy jest poniżej dnia) aż do odliczenia czasu premium do końca to przed wysłaniem klientowi dni sprawdź czy (premiumticks < 60*60*24 && premiumticks > 0) jeśli tak to wyślij 1 dzień do końca.
    Prawda, klient Tibii (przynajmniej najnowszy) nie wyświetla godzin premium. Jedynie "1 day left".

    Pozdrawiam
    Killavus

  5. #4
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny

    Wnioskuję, że to odpowiada za wyświetlanie ile dni zostało do końca.
    Problem w tym, że nie wiem jak to zmienić..
    Kod:
    bool IOAccountXML::saveAccount(Account account, unsigned long premiumTicks)
    {
    	int days;
                         	time_t timeNow = std::time(NULL);    
    	if(timeNow < premiumTicks){
    		days = premiumTicks - timeNow; 
    		days = (days / 86400);
    	}
    	else
    		days = 0;
    http://ots.tibiaserver.pl/tibiaserver.gif

  6. #5
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    60s*60m*24h daje nam 86400 czyli tyle sekund ma dzień, resztę sam się domyśl, przecież tu trzeba pomyśleć troszeczkę, ruszyć łbem a skoro nie znasz c++ "w 100%" to przynajmniej if'y znasz?

  7. #6
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny

    Kod:
    bool IOAccountXML::saveAccount(Account account, unsigned long premiumTicks)
    {
    	int days;
                         	time_t timeNow = std::time(NULL);    
    	if(timeNow < premiumTicks > 0){
    		days = premiumTicks - timeNow; 
    		days = (days / 86400);
    	}
    	else
    		days = 0;
    Takie coś, jak bym wiedział to bym nie czekał.
    http://ots.tibiaserver.pl/tibiaserver.gif

  8. #7
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    Cytuj GM Esio napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Takie coś, jak bym wiedział to bym nie czekał.
    No cóż, doszliśmy z Killavusem do wniosku, że jak sam nie ruszysz trochę głowy to nie pomożemy ci, ja napisałem wszystko w podpowiedziach, już lepiej nie można bez pokazania dokładnej drogi.

    Chociaż dodam jeszcze jedną "podpowiedź", cóż, drogę jak nic:

    po:
    days = premiumTicks - timeNow;
    if (hmhm > XXX && hmhm > 0)
    hmhm = jakas_stala;
    else
    hmhm = (days / 86400);

    btw. zrobisz sam, masz lepszą satysfakcję.
    Ostatnio zmieniony przez bolek : 01-06-2010, 22:52

  9. #8
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny

    Kod:
    bool IOAccountXML::saveAccount(Account account, unsigned long premiumTicks)
    {
    	int days;
                         	time_t timeNow = std::time(NULL);    
    	if(timeNow < premiumTicks){
    		days = premiumTicks - timeNow; 
    		days = (days / 86400);
    	}
    	else
    		days > 0;
    Tak?

    no naprawdę nie wiem Twoja wskazówka za dużo mi nie mówi :(
    http://ots.tibiaserver.pl/tibiaserver.gif

  10. #9
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    Cytuj GM Esio napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Kod:
    bool IOAccountXML::saveAccount(Account account, unsigned long premiumTicks)
    {
    	int days;
                         	time_t timeNow = std::time(NULL);    
    	if(timeNow < premiumTicks){
    		days = premiumTicks - timeNow; 
    		days = (days / 86400);
    	}
    	else
    		days > 0;
    Tak?

    no naprawdę nie wiem Twoja wskazówka za dużo mi nie mówi :(
    A co tu zmieniłeś od 2 ostatnich postów?

    Wyżej dodałem (edycja posta) już prawie cały kod, wystarczy nie wiem, nawet nie pomyśleć a uwidzieć.

  11. #10
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny

    Kod:
    bool IOAccountXML::saveAccount(Account account, unsigned long premiumTicks)
    {
    	int days;
                         	time_t timeNow = std::time(NULL);    
    	if(timeNow < premiumTicks){
    		days = premiumTicks - timeNow;
         if (premiumTicks < 60*60*24 && premiumTicks > 0)
         days = 1;
         else    
    		days = (days / 86400);
    	}
    	else
    		days = 0;
    tak?

    czy tak

    Kod:
    bool IOAccountXML::saveAccount(Account account, unsigned long premiumTicks)
    {
    	int days;
                         	time_t timeNow = std::time(NULL);    
    	if(timeNow < premiumTicks){
    		days = premiumTicks - timeNow;
         if (premiumTicks < 60*60*24 && premiumTicks > 0){
         days = 1;
         }
         else    
    		days = (days / 86400);
    	}
    	else
    		days = 0;
    Ostatnio zmieniony przez GM Esio : 01-06-2010, 23:00
    http://ots.tibiaserver.pl/tibiaserver.gif

  12. #11
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    Spróbuj teraz w grze, tylko oczywiście nawiasa brak na końcu do zamknięcia funkcji
    Ostatnio zmieniony przez bolek : 01-06-2010, 23:03

  13. #12
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny

    z edytowałem sprawdź czy dobrze dałem nawiasy.
    http://ots.tibiaserver.pl/tibiaserver.gif

  14. #13
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    W każdym na końcu brak zamykającego.

  15. #14
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny

    moja wersja nie działa...


    Kod:
    bool IOAccountXML::saveAccount(Account account, unsigned long premiumTicks)
    {
    	int days;
                         	time_t timeNow = std::time(NULL);    
    	if(timeNow < premiumTicks){
    		days = premiumTicks - timeNow;
         if (premiumTicks < 60*60*24 && premiumTicks > 0){
         days = 1;
         }
         else    
    		days = (days / 86400);
    	}
    	else
    		days = 0;
    
    
    
    	std::stringstream dir;
    	dir << "data/accounts/" << account.accnumber << ".xml";
    	std::ofstream accFile(dir.str().c_str());
    	
    	
    	
    dir.str("");				
    	std::list<std::string>::iterator it;
    	std::list<unsigned short>::iterator id;
                    unsigned short world = 0;
                    unsigned short x;
    	for(it = account.charList.begin(); it != account.charList.end(); it++){
    	for(id = account.WorldID.begin(),x = 0; id != account.WorldID.end(); id++, ++x){
    	    if(x==world)
    		dir << "<character name=\"" << (*it) << "\" worldid=\"" << (*id) << "\" />";
    		world++;
    	}
    }
    
    accFile << "<?xml version=\"1.0\"?><account pass=\"" << account.password << "\" premDays=\"" << days << "\" premEnd=\"" << premiumTicks << "\"><characters>" << 
     dir.str().c_str() << "</characters></account>" << std::endl;
    
    	
    	return true;
    }
    http://ots.tibiaserver.pl/tibiaserver.gif

  16. #15
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    A powinno zapisywać do pliku 1 dzień, więc przy logowaniu (wczytaniu info z pliku) powinno być 1 dzień jak jest poniżej dnia.

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. IKE/IZGE - odliczanie od podatku (PIT)
    Przez Aver w dziale O wszystkim i o niczym
    Odpowiedzi: 7
    Ostatni post: 18-09-2023, 15:56
  2. Odliczanie skrypt
    Przez Genov w dziale Skrypty i technika
    Odpowiedzi: 11
    Ostatni post: 04-10-2020, 06:49
  3. Odpowiedzi: 1
    Ostatni post: 07-08-2014, 23:22
  4. Odpowiedzi: 282
    Ostatni post: 26-07-2014, 14:14
  5. [Każda wersja] Odliczanie do restartu komputera - własny ots
    Przez CzcigodnyAlfons w dziale Strefa developerska
    Odpowiedzi: 2
    Ostatni post: 27-11-2011, 20:32

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •