Servidores de Jogos

Debugando scripts com debugscript

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 dxDrawText recebeu nil onde 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 — se scriptdebuglogfile estiver configurado no mtaserver.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: start com 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.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS