THE ORB
Arrancando el studio

El foco de la NUI se trabó: el jugador no puede moverse

Un menú se cerró pero se quedó con el control del ratón y el teclado, así que el jugador no puede moverse ni escribir.

groupsLos jugadores se traban y no pueden moversecodeNecesita un desarrollador

Haz esto primero

El jugador puede volver a entrar para liberarse. Al script hay que arreglarlo para que deje de pasar.

bug_reportMejor pega tu consola entera

Qué significa

SetNUIFocus(true, true) le entrega el teclado y el ratón al navegador. Hasta que se los devuelva, el jugador no puede moverse, escribir en el chat ni abrir ninguna otra cosa. Una interfaz que se escondió pero nunca soltó el foco deja el juego injugable y sin nada en pantalla.

Qué lo provoca

Ordenado por la frecuencia con la que es la respuesta.

  1. 1

    El camino de cierre no suelta el foco

    La interfaz se oculta con CSS o con un cambio de estado y nunca se llama a SetNUIFocus(false, false).

  2. 2

    Un error antes de soltarlo

    El manejador de cierre lanza un error a mitad, y la línea que suelta el foco no llega a ejecutarse.

  3. 3

    Dos interfaces abiertas a la vez

    Una se cierra y suelta el foco, la otra sigue abierta y lo vuelve a tomar; o al revés, y la que sigue abierta se queda sin foco.

  4. 4

    El recurso se detuvo con la interfaz abierta

    Reiniciar un recurso no devuelve el foco por sí solo.

  5. 5

    Foco tomado pero la página no apareció nunca

    El foco se puso antes de que la página cargara y después la página falló. Combinado con una pantalla en blanco, esta es la peor versión: invisible y sin respuesta.

Cómo saber cuál es el tuyo

¿Todavía puede girar la cámara? El foco tomado con SetNUIFocus(true, true) bloquea las dos cosas. Si el chat se abre con T, el foco no está retenido y el problema es otro.

Dónde mirar

Cada llamada a SetNUIFocus, y si cada true tiene su false en todos los caminos de salida.

Cómo arreglarlo

Soltalo en un solo sitio, y hacé que sea imposible saltárselo:

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

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

-- y una red de seguridad
AddEventHandler('onResourceStop', function(res)
    if res == GetCurrentResourceName() then SetNUIFocus(false, false) end
end)

¿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 Fixer

Para este tipo de error, el Loading Screen Creator construye NUI que funciona sin escribir HTML a mano.

Errores que viajan con este