![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 3 Dołączył: 14.04.2009 Skąd: Wziąć piwo? Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Potrzebuje odliczania w js ![]() Ale to nie wszystko... Odliczań w js jest pełno w internecie ![]() Potrzebuje takiego odliczania, które będzie pobierało sekundy z bazy danych i co sekundę, będzie zmniejszało sekundy w bazie danych i na koniec odliczania ustawi tabele w bazie na "0". Takie odliczanie jak np. w grach typu Plemiona ![]() Z góry dzięki |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 73 Pomógł: 15 Dołączył: 2.04.2009 Skąd: koszalin Ostrzeżenie: (0%) ![]() ![]() |
Robisz to przez php to odliczanie możesz zrobić przez time().
czyli. 1. pobierasz z bazy $czas 2. przez time() mija sekunda 3. pokazujesz na ekranie ze ubywa z licznika ($licznik_czasu --) 4. zapisujesz do bazy $czas-1; Problem może być taki, że przy zapisie i odczycie do i z bazy też zajmuje to jakiś czas dlatego wątpię, aby odliczanie w tych grach zapisywano do bazy co sekundę (ale mogę się mylić), lub odliczanie to uwzględnia (np. 1s - czas odczytu-czas zapisu) teoretycznie przy założeniu, że za każdym razem czas takiej akcji zapis/odczyt z db jest stały. Pozdrawiam -------------------- kantek.com.pl
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
Takie odliczanie jak np. w grach typu Plemiona ![]() w grach typu plemiona nie uaktualniasz czasu w bazie co sekundę - masz tam zapisany albo początek akcji i podczas akcji sprawdzany warunek lub zapisany czas samej akcji - to odliczanie jeśli zostawisz na kilka godzin otwarte okno ataku w przeglądarce bez odświeżania i popatrzysz na czas a następnie odświeżysz to będzie on inny - zresztą wypnij kabel od neta a odliczanie będzie trwało nadal ]:-> - to odliczanie które widzisz jest tylko informacją - wszystko najważniejsze spełnienie warunków na serwerze.... wiem o czym piszę gdyż w plemiona trochu grałęm i jeszcze trza było złośliwym moderatorm udowadniać, że da się wysłać 4 ataki poniżej 1s ręcznie bez botów - ba nawet 5 się da i to spokojnie w 0.5s ^^ ale już 6 za czorta nie wyślesz ^^ (tzn da się ale to już wtedy musiałbyś się "wstrzelić" by w danej sekundzie doszedł kolejny atak) - i najważniejszy jest czas w tysięcznych sekundy - ale mało tego - wielu ciężko jest udowodnić, że da się "wbić" w tak "ciasny" atak falowy i jeśli im się uda wysłać kilka ataków w 1s to zgłaszają żeś się obronił ^^ - tyle, że wystarczy liczyś i masz wtedy ze 100 prób wbicia się w atak ^^ ale najlepsza jest gra gdy w pojedynkę zadrzesz z najsilniejszym i najbardziej zgranym plemieniem na kontynencie ^^, gdy nie wystarczyły by własne siły i otwarta walka, gdy dyplomacją zbierasz sojuszników będąc bez plemienia, pokazując, że się bronisz, jakie straty zadajesz i dajesz możliwość odegrania się wrogów "farmom" ^^ - ziarno do ziarna i bronić nie można każdej przejętej wioski BARDZO DUŻY MINUS TEJ GRY TO SAMA DYPLOMACJA ZA BARDZO WCIĄGA I TAKIE KLIKANIE TO MASĘ CZASU POCHŁANIA - bo jeśli grać nawet z farmieniem to momencik tylko trzeba mieć kilka rozwiązań ^^ - ale nudna jest gra jak się przyłączysz do najsilniejszych - lepiej grać przeciw takim - ale czy taka gra oznacza wariactwo?? ;D -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 3 Dołączył: 14.04.2009 Skąd: Wziąć piwo? Ostrzeżenie: (0%) ![]() ![]() |
A jest jakaś możliwość, aby po wykonaniu js'a (z odliczaniem) wykonać zapytanie w mysql, żeby czyściło wszystko?(sorki ale w js jestem zielony
![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Kiedyś zabierałem się za pisanie gry przeglądowej i taki problem jest dość prosto rozwiązać.
Tak jak już wyżej napisano, zapytanie nie może co sek aktualizować bazy. Spowolniłoby to ją strasznie, jakby w ogóle udało by się jej nie paść przy większej ilości userów. Ja napisałem to w ten sposób: Każdy budowa budynku przez pojedynczego gracza to osobny rekord w bazie, poza polami nie istotnymi tutaj były dwa pola z datą, określające start budowy ( a więc w MySQL zwykłe NOW() ) oraz drugie, które zawierało datę końca budowy (był znany tylko czas budowy, a więc koniec powstawał start_budowy+czas_budowy, wszystko obliczane w zapytaniu). Po załadowaniu strony obliczany był pozostały czas budowy w sek. (koniec_budow - aktualny_czas), jeśli był < 0 wtedy wpis był kasowany, w przeciwnym wypadku, liczba sekund była przekazywana do skryptu JS, który odliczał go sobie. -------------------- Moja gra - scraby.io
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 3 Dołączył: 14.04.2009 Skąd: Wziąć piwo? Ostrzeżenie: (0%) ![]() ![]() |
Aha czyli robię w tabeli użytkownicy tabelę czynność i czas czynności(czy koniec czynności?) i sprawdzam ile czasu pozostało, jeśli jest < 0 czyszcze tą tabelę a w innym wypadku, obliczam sekundy i wrzucam do odpowiedniego skryptu w js? dobrze zrozumiałem ?
![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
W tabelce powinieneś mieć pole z datą początku zadania oraz pole z datą końca zadania.
Resztę dobrze zrozumiałeś ![]() -------------------- Moja gra - scraby.io
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 01:53 |