Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Działanie wywoływane u gracza po rozłączeniu się jego z serwerem


Najlepsza odpowiedź GwynBleidD , 23.04.2014 10:07

I tak, i nie...

Przy normalnym kicku, prócz wysłania do klienta powodu dzieje się jeszcze kilka rzeczy na serwerze, czyszczone jest "miejsce" po graczu, tak to można ująć...

Gdy wywołujemy samo SVC_DISCONNECT, takie czyszczenie również następuje, ale serwer "błędnie" dochodzi do wniosku, że gracz sam opuścił serwer, a nie został wyrzucony. Więc w praktyce różnicy nie ma żadnej, żadnych błędów to nie spowoduje, jednak przed SVC_DISCONNECT można się "obronić".

O co chodzi? A chodzi o to, że SVC_DISCONNECT prosi gracza o opuszczenie serwera, a nie wyrzuca go. Przy normalnym kicku zostałby on po tej prośbie i tak wyrzucony, ale zmodyfikowany odpowiednio klient gracza może zignorować SVC_DISCONNECT. Ale da się to załatać, uruchamiając po jakimś czasie od SVC_DISCONNECT, jeśli gracz jest ciągle na serwerze, zwykłego kicka. Należy jednak pamiętać, aby nie sprawdzać tego po id gracza (tym od 1 do 32), ale po userid (może ono mieć dowolną wartość i nigdy się nie powtórzy w jednym uruchomieniu serwera). Przejdź do postu


  • Zamknięty Temat jest zamknięty
8 odpowiedzi w tym temacie

#1 VertekS

    Zaawansowany

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:80
  • Lokalizacja:amxxpc.exe
Offline

Napisano 21.04.2014 19:45

Mam następujący problem do rozwiązania: plugin sprawdza, czy łączący się gracz spełnia pewne warunki. Jeśli nie, to jest wyrzucany z serwera i otrzymuje wiadomość na temat tego, dlaczego nie może wejść na serwer. Widziałem w pluginach rozwiązanie takie, aby wysłać informacje do konsoli gracza. Jednak:

1) Który gracz sprawdzi właśnie w konsoli, że coś jest z jego klientem CS'a nie tak? Prawdopodobnie stwierdzi, że ten serwer jest do kitu i idzie na inny. 

2) Taki sposób informowania gracza mnie nie zadowala.

Osobiście wyobrażam sobie, aby ta wiadomość była wyświetlana w okienku jak na przykład błąd "Reliable channel overflowed": http://www.fotosik.p...63f79bfba7.html Pytanie brzmi następująco: czy jest możliwość wywołania takiego okna u klienta? Jeśli jest, to co muszę zrobić, aby stworzyć to okno z pewną wiadomością wewnątrz?


  • +
  • -
  • 0

#2 Ogen Dogen

    Czempion

  • Power User

Reputacja: 261
Wszechwidzący

  • Postów:837
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 21.04.2014 20:51

Kickuj gracza z powodem podczas łączenia. Wykorzystaj kod z ReasonKicker'a.


  • +
  • -
  • 1

b_350_20_360204_C20008_FFFFFF_000000.png 193.33.176.115:27015

 

94e23d811c.png

 


#3 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 22.04.2014 09:35

server_cmd("kick #%d ^"Wyrzucony z powodu rezerwacji slotow^"", get_user_userid(id));

  • +
  • -
  • 1

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 22.04.2014 13:03

https://wiki.alliedm...#SVC_DISCONNECT

ofc używasz message_* funkcji, aby to wywołać. Możesz użyć do 4 linii tekstu, nie pamiętam ile znaków mieści się w linii, ale chyba zależało to od samych znaków. Początek w pierwszej linii jest zawsze wypełniony (You have been disconnected from the server...).
  • +
  • -
  • 2

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#5 VertekS

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:80
  • Lokalizacja:amxxpc.exe
Offline

Napisano 22.04.2014 14:17

Przetestowałem obydwa sposoby i wolę rozłączać gracza poprzez SVC_DISCONNECT, bo... nie ma "Kicked" przed powodem bana w tym okienku, jednak wyczytałem, żeby nie używać tego sposobu.  GwynBleidD , możesz się odnieść do tego, co tutaj napisał ConnorMcLeod - https://forums.allie...ad.php?t=187685? Czy jest inny powód oprócz tego, że "SVC_DISCONNECT jest częścią procesu kickowania", dla którego nie używać tej informacji?

Ogen Dogen^Grzyboo oraz  GwynBleidD otrzymują plus za pomoc.


  • +
  • -
  • 0

#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 23.04.2014 10:07   Najlepsza odpowiedź

I tak, i nie...

Przy normalnym kicku, prócz wysłania do klienta powodu dzieje się jeszcze kilka rzeczy na serwerze, czyszczone jest "miejsce" po graczu, tak to można ująć...

Gdy wywołujemy samo SVC_DISCONNECT, takie czyszczenie również następuje, ale serwer "błędnie" dochodzi do wniosku, że gracz sam opuścił serwer, a nie został wyrzucony. Więc w praktyce różnicy nie ma żadnej, żadnych błędów to nie spowoduje, jednak przed SVC_DISCONNECT można się "obronić".

O co chodzi? A chodzi o to, że SVC_DISCONNECT prosi gracza o opuszczenie serwera, a nie wyrzuca go. Przy normalnym kicku zostałby on po tej prośbie i tak wyrzucony, ale zmodyfikowany odpowiednio klient gracza może zignorować SVC_DISCONNECT. Ale da się to załatać, uruchamiając po jakimś czasie od SVC_DISCONNECT, jeśli gracz jest ciągle na serwerze, zwykłego kicka. Należy jednak pamiętać, aby nie sprawdzać tego po id gracza (tym od 1 do 32), ale po userid (może ono mieć dowolną wartość i nigdy się nie powtórzy w jednym uruchomieniu serwera).
  • +
  • -
  • 2

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#7 VertekS

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:80
  • Lokalizacja:amxxpc.exe
Offline

Napisano 23.04.2014 12:12

...Przy normalnym kicku zostałby on po tej prośbie i tak wyrzucony, ale zmodyfikowany odpowiednio klient gracza może zignorować SVC_DISCONNECT...

Jaki jest odsetek takich odpowiednio zmodyfikowanych klientów? Jeśli jest odpowiednio duży, to wtedy zdecyduję się na używanie zwykłego kicka.

 

  • +
  • -
  • 0

#8 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 23.04.2014 14:23

Odsetek jest praktycznie zerowy :) Bo taka modyfikacja nic nie daje. Jeśli istnieją takie klienty CSa to powstały przez przypadek...
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#9 VertekS

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:80
  • Lokalizacja:amxxpc.exe
Offline

Napisano 23.04.2014 20:19

W takim razie nie widzę potrzeby używania komendy kick w pluginie, message SVC_DISCONNECT wystarczy. Dziękuje wszystkim udzielającym się w temacie za pomoc, wszelkie moje wątpliwości zostały rozwiane, więc temat do zamknięcia.


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych