THE ORB
Démarrage du studio

Le focus NUI est bloqué : le joueur ne peut plus bouger

Un menu s'est fermé mais a gardé le contrôle de la souris et du clavier : le joueur ne peut ni bouger ni écrire.

groupsLes joueurs se bloquent et ne peuvent plus bougercodeIl faut un développeur

Faites d'abord ceci

Le joueur peut se reconnecter pour se libérer. Le script doit être corrigé pour que cela cesse.

bug_reportCollez plutôt toute votre console

Ce que ça veut dire

SetNUIFocus(true, true) confie le clavier et la souris au navigateur. Tant qu'ils ne sont pas rendus, le joueur ne peut ni bouger, ni écrire dans le chat, ni ouvrir quoi que ce soit. Une interface qui s'est masquée sans relâcher le focus rend le jeu injouable, écran vide.

Ce qui la provoque

Classé par fréquence : la cause la plus probable en premier.

  1. 1

    Le chemin de fermeture ne relâche pas le focus

    L'interface est masquée en CSS ou par un changement d'état et SetNUIFocus(false, false) n'est jamais appelé.

  2. 2

    Une erreur avant la libération

    Le gestionnaire de fermeture échoue à mi-chemin, et la ligne de libération ne s'exécute jamais.

  3. 3

    Deux interfaces ouvertes en même temps

    L'une se ferme et relâche, l'autre reste ouverte et reprend le focus — ou l'inverse, et celle qui reste ouverte n'a pas le focus.

  4. 4

    La ressource s'est arrêtée alors que l'interface était ouverte

    Redémarrer une ressource ne restaure pas le focus tout seul.

  5. 5

    Focus pris mais la page n'est jamais apparue

    Le focus a été pris avant le chargement de la page, puis la page a échoué. Combiné à un écran blanc, c'est la pire version : invisible et sans réaction.

Comment savoir laquelle est la vôtre

Peut-il encore tourner la caméra ? Un focus pris avec SetNUIFocus(true, true) verrouille les deux. Si le chat s'ouvre avec T, le focus n'est pas retenu et le problème est ailleurs.

Où regarder

Chaque appel à SetNUIFocus, et si chaque true a son false sur tous les chemins de sortie.

Comment la corriger

Relâchez à un seul endroit, et rendez l'oubli impossible :

local function closeUi()
    SetNUIFocus(false, false)
    SendNUIMessage({ action = 'close' })
end

RegisterNUICallback('close', function(_, cb)
    closeUi()
    cb({})
end)

-- et un filet de sécurité
AddEventHandler('onResourceStop', function(res)
    if res == GetCurrentResourceName() then SetNUIFocus(false, false) end
end)

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