Pular para o conteúdo

triggerLatentClientEvent

Servidor Manipulação de eventos

Envia um evento à máquina dos jogadores com banda limitada.

bool triggerLatentClientEvent ( [ element/table paraQuem = root, ] string nomeDoEvento [, int banda = 50000, bool persistir = false ], element origem [, ... ] )
NomeTipoPadrãoDescrição
paraQuemelement ou tablerootUm jogador, uma tabela de jogadores, ou um elemento pai — todos os jogadores abaixo dele recebem o evento. Se for omitido, o primeiro argumento é o nome do evento, enviado a todo mundo.
nomeDoEventostring—Evento a disparar no cliente.
bandanumber50000Bytes por segundo que o envio pode usar. 0 pula a fila e funciona como triggerClientEvent.
persistirboolfalseCom false, um envio que não terminou é descartado se o seu resource parar. true deixa ele terminar mesmo assim.
origemelement—Elemento de origem, que vira source no cliente.
...any—Argumentos repassados ao manipulador.

true quando o envio entra na fila — inclusive quando paraQuem não bateu com nenhum jogador. Um argumento inválido registra um aviso e devolve false; um nome de evento vazio devolve false sem aviso.

A função não devolve um identificador. Para acompanhar ou cancelar o envio, chame getLatentEventHandles para aquele jogador logo em seguida: o envio novo é a última entrada.

Cada jogador tem uma fila, e os envios saem dela em ordem, um de cada vez. A fila anda na maior banda entre os envios que esperam nela, nunca abaixo de 500 bytes por segundo. Um envio é entregue inteiro quando o tempo de transferência dele acaba: o cliente não vê nada antes disso, e o manipulador dele recebe o evento exatamente como se tivesse vindo de triggerClientEvent. A mesma regra vale do lado que recebe: o script do cliente precisa ter registrado o nome com addEvent(nomeDoEvento, true).

Um jogador que se desconecta leva a fila dele junto.

-- uma tabela grande, enviada sem entupir a conexão do jogador
triggerLatentClientEvent(jogador, "onDadosDoMapaRecebidos", 20000, false, resourceRoot, dadosDoMapa)
local identificadores = getLatentEventHandles(jogador)
local identificador = identificadores[#identificadores]
setTimer(function()
local estado = getLatentEventStatus(jogador, identificador)
if estado then
outputDebugString(("dados do mapa: %d%%"):format(estado.percentComplete))
end
end, 1000, 10)