THE ORB
Démarrage du studio

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.

groupsLes menus s'ouvrent vides ou avec des données périméescodeIl faut un développeur

Faites d'abord ceci

Signalez-le au vendeur, avec cette ligne.

bug_reportCollez plutôt toute votre console

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. 1

    Une fonction dans la table

    Les callbacks ne sont pas sérialisables. L'encodage échoue et le message disparaît.

  2. 2

    Une entité ou un vecteur

    GetEntityCoords renvoie un vector3, qui n'est pas une table simple. Envoyez plutôt { x = c.x, y = c.y, z = c.z }.

  3. 3

    Une table cyclique

    Une table qui se référence elle-même, directement ou par une chaîne.

  4. 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. 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 Fixer

Pour ce type d'erreur, le Loading Screen Creator construit une NUI qui marche sans HTML écrit à la main.

Les erreurs qui voyagent avec celle-ci