THE ORB
Studio wird gestartet

SendNUIMessage kommt leer oder gar nicht an

Ein Script wollte Informationen an sein eigenes Menü senden, und es ging nicht — also zeigt das Menü nichts.

groupsMenüs öffnen sich leer oder mit alten DatencodeBraucht einen Entwickler

Mach das zuerst

Meld es dem Verkäufer, mit dieser Zeile.

bug_reportFüg lieber deine ganze Konsole ein

Was es bedeutet

SendNUIMessage serialisiert die Tabelle nach JSON und schickt sie an die Seite. Werte, die JSON nicht ausdrücken kann, fallen weg oder lassen die ganze Kodierung scheitern — und eine gescheiterte Kodierung sendet gar nichts, meist ohne Fehlermeldung.

Was es auslöst

Sortiert danach, wie oft es die Antwort ist.

  1. 1

    Eine Funktion in der Tabelle

    Callbacks lassen sich nicht serialisieren. Die Kodierung scheitert und die Nachricht verschwindet.

  2. 2

    Eine Entity oder ein Vektor

    GetEntityCoords liefert einen vector3, keine einfache Tabelle. Schick stattdessen { x = c.x, y = c.y, z = c.z }.

  3. 3

    Eine zyklische Tabelle

    Eine Tabelle, die sich selbst referenziert, direkt oder über eine Kette.

  4. 4

    Array- und Map-Schlüssel gemischt

    { 1, 2, foo = 'bar' } kodiert zu etwas, das die Seite weder als Array noch als Objekt liest.

  5. 5

    Die Seite hat keinen Nachrichten-Listener

    Die Nachricht kommt an, und niemand wartet darauf — ein anderes Problem mit demselben Symptom.

Wie du erkennst, welcher deiner ist

Kodier es zuerst selbst:

print(json.encode(payload))

Wirft das einen Fehler oder gibt Unerwartetes aus, liegt es an der Nutzlast. Gibt es sauberes JSON aus, hört die Seite nicht zu.

Wo du nachsehen musst

Die an SendNUIMessage übergebene Tabelle und der message-Listener der Seite.

Wie du es behebst

-- sende nur einfache Daten
SendNUIMessage({
    action = 'open',
    coords = { x = c.x, y = c.y, z = c.z },
    items = items,            -- ein reines Array
})

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

Hängst du immer noch an deinem eigenen Code?

Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.

bug_reportServer Fixer öffnen

Für diese Art Fehler Loading Screen Creator baut NUI, die ohne handgeschriebenes HTML funktioniert.

Fehler, die mit diesem zusammen auftreten