THE ORB
Uruchamiam studio

SendNUIMessage dociera puste albo nie dociera wcale

Skrypt próbował wysłać informacje do własnego menu i nie dało się ich wysłać, więc menu nic nie pokazuje.

groupsMenu otwierają się puste albo nieaktualnecodePotrzebny programista

Zrób najpierw to

Zgłoś to sprzedawcy razem z tą linijką.

bug_reportWklej zamiast tego całą konsolę

Co to znaczy

SendNUIMessage serializuje tablicę do JSON-a i wysyła ją na stronę. Wartości, których JSON nie wyraża, są odrzucane albo wywracają całe kodowanie, a nieudane kodowanie nie wysyła nic — zwykle bez błędu.

Co to powoduje

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

  1. 1

    Funkcja w tablicy

    Callbacków nie da się zserializować. Kodowanie pada, a wiadomość znika.

  2. 2

    Encja albo wektor

    GetEntityCoords zwraca vector3, który nie jest zwykłą tablicą. Wysyłaj zamiast tego { x = c.x, y = c.y, z = c.z }.

  3. 3

    Tablica cykliczna

    Tablica, która odwołuje się do samej siebie, bezpośrednio albo przez łańcuch.

  4. 4

    Pomieszane klucze tablicowe i mapowe

    { 1, 2, foo = 'bar' } koduje się do czegoś, czego strona nie odczyta ani jako tablicy, ani jako obiektu.

  5. 5

    Strona nie ma listenera wiadomości

    Wiadomość dociera i nikt jej nie nasłuchuje — inny problem o tym samym objawie.

Jak poznać, który jest twój

Zakoduj to najpierw sam:

print(json.encode(payload))

Jeśli to rzuci błąd albo wypisze coś nieoczekiwanego, problemem są dane. Jeśli wypisze czysty JSON, strona nie nasłuchuje.

Gdzie szukać

Tablica przekazana do SendNUIMessage i listener zdarzenia message na stronie.

Jak to naprawić

-- wysyłaj wyłącznie proste dane
SendNUIMessage({
    action = 'open',
    coords = { x = c.x, y = c.y, z = c.z },
    items = items,            -- czysta tablica
})

// strona
window.addEventListener('message', (event) => {
    const data = event.data
    if (data.action === 'open') { /* ... */ }
})

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 Loading Screen Creator buduje NUI działające bez ręcznie pisanego HTML-a.

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