Pular para o conteúdo

registerNuiCallback

Cliente NUI OOP Nui.registerCallback(...)

Registra um nome para o qual a sua página pode fazer POST.

bool registerNuiCallback ( string nome, function handler )
NomeTipoPadrãoDescrição
nomestring—O nome para o qual a página posta. Não pode ser vazio.
handlerfunction—Chamado como handler(data, cb).

true quando registrado. false se o nome for vazio ou o handler não for uma função.

O handler recebe:

ParâmetroConteúdo
dataO corpo da requisição, decodificado de JSON para tabela. Sempre uma tabela — corpo vazio ou inválido devolve uma vazia, nunca nil.
cbUma função que você chama uma vez para responder. Tabela vira JSON; chamar sem argumento envia {}. Chamadas seguintes são ignoradas.
registerNuiCallback("buy", function(data, cb)
if getPlayerMoney() < data.price then
cb({ ok = false, reason = "dinheiro insuficiente" })
return
end
takePlayerMoney(data.price)
cb({ ok = true, left = getPlayerMoney() })
end)
fetch("/buy", { method: "POST", body: JSON.stringify({ item: "colete", price: 200 }) })
.then(function (r) { return r.json(); })
.then(function (resposta) { console.log(resposta.ok, resposta.left); });

Tanto nui://<resource>/<nome> quanto nui://<resource>/__nui/<nome> chegam no mesmo callback. Comece o caminho com / — um fetch("buy") relativo, numa página dentro de uma subpasta, nomeia o callback como client/buy, não buy.

O cb não precisa ser chamado dentro do handler; você pode guardar ele e responder depois, de um timer ou depois de uma ida e volta ao servidor.

SituaçãoO que a página vê
Nenhum callback com aquele nomeHTTP 404, na hora
Handler roda e chama cbA resposta, em JSON
Handler nunca chama cb{} depois de 10 segundos
Handler dá erro de Lua{}, e o erro vai para o console de debug

Registrar o mesmo nome de novo substitui o handler anterior.

  • sendNuiMessage — Envia dados para a sua página.
  • setNuiFocus — Entrega o teclado e o mouse para a sua página, ou tira de volta.
  • setNuiFocusKeepInput — Deixa o jogo continuar lendo o input enquanto a sua página está com foco.
  • isNuiFocused — Se alguma página de NUI está com foco no momento.
  • isNuiFocusKeepingInput — Se o jogo continua lendo o input enquanto uma página está com foco.
  • getNuiCursorPosition — A posição do cursor, em pixels de tela, enquanto o cursor da NUI está na tela.
  • setNuiUrl — Aponta a sua camada para outra página do seu próprio resource.
  • getNuiUrl — A URL que a sua camada está exibindo agora.