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); });
Encontrarás a saída dos teus comandos de registo na Consola Mod (API), que se encontra na página do Editor de Scripts para a tua 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 detetar um erro grave do qual não consiga recuperar, em vez de reiniciar o teu script repetidamente apenas para continuar a dar erro, irá colocar um "bloqueio de erro" na tua Campanha que faz com que os teus Scripts Mod (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:
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()); });
myVar
nã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 de
se
declaraçõ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.