THE ORB
Iniciando o studio

O foco da NUI travou: o jogador não consegue se mover

Um menu fechou mas ficou com o controle do mouse e do teclado, então o jogador não consegue se mover nem digitar.

groupsOs jogadores travam e não conseguem se movercodePrecisa de um desenvolvedor

Faça isto primeiro

O jogador pode entrar de novo para se soltar. O script precisa de conserto para parar de acontecer.

bug_reportMelhor colar o console inteiro

O que significa

O SetNUIFocus(true, true) entrega o teclado e o mouse para o navegador. Até ele devolver, o jogador não consegue se mover, digitar no chat nem abrir mais nada. Uma interface que se escondeu mas nunca soltou o foco deixa o jogo injogável e sem nada na tela.

O que causa isso

Ordenado pela frequência com que é a resposta.

  1. 1

    O caminho de fechamento não solta o foco

    A interface se esconde com CSS ou uma mudança de estado e o SetNUIFocus(false, false) nunca é chamado.

  2. 2

    Um erro antes de soltar

    O handler de fechamento lança um erro no meio, e a linha que solta o foco não chega a rodar.

  3. 3

    Duas interfaces abertas ao mesmo tempo

    Uma fecha e solta o foco, a outra continua aberta e pega de novo; ou o contrário, e a que continua aberta fica sem foco.

  4. 4

    O resource parou com a interface aberta

    Reiniciar um resource não devolve o foco por si só.

  5. 5

    Foco tomado mas a página nunca apareceu

    O foco foi definido antes de a página carregar e depois a página falhou. Combinado com uma tela em branco, essa é a pior versão: invisível e sem resposta.

Como saber qual é o seu

Ele ainda consegue girar a câmera? O foco tomado com SetNUIFocus(true, true) trava as duas coisas. Se o chat abre com T, o foco não está retido e o problema é outro.

Onde olhar

Cada chamada de SetNUIFocus, e se cada true tem o false correspondente em todos os caminhos de saída.

Como consertar

Solte num lugar só, e faça com que seja impossível pular:

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

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

-- e uma rede de segurança
AddEventHandler('onResourceStop', function(res)
    if res == GetCurrentResourceName() then SetNUIFocus(false, false) end
end)

Ainda travado no seu próprio código?

Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.

bug_reportAbrir o Server Fixer

Para esse tipo de erro, o Loading Screen Creator constrói NUI que funciona sem HTML escrito à mão.

Erros que andam junto com este