Debugando scripts com debugscript
Script não funciona e nada aparece? O MTA tem ferramentas de depuração simples e poderosas. Saber usá-las economiza horas.
/debugscript
Dentro do jogo (com permissão na ACL):
/debugscript 3
Abre uma janela com mensagens de depuração em tempo real:
| Nível | Mostra |
|---|---|
| 1 | Apenas erros |
| 2 | Erros e avisos |
| 3 | Erros, avisos e informações |
Para desativar: /debugscript 0.
Lendo uma mensagem
ERROR: rp_empregos/server.lua:42: attempt to perform arithmetic on a nil value (local 'valor')
- Resource e arquivo:
rp_empregos/server.lua; - Linha: 42;
- Problema: operação aritmética com uma variável
nil.
WARNING: rp_hud/client.lua:15: Bad argument @ 'dxDrawText' [Expected string at argument 1, got nil]
- A função
dxDrawTextrecebeunilonde esperava texto.
Erros mais comuns
| Mensagem | Causa comum |
|---|---|
attempt to index a nil value |
Tabela ou elemento inexistente |
attempt to call a nil value |
Função com nome errado ou não definida (ou em outro lado cliente/servidor) |
Bad argument @ 'funcao' |
Argumento de tipo errado ou elemento inválido |
attempt to compare number with nil |
Variável não inicializada |
Access denied @ 'funcao' |
Resource sem permissão na ACL |
outputDebugString
Adicione mensagens próprias para acompanhar o fluxo:
outputDebugString("Salário calculado: " .. tostring(valor))
outputDebugString("Algo errado aqui", 1) -- nível de erro
Use tostring para não gerar novos erros ao concatenar nil.
iprint
Para inspecionar tabelas inteiras:
iprint(dadosDoJogador)
Logs do servidor
mods/deathmatch/logs/server.log— log geral e erros de scripts de servidor;scripts.log— sescriptdebuglogfileestiver configurado nomtaserver.conf.
Erros de scripts de cliente aparecem no debugscript do jogador (e no console do cliente, F8), não no log do servidor.
Técnicas
- Isole o problema: comente partes do código até o erro sumir;
- Verifique o lado: função de cliente usada no servidor (ou vice-versa) é um erro comum;
- Confirme se o resource iniciou:
startcom erro de sintaxe impede o carregamento; - Use um servidor de teste para não afetar os jogadores.
Hospede seu servidor com a VittHost
No MTASA-BR da VittHost, você acompanha erros no console em tempo real e acessa os logs pelo painel Pterodactyl. Servidores no Brasil, proteção DDoS, MySQL incluso, downloads acelerados por nginx dedicado e teste grátis de 3 dias.