GetPlayer(source) zwróciło nil na serwerze
Serwer szukał gracza i go nie znalazł — zwykle rozłączył się w trakcie akcji.
Zrób najpierw to
Sporadyczne są normalne. Ciągłe znaczą, że skrypt nie sprawdza, czy gracz wciąż tam jest.
Co to znaczy
Handler serwerowy poprosił framework o obiekt gracza i nic nie dostał. Każdy dostęp do pola po tym pada.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Gracz rozłączył się w trakcie operacji
Między odpaleniem zdarzenia a wykonaniem handlera wyszedł. Częste przy każdej operacji opóźnionej albo oczekującej.
- 2
source jest zły
Wewnątrz callbacku albo zagnieżdżonego domknięcia
sourceto nie to, co myślisz. Trzeba go przechwycić na początku handlera:local src = source
- 3
Gracz jest połączony, ale niewczytany
Podczas
playerConnectingi przez chwilę po dołączeniu nie ma jeszcze obiektu gracza — postać nie została wybrana. - 4
source przyszedł od klienta
Klient, który wysyła własne id, może wysłać cudze. To dziura bezpieczeństwa, nie tylko nil.
- 5
Zła funkcja wyszukująca
GetPlayerFromId(id serwerowe) aGetPlayerFromIdentifier(licencja), używane przez pomyłkę zamiennie.
Jak poznać, który jest twój
local src = source
print('src', src, GetPlayerName(src))Jeśli GetPlayerName też jest nil, gracza nie ma albo nigdy w pełni nie dołączył. Jeśli nazwa się rozwiązuje, a obiekt frameworka nie, gracz jest połączony, ale niewczytany.
Gdzie szukać
Początek handlera zdarzenia i każde miejsce, w którym source jest czytane po oczekiwaniu.
Jak to naprawić
RegisterNetEvent('shop:buy', function(item, count)
local src = source -- najpierw przechwyć, zawsze
local xPlayer = ESX.GetPlayerFromId(src)
if not xPlayer then return end -- wyszedł albo nigdy się nie wczytał
-- nigdy nie ufaj id podanemu przez klienta: src jest rozstrzygające
end)Wciąż 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 Konwerter skryptów przenosi zasób między ESX, QBCore i Qbox.