![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 2 Dołączył: 10.12.2011 Skąd: Stumilowy Las Ostrzeżenie: (0%) ![]() ![]() |
Witam. Pilnie potrzebuję licznik napisany w JS lub AJAX odliczający mi jakiś czas np 8 minut i 15 sekund. Po dojściu do zera zapytanie PHP dodające cyfry do bazy danych.
Mówiąc jaśniej, potrzebuję skrypt na grę, budowanie budynku, po wybudowaniu dodanie punktów. Bardzo dziękuję za każdy ułamek* kodu Pozdrawiam *proszę nie brać tego dosłownie ;P |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 3 Dołączył: 15.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
Tutaj masz drobną przeróbkę kodu z W3Schools. --> Oryginał |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Głupota, głupota - masz wielki błąd zamysłowy, co powiesz na usera który wybuduje budynek i wyłączy przeglądarkę? Wchodząc ponownie ma znów zacząć go budować?
Takie rozwiązanie jest błędne, tworzysz tabelę w bazie "budowane" i gdy ktoś zacznie budować budynek zapisujesz do niej rekord z czasem w jakim budynek zostanie ukończony, cronem sprawdzasz co minutę czy czas aktualny jest równy z tym z bazy i jeśli tak dodajesz punkty. Jeśli chcesz licznik w js - pobierasz z tabeli "budowane" czas zakończenia i odliczasz od aktualnego. Najlepiej zapisywać czas typu time(), do obliczeń separatory - i +, zamiana na datę - date(), drugi argument. Jeśli chcesz bardziej profesjonalnie, tabela budujemy może mieć rekord "zbudowane", cron odświeża się co 1 min, a budynek może wybudować się w jej połowie więc user może mieć na liczniku 0, a cron odpali się za 30sec, w takim przypadku można ręcznie odświeżyć (po kliku od usera) jeśli czas ==0 dodajesz punkty i w tabele przy wpisie dodajesz zbudowane=1, do tego do crona potrzebujesz jeszcze jednego warunku by budynek nie skoczył o 2lvl do góry sprawdzający właśnie zbudowane=1. Cron może usuwać wpisy, ręczne odświeżanie też może usuwać zamiast dodawać =1. Opis działania masz, posługiwanie się if, time(), date() i proste polecenia mysql w sieci. ;-) -------------------- Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 3 Dołączył: 15.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
Głupota, głupota - masz wielki błąd zamysłowy, co powiesz na usera który wybuduje budynek i wyłączy przeglądarkę? Wchodząc ponownie ma znów zacząć go budować? Takie rozwiązanie jest błędne, tworzysz tabelę w bazie "budowane" i gdy ktoś zacznie budować budynek zapisujesz do niej rekord z czasem w jakim budynek zostanie ukończony, cronem sprawdzasz co minutę czy czas aktualny jest równy z tym z bazy i jeśli tak dodajesz punkty. Jeśli chcesz licznik w js - pobierasz z tabeli "budowane" czas zakończenia i odliczasz od aktualnego. Najlepiej zapisywać czas typu time(), do obliczeń separatory - i +, zamiana na datę - date(), drugi argument. Jeśli chcesz bardziej profesjonalnie, tabela budujemy może mieć rekord "zbudowane", cron odświeża się co 1 min, a budynek może wybudować się w jej połowie więc user może mieć na liczniku 0, a cron odpali się za 30sec, w takim przypadku można ręcznie odświeżyć (po kliku od usera) jeśli czas ==0 dodajesz punkty i w tabele przy wpisie dodajesz zbudowane=1, do tego do crona potrzebujesz jeszcze jednego warunku by budynek nie skoczył o 2lvl do góry sprawdzający właśnie zbudowane=1. Cron może usuwać wpisy, ręczne odświeżanie też może usuwać zamiast dodawać =1. Opis działania masz, posługiwanie się if, time(), date() i proste polecenia mysql w sieci. ;-) Po co tutaj crona wpychać. Można przecież zrobić to jeszcze łatwiej. Otóż tak jak napisałeś robi sobie tą tabelę budowane i przy ładowaniu strony te dane są pobierane, a JS odlicza czas do 0, gdy dojdzie do 0 po prostu odświeża przeglądarkę. Nawet jeżeli użytkownikowi komp zmuli to i tak nie wpłynie to na wynik budowy, bo czas zakończenia jest zapisany, a przy odświeżaniu strony można sprawdzać czy zakończona została budowa użytkownika o tym ID. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Po co tutaj crona wpychać. Można przecież zrobić to jeszcze łatwiej. Otóż tak jak napisałeś robi sobie tą tabelę budowane i przy ładowaniu strony te dane są pobierane, a JS odlicza czas do 0, gdy dojdzie do 0 po prostu odświeża przeglądarkę. Nawet jeżeli użytkownikowi komp zmuli to i tak nie wpłynie to na wynik budowy, bo czas zakończenia jest zapisany, a przy odświeżaniu strony można sprawdzać czy zakończona została budowa użytkownika o tym ID. Ale budenk w grach on-line buduje się po to, aby mieć profit np. +10/h surowca. A tak to dostanę +10 dopiero jak się zaloguje. -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie tak jak pisze @zdemotywowany cron zapewnia dokładność 0-60sec co jest niskim błędem, a przy odświeżeniu ręcznym (rozwiązanie zaawansowane) ograniczamy go do minimum - częstsze odświeżenia są bez sensu, a i cron ich nie obsługuje na normalnych hostingach. Więc Twoja rozwiązanie jest poprawne lecz kompletnie nie efektywne w tym przypadku.
-------------------- Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 3 Dołączył: 15.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
Racja, zapomniałem o tym czynniku. Chociaż mimo wszystko elementy jak surowce mogłyby być dodawane na podstawie ostatnich operacji podczas nowej operacji. Oczywiście cron jest tutaj lepszy, ale teoretycznie można by zapisywać ilość surowców po ostatniej akcji, zapisywać godzinę, a w momencie ataku czy ponownego odświeżenia znów wykonać operację dodającą surowce, a następnie wykonać to co się stało. Takie coś zapewniałoby mniejsze zużycie serwera, ale jednocześnie skrypt wykonywałby się trochę dłużej. No i oczywiście użycie tego byłoby zauważalne dopiero przy grze z wieloma graczami, a nie w małej gierce. Po prostu wszystkie akcje byłyby wykonywane w momencie nowej operacji na 'przedmiocie'.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Za dużo wyzwalaczy, a każda dodawana funkcjonalność musiała by mieć ten moduł i na darmo za każdym razem pytać, lepiej wykonać zapytanie "komu dodać punkty" raz na minutę niż co kilka sec * ilość graczy.
-------------------- Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 2 Dołączył: 2.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
odświerzam temat, ponieważ również jest mi potrzebne coś takiego, tylko ze u mnie byłaby prosta zasada działania. Dynamiczne odiczanie z np 2h 40min 14sek do 0. i gdy dojdzie do tego 0 i ktos odświeży strone, aby poszło zapytanie do mysql dodający do budynku + 1, nie trzeba u mnie sprawdzania co minute itp ( u mnie za to żadne surowce nic nie przybywa ![]() Czy posiada ktoś cos takiego ? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.07.2025 - 22:55 |