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

Jedna zmienna używana wiele razy w tym samym czasie przy rozłączaniu się graczy


Najlepsza odpowiedź DarkGL, 01.12.2014 17:49

Nie

Przejdź do postu


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 01.12.2014 17:48

Witam,

 

Mam taki kod:

new tab[300]

client_disconnect(id)
{
    //tu używam tej globalnej tablicy, działam sobie
}

Co się stanie, gdy zmiana mapy nastąpi?

Wszyscy gracze są rozłączani wtedy ?

Czy może dojść do wariacji wartości ? W sensie, że zostaną pozamieniane, bo będzie natłok wywołań w tym samym czasie.


  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 01.12.2014 17:49   Najlepsza odpowiedź

Nie


  • +
  • -
  • 3

#3 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 01.12.2014 17:59

Procesor nie myli się.

 

każde rozłączenie to osobne wywołanie funkcji client_disconnect(id) u mnie jak i w każdym innym pluginie nie sprawia to problemu o ile kod jest poprawnie napisany.  :)


Użytkownik NoLiFeR edytował ten post 01.12.2014 17:59

  • +
  • -
  • 1

#4 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 01.12.2014 19:45

W momencie zakończenia mapy nie następuje rozłączenie klienta (o ile sam się nie rozłączy).


  • +
  • -
  • 1

#5 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 01.12.2014 22:22

W momencie zakończenia mapy nie następuje rozłączenie klienta (o ile sam się nie rozłączy).

To zależy jak na to patrzeć, funkcja "client_disconnect" się wywołuje, ale ostatnio dowiedziałem się, że funkcja rozłączania graczy z fakemety nie wywołuje się przy zmianie mapy.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 02.12.2014 13:06

z client_disconnect jest dość różnie... Samo rozłączenie faktycznie nie następuje, ale client_disconnect przed zmianą mapy się wykonuje, tak samo client_connect po zmianie. Brak faktycznego rozłączenia daje m.in to, że przy zmianie mapy nas nie wyrzuci z serwera, bo ktoś się "wbił" na nasz slot, a serwer jest pełny. Jednak jest kilka wyjątków.

1. Gdy gracz potrzebuje pobrać jakieś pliki, a serwer posiada fastdownload, właściwe rozłączenie i ponowne połączenie nastąpi.
2. Czasem client_disconnect się nie wywołuje, zauważyłem że ma wpływ tutaj to, jak długo serwer zmienia mapę. Jednak plugin_end wywołuje się po wszystkich client_disconnect i w nim próba pobrania graczy zwróci tylko tych, dla których client_diconnect się nie wywołał. Możemy więc tam w razie czego dokończyć swoje "dyrdymały" na graczu. Pamiętać trzeba jednak, że w plugin_end kategorycznie nie wykonujemy zapytań do bazy danych przez ThreadQuery. Tak samo w client_disconnect tego nie powinniśmy robić, gdyż jeśli zapytanie się nie wykona przed zmianą mapy, może zostać "zgubione", co nie tylko pozbawi nas możliwości podglądnięcia jego wyniku ale też doprowadzić może do wycieków pamięci i błędów typu Thread worker was unable to start!

W client_disconnect nie polecam wykonywać żadnych zapytań, lepiej je zostawić do plugin_end i wykonać metodą nie-threaded :) Ewentualnie wrzucić task wykonujący się co X czasu, który będzie zapisywał wszystkie rzeczy z client_disconnect.
  • +
  • -
  • 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





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

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