THE ORB
Uruchamiam studio

charinfo / metadata jest nil

Nie dało się odczytać zapisanych danych postaci — albo nie skończyła się wczytywać, albo dane tej postaci są uszkodzone.

groupsJeden gracz psuje wszystkocodePotrzebny programista

Zrób najpierw to

Sprawdź, czy zdarza się to wszystkim, czy jednemu graczowi. Jeden gracz znaczy, że jego zapisane dane wymagają naprawy.

bug_reportWklej zamiast tego całą konsolę

Co to znaczy

Obiekt gracza istnieje, ale odczytywana podtablica nie jest wypełniona. W QBCore PlayerData.charinfo trzyma imię i telefon, PlayerData.metadata całą resztę; obie to kolumny JSON, a zepsuta wraca jako nil, nie jako pusta.

Co to powoduje

Uszeregowane według tego, jak często są odpowiedzią.

  1. 1

    Odczyt przed wybraniem postaci

    Połączony to nie wczytany. Między dołączeniem a wyborem postaci istnieje gracz, który nie ma charinfo w ogóle.

  2. 2

    Kolumna JSON jest uszkodzona

    Obcięty zapis (zobacz "Data too long") zostawia niepoprawny JSON, a jego dekodowanie zwraca nil. Taki gracz psuje potem każdy skrypt, dopóki wiersz nie zostanie naprawiony.

  3. 3

    Klucz metadanych, którego nigdy nie zainicjowano

    metadata.thirst na postaci utworzonej, zanim ten klucz istniał. Tablica jest w porządku, klucz nie.

  4. 4

    Restart zasobu, kiedy gracz jest w grze

    Gracz wczytał się, zanim twój zasób wystartował, więc nigdy nie zobaczył zdarzenia wczytania.

  5. 5

    Różnice wersji frameworka

    Pola wędrują między wersjami QBCore; skrypt napisany pod jedną czyta klucz, który druga trzyma gdzie indziej.

Jak poznać, który jest twój

Sprawdź wiersz:

SELECT charinfo, metadata FROM players WHERE citizenid = 'ABC12345';

Jeśli któraś jest NULL albo nie jest poprawnym JSON-em, problemem są dane tej postaci. Jeśli obie wyglądają dobrze, chodzi o moment odczytu.

Gdzie szukać

Sam odczyt i to, czy plik czeka na zdarzenie wczytania gracza.

Jak to naprawić

Daj kluczowi wartość domyślną i nigdy nie czytaj w zasięgu pliku:

local meta = PlayerData.metadata or {}
local thirst = meta.thirst or 100

RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
    PlayerData = QBCore.Functions.GetPlayerData()
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 Fixer

Dla tego rodzaju błędu Konwerter skryptów przenosi zasób między ESX, QBCore i Qbox.

Błędy, które chodzą z tym w parze