API: Depuración

Siempre que escriba programas (desde los más sencillos hasta los más avanzados), inevitablemente encontrará errores que provocan un mal funcionamiento del programa. Debido a la naturaleza aislada de la API de Roll20, puede resultar un poco difícil saber exactamente qué está pasando. A continuación, le ofrecemos algunos consejos que pueden ayudarle a diagnosticar problemas con sus scripts.


on("change:graphic:left", function(obj) {
   //¿Cuál es el valor izquierdo del objeto que entra aquí?
   log(obj.get("left"));
   obj.set("left", obj.get("left") + 70);
   //¿Qué pasa ahora?
   log(obj.get("left"));
   //También puede depurar objetos completos para ver una lista de sus atributos actuales
   log(obj);
});

Encontrará el resultado de sus comandos de registro en la consola Mod (API), que se encuentra en la página Editor de scripts de su campaña.


Bloqueos por error

La API de Roll20 se recuperará automáticamente de pequeños errores en su script reiniciándolo según sea necesario. Sin embargo, si la API detecta un error grave que no puede recuperar, en lugar de reiniciar su script una y otra vez solo para que siga dando errores, pondrá un «bloqueo de error» en su campaña, lo que hará que sus scripts Mod (API) no se ejecuten hasta que se resuelva el error. Si sus scripts se han bloqueado por error, verá un mensaje como este en la página del Editor de scripts:

Error lock.png

¡No se preocupe! Simplemente realice los cambios necesarios en sus scripts para intentar resolver el problema y, a continuación, haga clic en el botón «Guardar script». Al hacerlo, se «borrará» el bloqueo por error y la API volverá a intentar ejecutar sus scripts. Si se produce otro error, se volverá a aplicar el bloqueo por error. Puede repetir este proceso tantas veces como sea necesario para solucionar el error. La API nunca le impedirá borrar sus bloqueos por error por haber fallado demasiadas veces.


Errores comunes

A continuación se muestran algunos de los errores más comunes:


myvar no está definido

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

Aunque el mensaje de error dice «no definido», lo que realmente ha ocurrido es que la variable no estádeclarada. Una de las causas más comunes de esto es un error tipográfico en el nombre de una de sus variables, como por ejemplo, omitir una letra mayúscula.


No se puede leer la propiedad «myProperty» o no se puede llamar al método «myMethod».

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

myVarno está definido, por lo que el script no sabe cómo gestionar su intento de acceder a una propiedad demyVar. Esto probablemente se deba a uno de los siguientes motivos:

  • Intentó encontrar un objeto, pero el resultado fue indefinido. Realice algunas comprobaciones de errores para asegurarse de que su variable está definida antes de acceder a sus propiedades.
  • Su variable se está definiendo de forma condicional (con una serie de sentenciasifo algo similar), y ninguna de sus condiciones coincidió, por lo que su variable quedó declarada, pero nunca definida. Asegúrese de tener condiciones para todas las posibilidades, cree una opción predeterminada o realice una comprobación de errores para asegurarse de que su variable está definida antes de acceder a sus propiedades.

Token inesperado

Le falta un carácter o tiene un carácter de más. Esto puede deberse a que se ha olvidado una coma entre una lista de propiedades en un objeto o elementos en una matriz, o a que hay un paréntesis de cierre de más o de menos al final de una llamada a un método anidado complicado.


Se debe acceder a la mayoría de las propiedades de los objetos Roll20 mediante los métodosget()yset(). Al utilizarget(), debe omitir el guión bajo inicial en las propiedades de solo lectura.

¿Fue útil este artículo?
Usuarios a los que les pareció útil: 20 de 122