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.
Mach das zuerst
Meld es dem Verkäufer, mit dieser Zeile.
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
Eine Funktion in der Tabelle
Callbacks lassen sich nicht serialisieren. Die Kodierung scheitert und die Nachricht verschwindet.
- 2
Eine Entity oder ein Vektor
GetEntityCoordsliefert einen vector3, keine einfache Tabelle. Schick stattdessen{ x = c.x, y = c.y, z = c.z }. - 3
Eine zyklische Tabelle
Eine Tabelle, die sich selbst referenziert, direkt oder über eine Kette.
- 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
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 öffnenFür diese Art Fehler Loading Screen Creator baut NUI, die ohne handgeschriebenes HTML funktioniert.