API: Objetos

Hay varios tipos diferentes de objetos que se utilizan en toda la API de Roll20. Aquí tienes una lista rápida de cada uno, qué es y qué propiedades contiene (junto con los valores predeterminados). Como regla general, las propiedades que comienzan con un guión bajo (_) sonde sólo lecturay no pueden modificarse. Debes acceder a las propiedades de los objetos utilizandoobj.get("propiedad")y establecer nuevos valores utilizandoobj.set("propiedad", nuevovalor)oobj.set({property: newvalue, property2: newvalue2}).

Nota:La propiedadidde un objeto es un ID único a nivel global: ningún objeto debería tener el mismo, incluso entre diferentes tipos de objetos. Además, dado que el id de un objeto se accede con frecuencia y nunca cambia, hay un acceso directo disponible en el que puedes acceder a él usandoobj.iden lugar deobj.get("_id")si lo deseas (cualquiera de las dos opciones funcionará).


Senda

Propiedad Valor predeterminado Notas
_id  

Un identificador único para este objeto. Único a nivel mundial entre todos los
objetos en este juego. Solo lectura.

_type "senda" Puede ser utilizado para identificar el tipo de objeto o buscar el objeto
. Solo lectura.
_pageid    ID de la página en la que se encuentra el objeto. Solo lectura.
_path    Una cadena JSON que describe las líneas en el camino. Solo lectura, excepto al crear un nuevo camino. Consulte la sección sobre Caminos para obtener más información.
llenar "transparente" Color de relleno. Utilice la cadena "transparente" o un color hexadecimal como una cadena, por ejemplo "#000000"
trazo "#000000" Color del trazo (borde).
rotación 0 Rotación (en grados).
capa "" Capa actual, una de "gmlayer", "objects", "map" o "walls". La capa de muros se utiliza para la iluminación dinámica, y los caminos en la capa de muros bloquearán la luz.
ancho_trazo 5  
anchura 0  
altura 0  
top 0 Coordenada Y para el centro de la trayectoria
izquierda 0 Coordenada X para el centro de la trayectoria
escalaX 1  
escalaY 1  
Controlado por ""

Lista de IDs de jugadores separados por comas que pueden controlar la trayectoria. Los jugadores que tienen control pueden eliminar la trayectoria. Si la trayectoria fue creada por un jugador, ese jugador se incluye automáticamente en la lista.

Todos los jugadoresse representa al tener 'todos' en la lista.

tipoDeBarrera "pared"

Las opciones de tipo de barrera de iluminación dinámica incluyen "pared", "unidireccional" y "transparente"

unaVíaInvertida falso

booleano

Para obtener más información sobre el formato de los datos del camino_path, consulta la sección sobre caminos.

 


Ventana

Nota: La ventana y la puerta utilizan un eje invertido en comparación con otros tipos de objetos. Por ejemplo, una variable superior que sería 100 para otro objeto es y -100 para ventana o puerta.

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Único a nivel global entre todos los objetos de este juego. Solo lectura.
_type "ventana" Solo lectura.
color   Un color hexadecimal del camino.
x 0 Coordenada central de la puerta en el eje x.
y 0 Coordenada central de la puerta en el eje y.
isOpen falso Determina si un jugador puede moverse a través de esta ventana.
isLocked falso Impide que los jugadores puedan interactuar con la ventana.
ruta   Representado como dos asas (asa0 y asa1) cada una con coordenadas x e y.

Ejemplo

on('chat:message', function(msg) {
    if (msg.type === 'api' && msg.content === '!cw') {
        const currentPageID = Campaign().get('playerpageid');
        const win = createObj('window', {
            x: 70,
            y: -70,
            pageid: currentPageID,
            path: {
		        handle0: {
        			x: -70,
        			y: 0,
        		},
        		handle1: {
        			x: 35,
        			y: 0,
        		},
        	},
            color: '#000000'
        });
    }

    if (msg.type === 'api' && msg.content === '!mw') {
        const win = getObj('window', '-NG38yUgghBBoV8YR0y1');
        win.set({
           x: 240,
           y: -139
        });
    }

    if (msg.type === 'api' && msg.content === '!dw') {
        const win = getObj('window', '-NG38yUgghBBoV8YR0y1');
        win.remove();
    }
});

Puerta

Nota: La ventana y la puerta utilizan un eje invertido en comparación con otros tipos de objetos. Por ejemplo, una variable superior que sería 100 para otro objeto es y -100 para la ventana o puerta.

Propiedad

Valor predeterminado

Notas

_id

 

Un ID único para este objeto. Globalmente único entre todos los objetos en este juego. Solo lectura.

_type

"puerta"

Solo lectura.

color

 

Un color hexadecimal de la ruta.

x

0

Centro de coordenadas de la puerta en el eje x.

y

0

Centro de coordenadas de la puerta en el eje y.

isOpen

falso

Determina si un jugador puede moverse a través de esta puerta.

isLocked

falso

Impide que los jugadores puedan interactuar con la puerta.

esSecreto

falso

Elimina un icono de puerta de la vista del jugador y funciona como una barrera.

camino

 

Representado por dos manijas (manija0 y manija1) cada una con coordenadas x e y.


Texto

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Único en todo el juego. Solo lectura.
_type "texto" Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_pageid   ID de la página en la que se encuentra el objeto. Solo lectura.
parte superior 0  
izquierda 0  
ancho 0  
altura 0  
texto ""  
tamano_fuente 16 Para obtener los mejores resultados, utiliza los tamaños preestablecidos en el menú de edición: 8, 10, 12, 14, 16, 18, 20, 22, 26, 32, 40, 56, 72, 100, 200, 300.
rotacion 0  
color "rgb(0, 0, 0)"  
tipo_letra "Arial" Si esto no se establece, al cambiar más tarde el valor de la propiedad "texto", el tamaño de la fuente se reducirá a 8. Valores posibles (el caso no es importante): "Arial", "Patrick Hand", "Contrail One", "Shadows Into Light" y "Candal". Si se especifica un nombre no válido, se utilizará una fuente serif monoespaciada sin nombre.
capa "" "gmlayer", "objects", "map" o "walls".
controlado por "" Lista delimitada por comas de los ID de los jugadores que pueden controlar el texto. Los jugadores controladores pueden borrar el texto. Si el texto ha sido creado por un jugador, éste se incluirá automáticamente en la lista.

Todos los jugadoresse representa con 'todos' en la lista.


Gráfico (Token/Mapa/Carta/etc.)

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Globalmente único entre todos los objetos en este juego. Solo lectura.
_type "gráfico" Se puede usar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_subtype "ficha" Puede ser "token" (para tokens y mapas) o "card" (para cartas). Solo lectura.
_cardid   Se establece en un ID si la imagen es una carta. Solo lectura.
_pageid   ID de la página en la que se encuentra el objeto. Solo lectura.
imgsrc   La URL de la imagen del gráfico. Ver la nota sobre imgsrc y las restricciones de avatar a continuación.
bar1_link   Establece un ID si la Barra 1 está vinculada a un personaje.
bar2_link    
bar3_link    
representa   ID del personaje que representa este token.
izquierda 0 Número de píxeles desde el borde izquierdo del mapa hasta el centro de la imagen.
arriba 0 Número de píxeles desde el borde superior del mapa hasta el centro de la imagen.
ancho 0 Ancho de la imagen, en píxeles.
alto 0 Alto de la imagen, en píxeles.
rotación 0 La orientación del token en grados.
capa "" "gmlayer", "objetos", "mapa" o "paredes".
esdibujo falso Esta propiedad se cambia desde el menú contextual Avanzado.
flipv false Voltear verticalmente.
fliph false Voltear horizontalmente.
nombre "" El nombre del token.
gmnotes "" Notas sobre el token solo visibles para el GM.
controladopor "" Lista de identificadores de jugador separados por comas que pueden controlar el gráfico. Los jugadores que controlan pueden eliminar el gráfico. Si el gráfico fue creado por un jugador, ese jugador se incluye automáticamente en la lista.

Todos los jugadoresse representa teniendo 'todos' en la lista.

bar1_value "" Valor actual de la Barra 1. Esto puede ser un número o un texto.
Valor de barra2 ""  
Valor de barra3 ""  
Valor máximo de Barra 1. "" Valor máximo. Si _value y _max están establecidos, se puede mostrar una barra encima del token que muestra el porcentaje de Barra 1.
Valor máximo de barra2 ""  
Valor máximo de barra3 ""  
Radio de aura1 "" Radio del aura, utilizando las unidades establecidas en la configuración de la página. Puede ser un número entero o decimal. Establecer como una cadena vacía para borrar el aura.
radio_aura2 ""  
color_aura1 "#FFFF99" Un color hexadecimal o del aura.
color_aura2 "#59E594"  
cuadrado_aura1 falso ¿El aura es un círculo o un cuadrado?
aura2_cuadrado falso  
tinte_color "transparente" Color hexadecimal o "transparente". Tintará el color del gráfico.
marcadores de estado "" Una lista delimitada por comas de los marcadores de estado actualmente activos. Consulte las notas siguientes para obtener más información.
marcadores_token "" Una matriz JSON convertida en cadena que contiene un objeto para cada marcador de token actualmente en el juego:. Puedes encontrar un ejemplo a continuación.
showname false Si se muestra la placa del nombre del token.
showplayers_name false Mostrar la placa del nombre a todos los jugadores.
showplayers_bar1 false Mostrar la Barra 1 a todos los jugadores.
showplayers_bar2 falso  
showplayers_bar3 falso  
showplayers_aura1 falso Mostrar Aura 1 a todos los jugadores.
showplayers_aura2 falso  
nombre_jugador verdadero Permitir a los jugadores controladores editar el nombre del token. También muestra la placa de identificación a los jugadores controladores, incluso si showplayers_name es falso.
playersedit_bar1 verdadero Permitir a los jugadores controladores editar el Bar 1 del token. También muestra el Bar 1 a los jugadores controladores, incluso si showplayers_bar1 es falso.
playersedit_bar2 verdadero  
playersedit_bar3 verdadero  
playersedit_aura1 verdadero Permitir a los jugadores controlar la Aura 1 del token. También muestra la Aura 1 a los jugadores que la controlan, incluso si showplayers_aura1 es falso.
playersedit_aura2 verdadero  
light_radius "" Radio de iluminación dinámica.
light_dimradius "" Inicio del radio de luz tenue. Si light_dimradius es una cadena vacía, el token emitirá luz brillante hasta la distancia light_radius. Si light_dimradius tiene un valor, el token emitirá luz brillante hasta el valor light_dimradius, y luz tenue desde allí hasta el valor light_radius.
Iluminación de otros jugadores falso Mostrar la luz del token a todos los jugadores.
Iluminación con línea de visión falso La luz tiene "visión" para controlar a los jugadores en relación con la configuración de "Aplicar línea de visión".
Ángulo de luz "360" Ángulo (en grados) del ángulo de la luz. Por ejemplo, "180" significa que la luz solo se mostrará para la "mitad" frontal del "campo de visión".
light_losangle "360" Ángulo (en grados) del campo de visión de la gráfica (asumiendo que light_hassight está configurado como true)
lastmove "" El último movimiento del token. Es una lista de coordenadas separadas por comas. Por ejemplo, "300,400" significa que el token comenzó su último movimiento en left=300, top=400. Siempre se asume que los valores actuales de top + left del token son el "punto final" del último movimiento. Los puntos de ruta están indicados por múltiples conjuntos de coordenadas. Por ejemplo, "300,400,350,450,400,500" indicaría que el token comenzó en la posición izquierda=300, arriba=400, luego estableció un punto de ruta en la posición izquierda=350, arriba=450, otro punto de ruta en la posición izquierda=400, arriba=500, y luego finalizó el movimiento en sus coordenadas actuales de arriba + izquierda.
light_multiplier "1" Multiplicador sobre la eficacia de las fuentes de luz. Un multiplicador de dos permitiría que el token vea el doble de lejos que un token con un multiplicador de uno, con la misma fuente de luz.
adv_fow_view_distance "" El radio alrededor de un token donde se revela la Iluminación avanzada de Niebla.
light_sensitivity_multiplier 100 Multiplicador en la efectividad de fuentes de luz. Un multiplicador de 200 permitiría que el token vea el doble de lejos que un token con un multiplicador de 100, con la misma fuente de luz.
night_vision_effect
  Cambia el Efecto de Visión nocturna. Otras opciones incluyen “Atenuación” y “Nocturno”
bar_location   Ajusta la ubicación de las barras del token. Opciones incluyen ’overlap_top’, ‘overlap_bottom’,‘bottom’
compact_bar
  Ajusta si la barra es compacta o no. Otra opción es compacta.
lockMovement falso Una opción para bloquear un gráfico en su lugar. Valor booleano verdadero o falso

Ejemplo de Marcadores de fichas

{
          "id":59, // el id de la base de datos para el
          "name":"Bane", // el nombre (no único) del marcador
          "tag":"Bane::59", // cómo se referencia realmente el token
          // esto incluirá el id para marcadores personalizados, pero no
          // para marcadores predeterminados.
          "url":"https://s3.amazonaws.com/files.d20.io/images/59/yFnKXmhLTtbMtaq-Did1Yg/icon.png?1575153187"
// ^la url para la imagen del marcador de fichas }

Notas Importantes Sobre Personajes y Fichas Conectados

Tenga en cuenta que para los tokens que están vinculados a Caracteres, el campocontroladopordel token queda anulado por el campocontroladopordel Carácter.

Para las barras de tokens (por ejemplo,bar1_valueybar1_max) en las que el token está vinculado a un Atributo (por ejemplo,bar1_linkestá configurado), al establecer un valor en la barra se actualizarán automáticamente también los valorescurrenty/omaxdel Atributo subyacente, por lo que no tendrá que configurar ambos manualmente.

Además, cuando se modifique el atributo (o la barra de fichas) en el juego, oirá un eventochange:attribute(y específico de la propiedad, por ejemplochange:attribute:current), seguido de un eventochange:graphic(ychange:graphic:bar1_value). Puedes elegir responder a cualquiera de los eventos, pero los valores de la barra subyacente aún no se actualizarán cuando se active el evento del atributo, ya que se activa primero.

Notas importantes sobre los marcadores de estado

A partir del 6 de agosto de 2013, la forma en que se manejan los marcadores de estado en las fichas ha cambiado. La propiedad "statusmarkers" del objeto Gráfico ahora es una lista separada por comas de todos los colores/íconos de los marcadores de estado que deberían estar activos en la ficha. El formato es el siguiente:

//Separado por comas (usa join para crear o split para convertir en una matriz). 
//Si un ícono/color de estado va seguido de un símbolo "@", el número después de
//@ se mostrará como insignia en el ícono statusmarkers = "rojo,azul,calavera,muerto,marrón@2,verde@6"

Aunque puede acceder directamente a la propiedadstatusmarkers, para mantener la compatibilidad con los scripts existentes y proporcionar una forma sencilla de trabajar con los marcadores de estado sin necesidad de escribir código para manejar la división y el análisis sintáctico de la cadena usted mismo, proporcionamos un conjunto de propiedades "virtuales" en el objeto que puede establecer/obtener para trabajar con los marcadores de estado. Cada marca de estado tiene una propiedad "estado_<markername>". Por ejemplo:

obj.get("estado_rojo"); //Devolverá falso si la marca no está activa, verdadero si lo está y una cadena (por ejemplo, "2" o "5") si actualmente hay un distintivo configurado en la marca
obj.get('estado_marcadorazul'); //Sigue siendo compatible con la retrocompatibilidad y es equivalente a hacer obj.get("estado_azul");
obj.set("estado_rojo", falso); //eliminaría la marca
obj.set("estado_calavera", "2"); //configuraría un distintivo de "2" en el icono de calavera y lo agregaría al token si aún no está activo.

Tenga en cuenta que estas propiedades virtuales no tienen eventos, por lo que debe utilizarchange:graphic:statusmarkerspara escuchar los cambios en los marcadores de estado de una ficha, y por ejemplochange:graphic:status_redNO es un evento válido y nunca se disparará.

La lista completa de marcas de estado disponibles (en el mismo orden en que aparecen en la bandeja de marcas):

"rojo", "azul", "verde", "marrón", "morado", "rosa", "amarillo", "muerto", "calavera", "adormilado", "media corazón", "media neblina", "prohibición", "caracol", "rayo brillante", "llave de tuercas", "corazón encadenado", "rayo químico", "zona de la muerte", "bebe esto", "grieta en el filo", "máscara de ninja", "cronómetro", "red de pesca", "sobremarcha", "fuerte", "puño", "candado", "tres hojas", "ala esponjosa", "golpeado", "pisada", "con flechas", "aura", "dolor de espalda", "bandera negra", "ojo sangrante", "escudo con rayo", "corazón roto", "telaraña", "escudo roto", "bandera voladora", "radiactivo", "trofeo", "cráneo roto", "orbe congelado", "bomba rodante", "torre blanca", "atraco", "gritando", "granada", "torreta de vigilancia", "todo para uno", "traje de ángel", "blanco de tiro con arco"

Página

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Único a nivel mundial entre todos los objetos de este juego. Solo lectura.
_type "pagina" Se puede usar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_zorder "" Lista separada por comas de IDs que especifican el orden de los objetos en la página. toFrontytoBack(y sus elementos de menú contextual asociados) pueden reordenar esta lista. Solo lectura.
name "" Título de la página.
showgrid verdadero Mostrar la rejilla en el mapa.
showdarkness false Mostrar la niebla de guerra en el mapa.
showlighting false Usar iluminación dinámica.
width 25 Ancho en unidades.
height 25 Altura en unidades.
snapping_increment 1 Size of a grid space in units.
grid_opacity 0.5 Opacity of the grid lines.
fog_opacity 0.35 Opacity of the fog of war for the GM.
background_color "#FFFFFF" Hexadecimal color of the map background.
gridcolor "#C0C0C0" Color hexadecimal de las líneas de la cuadrícula.
tipo_rejilla "cuadrado" Una de "cuadrado", "hex" o "hexr". (hex corresponde a Hex(V), y hexr corresponde a Hex(H))
número_escala 5 La distancia de una unidad.
unidades_escala "ft" El tipo de unidades a usar para la escala.
gridlabels false Mostrar etiquetas de rejilla para rejilla hexagonal.
diagonaltype "foure" Uno de "foure", "pitagórico" (Euclideano), "threefive", o "manhattan".
archived false Si la página ha sido archivada.
luzactualizada falso Solo actualizar la Iluminación Dinámica cuando un objeto es soltado.
iluminarmostrarlosobstaculos falso Establece la línea de visión para los objetos.
lightrestrictmove falso No permitas que los objetos que tienen visión se muevan a través de paredes de Iluminación Dinámica.
lightglobalillum falso Si es verdadero, se asume que hay luz brillante en cualquier lugar donde un token puede "ver".
jukeboxtrigger   Controla la reproducción de la página al cargarse. Las opciones incluyen 'nonestopall' o el id-de-la-pista

Campaña

Propiedad Valor predeterminado Notas
_id "root" Un ID único para este objeto. Único en todo el juego. Solo lectura.
_type "campaign" Se puede utilizar para identificar el tipo de objeto o buscar el objeto — sin embargo, ten en cuenta que solo hay un objeto de campaña, y se puede acceder a través deCampaign(). Sólo lectura.
turnorder "" Una cadena JSON del orden de turno. Ver abajo.
initiativepage falso ID de la página utilizada para el seguimiento cuando la ventana del orden de turno está abierta. Cuando se establece en false, se cierra la ventana de orden de turno.
playerpageid falso ID de la página en la que se encuentra el marcador del reproductor. Los jugadores ven esta página por defecto, a menos que sea anulada por las páginas específicas de los jugadores que aparecen a continuación.
páginas específicas para cada jugador falso Un objeto (NO UNA CADENA JSON) con el formato: {"player1_id": "page_id", "player2_id": "page_id" ... } Cualquier jugador asignado a una página en este objeto anulará el playerpageid.
_carpeta de viaje "" Una cadena JSON que contiene datos sobre la estructura de carpetas del juego. Sólo lectura.
_carpetajukebox "" Una cadena JSON que contiene datos sobre la estructura de la lista de reproducción del juego. Sólo lectura.

 Orden de turno

El orden de turno es una cadena JSON que representa la lista de órdenes de turno actuales. Es un conjunto de objetos. Actualmente, el orden de turno solo puede contener objetos de una página a la vez: el ID de página actual para el orden de turno es el atributo "initiativepage". Asegúrate de mantenerlos sincronizados o podrías obtener resultados extraños.

Para trabajar con el orden de turno, debes usarJSON.parse()para obtener un objeto que represente el estado actual del orden de turno (NOTA: Asegúrate de que no sea una cadena vacía""primero... si lo es, inicialízalo tú mismo con un conjunto vacío). Aquí tienes un ejemplo de objeto de orden de turno:

[
    {
     "id":"36CA8D77-CF43-48D1-8682-FA2F5DFD495F", //El ID del objeto gráfico. Si esto está configurado, la lista de orden de turno tomará automáticamente el nombre e icono de la lista basándose en el gráfico del juego de mesa.
     "pr":"0", //El valor actual del elemento en la lista. Puede ser un número o texto.
     "custom":"" //Título personalizado para el elemento. Será ignorado si el ID se establece a un valor diferente de "-1".
    },
    {
     "id":"-1", //Para elementos personalizados, el ID DEBE establecerse en "-1" (tenga en cuenta que esto es una CADENA, no un NÚMERO.
     "pr":"12",
     "custom":"Test Custom" //El nombre a mostrar para los elementos personalizados.
    }
]

Para modificar el orden de turno, edita el objeto del orden de turno actual y luego usaJSON.stringify()para cambiar el atributo en la Campaña. Ten en cuenta que el orden para el orden de turno en la lista es el mismo que el orden del arreglo, así que por ejemplopush()agrega un elemento al final de la lista,unshift()agrega al principio, etc.

var turnorder;
if(Campaign().get("turnorder") == "") turnorder = []; //NOTA: Verificamos que turnorder no sea simplemente una cadena vacía primero. Si lo es, trátalo como un arreglo vacío.
else turnorder = JSON.parse(Campaign().get("turnorder"));

//Agregar una nueva entrada personalizada al final del orden de turno.
turnorder.push({
    id: "-1",
    pr: "15",
    custom: "Contador de Turnos"
});
Campaign().set("turnorder", JSON.stringify(turnorder));
 

Jugador

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Único en todo el juego para todos los objetos. Solo lectura.
_type "jugador" Se puede usar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_d20userid   ID de usuario - en todo el sitio. Por ejemplo, la página de usuario del jugador en la wiki es /Usuario:ID, donde ID es el mismo valor almacenado en _d20userid. Solo lectura.
_displayname "" El nombre de visualización actual del jugador. Puede ser cambiado desde la página de configuración del usuario. Sólo lectura.
_online falso Sólo lectura.
_lastpage "" El id de la última página que el jugador vio como GM. Esta propiedad no se actualiza para los jugadores o GMs que se han unido como jugadores. Sólo lectura.
_macrobar "" Cadena delimitada por comas de las macros en la barra de macros del jugador. Sólo lectura.
hablandoComo "" [El ID del jugador o personaje] de quien el jugador ha seleccionado en el menú desplegable "Como". Cuando se establece como una cadena vacía, el jugador está hablando como él o ella misma. Cuando se establece como un personaje, el valor es "personaje|ID", donde ID es el ID del personaje. Cuando el GM está hablando como otro jugador, el valor es "jugador|ID", donde ID es el ID del jugador.
color "#13B9F0" El color del cuadrado junto al nombre del jugador, así como el color de sus medidas en el mapa, sus círculos de ping, etc.
mostrarbarrademacr falso Si se muestra la barra de macros del jugador.

Macro

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Único a nivel mundial entre todos los objetos de este juego. Sólo lectura.
_type "macro" Se puede usar para identificar el tipo de objeto o buscar el objeto. Sólo lectura.
_playerid   La ID del jugador que creó este macro. Sólo lectura.
nombre "" El nombre de la macro.
acción "" El texto de la macro.
visiblepara "" Lista delimitada por comas de ID de jugadores que pueden ver la macro además del jugador que la creó.

Todos los jugadoresse representa con 'todos' en la lista.

istokenaction falso ¿Es esta macro una acción de token que debería aparecer cuando se seleccionan tokens?

 


Tabla Lanzable

Propiedad Valor predeterminado Notas
_id   Una identificación única para este objeto. Único en todo el juego. Sólo lectura.
_type "rollabletable" Puede ser utilizado para identificar el tipo de objeto o buscar el objeto. Sólo lectura.
nombre "nueva-tabla"  
showplayers verdadero  

Tabla Artículo 

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Globalmente único en todos los objetos de este juego. Sólo lectura.
Tipo "tableitem" Puede utilizarse para identificar el tipo de objeto o para buscarlo. Sólo lectura.
_identificadordemestradorolável "" ID da tabela a qual este item pertence. Sólo lectura.
avatar "" URL de uma imagem usada para o item da tabela. Veja a nota sobre restrições de avatar e imgsrc abaixo.
nome ""  
peso 1 Peso do item da tabela em comparação com os outros itens na mesma tabela. Simplemente dicho, un elemento con peso 3 tiene tres veces más probabilidades de ser seleccionado al tirar en la tabla que un elemento con peso 1.

Personaje

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Único a nivel global entre todos los objetos en este juego. Solo lectura.
_type "character" Puede ser utilizado para identificar el tipo de objeto o buscar el objeto. Solo lectura.
img Avatar "" URL a una imagen utilizada para el personaje. Ver la nota sobre las restricciones de avatar e imgsrc a continuación.
nombre ""  
bio "" Biografía del personaje. Ver la nota a continuación sobre cómo acceder a los campos Notas, Notas del GM y bio.
notasgm "" Notas sobre el personaje solo visibles para el GM. Ver la nota a continuación sobre cómo acceder a los campos Notas, Notas del GM y bio.
archivado falso  
enjournaljugadores "" Lista separada por comas de los ID de jugador que pueden ver este personaje. Usar "all" para dar a todos los jugadores la capacidad de ver.

Todos los Jugadores se representa teniendo 'all' en la lista.

controlledby "" Lista separada por comas de los ID de jugador que pueden controlar y editar este personaje. Usar "all" para dar a todos los jugadores la capacidad de editar.

Todos los Jugadores se representa teniendo 'all' en la lista.

_defaulttoken "" Una cadena JSON que contiene los datos para el token predeterminado del personaje si está configurado. Ten en cuenta que esto es un "bloque" similar a "bio" y "notas", por lo que debes pasar una función de retorno a get(). Solo lectura.

Característica

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Único a nivel global entre todos los objetos de este juego. Solo lectura.
_type "atributo" Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_ID de personaje "" ID del personaje al que pertenece este atributo. Solo lectura. Obligatorio al utilizarcreateObj.
nombre "Sin título"  
actual "" El valor actual del atributo se puede acceder en el chat y en las macros con la sintaxis@{Character Name|Attribute Name}o en las habilidades con la sintaxis@{Attribute Name}.
máx "" El valor máximo del atributo se puede acceder en el chat y en las macros con la sintaxis@{Character Name|Attribute Name|max}o en las habilidades con la sintaxis@{Attribute Name|max}.

 Importante: Consulta la nota a continuación sobre cómo funcionan las hojas de personaje para obtener información sobre cómo los valores predeterminados afectan el uso de los atributos.


Característica

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Único en todo el juego. Sólo lectura.
_type "característica" Se puede usar para identificar el tipo de objeto o buscar el objeto. Sólo lectura.
_characterid "" El personaje al que pertenece esta característica. Sólo lectura. Obligatorio al usarcreateObj.
nombre "Habilidad_sin_título"  
descripción "" La descripción no aparece en la interfaz de la hoja de personaje.
acción "" El texto de la habilidad.
istokenaction falso ¿Esta habilidad es una acción de ficha que debería aparecer cuando se seleccionan fichas vinculadas a su personaje padre?

Nota

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Globalmente único en todos los objetos de este juego. Sólo lectura.
Tipo "folleto" Puede utilizarse para identificar el tipo de objeto o para buscarlo. Sólo lectura.
avatar "" URL de una imagen utilizada para el folleto. Vea la nota sobre las restricciones de avatar e imgsrc más abajo.
nombre «Nota Misteriosa»  
notasq "" Contiene el texto en el folleto. Consulta la nota a continuación sobre cómo usar Notas y Notas del GM.
notasgm "" Contiene el texto en el folleto que solo el GM ve. Consulta la nota a continuación sobre cómo usar Notas y Notas del GM.
enjugadoresjuego "" Lista separada por comas de la ID de los jugadores que pueden ver este folleto. Usa "todo" para mostrar a todos los jugadores.

Todos los jugadoresestán representados al tener 'todos' en la lista.

archivado falso  
controladopor "" Lista de IDs de jugadores delimitada por comas que pueden controlar y editar esta nota.

Todos los jugadoresestán representados al tener 'todos' en la lista.

Nota:La API no tiene acceso a la jerarquía de carpetas. Las notas creadas por la API se colocarán en el nivel raíz.


Mazos

Ten en cuenta que hay métodos auxiliares de la API para "robar", "repartir" o "mezclar" cartas del Mazo. Verpublicación del foro de actualización de API de marzo de 2018.

Propiedad Valor predeterminado Notas
_id "" id del mazo
_type "mazo"  
nombre "" nombre del mazo
_currentDeck "" una lista separada por comas de cartas que actualmente están en el mazo (incluyendo aquellas que se han jugado en la mesa/manos). Cambios cuando el mazo se baraja.
_currentIndex -1 el índice actual de nuestro lugar en la baraja, '¿qué carta se sacará a continuación?'
_currentCardShown verdadero mostrar la carta actual en la parte superior de la baraja
mostrarjugadores verdadero mostrar la baraja a los jugadores
losjugadorespuedencoger verdadero ¿pueden los jugadores robar cartas?
avatar "" el "dorso" de las cartas de esta baraja
se muestra falso mostrar el mazo en el tablero de juego (¿está visible el mazo actualmente?)
players_seenumcards verdadero ¿pueden los jugadores ver el número de cartas en las manos de otros jugadores?
jugadores_seefrontofcards falso ¿los jugadores pueden ver las caras de las cartas al mirar en las manos de otros jugadores?
gm_ver_cartasjuego verdadero ¿el GM puede ver la cantidad de cartas en la mano de cada jugador?
gm_ver_carasdecartas falso ¿el GM puede ver las caras de las cartas al mirar en la mano de cada jugador?
cartasinfin falso ¿hay un número 'infinito' de cartas en esta baraja?
_cardSequencer -1 usado internamente para avanzar la baraja cuando se sacan cartas.
cartasjugadas "caraarriba" ¿cómo se juegan las cartas de esta baraja en la mesa de juego? 'caraarriba' o 'carabajo'.
alturapordefecto "" ¿cuál es la altura por defecto para las cartas jugadas en la mesa de juego?
defaultwidth ""  
discardpilemode "none" qué tipo de montón de descarte tiene esta baraja? 'none' = sin montón de descarte, 'choosebacks' = permitir a los jugadores ver las cartas de espaldas y elegir una, 'choosefronts' = ver las caras y elegir, 'drawtop' = tomar la carta descartada más reciente, 'drawbottom' = tomar la carta descartada más antigua.
_discardPile "" cuál es el montón de descarte actual para esta baraja? lista de cartas separadas por comas. Estas son cartas que han sido sacadas del juego y no se volverán a poner en la baraja en una mezcla hasta que se realice un recuerdo.

Carta

Propiedad Valor predeterminado Notas
nombre "" Nombre de la tarjeta
avatar "" Anverso de la tarjeta
_deckid "" ID de la cubierta
Tipo "tarjeta"  
_id ""  

Mano

Tenga en cuenta que cada jugador sólo debe tener UNA mano.

Propiedad Valor predeterminado Notas
manos actuales "" lista de cartas separadas por comas que se encuentran actualmente en la mano Ten en cuenta que esto ya no es solo lectura Idealmente, solo debería ajustarse con las funciones del mazo de cartas
_type "mano"  
_parentid "" ID del jugador al que pertenece la mano
_id ""  
vista actual "porbaraja" cuando el jugador abre la mano, ¿es la vista 'por mazo' o 'por carta'?

Tema del Jukebox

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Globalmente único en todos los objetos de este juego. Solo lectura.
_type "jukeboxtrack" Se puede usar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
jugando false Boolean used to determine whether or not the track is playing. Setting this to "true" and softstop to "false" plays a track.
softstop false Boolean used to determine whether or not a non-looped track has finished at least once. This must be set to "false" to ensure that a track will play.
title "" The visible label for the track in the jukebox tab.
volume 30 El nivel de volumen de la pista. Ten en cuenta que esto debe establecerse como un número entero (no una cadena), o podrías romper la funcionalidad. Valores de 0 a 100 (porcentaje).
bucle falso ¿La pista debe repetirse en bucle? Establecer como verdadero si es así.

Modificación Personalizada

Propiedad Valor predeterminado Notas
_id   Un ID único para este objeto. Único a nivel global entre todos los objetos de este juego. Solo lectura.
_tipo "custfx" Puede usarse para identificar el tipo de objeto o buscar el objeto. Solo lectura.
nombre "" El nombre visible de la FX en la lista de FX.
definición {} Objeto Javascript que describe la FX.

Restricciones de las propiedades imgsrc y avatar

Si bien ahora puedes editar las propiedades imgsrc y avatar, para brindar seguridad a todos los usuarios de Roll20, hemos establecido las siguientes restricciones para estas propiedades:


En el futuro, es posible que agreguemos una herramienta para que las imágenes se puedan subir específicamente para su uso con scripts de API, pero por ahora simplemente usa imágenes subidas a tu propia biblioteca. Ten en cuenta que si eliminas una imagen de tu biblioteca, se eliminará de todos los Juegos que usen esa imagen, incluidos los Juegos que usen tus scripts de API.


Usar los campos Notas, Notas del DJ y Biografía Asincrónicos

Para acceder a los campos "notes", "gmnotes" o "bio" en los Personajes y Tablas de mano, debes pasar una función de devolución de llamada como segundo argumento a la función get(). Aquí tienes un ejemplo:

var character = getObj("character", "-JMGkBaMgMWiQdNDwjjS");
character.get("bio", function(bio) {
    log(bio); //haz algo con la biografía del personaje aquí.
});

Puedes establecer el valor de estos campos de forma normal. Ten en cuenta que actualmente (a partir del 2016/05/09) hay un error con estos campos asincrónicos, mediante el cual establecerlos mediante la asignación de valores a createObj falla silenciosamente, dejando el objeto en un estado extraño. Debes establecer estos valores usando .set hasta que se resuelva este problema. Detalles en el foro. También hay un error (a partir de 2016/11/05) donde intentar establecer tanto las propiedades de notas y gmnotes en la misma llamada set() hace que la segunda propiedad en la llamada se establezca erróneamente. Detalles en el foro.


Trabajando con Hojas de Personaje

La función de Hojas de Personaje afecta el uso del tipo de objeto Atributos, ya que las hojas tienen la capacidad de especificar un valor predeterminado para cada atributo en la hoja. Sin embargo, si el atributo se establece en el valor predeterminado, aún no se ha creado un objeto de Atributo real en el juego para ese Personaje. Proporcionamos una función de conveniencia que oculta esta complejidad de ti. Deberías usar esta función para obtener el valor de un atributo en adelante, especialmente si sabes que un juego está utilizando una Hoja de Personaje.

getAttrByName(character_id, attribute_name, value_type)

Simplemente especifica el ID del personaje, el nombre (no ID) del atributo (por ejemplo, "HP" o "Str"), y luego si deseas el valor "actual" o "máximo" para el tipo de valor. Aquí tienes un ejemplo:

var character = getObj("character", "-JMGkBaMgMWiQdNDwjjS");
getAttrByName(character.id, "str"); // el valor actual de str, por ejemplo "12"
getAttrByName(character.id, "str", "max"); // el valor máximo de str, por ejemplo "[[floor(@{STR}/2-5)]]"


Ten en cuenta que los campos que tienen valores auto-calculados devolverán la fórmula en lugar del resultado del valor. Luego puedes pasar esa fórmula a sendChat() para usar el motor de dados y calcular el resultado automáticamente.

Asegúrate de también consultar laGuía de la Hoja de Personajepara obtener más información sobre cómo interactúan las Hojas de Personaje con la API.

getAttrByNamesóloobtendrá el valor del atributo, no el objeto atributo en sí. Si deseas hacer referencia a propiedades del atributo que no sean "actual" o "máximo", o si deseas cambiar propiedades del atributo, debes usar una de las otras funciones mencionadas anteriormente, como findObjs.

En el caso de que el atributo solicitado no exista,getAttrByName()devolveráundefined.


Creando Objetos

createObj(type, attributes)

Nota: actualmente puedes crear objetos 'gráfico', 'texto', 'ruta', 'personaje', 'habilidad', 'atributo', 'apunte', 'tabla lanzable', 'elemento de tabla', y 'macro'.

Puedes crear un nuevo objeto en el juego usando la funcióncreateObj. Debes especificar el tipo del objeto (uno de las propiedades_type válidas de la lista de objetos de arriba), así como también un objetoattributes que contiene una lista de propiedades para el objeto. Tenga en cuenta que si el objeto tiene un objeto padre (por ejemplo, los atributos y las habilidades pertenecen a los personajes, los gráficos, los textos y los trazados pertenecen a las páginas, etc.), debe pasar el ID del padre en la lista de propiedades (por ejemplo, debe incluir la propiedadcharacteridal crear un atributo). También ten en cuenta que incluso al crear nuevos objetos, no puedes establecer propiedades de solo lectura, estas se establecerán automáticamente en su valor predeterminado. La única excepción a esto es al crear un Camino, debes incluir la propiedad 'path', pero no se puede modificar una vez que el camino se haya creado inicialmente.

createObj devolverá el nuevo objeto, para que puedas seguir trabajando con él.

//Crear un nuevo atributo de Fuerza en cualquier Personaje que se añada al juego.
on("add:character", function(obj) {
    createObj("attribute", {
        name: "Fuerza",
        current: 0,
        max: 30,
        characterid: obj.id
    });
});

Eliminar Objetos

object.remove()

Nota: actualmente puedes eliminar los objetos 'graphic', 'text', 'path', 'character', 'ability', 'attribute', 'handout', 'rollabletable', 'tableitem' y 'macro'.

Puedes eliminar objetos de juego existentes usando la función .remove(). La función .remove() funciona en todos los objetos que puedes crear con la función createObj. Llamas a la función directamente en el objeto. Por ejemplo,mycharacter.remove();.


Objetos Globales

Hay varios objetos que están disponibles globalmente en cualquier parte de tu script.

Campaign() (función)

Una función que devuelve el objetoCampaign. Dado que solo hay una campaña, este global siempre apunta a la única campaña en el juego. Útil para hacer cosas como verificar si un objeto está en la página activa usandoCampaign().get("playerpageid").


estado

La variablestatees un objeto de ámbito global al que pueden acceder todos los scripts que se ejecuten en un juego. Puede acceder al objetostatedesde cualquier función o llamada de retorno en cualquier momento con sólo utilizar la variable global denominadastate. Además, elestadose persiste entre ejecuciones delSandbox, por lo que puedes usarlo para almacenar información que deseas tener en ejecuciones futuras de tu script.

Nota:Debería utilizar el objeto de estado para almacenar información que sólo necesite la API, ya que no se envía a los ordenadores de los jugadores y no aumenta el tamaño de su archivo de juego. Almacene los valores necesarios en el juego en las propiedades de los objetos Roll20.

Tipos almacenables

El objeto de estadosólo es capaz de persistir tipos de datos simples, tal y como admite el estándarJSON.

Tipo Ejemplos Descripción
Booleano verdaderofalso El valorverdaderoofalso.
Número 123.5 10 1.23e20 Cualquier formato de número soportado por Javascript. Punto flotante o entero.
Cadena 'Hola Fantasía' "oh, y Mundo" Una cadena estándar de texto.
Arreglo [ 1, 2, 3, 4 ] [ 'A','B','C'][1, 2, ['bob', 3], 10, 2.5] Una colección ordenada de cualquiera de los tipos, incluidos otros arrays.
Objeto { key: 1, value: 'roll20' } Un objeto simple de clave/valor con claves de cadena y cualquiera de los tipos como valor, incluidos otros objetos.

Advertencia:Aunque las funciones parecerán funcionar cuando se almacenen en el estado inicialmente, desaparecerán la primera vez que el estadose restaure desde la persistencia, como en un reinicio de la caja de arena.

  • Nota: Esto incluye objetos Roll20 que obtienes de eventos o las funciones encontrarObjs()obtenerObj()filtrarObjs()crearObj(), etc.

Recordatorios importantes

El objetostatese comparte entre todos los scripts de una caja de arena. Para evitar romper otros scripts, es importante seguir algunas pautas simples:

  • Nuncaasignar directamente a la raízestadoobjeto.
estado = { break: 'all the things' };  // ¡¡¡NUNCA HAGAS ESTO!!!

 

  • Eviteutilizando variables locales denominadasstateen sus scripts. Si bien esto funcionará, será confuso para los usuarios posteriores de tus scripts y podría causar problemas si se edita descuidadamente el código.
function turn(){
    var state = Campaign().get('turnorder');  // Mala práctica, evítala!
    // ...
}

 

  • Siempre coloca tus propiedades debajo de al menos una propiedad de espacio de nombres. Asegúrate de usar una propiedad de espacio de nombres lo suficientemente descriptiva. Evita nombres como script o ajustes. Es mejor usar el nombre de tu módulo o tu propio nombre o identificador.
if( ! state.MyModuleNamespace ) {
    state.MyModuleNamespace = { module: 'mi módulo', bien: '¡esto está bien!', cuenta: 0 };
}
state.MyModuleNamespace.cuenta++;

Ejemplo de uso

Este es un ejemplo de trabajo que utiliza elestadodel objeto correctamente.

on('ready',function() {
    "use strict";

    // Verifica si la propiedad con namespace existe, creándola si no existe
    if( ! state.MyModuleNS ) {
        state.MyModuleNS = {
            versión: 1.0,
            configuración: {
                color1: '#ff0000',
                color2: '#0000ff'
            },
            conteo: 0
        };
    }

    // Utilizando las propiedades del estado para configurar un mensaje en el chat. 
    sendChat(
        'Test Module',
        '<span style="color: '+state.MyModuleNS.config.color1+';">'+
            'Prueba de Estado'+
        '</span> '+
        '<span style="color: '+state.MyModuleNS.config.color2+';">'+
            'Script v'+state.MyModuleNS.version+' iniciado '+(++state.MyModuleNS.count)+' veces!'+
        '</span>'
    );
});

Encontrar/Filtrar Objetos

La API proporciona varias funciones auxiliares que se pueden usar para encontrar objetos.

getObj(tipo, id)
Esta función obtiene un solo objeto si se pasa el _tipo del objeto y el _id. Es mejor usar esta función en lugar de las otras funciones de búsqueda siempre que sea posible, ya que es la única que no tiene que iterar a través de toda la colección de objetos.

on("change:graphic:represents", function(obj) {
    if(obj.get("represents") != "") {
       var character = getObj("character", obj.get("represents"));
    }
});

 


findObjs(attrs)

Pasa esta función una lista de atributos y devolverá todos los objetos que coincidan como un array. Ten en cuenta que esto opera en todos los objetos de todos los tipos en todas las páginas, así que probablemente quieras incluir al menos un filtro para _type y _pageid si estás trabajando con objetos de juego de mesa.

var currentPageGraphics = findObjs({                              
  _pageid: Campaign().get("playerpageid"),                              
  _type: "graphic",                          
});
_.each(currentPageGraphics, function(obj) {    
  //Hacer algo con obj, que está en la página actual y es un gráfico.
});

También puedes pasar un segundo argumento opcional que contenga un objeto con una lista de opciones, incluyendo:

  • caseInsensitive(verdadero/falso): Si es verdadero, las propiedades de cadena se compararán sin tener en cuenta la mayúsculas y minúsculas de la cadena
var targetTokens = findObjs({
    name: "target"
}, {caseInsensitive: true});
//Devuelve todos los tokens con un nombre de 'target', 'Target', 'TARGET', etc.

filterObjs(callback)

Ejecutará la función de devolución de llamada proporcionada en cada objeto, y si la devolución de llamada devuelve verdadero, el objeto se incluirá en el array de resultados. Actualmente, no se recomienda utilizar filterObjs() para la mayoría de los casos, debido a que findObjs() tiene un índice incorporado para mejorar la velocidad de ejecución, es casi siempre mejor usar findObjs() para obtener objetos del tipo deseado primero, y luego filtrarlos utilizando el método .filter() nativo para arrays.

var results = filterObjs(function(obj) {    
  if(obj.get("left") < 200 && obj.get("top") < 200) return true;    
  else return false;
});
//Results es un array de todos los objetos que están en la esquina superior izquierda del tablero.

getAllObjs()

Devuelve una matriz de todos los objetos en el Juego (todos los tipos). Equivalente a llamar a filterObjs y simplemente devolver verdadero para cada objeto.


getAttrByName(character_id, attribute_name, value_type)

Obtiene el valor de un atributo, utilizando el valor predeterminado de la hoja de personaje si el atributo no está presente. value_type es un parámetro opcional, que puedes usar para especificar "actual" o "máx".

getAttrByNamesóloobtendrá el valor del atributo, no el objeto atributo en sí. Si deseas hacer referencia a propiedades del atributo que no sean "actual" o "máx", o si deseas cambiar propiedades del atributo, debes usar una de las otras funciones anteriores, como findObjs.

Para secciones repetidas, puedes usar el formatorepeating_section_$n_attribute, dondenes el número de fila repetida (comenzando desde cero). Por ejemplo,repeating_spells_$2_nameretornará el valor denamede la tercera fila derepeating_spells.

Puedes lograr el comportamiento equivalente agetAttrByNamecon el siguiente:

// current and max are completely dependent on the attribute and game system
// in question; there is no function available for determining them automatically
function myGetAttrByName(character_id,
                         attribute_name,
                         attribute_default_current,
                         attribute_default_max,
                         value_type) {
    attribute_default_current = attribute_default_current || '';
    attribute_default_max = attribute_default_max || '';
    value_type = value_type || 'current';

    var attribute = findObjs({
        type: 'attribute',
        characterid: character_id,
        name: attribute_name
    }, {caseInsensitive: true})[0];
    if (!attribute) {
        attribute = createObj('attribute', {
            characterid: character_id,
            name: attribute_name,
            current: attribute_default_current,
            max: attribute_default_max
        });
    }

    if (value_type == 'max') {
        return attribute.get('max');
    } else {
        return attribute.get('current');
    }
}
¿Fue útil este artículo?
Usuarios a los que les pareció útil: 19 de 21