Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System pojedynków (gra online)
Mapcio
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 15.02.2011

Ostrzeżenie: (0%)
-----


Witajcie.
Jestem jednym z webmasterów największego polskiego serwera gry Silkroad Online.
Aktualnie postanowiliśmy zrobić ranking najlepszych graczy na serwerze, jednak
mam dość duży problem. Nie jest to problem dotyczący możliwości czy nie wiedzy,
po prostu nie mam pojęcia jak się do tego zabrać.
Pokrótce co mam mniej więcej do zrobienia:
1. Gracz 1 i gracz 2 wchodzą na stronę, logują się i wybierają termin pojedynku.
Opis: Proste, nie wymaga pomocy.

2. O ustalonej przez graczy godzinie skrypt teleportuje ich do wyznaczonego miejsca i zaczynają walczyć.
Opis: Proste, poza tym tylko, że nie wiem jak wywołać skrypt o danej godzinie(może jakiś javascript?)

3.Gracze walczą, jeżeli którykolwiek z nich umrze skrypt zlicza ilość jego śmierci. Który gracz umrze pierwszy 3 razy przegrywa.
Opis: W bazie danych mamy przy każdym graczu kolumnę: current hp(aktualny stan zdrowia). Według mnie należało by zrobić
to tak, że gdy hp jednego z delikwentów spadnie do 0 odpalamy skrypt który dodaje ilość zgonów do tabeli z pojedynkami.
Gdy ilość zgonów wyniesie 3 przerywamy pojedynek i wyłaniamy zwycięzce.

No i tutaj problem, jak wywołać skrypt gdy hp wyniesie 0? Odświeżać skrypt wywołujący co 0,1s i sprawdzać hp?
Takie troche nie profesjonalne, pozatym, delikwent ma możliwość natychmiastowego respawnu(pojawienia się na nowo z 100% życia)
Więc mogą być sytuacje, gdzie system nie zarejestruje zgonu.
Proszę o pomoc :[

Trochę o mechanizmie gry:
Gra nie jest przez przeglądarkę(bo ktoś by mógł tak wnioskować z opisu), natomiast mamy dostęp ze strony do jej bazy mssql.

Ten post edytował Mapcio 6.05.2012, 16:58:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
ShadowD
post
Post #2





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

Ostrzeżenie: (0%)
-----


Jak jedyne co masz to dostęp do bazy to będzie spory problem z #3, nie przeskoczysz tego chyba że dopiszecie jakiś plugin do gry podczepiony pod respawn, w momencie ożywiania będzie dodawał +1 do bazy, inaczej tak jak mówisz w czasie "sleep()" ktoś będzie mógł się ożywić i będziesz miał problem, z kolei jeśli się nie ożywi tylko będzie leżał będzie ciężko odróżnić czy ponownie umarł czy jeszcze nie ożył, więc tak jak na początku bez pluginu do samej gry nie zdziałacie za dużo w tej materii.

#2 po prostu cron ustawiasz go co powiedzmy 10 minut, sprawdzasz czy w danym momencie jest ktoś kto ma mieć pojedynek jeśli tak teleportujesz, pojedynki będą mogły rozgrywać się o 12:10, 12:30 itd. Możesz czas dostosować do swoich preferencji.
Go to the top of the page
+Quote Post
!*!
post
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Kod
No i tutaj problem, jak wywołać skrypt gdy hp wyniesie 0? Odświeżać skrypt wywołujący co 0,1s i sprawdzać hp?


Websocketem, albo czymś o podobnym. W zależności czego użyjecie do komunikacji gra <=> mysql.

Cytat
O ustalonej przez graczy godzinie skrypt teleportuje ich do wyznaczonego miejsca i zaczynają walczyć.


Cron?

Ten post edytował !*! 6.05.2012, 17:07:11
Go to the top of the page
+Quote Post
redeemer
post
Post #4





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


Co do #3 to można by pokombinować z triggerami w bazie.

Ten post edytował redeemer 6.05.2012, 17:10:04
Go to the top of the page
+Quote Post
Mapcio
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 15.02.2011

Ostrzeżenie: (0%)
-----


Zerknąłem teraz w bazę, mamy jeszcze kolumnę która zapisuje współrzędne ostatniego zgonu danego gracza(z dokładnością do 5 miejsca po przecinku)
Zastanawiam się czy była by możliwość, żeby użytkownik umarł w tym samym miejscu kilka krotnie(z dokładnością do 5 miejsca po przecinku O_o?).
Tym bardziej, że postacie sporo się przesuwają podczas pojedynków. Myślę, żeby wykorzystać zmianę właśnie tych koordów po zgonie i liczyć każde ich zmiany
jako śmierć gracza. Tylko teraz pytanie. Jaki delay na skrypcie który ma zliczać zgony, i jak to z głową poskładać w całość.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:18