Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyświetlanie czasu, ale inaczej, gra, w ktorej dziennie mija kilka dni
Daimos
post 26.04.2005, 19:39:45
Post #1





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Jak w temacie... chce zrobic w pewnej grze czas, wyswietlanie godziny
z tym ze w grze jeden dzien bedzie trwal przykladowo 5 godzin, wiec gdy minie 15 godzin gry, chce zeby wyswietlilo sie:
dzien 3 godz: 00:00

czas jest liczony non stop, od momentu kiedy ja to ustale, a nie od momentu rozpoczecia gry przez uzytkownika

Ktos pomoze snitch.gif ?

bo niemam pojecia jak sie wogule za to zabrac, tzn mysle jakos zeby wykorzystac tu
time() ale jak ? biggrin.gif

Ten post edytował buffalo soldier 26.04.2005, 19:41:58


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
dr_bonzo
post 26.04.2005, 20:00:15
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Jesli zmiescisz sie w zakresie 1970--203X to uzyj integera ktorego bedziesz inkrementowal np. 4 razy na sekunde (dzien w grze trwa 1/4 doby rzeczywistej) i liczysz roznice w dniach / godzinach od jakiejs poczatkowej daty.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Daimos
post 26.04.2005, 20:03:35
Post #3





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


zmieszcze sie w czasie winksmiley.jpg
ale szczerze mowiac nic nie rozumiem z tego co napisales sad.gif
zrobilem cos takiego:
  1. <?php
  2. $start = 1114541967;
  3. $teraz = time();
  4. $ingame = $teraz - $start;
  5.  
  6. ?>

i pod zmienna $ingame mam juz czas gry w sekundach, teraz jak to przeliczyc odpowiednio zeby mi wyswietlalo godzine i dzien gry


przykladowo niech minuta w grze wynosi 20 sek, co daje 3 doby dziennie.. moze i tak byc snitch.gif

no wiec minuta w grze to bedzie :
  1. <?php
  2. $minuta = floor($start / 20);
  3.  
  4. ?>

no ale co mi to da, jezeli minie 70 minut to mi wyswietli 70 minut, a nie 01:10 sad.gif

Ten post edytował buffalo soldier 26.04.2005, 20:31:02


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
rogrog
post 26.04.2005, 20:48:31
Post #4





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

Ostrzeżenie: (0%)
-----


liczysz różnice w sekundach między datą rozpoczęcia i datą obecną, mnożysz razy np. 4, przeliczasz na dni, godziny, minuty i sekundy i juz.


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 26.04.2005, 20:52:54
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Moze inaczej:

(1 doba rzeczywista == 5 dob w grze)

gra rozpoczyna sie o czasie X
user wlacza strone i pobierasz dla niego aktualny czas: Z = time()
liczysz roznice R = Z - X (w sekundach)
to mnozysz razy 5 (5 doby gry na jedna rzeczywista) i otrzymujesz ilosc sekund ktora minela w grze

teraz wyciagasz ilosc minut godzin dni itd...
  1. <?php
  2.  
  3. // nie uwzglednia lat przestepnych, roznych dlugosci miesiecy itd
  4. lata = (int)/ (3600 * 24 * 365 ); 
  5. %= ( 3600 * 24 * 365 )
  6. miesiace = (int)/ (3600 * 24 * 30); // lub 31
  7. %= (3600 * 24 * 30);
  8.  
  9. ?>


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
matid
post 26.04.2005, 20:57:32
Post #6





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. $iStartTimestamp = 1114545150;
  4. $iNowTimestamp = time();
  5.  
  6. $iRatio = 4;
  7.  
  8. $iGameTimestamp = ($iNowTimestamp - $iStartTimestamp) * $iRatio;
  9.  
  10. echo 'Dzien ' . date( 'j', $iGameTimestamp ) . ', ' . date( 'H:i', $iGameTimestamp - 3600 );
  11.  
  12. ?>
Go to the top of the page
+Quote Post
Daimos
post 26.04.2005, 21:06:53
Post #7





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


matid
to co napisales jest prawie idealne tylko ze jak wpisze na start czas ktory jest teraz, na poczatek gry:
Kod
Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970


o co chodzi bo dokladnie niewiem ? godziny pozniejsze juz wyswietla swietnie
np, Dzien 1, 01:17




zamienilem:
  1. <?php
  2. date( 'H:i', $iGameTimestamp - 3600);
  3. ?>

na
  1. <?php
  2. date( 'H:i', $iGameTimestamp);
  3. ?>

i dziala, tylko ze zaczyna od godziny 01:00

po co jest odejmowane 3600 ? :/

Ten post edytował buffalo soldier 26.04.2005, 21:29:38


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
Vaticinator
post 26.04.2005, 23:07:37
Post #8





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.02.2003
Skąd: Magor

Ostrzeżenie: (0%)
-----


Strzelam, że to -3600 sprawia, że czas liczy się od godziny 00:00 (3600 sekund = 1 godzina). Gdy to usunąłeś liczenie zaczyna Ci sie od godziny 1:00

Przepraszam jeśli wprowadzam w błąd.


--------------------
"What are we going to do tonight, Brain?"
"Same thing we do every night, Pinky... Try to take over the world!"
Go to the top of the page
+Quote Post
Daimos
post 27.04.2005, 12:59:49
Post #9





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


no tak sie domyslalem, ale wtedy wywala blad, wiec musi byc bez tego

juz w kazdym razie chyba sobie poradzilem ze wszystkim... dzieki za pomoc smile.gif

Ten post edytował buffalo soldier 27.04.2005, 13:20:53


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:31