triggerServerEvent
Dispara um evento no servidor.
Sintaxe
Seção intitulada “Sintaxe”bool triggerServerEvent ( string nomeDoEvento, element origem [, ... ] )Parâmetros
Seção intitulada “Parâmetros”| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
nomeDoEvento | string | — | Evento a disparar no servidor. |
origem | element | — | Elemento de origem, que vira source no manipulador do servidor. |
... | any | — | Argumentos repassados ao manipulador. |
Retorno
Seção intitulada “Retorno”true se o envio foi aceito, false se não houver conexão com o servidor.
Só atravessa o que o servidor conhece. Uma origem criada por um script de cliente registra Bad source element @ 'triggerServerEvent' [element is clientside] e devolve false. Um argumento que seja um elemento assim, ou qualquer outro userdata que a rede não carrega, registra um erro com a posição dele e a chamada inteira devolve false; dentro de uma tabela, esses valores chegam como nil.
O retorno diz só que o pacote saiu daqui — não que o servidor recebeu, nem que ele executou alguma coisa. Se o script precisa saber o resultado, o servidor tem que responder com um triggerClientEvent.
Exemplo
Seção intitulada “Exemplo”O cliente pede para comprar um item; o servidor confere o dinheiro, decide e responde.
No cliente:
-- resposta do servidoraddEvent("onCompraResultado", true)addEventHandler("onCompraResultado", root, function(aprovada, motivo) if aprovada then outputDebugString("compra concluída") else outputDebugString("compra recusada: " .. motivo, 2) endend)
bindKey("f2", "down", function() -- só o identificador do item; o preço é problema do servidor triggerServerEvent("onJogadorComprar", localPlayer, "colete")end)No servidor:
local precos = { colete = 500, capacete = 150 }
addEvent("onJogadorComprar", true) -- o `true` é o que permite o cliente dispararaddEventHandler("onJogadorComprar", root, function(item) local jogador = client -- quem realmente mandou o pacote local preco = precos[item] -- preço da tabela do servidor, não do cliente
if not preco then triggerClientEvent(jogador, "onCompraResultado", jogador, false, "item inexistente") return end
local saldo = getElementData(jogador, "dinheiro") or 0 if saldo < preco then triggerClientEvent(jogador, "onCompraResultado", jogador, false, "dinheiro insuficiente") return end
setElementData(jogador, "dinheiro", saldo - preco) triggerClientEvent(jogador, "onCompraResultado", jogador, true)end)Repare no formato do par: cada lado registra o nome com addEvent(nome, true) antes de conseguir receber, e cada lado passa um elemento de origem que vira o source do outro lado.
Veja também
Seção intitulada “Veja também”triggerLatentServerEvent— Envia um evento ao servidor com banda limitada.getLatentEventHandles— Lista os envios latentes ainda na fila para o servidor.getLatentEventStatus— Diz até onde chegou um envio latente na fila.cancelLatentEvent— Tira um envio latente da fila.