registerNuiCallback
Registra um nome para o qual a sua página pode fazer POST.
Sintaxe
Seção intitulada “Sintaxe”bool registerNuiCallback ( string nome, function handler )Parâmetros
Seção intitulada “Parâmetros”| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
nome | string | — | O nome para o qual a página posta. Não pode ser vazio. |
handler | function | — | Chamado como handler(data, cb). |
Retorno
Seção intitulada “Retorno”true quando registrado. false se o nome for vazio ou o handler não for uma função.
O handler recebe:
| Parâmetro | Conteúdo |
|---|---|
data | O corpo da requisição, decodificado de JSON para tabela. Sempre uma tabela — corpo vazio ou inválido devolve uma vazia, nunca nil. |
cb | Uma 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ção | O que a página vê |
|---|---|
| Nenhum callback com aquele nome | HTTP 404, na hora |
Handler roda e chama cb | A 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.
Veja também
Seção intitulada “Veja também”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.