Wywołanie akcji po określonym czasie |
Wywołanie akcji po określonym czasie |
6.05.2008, 18:12:14
Post
#1
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 7 Dołączył: 1.01.2005 Ostrzeżenie: (0%) |
Witam,
zastanawiam się jak działają gry tekstowe. Dokładnie chodzi mi o coś takiego. Płynie statek ze złotem na inną wyspę... będzie tam za 18 min... gdy dopłynie gracz dostaje wiadomość o rozładowaniu złota. Jak rozwiązać coś takiego? Jedyne co przychodzi mi do głowy to cron... i ustawianie go z poziomy php... Statek zaczyna płynąć o 18.05 więc akcja zakończy się o 18.23 i taki wpis dodajemy do crona... ale przy dużej ilości graczy i akcji to chyba dość bolesne dla serwera... czy ma ktoś inny pomysł? -------------------- Nie proś o to, idź i sam to zdobądź.
Zrób to, a osiągniesz sukces. |
|
|
6.05.2008, 18:30:52
Post
#2
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 3 Dołączył: 15.06.2007 Ostrzeżenie: (0%) |
W bazie dodajesz czas zakończenia,a pózniej tylko sprawdzasz z akutalnym czasem.
A żeby było płynnie to js. |
|
|
6.05.2008, 18:35:11
Post
#3
|
|
Grupa: Zarejestrowani Postów: 732 Pomógł: 80 Dołączył: 25.05.2005 Skąd: Szczecin Ostrzeżenie: (0%) |
No co Ty tam jest minimalna ilość crona, wszystko jest przeliczane po stronie serwerowej w momencie odświeżenia. Działa to tak:
1. Wysyłasz statek, pobierana jest wartość czasu potrzebna na dotarcie, zapisywana jest np w MySQL, oraz ładowana do funkcji JS która odlicza czas u Ciebie na bieżąco. 2. Przy każdym odświeżeniu jest ładowany aktualny czas do JS'owych funkcji aby sprawdzić czy jest dobry i go skorygować, sprawdzany jest również czas i jeden if.. Czy czas wypłynięcia + czas potrzebny do dopłynięcia jest >= od czasu który jest teraz jeśli tak, to jest wywoływana zdarzenie. 3. Także mimo, że się skończył czas płynięcia nie jest generowany żaden efekt, dopiero jak odświeżysz okno, lub odświeżenia wykona skrypt dopiero zobaczysz wynik 4. Tak jest przeliczana cała gra, cron jest zbędny. -------------------- DevBlog - http://www.bartekrogus.pl
|
|
|
7.05.2008, 18:07:18
Post
#4
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 17 Dołączył: 19.03.2006 Skąd: z kosmosu ;) Ostrzeżenie: (0%) |
Może źle zrozumiałem, myślę że można to też tak rozwiązać jak się generuje masowe statystyki w tle:
Kiedyś używałem takiego kodu do masowego generowania statystyk. Pamiętaj aby sprawdzać datę pliku w wywoływanym pliku statek.php, inaczej kilka osób otworzy stronę naraz i masz po serwerze (przeciąrzenie). Sprawdzaj User-Agent (ustal dowolny zamiast Tajne_dane, to może służyć jako hasło.) Myślę że pomogłem Dziękuję, Babcia@Stefa Ten post edytował Babcia@Stefa 7.05.2008, 18:08:00 -------------------- Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian |
|
|
7.05.2008, 19:00:15
Post
#5
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 7 Dołączył: 1.01.2005 Ostrzeżenie: (0%) |
Dzięki za pomoc Panowie, chyba już wiem o co chodzi
-------------------- Nie proś o to, idź i sam to zdobądź.
Zrób to, a osiągniesz sukces. |
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 14:43 |