![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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. |
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]()
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ść. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 23:18 |