Estatísticas e diagnóstico
Funções para acompanhar o processo e a conexão do lado em que o script roda, hooks que deixam você observar cada evento e cada chamada de nativa, além de controlar a caixa exibida durante a transferência dos arquivos dos resources.
Oito funções existem no servidor e no cliente. isTransferBoxAlwaysVisible e isTransferBoxActive são a nona e a décima funções desta página e existem somente no cliente.
Estatísticas do processo e da conexão
Seção intitulada “Estatísticas do processo e da conexão”Caixa de download
Seção intitulada “Caixa de download”Quando um jogador entra, o cliente baixa os arquivos dos resources e mostra uma caixa de progresso na tela. Estas funções controlam essa caixa.
A caixa aparece quando o script pediu que ela apareça ou quando o jogador marcou nas configurações dele que ela deve aparecer sempre. Ou seja, esconder a caixa por script não passa por cima da preferência do jogador.
Debug hooks
Seção intitulada “Debug hooks”Um debug hook é uma função que o MTAX chama em volta de um evento ou de uma função nativa, antes ou depois de ela rodar. Serve para instrumentar um servidor — registrar, medir, auditar, bloquear — sem mexer nos resources que você quer observar.
Existem quatro tipos:
| Tipo | Dispara |
|---|---|
"preEvent" | Antes dos handlers de um evento rodarem. |
"postEvent" | Depois que todos eles rodaram. |
"preFunction" | Antes de uma função nativa rodar. |
"postFunction" | Depois que ela retornou. |
Os hooks de função só enxergam as nativas do MTAX — as funções que esta referência documenta. Funções Lua definidas pelos seus próprios resources não são interceptadas.
Argumentos que um hook recebe
Seção intitulada “Argumentos que um hook recebe”Um hook de evento é chamado com os parâmetros do próprio evento no fim de um prefixo fixo:
| Posição | Nome | Tipo | Descrição |
|---|---|---|---|
| 1 | resourceOrigem | resource | Resource que disparou o evento, ou nil quando quem disparou foi o próprio MTAX. |
| 2 | nomeDoEvento | string | Nome do evento. |
| 3 | origem | element | O source do evento. |
| 4 | cliente | element | Jogador de quem o evento veio, ou nil. |
| 5 | arquivo | string | Arquivo de onde partiu o disparo. |
| 6 | linha | number | Linha dentro desse arquivo. |
| 7… | — | any | Os parâmetros do próprio evento, em ordem. |
Um hook de função segue o mesmo formato, com os argumentos da chamada no fim:
| Posição | Nome | Tipo | Descrição |
|---|---|---|---|
| 1 | resourceOrigem | resource | Resource que fez a chamada, ou nil. |
| 2 | nomeDaFuncao | string | Nome da nativa sendo chamada. |
| 3 | permitidoPelaACL | bool | Sempre true. O MTAX não tem ACL por função; o argumento existe para que código de hook escrito para o MTA continue funcionando. |
| 4 | arquivo | string | Arquivo de onde partiu a chamada. |
| 5 | linha | number | Linha dentro desse arquivo. |
| 6… | — | any | Os argumentos com que a nativa foi chamada. |
Bloquear uma chamada
Seção intitulada “Bloquear uma chamada”Devolva a string "skip" de um hook "preEvent" ou "preFunction" e o MTAX descarta a chamada: os handlers do evento não rodam, a nativa não executa. Qualquer outro retorno deixa passar. O que um hook "postEvent" ou "postFunction" devolve é ignorado — a essa altura a chamada já aconteceu.
O próprio addDebugHook não pode ser bloqueado.
addDebugHook("preFunction", function(resourceOrigem, nome) if resourceOrigem and getResourceName(resourceOrigem) == "naoConfiavel" then return "skip" endend, { "kickPlayer", "shutdown" })Argumentos mascarados
Seção intitulada “Argumentos mascarados”Argumentos que carregam segredos nunca chegam a um hook como foram escritos:
| Nativa | O que o hook vê |
|---|---|
passwordHash, passwordVerify | A senha substituída por ***. |
teaEncode, teaDecode | A chave substituída por ***. |
dbConnect, dbExec, dbFree, dbPoll, dbPrepareString, dbQuery | Nenhum argumento. |
callRemote, fetchRemote | Só a URL, sem query string nem fragmento. |
encodeString, decodeString | Só os dois primeiros argumentos. |