Skocz do zawartości
  • 0

Bany


MZPL

Pytanie

3 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Śmiem Towarzyszu twierdzić, że w Skripcie nie da się tego prawidłowo zrobić. Jedyny event od logowania w Skript to "on connect" - jest to PlayerLoginEvent. Jest to event, który wykonuje synchronicznie w głównym wątku logiki serwera. Oznacza to, że nie można w nim wykonać "blocking operation" - operacji blokowania, którym zadanie input/output (lub odczytu/zapisu) właśnie jest. Nie można więc wykonać żadnej operacji zapisu/odczytu, aby zweryfikować gracza przy logowaniu. Powinno to zostać wykonane w PlayerPreLoginEvent, który jest asynchroniczny i gdzie takie zadanie może zostać wykonane. Oczywiście możesz wszystkie bany cachować (czyli zapisywać lokalnie w szybkiej pamięci podręcznej) przy starcie serwera, ale istnieje wtedy duże prawdopodobieństwo przestarzałych danych (gracz może zostać odbanowany lub zbanowany manualnie). Choć zapis wszystkich zbanowanych UUID oraz powodów (String) zajmie mało pamięci, to jednak nie powinno się zapisywać tak nielimitowanej ilości danych w pamięci podręcznej. Lepiej sprawdzi się do tego baza danych i/lub serwer cache (np Redis). Jest to znowu jednak zadanie input/output, które nie może zostać wykonane w PlayerLoginEvent jako weryfikacja gracza.

Reasumując nie da się w Skript wykonać prawidłowej weryfikacji gracza przy jego logowaniu wymagającej zadania input/output ze względu na brak w nm AsyncPlayerPreLoginEvent.

Robotnicze Pozdrowienia!

Odnośnik do komentarza
https://skript.pl/temat/17498-bany/#findComment-119948
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...