Underscore.js
Tiene acceso a la biblioteca Underscore.js (a través del objeto global_) para facilitarle las cosas. Underscore proporciona funciones auxiliares para cosas como_.each(para iterar a través de una matriz de objetos). Consulte la documentación de Underscore para obtener más información.
Registro
log(mensaje)
Puede utilizar esta función para registrar la salida en la consola Mod (API) de la página Editor de scripts. Útil para depurar sus scripts y comprender mejor lo que ocurre dentro del entorno de pruebas del mod (API).
on("change:graphic", function(obj) {
log("Se ha detectado un cambio en el ID del objeto: " + obj.id);
});
Pedido de objetos
toFront(obj)ytoBack(obj)
Estas dos funciones moverán un objeto sobre la mesa al frente (o atrás) de la capa en la que se encuentra actualmente. Tenga en cuenta que debe pasar un objeto real, como el que recibe en una devolución de llamada de evento o al llamar agetObjofindObjs.
Números aleatorios
enteroAleatorio(máximo)
¡Utilice esta función para los dados! Esta función tiene en cuenta sesgo del módulo , que garantiza que los números aleatorios resultantes también se distribuyan uniformemente entre 1 y MAX.
Devuelve un número entero aleatorio, siendo 1 el valor más bajo ymax el valor más alto. Se trata de la misma funcionalidad que utiliza Roll20 para sus tiradas de dados, y se ha demostrado estadística y rigurosamente que estos números son aleatorios.
Math.random()
Puede llamar a Math.random() como de costumbre en sus scripts Mod (API), confiando en que los resultados serán aleatorios, ya que el Math.random() «predeterminado» en Javascript ha sido sustituido por el PRNG criptográficamente seguro que utiliza Roll20. Por lo tanto, los scripts existentes que utilizan Math.random() pueden utilizarse sabiendo que los resultados son realmente tan aleatorios como es posible en un ordenador.
No utilice Math.random() si desea una distribución uniforme de los números en un intervalo. Aunque Math.random() le proporciona un número aleatorio tan bueno como el que puede gestionar Roll20, convertir ese número aleatorio en un rango con una distribución uniforme (como una tirada de dados) no es tan sencillo como multiplicar por un módulo o una llamada floor. UtilicerandomInteger(max)para esos casos.
El jugador es el GM
jugadorEsGM(idJugador)
La función Player Is GM devuelve una respuesta booleana sobre si un jugador del juego es GM o no. La función siempre devolverá la respuesta correcta en función del momento actual, por lo que, incluso si un GM decide volver a unirse como jugador o un jugador es ascendido a GM a mitad de la partida, playerIsGM() responderá en consecuencia sin necesidad de borrar la caché o reiniciar el entorno de pruebas Mod (API).
Personaje
setDefaultTokenForCharacter( carácter, token )
Establece el token predeterminado para el objeto Character proporcionado con los detalles del objeto Token proporcionado. Ambos objetos deben existir ya. Esto sobrescribirá cualquier token predeterminado asociado actualmente con el personaje.
Efectos especiales (FX)
spawnFx(x, y, tipo, idpágina)
Genera un efecto breve en la ubicación x, y del tipo. Si omite el identificador de página o pasa «undefined», se utilizará de forma predeterminada la página en la que se encuentran actualmente los jugadores («playerpageid» en el objeto Campaña).
Para los efectos integrados, el tipo debe ser una cadena y ser uno de los siguientes:color del rayo,color de la bomba,color del aliento,color de la burbuja,colorde la quemadura,color de la explosión,color del resplandor,color del misil,color de la nova,color de la salpicadura.
Donde «color» en lo anterior es uno de los siguientes:ácido,sangre,encanto,muerte,fuego,hielo,sagrado,magia,limo,humo,agua.
Para efectos personalizados, type debe ser el ID del objeto custfx para el efecto personalizado.
spawnFxBetweenPoints(punto1, punto2, tipo, idpágina)
Funciona igual que spawnFx, pero en lugar de un solo punto, se pasan dos puntos, en el formato {x: 100, y: 100}. Por ejemplo: spawnFxBetweenPoints({x: 100, y: 100}, {x: 400, y: 400}, "beam-acid"); El efecto «viajará» entre los dos puntos para los efectos que lo admitan (los mismos que permiten la agencia en el lado del cliente).
Los siguientes tipos de efectos deben utilizar siempre spawnFxBetweenPoints en lugar de spawnFx:beam-color,breath-color,splatter-color.
spawnFxWithDefinition(x, y, definiciónJSON, idpágina)
Genera un efecto personalizado ad hoc utilizando el JSON para definir algún efecto en la ubicación x, y. Si omite el identificador de página o pasa «undefined», se utilizará de forma predeterminada la página en la que se encuentran actualmente los jugadores («playerpageid» en el objeto Campaña).
definitionJSON es un objeto javascript que sigue la especificación JSON para Custom FX.
Listas de reproducción de Jukebox
playJukeboxPlaylist(playlistid)
La función de reproducción toma el ID de la carpeta (que se obtiene de la propiedad «_jukeboxfolder» del objeto Campaña) de la lista de reproducción y comienza a reproducirla para todos los participantes en el juego.
detenerJukeboxListaDeReproducción()
La función «stop» no requiere ningún argumento y detendrá cualquier lista de reproducción que se esté reproduciendo en ese momento.
Varios
sendPing(izquierda, arriba, idPágina, (opcional) idJugador, (opcional) moverTodo, (opcional) visiblePara)
Envía un «ping» a la mesa (lo mismo que si un jugador mantuviera pulsado el botón del ratón). Debe especificar las coordenadas superior/izquierda y el identificador de la página a la que se va a enviar el ping. Opcionalmente, puede especificar el ID del jugador que realizó el ping; si no lo hace, se asumirá «api» y el ping será amarillo.
Puede pasar «true» para la opción moveAll si desea mover también las vistas de los jugadores a esa ubicación.
Puede configurar los ID de los jugadores en visibleTo para los jugadores que pueden ver o ser movidos por el ping. Se presenta como un único identificador de jugador, una matriz o una cadena delimitada por comas.
on("chat:message", function(msg) {
// Introduzca "!pingtest" en el chat para ejecutar la prueba
if(msg.type == "api" && msg.content.indexOf("!pingtest") !== -1) {
// para obtener un jugador específico, utilice findObjs({_type: "player"})[i].id en lugar de null para el tercer parámetro
players = findObjs({_type: "player"});
player1 = players[1].id;
player2 = players[2].id;
// Cree una matriz con todos los ID de los jugadores
var allPlayerIDs = players.map(function(player) {
return player['id'];
});
// Haga ping a todos los usuarios de esta página en la misma ubicación.
sendPing(300, 300, Campaign().get('playerpageid'), null, true);
setTimeout(function() {
// Enviar un ping a todos los usuarios de esta página a la misma ubicación
sendPing(1500, 500, Campaign().get('playerpageid'), msg.playerid, true, "");
}, 1000);
setTimeout(function() {
// Envíe un ping solo al jugador especificado a esta ubicación
sendPing(1200, 500, Campaign().get('playerpageid'), null, true, player1);
}, 2000);
setTimeout(function() {
// Envíe un ping a una matriz de ID de jugadores (jugador 1 y 2) a esta ubicación
sendPing(900, 100, Campaign().get('playerpageid'), jugador2, true, [jugador1, jugador2]);
}, 3000);
setTimeout(function() {
// Envíe un ping a una lista separada por comas proporcionada como una cadena a esta ubicación
sendPing(300, 300, Campaign().get('playerpageid'), jugador1, true, allPlayerIDs.join());
}, 4000);
}
})
Una nota sobre distancias y cuadrículas en Roll20
En Roll20, una «unidad» siempre mide 70 píxeles en la pantalla. La «unidad» es el elemento básico sobre el que se construyen la distancia y la cuadrícula. Por defecto:
- 1 unidad = 5 pies
- 1 unidad = 1 cuadrícula
- Por lo tanto, 5 pies = 1 unidad = 1 cuadrado.
Sin embargo, el GM puede cambiar tanto el tamaño de la cuadrícula como la escala de la distancia. 1 unidad siempre equivale a 70 píxeles, pero el GM podría cambiar la configuración de modo que 1 unidad equivalga ahora a 10 pies (lo que significa que 70 píxeles = 10 pies), o que cada espacio de la cuadrícula equivalga a 2 unidades (lo que significa que cada espacio de la cuadrícula equivale ahora a 140 píxeles).