THE ORB
Iniciando o studio

Um callback da NUI nunca dispara

Um botão do menu de um script não faz nada ao clicar, e normalmente também não aparece nada no console.

groupsOs botões não fazem nadacodePrecisa de um desenvolvedor

Faça isto primeiro

Reporte para o vendedor. Não tem nada na sua instalação que cause isso.

bug_reportMelhor colar o console inteiro

O que significa

O lado do navegador mandou algo para o cliente e não aconteceu nada. Normalmente não há erro nenhum em nenhum dos dois lados, e é isso que torna a coisa frustrante: o botão simplesmente não faz nada.

O que causa isso

Ordenado pela frequência com que é a resposta.

  1. 1

    A URL não bate com o nome do resource

    fetch('https://my-script/buy') precisa usar o nome EXATO do resource. Um hífen contra um sublinhado falha em silêncio.

  2. 2

    O nome do callback não bate

    RegisterNUICallback('buy', ...) responde a .../buy, não a .../Buy.

  3. 3

    O cb nunca é chamado

    O lado Lua precisa chamar cb(...). Sem isso a promise do navegador nunca resolve, então a interface trava mesmo com o handler tendo rodado.

  4. 4

    O fetch não tem corpo POST

    A NUI do FiveM espera um POST. Um GET, ou um POST sem corpo, pode não ser roteado.

  5. 5

    A interface não está com o foco

    Os callbacks funcionam sem foco, mas o CLIQUE que deveria disparar um não chega na página. O SetNUIFocus(true, true) é o que permite que o cursor interaja.

Como saber qual é o seu

Abra as ferramentas de desenvolvimento da NUI e olhe a aba de rede: a requisição chega a sair? Se não, é a página ou o foco. Se sai e fica pendurada, o handler não está chamando o cb. Se dá 404, o nome está errado.

Onde olhar

A URL do fetch na página, e o nome do RegisterNUICallback no script do cliente. Eles precisam bater exatamente.

Como consertar

-- cliente
RegisterNUICallback('buy', function(data, cb)
    -- fazer a coisa
    cb({ ok = true })          -- responda SEMPRE, mesmo em caso de falha
end)

// página
await fetch(`https://${GetParentResourceName()}/buy`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ item: 'water' }),
})

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