THE ORB
Arrancando el studio

SendNUIMessage llega vacío o no llega nunca

Un script intentó mandarle información a su propio menú y no se pudo mandar, así que el menú no muestra nada.

groupsLos menús abren vacíos o con datos viejoscodeNecesita un desarrollador

Haz esto primero

Repórtaselo al vendedor, con esta línea.

bug_reportMejor pega tu consola entera

Qué significa

SendNUIMessage serializa la tabla a JSON y se la manda a la página. Los valores que JSON no puede expresar se descartan o hacen que la codificación entera falle, y una codificación que falla no manda nada: normalmente sin dar error.

Qué lo provoca

Ordenado por la frecuencia con la que es la respuesta.

  1. 1

    Una función dentro de la tabla

    Los callbacks no se pueden serializar. La codificación falla y el mensaje se esfuma.

  2. 2

    Una entidad o un vector

    GetEntityCoords devuelve un vector3, que no es una tabla plana. Mandá { x = c.x, y = c.y, z = c.z } en su lugar.

  3. 3

    Una tabla cíclica

    Una tabla que se referencia a sí misma, directamente o a través de una cadena.

  4. 4

    Claves de array y de mapa mezcladas

    { 1, 2, foo = 'bar' } se codifica a algo que la página no va a leer ni como array ni como objeto.

  5. 5

    La página no tiene listener de mensajes

    El mensaje llega y nadie lo está esperando: otro problema con el mismo síntoma.

Cómo saber cuál es el tuyo

Codificalo vos primero:

print(json.encode(payload))

Si eso da error o imprime algo inesperado, el problema es lo que mandás. Si imprime JSON limpio, la página no está escuchando.

Dónde mirar

La tabla que se le pasa a SendNUIMessage, y el listener de message de la página.

Cómo arreglarlo

-- mandá sólo datos planos
SendNUIMessage({
    action = 'open',
    coords = { x = c.x, y = c.y, z = c.z },
    items = items,            -- un array puro
})

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

¿Sigues atascado en tu propio código?

Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.

bug_reportAbrir el Server Fixer

Para este tipo de error, el Loading Screen Creator construye NUI que funciona sin escribir HTML a mano.

Errores que viajan con este