Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [javascript][php][mysql]Odliczanie
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
Bobek1910
Witam!


Potrzebuje odliczania w js smile.gif

Ale to nie wszystko... Odliczań w js jest pełno w internecie smile.gif

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 smile.gif

Z góry dzięki
kantek
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
zegarek84
Cytat(Bobek1910 @ 14.04.2009, 19:56:21 ) *
Takie odliczanie jak np. w grach typu Plemiona smile.gif

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
Bobek1910
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 sad.gif)
#luq
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.
Bobek1910
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 ? smile.gif
#luq
W tabelce powinieneś mieć pole z datą początku zadania oraz pole z datą końca zadania.
Resztę dobrze zrozumiałeś winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.