SendNUIMessage arrive vide ou n'arrive jamais
Un script a tenté d'envoyer des informations à son propre menu sans succès, donc le menu n'affiche rien.
Faites d'abord ceci
Signalez-le au vendeur, avec cette ligne.
Ce que ça veut dire
SendNUIMessage sérialise la table en JSON et la poste à la page. Les valeurs que JSON ne peut pas exprimer sont abandonnées ou font échouer tout l'encodage, et un encodage raté n'envoie rien du tout — en général sans erreur.
Ce qui la provoque
Classé par fréquence : la cause la plus probable en premier.
- 1
Une fonction dans la table
Les callbacks ne sont pas sérialisables. L'encodage échoue et le message disparaît.
- 2
Une entité ou un vecteur
GetEntityCoordsrenvoie un vector3, qui n'est pas une table simple. Envoyez plutôt{ x = c.x, y = c.y, z = c.z }. - 3
Une table cyclique
Une table qui se référence elle-même, directement ou par une chaîne.
- 4
Des clés de tableau et de dictionnaire mélangées
{ 1, 2, foo = 'bar' }s'encode en quelque chose que la page ne lira ni comme un tableau ni comme un objet. - 5
La page n'a pas d'écouteur de messages
Le message arrive et personne ne l'attend — un autre problème avec le même symptôme.
Comment savoir laquelle est la vôtre
Encodez-le vous-même d'abord :
print(json.encode(payload))
Si cela échoue ou affiche quelque chose d'inattendu, le problème est la charge utile. Si cela affiche du JSON propre, la page n'écoute pas.
Où regarder
La table passée à SendNUIMessage, et l'écouteur message de la page.
Comment la corriger
-- n'envoyez que des données simples
SendNUIMessage({
action = 'open',
coords = { x = c.x, y = c.y, z = c.z },
items = items, -- un tableau pur
})
// page
window.addEventListener('message', (event) => {
const data = event.data
if (data.action === 'open') { /* ... */ }
})Toujours bloqué sur votre propre code ?
Cette page explique ce que cette erreur signifie en général. Collez votre console dans Server Fixer : il classera tout ce qui s'y trouve et vous dira quoi faire en premier ; et si vous préférez ne pas y toucher, ORBIE peut réparer le script et vous rendre la ressource prête à déposer.
bug_reportOuvrir le Server FixerPour ce type d'erreur, le Loading Screen Creator construit une NUI qui marche sans HTML écrit à la main.