El editor de guiones
Para editar los scripts de su juego, haga clic en el enlace «Mod Scripts» de la página «Detalles del juego» correspondiente a su juego (en el mismo lugar donde se encuentran opciones como «Registro de chat » y «Copiar/Ampliar juego» ). Se le mostrarán varias funciones:
- Una lista de pestañas en la parte superior. Su juego puede contar con varios scripts para facilitar la organización. Tenga en cuenta que todos los scripts seguirán ejecutándose en el mismo contexto, lo que significa que no debe haber varios scripts intentando sobrescribir los mismos valores al mismo tiempo, ya que podría obtener resultados no deseados.
- Un editor de código de scripts. Puede utilizar este editor o editar sus scripts en un editor externo de su elección y, a continuación, pegarlos aquí.
- Una consola de salida «Mod» situada en la parte inferior (véase más abajo).
Cada vez que haga clic en el botón «Guardar scripts», se reiniciará el entorno de pruebas de su juego (con lo que se perderán todos los datos en memoria que no se hayan guardado en el objeto de estado o en los objetos de Roll20). Esto también se aplica si añade un nuevo script, elimina un script o activa o desactiva un script.
La consola de salida Mod
La consola de salida de Mod es la «ventana» a sus scripts. Dado que los scripts de mod se ejecutan en un entorno aislado, no tiene acceso directo a ellos mientras se están ejecutando para consultar información sobre los resultados o los errores del script. La consola de salida de Mod muestra esta información fuera del entorno de pruebas, de modo que pueda consultarla mientras edita sus scripts. Aquí aparecerán todos los comandos «log()», así como cualquier error que se produzca durante la ejecución de sus scripts. Para obtener más información, consulte el artículo sobre la depuración de scripts.
Solo para Mod Script Sandbox v1.5. Siempre que sea posible, los mensajes de error incluyen un objeto de contexto para que pueda ver qué objeto de Roll20 se ha visto afectado (tipo e identificador).
Scripts reactivos: escuchar eventos, modificar objetos
El primer tipo (y el más sencillo) de uso de los scripts de mod consiste en detectar los cambios que se producen sobre la mesa de juego y, a continuación, ofrecer funcionalidades adicionales en función de los objetos afectados por dichos cambios. Este tipo de script se compone de una serie de funciones que escuchan los eventos que ocurren durante el juego. A continuación, modificará los objetos que se pasan durante esos eventos, lo que cambiará lo que ocurre en la mesa.
on("change:graphic", function(obj) {
obj.set({
left: obj.get("left") + 70
});
});
Como puede ver, hemos creado una función «on» sencilla que se ejecutará cada vez que se detecte el evento «change:graphic ». A la función se le pasa el objeto gráfico, obj. Para realizar un cambio, basta con modificar obj mediante la función set: cualquier propiedad que modifiquemos se detectará y se actualizará en la mesa.
Debe utilizar establecer y get para establecer y obtener los valores actuales de los objetos; de lo contrario, los cambios no se guardarán. (Véanse los referencia de objetos para consultar una lista de los tipos de objetos y sus propiedades, así como una lista de todos los eventos y los argumentos que se pasan a cada uno de ellos.)
Scripts proactivos: hacer cosas sin la intervención del usuario
Además de reaccionar ante los eventos de los usuarios, también puede realizar acciones de forma automática con los scripts de mod que no estén vinculadas a ningún evento concreto de los jugadores. Por ejemplo, imaginemos que tenemos una ficha que patrulla de un lado a otro por el mapa.
Nota: Aunque este tipo de script no depende de la interacción del usuario, los scripts de mod de su partida solo se ejecutarán cuando haya al menos una persona conectada a ella.
on("ready", function() {
//Esperar a que se active el evento «ready» para saber que el juego se ha cargado por completo.
Obtenga una referencia a nuestro token de patrulla.
var patroltoken = findObjs({_type: "graphic", name: "Guard A"})[0]; //Sabemos que hay un token en el juego llamado «Guard A».
var direction = -1*70; //Avanzar 70 píxeles hacia la izquierda.
var stepstaken = 0; //¿Cuántos pasos han caminado en la dirección actual?
setInterval(function() {
if (pasosRecorridos > 3) {
//¡Cambie de dirección!
dirección = dirección * -1; //Esto «invertirá» la dirección en la que caminamos
pasosRecorridos = 0; //Restablece los pasos a 0.
}
patroltoken.set("left", patroltoken.get("left") + direction); //¡Adelante!
stepstaken++;
}, 5000); // realizar una acción cada 5 segundos
});
Un tratado sobre funciones asíncronas
Algunos valores no están disponibles de inmediato. Los campos de personajes y de material de apoyo, como «bio», «notes», «gmnotes» y «character_defaulttoken», requieren una función de devolución de llamada en get():
character.get("bio", function(bio) {
log(bio);
});
sendChat admite una función de devolución de llamada opcional, de modo que los resultados de la tirada se devuelvan a su script en lugar de publicarse en el chat. El evento «onSheetWorkerCompleted» se ejecuta una vez que la pila actual de «sheet workers» haya finalizado.
Solo para Mod Script Sandbox v1.5. La función `character.createToken ` es asíncrona, ya que debe obtener ` _defaulttoken ` de forma asíncrona. El gráfico creado se pasa a una función de devolución de llamada, no se devuelve.
Tenga en cuenta que los eventos «prev on change » no contienen el texto de esos campos asíncronos. Si necesita el valor anterior del blob, guárdelo usted mismo en la caché.