Pular para o conteúdo

onPlayerChangesProtectedData

Servidor Não cancelável Elementos

Disparado quando um cliente tenta escrever um dado de elemento que não tem permissão de escrever.

O jogador que tentou.

PosiçãoNomeTipoDescrição
1oElementoelementElemento que o cliente mirou.
2chavestringChave que ele tentou escrever.
3valoranyValor que ele tentou escrever, ou nil quando tentou remover a chave.

Não.

A escrita já foi recusada antes de o evento disparar.

Uma escrita vinda do cliente é permitida ou recusada pela confiança de cliente da chave, definida pelo quinto argumento de setElementData. Uma chave sem confiança definida segue o sv_elementDataWhitelist: recusada quando a lista branca está ligada, permitida quando está desligada.

O servidor nunca aplica uma escrita recusada. Ele registra o fato (no máximo uma vez a cada poucos segundos, para que uma enxurrada não encha o log), dispara este evento e devolve o valor verdadeiro àquele cliente para que a cópia dele pare de divergir.

Este é o gancho para pegar um cliente modificado: um cliente honesto nunca chega aqui, porque o resource que roda nele nem tenta a escrita.

addEventHandler("onPlayerChangesProtectedData", root, function(oElemento, chave, valor)
outputServerLog(getPlayerName(source) .. " tentou definir '" .. chave .. "' como " .. tostring(valor))
kickPlayer(source, "cliente modificado")
end)