Un callback NUI ne se déclenche jamais
Un bouton du menu d'un script ne fait rien quand on clique, et en général rien n'apparaît dans la console non plus.
Faites d'abord ceci
Signalez-le au vendeur. Rien dans votre installation ne cause cela.
Ce que ça veut dire
Le côté navigateur a posté vers le client et rien ne s'est produit. Il n'y a en général aucune erreur des deux côtés, et c'est ce qui rend la chose frustrante : le bouton ne fait simplement rien.
Ce qui la provoque
Classé par fréquence : la cause la plus probable en premier.
- 1
L'URL ne correspond pas au nom de la ressource
fetch('https://my-script/buy')doit utiliser le nom EXACT de la ressource. Un tiret contre un tiret bas échoue en silence. - 2
Le nom du callback ne correspond pas
RegisterNUICallback('buy', ...)répond à.../buy, pas à.../Buy. - 3
cb n'est jamais appelé
Le côté Lua doit appeler
cb(...). Sans cela, la promesse du navigateur ne se résout jamais, donc l'interface se fige alors que le gestionnaire s'est exécuté. - 4
Le fetch n'a pas de corps POST
La NUI de FiveM attend un POST. Un GET, ou un POST sans corps, peut ne pas être routé.
- 5
L'interface n'a pas le focus
Les callbacks fonctionnent sans focus, mais le CLIC censé en déclencher un n'atteint pas la page.
SetNUIFocus(true, true)est ce qui permet au curseur d'interagir.
Comment savoir laquelle est la vôtre
Ouvrez les outils de développement NUI et regardez l'onglet réseau : la requête part-elle ? Si non, c'est la page ou le focus. Si elle part et reste en attente, le gestionnaire n'appelle pas cb. Si elle renvoie 404, le nom est faux.
Où regarder
L'URL du fetch dans la page, et le nom du RegisterNUICallback dans le script client. Ils doivent correspondre exactement.
Comment la corriger
-- client
RegisterNUICallback('buy', function(data, cb)
-- faire la chose
cb({ ok = true }) -- répondez TOUJOURS, même en cas d'échec
end)
// page
await fetch(`https://${GetParentResourceName()}/buy`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ item: 'water' }),
})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.