API: Depuração

Sempre que estiver escrevendo programas (dos mais simples aos mais avançados), inevitavelmente você encontrará bugs que fazem o programa funcionar incorretamente. Devido à natureza isolada da API do Roll20, pode ser um pouco difícil saber exatamente o que está acontecendo. Então, aqui estão algumas dicas que você pode usar para ajudar a diagnosticar problemas com seus scripts.


Como você não tem acesso direto ao ambiente onde os scripts estão sendo executados, você pode confiar em uma quantidade considerável de chamadas de logpara saber o que está acontecendo com seu programa. Por exemplo, se você não tem certeza por que um token não está se movendo corretamente e deseja obter algumas informações sobre os valores que estão sendo usados, você pode fazer:

on("change:graphic:left", function(obj) {
   //Qual é o valor de left do objeto chegando aqui?
   log(obj.get("left"));
   obj.set("left", obj.get("left") + 70);
   //E agora?
   log(obj.get("left"));
   //Você também pode depurar objetos inteiros para ver uma lista de seus atributos atuais
   log(obj);
});

Você encontrará a saída de seus comandos de log no Console da API, que está na página do Editor de Scripts para sua Campanha.


Erros de Bloqueio

A API Roll20 irá se recuperar automaticamente de pequenos erros no seu script reiniciando-o conforme necessário. No entanto, se a API detectar um erro grave do qual não possa se recuperar, em vez de simplesmente reiniciar seu script várias vezes apenas para continuar com erros, ela colocará um "bloqueio de erro" na sua Campanha, fazendo com que seus Scripts de API não sejam executados até que o erro seja resolvido. Se seus scripts estiverem bloqueados por erro, você verá uma mensagem como esta na página do Editor de Scripts:

Bloqueio de erro.png

Não se preocupe! Faça alterações em seus scripts para tentar resolver o problema e, em seguida, clique no botão "Salvar Script". Quando fizer isso, o bloqueio de erro será "limpo" e a API tentará executar seus scripts novamente. Se houver outro erro, o bloqueio de erro será reaplicado. Você pode repetir esse processo quantas vezes forem necessárias para corrigir o erro, a API nunca impedirá que você limpe seus bloqueios de erro porque você falhou muitas vezes.


Erros Comuns

Abaixo estão alguns erros mais comumente encontrados:


myvar não está definido

on("ready", function() {
    var myVar;
    log(myvar);
});

Embora a mensagem de erro diga "not defined" (não definido), o que realmente aconteceu é que a variável não estádeclarada. Uma das causas mais comuns é um erro de digitação no nome de uma das suas variáveis, como a falta de uma letra maiúscula.


Não é possível ler a propriedade "myProperty" ou não é possível chamar o método "myMethod

on("ready", function() {
    var myVar;
    log(myVar.myProperty);
    log(myVar.myMethod());
});

myVarnão está definido, pelo que o script não consegue perceber como lidar com o facto de estar a tentar aceder a uma propriedade demyVar. Isto deve-se provavelmente a um dos seguintes factores:

  • Você tentou encontrar um objeto, mas o resultado foi indefinido. Realize alguma verificação de erro para garantir que sua variável seja definida antes de acessar suas propriedades.
  • Sua variável está sendo definida condicionalmente (com uma série desedeclarações ou algo semelhante), e nenhuma de suas condições correspondeu, então sua variável ficou declarada, mas nunca definida. Certifique-se de ter condições para todas as possibilidades, ou crie uma opção padrão, ou faça uma verificação de erro para garantir que sua variável seja definida antes de acessar suas propriedades.

Token inesperado

Você está faltando um caractere ou tem um caractere a mais. Isso pode resultar de esquecer uma vírgula entre uma lista de propriedades em um objeto ou elementos em uma matriz, ou ter uma quantidade a mais ou a menos de parênteses de fechamento no final de uma chamada de método aninhada complicada.


A maioria das propriedades nos objetos Roll20 precisa ser acessada através dos métodos get() e set(). Ao usar get(), você deve omitir o sublinhado inicial nas propriedades somente leitura.

Este artigo foi útil?
Utilizadores que acharam útil: 14 de 104