API: Documentación de funciones

Roll20 ofrece una serie de funciones que no forman parte del JavaScript básico ni de ninguna otra biblioteca.


Variables globales

Variable Descripción
_ Este es el objeto del espacio de nombres para el Underscore.js .
estado Las propiedades del objeto de estado se mantendrán entre sesiones de juego.

_ (Guión bajo)

Este es el objeto del espacio de nombres para el Underscore.js . Underscore tiene muchas funciones para la manipulación de colecciones.


estado

Las propiedades del objeto de estado se mantendrán entre sesiones de juego. El mismo objeto de estado también se comparte entre todos los scripts Mod (API) de una campaña, por lo que se recomienda encarecidamente que, al escribir valores en el estado, minimice su huella tanto como sea posible para evitar colisiones de nombres. Nota: el estado se serializa con JSON, por lo que no puede almacenar funciones u objetos con referencias cíclicas.


Funciones globales

Tipo de retorno Función Descripción
Objeto Roll20 Campaña Obtiene el objeto único Campaign Roll20.
Objeto Roll20 crearObj Crea un nuevo objeto Roll20.
Matriz de objetos Roll20 filtrarObjs Obtiene todos los objetos Roll20 que superan una prueba de predicado.
Matriz de objetos Roll20 findObjs Obtiene todos los objetos Roll20 con propiedades que coinciden con un conjunto determinado de atributos.
Matriz de objetos Roll20 obtenerTodosLosObjetos Obtiene todos los objetos Roll20 de la campaña.
varía obtenerAtributoPorNombre Obtiene el valor actual o máximo de un atributo del objeto Roll20.
Objeto Roll20 getObj Obtiene un objeto Roll20 específico.
  u Registra un mensaje en la consola Mod (API).
  en Registra un controlador de eventos.
  onSheetWorkerCompleted Registra un controlador de eventos único para que se ejecute después de una pila completa de scripts de Sheet Worker .
Booleano jugadorEsGM Comprueba si un jugador tiene actualmente privilegios de GM.
  playJukeboxLista de reproducción Comience a reproducir una lista de reproducción del jukebox.
Número entero aleatorio Genera un valor entero aleatorio.
  enviarChat Envía un mensaje de chat.
  enviarPing Envía un ping similar a mantener pulsado el botón izquierdo del ratón.
  spawnFx Genera un emisor de partículas.
  spawnFxBetweenPoints Genera un emisor de partículas que se mueve de un punto a otro.
  spawnFxWithDefinition Genera un emisor de partículas que no está representado por un objeto FX Roll20.
  detenerJukeboxLista de reproducción Detiene todas las listas de reproducción que se están reproduciendo actualmente en el jukebox.
  Atrás Mueve un objeto gráfico Roll20 debajo de todos los demás gráficos de la misma capa de mesa.
  al frente Mueve un objeto gráfico Roll20 por encima de todos los demás gráficos de la misma capa de mesa.

Campaña

Parámetros

Sin parámetros

Devoluciones

El objeto Roll20 de campaña única.

Ejemplos

var currentPageID = Campaign().get('playerpageid'),
    currentPage = getObj('page', currentPageID);

crearObj

Parámetros

TYPE(String) El tipo de objeto Roll20 que se va a crear. Solo se pueden crear «gráfico», «texto», «ruta», «carácter», «habilidad», «atributo», «folleto», «tabla desplegable», «elemento de tabla» y «macro». ATTRIBUTOS (objeto) Los valores iniciales que se utilizarán para las propiedades del objeto Roll20.

Devoluciones

El objeto Roll20 que se ha creado.

Ejemplos

Al crear un objeto Roll20 que tiene un objeto padre (como crear un objeto Roll20 de atributo, que es un objeto hijo de un objeto Roll20 de personaje), debe proporcionar el identificador del objeto padre enlos atributos.

on('add:character', function(obj) {
    createObj('attribute', {
        name: 'Strength',
        current: 0,
        max: 30,
        characterid: obj.id
    });
});

Al crear un objeto Roll20 de ruta, debe proporcionar un valor para la propiedad de solo lectura_path. Esta es una excepción a la regla que impide establecer el valor de las propiedades de solo lectura al crear objetos Roll20.

createObj('path', {
    left: 7000,
    top: 140,
    width: 140,
    height: 140,
    layer: 'objects',
    path: JSON.stringify([['M', 0, 0], ['L', 70, 0], ['L', 0, 70], ['L', 0, 0]])
});

Al crear un objeto Roll20 para repartir, no puede establecer el texto ni las notas del GM en el momento de la creación.

var handout = createObj('handout', {
    name: 'A Letter Addressed to You',
    inplayerjournals: 'all',
    archived: false
});
handout.set({
    notes: 'Notes can only be set after the handout is created',
    gmnotes: 'GM Notes can only be set after the handout is created'
});

filtrarObj

Parámetros

CALLBACK (función) Una función predicativa para comprobar todos los objetos Roll20. La función de devolución de llamada recibe un objeto Roll20 como parámetro y debe devolver true (para los objetos Roll20 que se incluirán en el valor de retorno filterObjs) o false (para todos los demás objetos Roll20).

Devoluciones

Una matriz de objetos Roll20 que han superado la prueba del predicado.

Ejemplos

var tokenName = getMyTokenName(),
    duplicateTokens = filterObjs(function(obj) {
        if (obj.get('type') !== 'graphic' || obj.get('subtype') !== 'token' || obj.get('name') === tokenName) return false;
        return obj.get('name').indexOf(tokenName) === 0 && /\d+$/.text(obj.get('name'));
});

findObjs

Parámetros

ATTRIBUTES (objeto) Una colección de pares clave:valor para emparejar con objetos Roll20 en la campaña. OPTIONS (objeto, opcional) Si options.caseInsensitive es verdadero, las comparaciones de cadenas entre objetos Roll20 y atributos no distinguirán entre mayúsculas y minúsculas.

Devoluciones

Una matriz de objetos Roll20 con propiedades que coinciden conlos atributos.

Ejemplos

var npcs = findObjs({ type: 'character', controlledby: '' });

obtenerTodosLosObjetos

Parámetros

Sin parámetros

Devoluciones

Una matriz de todos los objetos Roll20 de la campaña.

Ejemplos

var todo = getAllObjs();

obtenerAtributoPorNombre

Parámetros

CHARACTER_ID (cadena) El identificador del objeto Roll20 del personaje que es el padre del objeto Roll20 del atributo cuyo valor desea obtener. ATTRIBUTE_NAME(cadena) El nombre del objeto Roll20 del atributo cuyo valor desea obtener. VALUE_TYPE(cadena, opcional) «current» o «max» (el valor predeterminado es «current» si se omite).

Devoluciones

La propiedadactualomáximadel atributo correspondiente. Si no se establece la propiedad deseada, se utilizará el valor predeterminado especificado en la hoja de personajes (si existe uno).

Ejemplos

var personaje = getMyCharacter(),
    fuerza = getAttrByName(personaje.id, 'fuerza'),
    fuerza_máx = getAttrByName(personaje.id, 'fuerza', 'máx');

getObj

Parámetros

TYPE(String) El tipo de objeto Roll20 que se desea obtener. ID(String) El identificador único del objeto Roll20 que se desea obtener.

Devoluciones

El objeto Roll20 especificado.

Ejemplos

on('chat:message', function(msg) {
    var sendingPlayer = getObj('player', msg.playerid);
});

registro

Parámetros

MESSAGE (varía) El mensaje que se publicará en la consola Mod (API). El parámetro del mensaje se transformará en una cadena con JSON.stringify.

Devoluciones

(Nulo)

Ejemplos

on('chat:message', function(msg) {
    log('Mensaje recibido de:');
    log(getObj('player', msg.playerid));
});
Mensaje recibido de:
{"_d20userid":"123456","_displayname":"John Doe","speakingas":"","_online":true,"color":"#885b68","_macrobar":"-J16Z-dRU5tleKiKOg0X|-K3F_4q_b1p-Vdiwgn1t","showmacrobar":true,"_id":"-J16Z-dRU5tleKiKOc0X","_type":"player","_lastpage":""}

en

Parámetros

EVENT(Cadena) Hay cinco tipos de eventos: ready, change, add, destroy y chat. A excepción de ready, todos los tipos de eventos deben ir acompañados de un tipo de objeto. En el chat, siempre se trata de mensajes. Para todo lo demás, esta es la propiedad de tipo de un objeto Roll20. Además del tipo de objeto, changeevents también puede especificar opcionalmente una propiedad del objeto Roll20 especificado que se va a supervisar. Las dos o tres partes del evento (tipo, objeto y, opcionalmente, propiedad) se separan con dos puntos. Por lo tanto, las cadenas de eventos válidas incluyen, entre otras, «ready», «chat:message», «change:graphic», «change:campaign:playerpageid», «add:character» y «destroy:handout». CALLBACK(Función) La función que se invocará cuando se active el evento especificado. Los parámetros pasados dependen del tipo de evento: los eventos ready no tienen parámetros de devolución de llamada. Los eventos change tienen un parámetro obj, que es una referencia al objeto Roll20 tal y como existe después del cambio, y un parámetro prev, que es un objeto JavaScript antiguo con propiedades que coinciden con el objeto Roll20 antes del evento de cambio.Los eventos «add» tienen un parámetro «obj», que es una referencia al nuevo objeto Roll20. Los eventos «destroy» tienen un parámetro «obj», que es una referencia al objeto Roll20 que ya no existe. Los eventos «chat» tienen un parámetro «msg», que contiene los detalles del mensaje que se envió al chat.

Devoluciones

(Nulo)

Ejemplos

Los eventos se activan en el orden en que se registraron, y de más específico a menos específico. En este ejemplo, un cambio en la propiedadizquierdade un objeto gráfico Roll20 dará lugar a que se llame ala función3, seguida dela función1y luego dela función2.

on('change:graphic', función1);
on('change:graphic', función2);
on('change:graphic:left', función3);

La función «addevents» intentará activarse para los objetos Roll20 que ya se encuentran en la campaña cuando comience una nueva sesión. Para evitar este comportamiento, puede esperar a registrar su eventoaddhasta que se active el eventoready.

on('add:graphic', function(obj) {
    // Cuando comience la sesión, esta función se llamará para cada gráfico de la campaña
    // Esta función también se llamará cada vez que se cree un nuevo objeto gráfico Roll20
});

on('ready', function() {
    on('add:graphic', function(obj) {
        // Esta función *solo* se invocará cuando se cree un nuevo objeto gráfico Roll20, no para los que ya existen
    });
});

El parámetroprepara los eventosde cambiono es un objeto Roll20, sino un objeto JavaScript antiguo. Por lo tanto, no puede utilizar las funcionesgetoset, ni omitir los guiones bajos iniciales en las propiedades de solo lectura.

on('change:graphic', function(obj, prev) {
    var id1 = obj.id,        // los tres son equivalentes
        id2 = obj.get('id'),
        id3 = obj.get('_id'),

        id4 = prev.id,        // indefinido
        id5 = prev.get('id'), // undefined no es una función
        id6 = prev._id;       // correcto

    // ambos son equivalentes
    obj.set('left', 70);
    obj.set({
        left: 70
    });

    prev.set('left', 70); // undefined no es una función
    prev.set({ // undefined no es una función
        left: 70
    });
    prev.left = 70; // correcto, aunque no cambiará nada en la mesa
});

Para los campos asíncronos de los objetos Roll20 de personajes y folletos (notas,notas del GM ybiografía), el parámetroprevno contendrá los datos que necesita. (En su lugar, tendrá un identificador numérico utilizado por el sistema). Si necesita acceder al valor anterior de uno de estos campos, tendrá que realizar un seguimiento por su cuenta:

on('ready', function() {
    if (!state.example) state.example = { bioCache: {} };
});

on('change:character:bio', function(obj, prev) {
    obj.get('bio', function(text) {
        state.example.bioCache[obj.id] = text;

        // hacer cosas...

        if (shouldRevertBio()) {
            obj.set('bio', state.example.bioCache[obj.id]);
        }
    });
});

onSheetWorkerCompleted

Parámetros

CALLBACK (Función) La función que se invocará cuando se complete la «pila» actual de scripts de Sheet Worker.

Devoluciones

(Nulo)

Ejemplos

Esta función está pensada para ser llamada antes de setWithWorker. La funciónde devolución de llamadasolo se invocará una vez.

var myCharacter = ...,
    mySourceAttr = findObjs({ type: 'attribute', characterid: myCharacter.id, name: 'mySourceAttribute' })[0];

onSheetWorkerCompleted(function() {
    var calculatedAttr = findObjs({ type: 'attribute', characterid: myCharacter.id, name: 'myCalculatedAttribute' })[0];
    // hacer algo con calculatedAttr.get('current');
});
mySourceAttr.setWithWorker({ current: 5 });

 


jugadorEsGM

Parámetros

PLAYER_ID(Cadena) El identificador del objeto Roll20 del jugador que se va a comprobar.

Devoluciones

verdaderosi el jugador tiene actualmente permisos de GM, ofalsoen caso contrario.

Ejemplos

Esta función es especialmente útil para limitar los comandos Mod (API) al uso de GM.

on('chat:message', function(msg) {
    if (msg.type !== 'api') return;

    if (msg.content.indexOf('!playercommand') === 0) {
        // ...
    } else if (msg.content.indexOf('!gmcommand') === 0) {
        if (!playerIsGM(msg.playerid)) return;
        // ...
    }
});

playJukeboxLista de reproducción

Parámetros

PLAYLIST_ID (cadena) El identificador de la lista de reproducción que se va a reproducir.

Devoluciones

(Nulo)

Ejemplos

var playlists = JSON.parse(Campaign().get('jukeboxfolder')),
    myPlaylist = _.find(playlists, (folder) => _.isObject(folder) && folder.n === myPlaylistName);
playJukeboxPlaylist(myPlaylist.id);

entero aleatorio

Parámetros

MAX(Número) El número máximo que se devolverá, incluido.

Devoluciones

Un número entero aleatorio entre 1 (incluido) ymáx.(incluido). Esta función tiene una mejor distribución queMath.random() y se recomienda su uso en lugar de esta última. Esta función no utiliza el Quantum Roll que utiliza el motor de dados, pero sí utiliza el mismo algoritmo pseudoaleatorio al que recurrirá el motor de dados si Quantum Roll no está disponible.

Ejemplos

Dado que esta función devuelve un número entero entre 1 ymax, es ideal para generar rápidamente el resultado de una tirada de dados si no necesita toda la potencia del motor de dados de Roll20 motor de dados.

var d20Result = randomInteger(20); // equivale aproximadamente a lanzar un dado de 20 caras

sendChat Asíncrono

Parámetros

SPEAKINGAS(Cadena) El nombre que se adjuntará al mensaje que se envía. Si speakingAs tiene el formato jugador|id_jugador o personaje|id_personaje, el mensaje se enviará como ese jugador o personaje. De lo contrario, el mensaje utilizará el nombre dado como si un GM hubiera utilizado el comando /as. MESSAGE(String) El mensaje que se enviará al chat. CALLBACK(Función, opcional) Si se especifica callback, el resultado del mensaje de chat se le pasará a él en lugar de aparecer en el chat. El parámetro del método de devolución de llamada es una matriz de objetos de mensaje. OPTIONS (Objeto, opcional) Si options.noarchive es verdadero, el mensaje no se añadirá al archivo del chat. Si options.use3d es verdadero, las tiradas de dados en el mensaje utilizarán la función de dados 3D. Las opciones no son aplicables si se especifica la devolución de llamada.

Devoluciones

(Nulo)

Ejemplos

sendChat('Ejemplo', 'Este es un ejemplo sencillo.');

Puede escribir fácilmente código para enviar un mensaje como el mismo jugador o personaje que activó un eventochat:message.

on('chat:message', function(msg) {
    var character = findObjs({ type: 'character', name: msg.who })[0],
        player = getObj('player', msg.playerid),
        message = ' dijo algo';

    if (personaje) sendChat('personaje|'+personaje.id, personaje.get('nombre')+mensaje);
    else sendChat('jugador|'+jugador.id, jugador.get('nombre de usuario')+mensaje);
});

El parámetrocallbackes útil si necesita aprovechar el motor de dados de Roll20. motor de dados. No hay ninguna necesidad especial de utilizar el valorspeakingAsal utilizar ladevolución de llamada, ya que el mensaje no aparecerá en el chat de todos modos.

sendChat('', '/r 2d20k1+'+strengthMod, function(ops) {
    var msg = ops[0];
    // ...
});

options.noarchiveestá diseñado principalmente para enviar a los reproductores menús creados a partir de botones de comando API sin saturar su historial de chat.

sendChat('Sistema', '[Borrar cambios](!clear)\n[Añadir mosaico](!add)\n[Ver muestra](!view)\n[Guardar diseño](!save)', null, { noarchive: true });

enviarPing

Parámetros

LEFT(Número) La coordenada x donde colocar el ping. TOP(Número) La coordenada y donde colocar el ping. PAGE_ID(Cadena) El identificador del objeto Roll20 de la página donde colocar el ping. PLAYER_ID(Cadena, opcional) El ping utilizará el color del jugador especificado. Si se omite player_id, el ping será amarillo. MOVEALL (Booleano, opcional) Si moveAll es verdadero, todos los jugadores de la página correspondiente tendrán sus vistas centradas en el ping.

Nota:En este momento, solo los GM tendrán sus vistas centradas simoveAllesverdadero. Este comportamiento está documentado aquí.

Devoluciones

(Nulo)

Ejemplos

on('chat:message', function(msg) {
    var obj;
    if (msg.type === 'api' && msg.content.indexOf('!ping') === 0) {
        if (!msg.selected) return;
        obj = getObj(msg.selected[0]._type, msg.selected[0]._id);
        sendPing(obj.get('left'), obj.get('top'), obj.get('pageid'), msg.playerid, true); // centrar a todos en el token seleccionado
    }
});

spawnFx

Parámetros

LEFT(Número) La coordenada x para colocar el emisor de partículas. TOP(Número) La coordenada y para colocar el emisor de partículas. TYPE(Cadena) El tipo de emisor de partículas que se va a colocar. Para los efectos incorporados, debería ser «tipo-color», donde tipo es uno de los siguientes: bomba, burbujeante, quemadura, estallido, explosión, resplandor, misil o nova, y color es uno de los siguientes: ácido, sangre, encanto, muerte, fuego, hielo, sagrado, magia, limo, humo o agua. Para efectos personalizados, este debe ser el identificador del objeto FX Roll20. Nota: los tipos beam, breath y splatter no se pueden utilizar con spawnFx. Véase spawnFxBetweenPoints en su lugar. PAGE_ID(cadena, opcional) El identificador del objeto Roll20 de la página en el que colocar el emisor de partículas. Si se omite, se utilizará Campaign().get('playerpageid') en su lugar.

Devoluciones

(Nulo)

Ejemplos

spawnFx(1400, 1400, 'burbujas de ácido');

spawnFxBetweenPoints

Parámetros

START(Objeto) El punto de partida del emisor de partículas. El punto debe tener el formato { x: número, y: número }.END(Objeto) El punto final para el emisor de partículas. El punto debe tener el formato { x: número, y: número }. TIPO(Cadena) El tipo de emisor de partículas que se va a colocar. Para los efectos incorporados, debería ser «tipo-color», donde el tipo es uno de los siguientes: rayo, bomba, aliento, burbujeo, quemadura, estallido, explosión, resplandor, misil, nova, o salpicadura y color es uno de ácido, sangre, encanto, muerte, fuego, hielo, sagrado, magia, limo, humo o agua. Para efectos personalizados, este debería ser el identificador del objeto FX Roll20. PAGE_ID (cadena, opcional) El identificador del objeto Roll20 de la página en el que colocar el emisor de partículas. Si se omite, se utilizará Campaign().get('playerpageid') en su lugar.

Devoluciones

(Nulo)

Ejemplos

spawnFxBetweenPoints({ x: 1400, y: 1400 }, { x: 2100, y: 2100 }, 'beam-acid');

spawnFxWithDefinition

Parámetros

IZQUIERDA(Número) La coordenada x para colocar el emisor de partículas. ARRIBA(Número) La coordenada y para colocar el emisor de partículas. DEFINICIÓN(Objeto) Las características del emisor de partículas que se va a colocar. Consulte Efectos personalizados para obtener una lista de las propiedades posibles y las propiedades de los tipos y colores predeterminados del emisor de partículas. Consulte la biblioteca FX para ver algunos efectos personalizados que han creado los usuarios de Roll20. PAGE_ID(cadena, opcional) El identificador del objeto Roll20 de la página en la que se colocará el emisor de partículas. Si se omite, se utilizará Campaign().get('playerpageid') en su lugar.

Devoluciones

(Nulo)

Ejemplos

// estos dos son equivalentes
spawnFx(1400, 1400, 'bubbling-acid');
spawnFxWithDefinition(1400, 1400, {
    maxParticles: 200,
    size: 15,
    sizeRandom: 3,
    lifeSpan: 20,
    lifeSpanRandom: 5,
    speed: 7,
    speedRandom: 2,
    gravity: { x: 0.01, y: 0.65 },
    angle: 270,
    angleRandom: 35,
    emissionRate: 1,
    startColour:       [0, 35, 10, 1],
    startColourRandom: [0, 10, 10, 0.25],
    endColour:         [0, 75, 30, 0],
    endColourRandom:   [0, 20, 20, 0]
});

detenerJukeboxLista de reproducción

Parámetros

Sin parámetros

Devoluciones

(Nulo)

Ejemplos

detenerJukeboxListaDeReproducción();

Atrás

Parámetros

OBJ (objeto Roll20) El objeto Roll20 que se enviará al fondo de su capa.

Devoluciones

(Nulo)

Ejemplos

on('chat:message', function(msg) {
    if (msg.type === 'api' && msg.content === '!toback' && msg.selected) {
        _.each(msg.selected, (s) => {
            toBack(getObj(s._type, s._id));
        });
    }
});

al frente

Parámetros

OBJ (objeto Roll20) El objeto Roll20 que se va a colocar en primer plano de su capa.

Devoluciones

(Nulo)

Ejemplos

on('ready', function() {
    on('add:graphic', function(obj) {
        toFront(obj);
    });
});
 
¿Fue útil este artículo?
Usuarios a los que les pareció útil: 7 de 13