ALT Opublikowano 1 Stycznia 2013 Udostępnij Opublikowano 1 Stycznia 2013 Więc mam w client'cie taki kod: GML clearbuffer(); writebyte(3); //1-wysylanie id //2-wysylanie pozycji //3-wyjscie gracza //4-polaczenie gracza writeshort(global.idd); sendmessage(global.sock); Jest on w game_end, ale po wyłączeniu aplikacji przez X nie wysyła wiadomości o odłączeniu się gracza, więc slot na server'ze zostaje pełny. Jak to rozwiązać, lub może jak inaczej wykryć disconnect gracza. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 1 Stycznia 2013 Udostępnij Opublikowano 1 Stycznia 2013 Jeśli serwer odbierze wiadomość od klienta o rozmiarze 0. Ogólne to staraj się całą logikę programować po stronie serwera. Klient powinien być tylko takim wizualizerem stanu gry dla gracza. Prosty przykład, ruch. Zamiast wysyłać swoją pozycję to klient powinien się "pytać" serwera czy może się ruszyć w to miejsce i serwer w razie czego przesuwa gracza i wysyła pozycję. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 1 Stycznia 2013 Udostępnij Opublikowano 1 Stycznia 2013 A czy w game_end obiektu kontroli nie masz wyłączenia DLLa? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 1 Stycznia 2013 Autor Udostępnij Opublikowano 1 Stycznia 2013 Nie, nie mam. Dzięki Utermiko za poradę, ale zostanę przy tym sposobie. Może znacie jakiś inny sposób na wykrywanie czy gracz się rozłączył? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 1 Stycznia 2013 Udostępnij Opublikowano 1 Stycznia 2013 Ping? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 1 Stycznia 2013 Autor Udostępnij Opublikowano 1 Stycznia 2013 Znaczy? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 1 Stycznia 2013 Udostępnij Opublikowano 1 Stycznia 2013 wysyłaj np co 30 s. zmienna do serwera ze client nadal jest połączony. W momencie gdy nic nie przyjdzie serwer niech uzna ze nastapilo rozlaczenie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 1 Stycznia 2013 Autor Udostępnij Opublikowano 1 Stycznia 2013 A nie dałoby się zrobić coś z tym game_end? Szukam najbardziej optymalnego rozwiązania Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 1 Stycznia 2013 Udostępnij Opublikowano 1 Stycznia 2013 ale game_end nie rozwiaze problemu gdy np komus sie komputer wylaczy, zamknie gre przez zabicie procesu czy po prostu gdy gra sie scrashuje. To o czym napisałem wyżej jest odporne na wszystko. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 1 Stycznia 2013 Udostępnij Opublikowano 1 Stycznia 2013 Najbardziej optymalnym jest sprawdzanie czy wiadomość od klienta == 0. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Stycznia 2013 Administratorzy Udostępnij Opublikowano 1 Stycznia 2013 Pakiet nie zdąży być wysłany przed zamknięciem gry. Jeśli gracz się rozłącza, to musi wysłać pakiet, dostać potwierdzenie z serwera i wtedy dopiero się odłaczyć - oczywiscie na serwerze też nie można od razu po ostatnim pakiecie usunąć gracza, tylko dać 1s. zeby ten ostatni pakiet doszedł (był taki problem w Almorze i czasem jak się gracze rozłączali, dostawali komunikat o niestabilnym połączeniu i w rezultacie po 10s. ich wywalało z gry... mimo, że oni sami z niej wychodzili). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 1 Stycznia 2013 Autor Udostępnij Opublikowano 1 Stycznia 2013 Dobra zamykam, problem nie leżał po stronie game_end tylko po stronie server'a. Okazuje się że odbierał informacje tylko przy połączeniu, już to naprawiłem :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 1 Stycznia 2013 Udostępnij Opublikowano 1 Stycznia 2013 A co jeśli ktoś wyjdzie alt+f4 :) Twoja metoda się tutaj nie sprawdzi :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheLukLook Opublikowano 3 Lutego 2013 Udostępnij Opublikowano 3 Lutego 2013 A co jeśli ktoś wyjdzie alt+f4 :) Twoja metoda się tutaj nie sprawdzi :P To chyba logiczne, że piszę się skrypcik, który sprawdza czy gracz się rusza, a jak nie to po 5min wywala go. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się