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.
Haz esto primero
Repórtaselo al vendedor, con esta línea.
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
Una función dentro de la tabla
Los callbacks no se pueden serializar. La codificación falla y el mensaje se esfuma.
- 2
Una entidad o un vector
GetEntityCoordsdevuelve un vector3, que no es una tabla plana. Mandá{ x = c.x, y = c.y, z = c.z }en su lugar. - 3
Una tabla cíclica
Una tabla que se referencia a sí misma, directamente o a través de una cadena.
- 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
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 FixerPara este tipo de error, el Loading Screen Creator construye NUI que funciona sin escribir HTML a mano.