[PHP] surowce w grze internetowej |
[PHP] surowce w grze internetowej |
12.11.2010, 14:34:35
Post
#1
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 16.09.2010 Ostrzeżenie: (0%) |
nie wiem czy graliście kiedyś np. w plemiona ale chodzi mi o coś takiego:
z boku jest napisane np. 60 gliny na godzinę. Jak zrobić, aby co minutę do stanu gliny dodawało się 1gliny? |
|
|
12.11.2010, 14:37:36
Post
#2
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ |
Skorzystać z crona? Ewentualnie (w zależności od kontekstu) po odświeżeniu okna przeliczać ile minut minęło.
Ten post edytował Daiquiri 12.11.2010, 14:39:39 |
|
|
12.11.2010, 14:39:44
Post
#3
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) |
Ale bez odświeżania strony ma się dodawać czy z odświeżaniem?
-------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
12.11.2010, 15:17:13
Post
#4
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 16.09.2010 Ostrzeżenie: (0%) |
|
|
|
12.11.2010, 15:24:29
Post
#5
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ |
|
|
|
12.11.2010, 15:28:03
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) |
+ AJAX.
-------------------- |
|
|
12.11.2010, 15:30:50
Post
#7
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) |
Skorzystać z crona? Ewentualnie (w zależności od kontekstu) po odświeżeniu okna przeliczać ile minut minęło. Proszę Cię, nie pisz na tym forum takich strasznych rzeczy Do autora tematu: W js odpalasz: Kod setIterval(function(){ // hunkcja dodajaca jeden czegos tam }, 6e4); W PHP obliczas ilość surowców na rządanie przeglądarki. Nie korzystaj z żadnych Cronów. Po prostu jeśli jest potrzeba uzyskania surowca to sprawdzasz ile było ostatnio i kiedy. I dodajesz do stanu surowca: Kod surowiec += (teraz - kiedy)[s] * wydobycie_na_sekunde;
Ten post edytował flashdev 12.11.2010, 15:31:18 -------------------- |
|
|
12.11.2010, 15:51:45
Post
#8
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 16.09.2010 Ostrzeżenie: (0%) |
a trzeba wykorzystać js ?
|
|
|
12.11.2010, 15:52:44
Post
#9
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ |
A czy ja stwierdziłam, że musi to być CRON? Napisałam przecież, że można to obliczyć wtedy kiedy trzeba (np. przeliczając czas). . Nie znam plemion, wykorzystałam analogię do innych znanych mi gier via www.
|
|
|
12.11.2010, 16:47:00
Post
#10
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) |
Samym PHP tego na pewno nie zrobisz skoro nie chcesz odświeżać strony.
Jeśli to ma być czysto informacyjne to możesz to zrobić w JavaScript za pomocą funkcji setInterval() - tak jak ktoś już wyżej napisał. Albo za pomocą setTimeout() - rekurencyjnie
Nie wiem czy jest sens podróżować z tym do serwera co minutę. Natomiast jeśli ktoś chce z tej gliny coś budować (czy ją sprzedać, albo zrobić z niej jakikolwiek inny użytek) to musi być już podróż do serwera (żeby nie było oszukiwania). Tam musi być obliczone ile klient ma gliny na podstawie upływu czasu. Ten post edytował qrzysztof 12.11.2010, 16:53:16 -------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
12.11.2010, 17:00:55
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) |
Gdyby zegar w Windowsie co sekundę synchronizował czas to wątpię, czy byś z internetu mógł normalnie korzystać ;].
Zarżniesz serwer gdy będziesz co chwilę aktualizował dane w bazie. Takie rzeczy robi się na żądanie, co jakiś czas zapisując do bazy wynik i czas ostatniego liczenia (to może być wywoływane cronem). |
|
|
12.11.2010, 17:27:55
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) |
nie wiem czy graliście kiedyś np. w plemiona ale chodzi mi o coś takiego: nie zmieniasz stanu surowców w bazie - w bazie zmieniasz stan surowców po zdarzeniu mającym wpływ na liniowy przyrost tych surowców który da si ę obliczyć od ostatniej takiej zmiany... - co mam na myśli - po grabierzy jak jednostki coś zniosą aktualizujesz w bazie - po wybudowaniu/zburzeniu kopalni aktualizujesz w bazie... po wybudowaniu budynku lub jak Cię orobią lub jak wydasz na jednostki aktualizujesz w bazie... po wybudowaniu zburzeniu spichlerza aktualizujesz maksymalny limit surowców....z boku jest napisane np. 60 gliny na godzinę. Jak zrobić, aby co minutę do stanu gliny dodawało się 1gliny? i teraz jak nic się nie zmienia tylko wchodzisz na stronę to od ostatniej modyfikacji liczysz ze wzorów ile jest w aktualnym czasie surowców (ile przybyło + ile było) - to w PHP podczas wchodzenia na stronę lub jak przy innych akcjach potrzebujesz aktualnej liczby surowców... i teraz po stronie javascript to tylko dodatek [w plemiona można grać bez włączonego js] - gdy wyświetlisz na stronie ile masz surowców to javascript zajmuje się dodawaniem surowców wizualnym a nie tym w bazie na bieżąco - gdzie w kodzie JS zamieszczasz sobie poziom kopalni a liczbę surowców na start masz wyświetloną na stronie i z niej pobierasz - w sumie zamiast pobierać ze strony jak to jest na plemionach to to te ż można zawrzeć w małym fragmencie js by było łatwiej... i żaden cron tutaj nie jest potrzebny - zmiana stanu dopiero po jakimś kluczowym zdarzeniu wywołanym przez użytkownika - przy samym wyświetlaniu też nie trzeba wpisywać aktualnej wartości - dopiero po napadzie i inne... jak dla mnie to cron - a raczej "pseudo cron" [czasami lepiej napisać jeden proces działający stale w tle] a cron'em się wspomóc by sprawdzać czy wszystko na chodzie - to kluczowe akcje gdzie zainteresowanych może nie być - to rozliczenie ataku/rabunku - no i jeszcze rozwój wiosek koczowniczych... - a jak tak sobie myślę to z crona można pominąć na powrót jednostek, dostępnych surowców po powrocie jednostek, oraz zakończenie budowy - a i nawet burzenia raczej [tylko przy kluczowej akcji pasuje potem przepisać stan bazy do odpowiedniej formy...] -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
12.11.2010, 17:32:22
Post
#13
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) |
A nie lepiej aktualizować podczas akcji użytkownika? a wyświetlać za pomocą zwykłej funkcji JS..
|
|
|
12.11.2010, 17:50:45
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) |
A nie lepiej aktualizować podczas akcji użytkownika? a wyświetlać za pomocą zwykłej funkcji JS.. przykąłdowy atak - akcja użytkownika... kluczowe akcje uzyszkodników nie są niestety liniowe - dla 2 graczy można by zapisać czas dotarcia jednostek i obliczyć rezultat po zajrzeniu przez któregoś użytkownika... ale setki a nawet tysiące ataków może być doklejonych później [co prawda mogą się rozegrać na przeciągu 10h ale...] - i nikt przez noc nie zagląda - jeden ataku miał 1h - też w nocy wysłał - i też nie zagląda zanim te pierwsze ataki dojdą i tego ostatniego ktoś rano atakuje - ładne zależności jeśli ich się od razu nie rozwiąże jeśli jego jednostki już powinny wrócić [no wczewsniej musi być wynik czy w ogóle wrócą] -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
12.11.2010, 18:17:01
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) |
Na przykładzie Ogame ja bym to rozwiązał tak:
zapisujesz do bazy czas ataku, w momencie żądania pobierasz czas, i jeśli atak już nastąpił przeliczasz walkę a potem odległość floty powracającej od bazy (o ile przetrwa ). Wystarczy dobrze rozplanować system, a nie będzie konieczności wykorzystania działań w czasie rzeczywistym. |
|
|
13.11.2010, 12:20:34
Post
#16
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 16.09.2010 Ostrzeżenie: (0%) |
to użyję tego z JS. bardzo dziękuję . proszę o zamknięcie
|
|
|
13.11.2010, 13:55:33
Post
#17
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 8 Dołączył: 30.04.2008 Ostrzeżenie: (0%) |
Zanim zdecydujesz się na to rozwiązanie to poczytaj o reverse ajax.
|
|
|
13.11.2010, 15:21:06
Post
#18
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) |
Ale po co wciągać do tego AJAX? użytkownik nie musi widzieć, że dostał atak i ukradziono mu X surowców do puki nie podejmie jakiejś akcji [np. odświeżenie strony].
|
|
|
13.11.2010, 15:34:43
Post
#19
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 1 Dołączył: 3.06.2010 Ostrzeżenie: (0%) |
na necie widziałem klona plemion. poszukaj..
a co do tematu to JS.. |
|
|
Wersja Lo-Fi | Aktualny czas: 23.05.2024 - 06:26 |