Reliable network event overflow
Skrypt wysłał do jednego gracza tyle, że jego połączenie nie nadążyło, więc został wyrzucony.
Zrób najpierw to
Zanotuj, którym graczom i kiedy się to zdarza. Tu trzeba, żeby ktoś znalazł hałaśliwy skrypt.
Co to znaczy
Do klienta zakolejkowano więcej zdarzeń, niż potrafi pomieścić kanał niezawodny. FiveM zrywa połączenie, zamiast zostawać jeszcze dalej w tyle, więc gracze wylatują bez oczywistego powodu.
Kanał jest per klient, więc gracz, który wylatuje, niekoniecznie jest tym, który robi coś nietypowego.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Zdarzenie wywoływane w pętli ticka
TriggerClientEventwewnątrz wątku z krótkim Waitem, per gracz, to podręcznikowa przyczyna. - 2
Rozgłos w pętli
TriggerClientEvent('x', -1, ...)wewnątrz czegokolwiek, co się powtarza, mnoży się przez liczbę graczy. - 3
Bardzo duże dane
Cały ekwipunek albo mapa wszystkich graczy, wysyłane często. Rozmiar zapycha kanał równie pewnie jak liczba.
- 4
Pętla zwrotna między klientem a serwerem
Klient wywołuje zdarzenie serwerowe, serwer odpowiada zdarzeniem klienckim, klient odpowiada znowu.
- 5
Cheater spamujący zdarzeniem
Co jest też problemem bezpieczeństwa — zobacz skaner podatności.
Jak poznać, który jest twój
Policz je. Licznik per zdarzenie po stronie serwera przez minutę od razu wskazuje winowajcę:
local counts = {}
local realTrigger = TriggerClientEvent
-- opakuj, licz, wypisuj co 60 sGdzie szukać
Każde TriggerClientEvent wewnątrz CreateThread i każdy rozgłos na -1.
Jak to naprawić
Wysyłaj stan, a nie strumień zdarzeń. State bagi replikują się raz i tylko wtedy, gdy się zmienią:
-- zamiast TriggerClientEvent co tick
Entity(veh).state:set('fuel', level, true)Kiedy musisz wysyłać zdarzenia, dławij i grupuj:
if GetGameTimer() - lastSend > 1000 then
lastSend = GetGameTimer()
TriggerClientEvent('myres:update', src, batchedPayload)
endWciąż utknąłeś na własnym kodzie?
Ta strona mówi, co ten błąd zwykle oznacza. Wklej swoją konsolę do Server Fixera, a uszereguje wszystko, co w niej jest, i powie, co zrobić najpierw; a jeśli wolisz tego nie ruszać, ORBIE naprawi skrypt i odda ci zasób gotowy do wrzucenia.
bug_reportOtwórz Server FixerDla tego rodzaju błędu Skaner bezpieczeństwa oznacza obsługę zdarzeń, która do tego prowadzi.