API: Objetos

Hay varios tipos diferentes de objetos que se utilizan en toda la API de Roll20. A continuación, se incluye una breve lista de cada uno de ellos, qué es y qué propiedades contiene (junto con los valores predeterminados). Como regla general, las propiedades que comienzan con un guión bajo (_) sonde solo lecturay no se pueden modificar. Debe acceder a las propiedades de los objetos utilizandoobj.get("propiedad")y establecer nuevos valores utilizandoobj.set("propiedad", nuevo valor)uobj.set({property: newvalue, property2: newvalue2}).

Nota:La propiedadidde un objeto es un identificador único a nivel global: no debe haber dos objetos con el mismo identificador, ni siquiera entre objetos de tipos diferentes. Además, dado que se accede con frecuencia al identificador de un objeto y este nunca cambia, existe un atajo disponible que le permite acceder a él utilizandoobj.iden lugar deobj.get("_id")si lo desea (ambos funcionan).


Pathv2 (disponible en la última versión del motor VTT)

Propiedad Valor predeterminado Notas
_id  

Un identificador único para este objeto. Único en todo el mundo entre todos los objetos
de este juego. Solo lectura.

_tipo «pathv2» 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.
forma "" «pol», «free», «eli» o «rec» Determina si la ruta se muestra como una polilínea, a mano alzada, una elipse o un rectángulo.
puntos    Una cadena JSON que contiene una matriz de puntos x, y utilizados para crear la ruta.
llenar "transparente" Color de relleno. Utilice la cadena «transparent» o un color hexadecimal como cadena, por ejemplo «#000000».
accidente cerebrovascular «#000000» Color del trazo (borde).
rotación 0 Rotación (en grados).
capa "" Capa actual, una de «gmlayer», «objects», «map», «walls» o «foreground». La capa de paredes se utiliza para la iluminación dinámica, y los caminos en la capa de paredes bloquearán la luz.
anchura_del_trazo 5  
y 0 Coordenada Y del centro de la ruta
x 0 Coordenada X del centro de la ruta
controlado por ""

Lista delimitada por comas de los ID de los jugadores que pueden controlar la ruta. Los jugadores que controlan pueden eliminar la ruta. Si la ruta fue creada por un jugador, ese jugador se incluye automáticamente en la lista.

Todos los jugadoresestán representados por la palabra «todos» en la lista.

tipo de barrera "muro"

Las opciones dinámicas de tipo de barrera de iluminación incluyen «pared», «unidireccional» y «transparente».

oneWayReversed falso

booleano

desvanecer al solaparse verdadero Cuando es verdadero, la superposición del límite interior de un gráfico de capa de objeto con el objeto de la capa en primer plano hará que su opacidad se convierta en el valor de fadeOpacity.
Cuando sea falso, permanecerá con opacidad total independientemente de la superposición.
opacidad de desvanecimiento 0.3 Este valor determina la opacidad del objeto cuando se superpone un gráfico en la capa del objeto y fadeOnOverlap se establece en true.
renderizarComoPaisaje falso Cuando sea verdadero, este objeto quedará oculto por la iluminación dinámica y la máscara Ocultar/Revelar.

 

La propiedad shape tiene los siguientes valores:

  • «pol»:polilínea. Se traza una línea recta entre cada punto consecutivo. Si el punto inicial y el punto final son iguales, se crea una forma cerrada.
  • «libre»- A mano alzada. Se dibuja una curva utilizando los puntos como guías. Si el punto inicial y el punto final son iguales, se crea una forma cerrada.
  • «eli» - Elipse. Se dibuja una elipse utilizando los puntos para establecer un cuadro delimitador. Solo se utilizan los dos primeros puntos.
  • «rec»: rectángulo. Se dibuja un rectángulo utilizando los puntos para establecer un cuadro delimitador. Solo se utilizan los dos primeros puntos.

La propiedad points es una cadena JSON que contiene una matriz de puntos. Los puntos se representan como una matriz de dos posiciones con una ubicación x e y. Un triángulo desde (0,0) hasta (0,70) y desde (70,0) hasta (0,0) se representaría como «[[0,0],[0,70],[70,0],[0,0]]».

Las propiedades x eyposicionan el objeto PathV2 en la página. Especifican dónde debe estar el centro del dibujo. Para algunas formas (elipses y rectángulos), eso es bastante fácil de averiguar. Para formas más complejas (polilíneas y dibujos a mano alzada), deberá encontrar los valores mínimo y máximo de la propiedad de los puntosy utilizar el punto equidistante entre ellos.

 


Camino (Mesa clásica)

Propiedad Valor predeterminado Notas
_id  

Un identificador único para este objeto. Único en todo el mundo entre todos los objetos
de este juego. Solo lectura.

_tipo "vía" 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.
_path    Una cadena JSON que describe las líneas de la ruta. Solo lectura, excepto al crear una nueva ruta. Consulte la sección sobre rutas para obtener más información.
llenar "transparente" Color de relleno. Utilice la cadena «transparent» o un color hexadecimal como cadena, por ejemplo «#000000».
accidente cerebrovascular «#000000» Color del trazo (borde).
rotación 0 Rotación (en grados).
capa "" Capa actual, una de «gmlayer», «objects», «map», «walls» o «foreground». La capa de paredes se utiliza para la iluminación dinámica, y los caminos en la capa de paredes bloquearán la luz.
anchura_del_trazo 5  
ancho 0  
alto 0  
arriba 0 Coordenada Y del centro de la ruta
izquierda 0 Coordenada X del centro de la ruta
escalaX 1  
escalaY 1  
controlado por ""

Lista delimitada por comas de los ID de los jugadores que pueden controlar la ruta. Los jugadores que controlan pueden eliminar la ruta. Si la ruta fue creada por un jugador, ese jugador se incluye automáticamente en la lista.

Todos los jugadoresestán representados por la palabra «todos» en la lista.

tipo de barrera "muro"

Las opciones dinámicas de tipo de barrera de iluminación incluyen «pared», «unidireccional» y «transparente».

oneWayReversed falso

booleano

desvanecer al solaparse verdadero Cuando es verdadero, la superposición del límite interior de un gráfico de capa de objeto con el objeto de la capa en primer plano hará que su opacidad se convierta en el valor de fadeOpacity.
Cuando sea falso, permanecerá con opacidad total independientemente de la superposición.
opacidad de desvanecimiento 0.3 Este valor determina la opacidad del objeto cuando se superpone un gráfico en la capa del objeto y fadeOnOverlap se establece en true.
renderizarComoPaisaje falso Cuando sea verdadero, este objeto quedará oculto por la iluminación dinámica y la máscara Ocultar/Revelar.

Para obtener más información sobre el formato de los datos de ruta, consulte la sección sobre rutas.

 


Ventana

Nota: Las ventanas y puertas 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 una ventana o puerta.

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo "ventana" Solo lectura.
color   Un color hexadecimal de la ruta.
x 0 Coordine el centro de la puerta en el eje x.
y 0 Coordine el centro de la puerta en el eje y.
está abierto falso Determina si un jugador puede moverse a través de esta ventana.
está bloqueado falso Impide que los jugadores puedan interactuar con la ventana.
vía   Representado como dos manejadores (manejador0 y manejador1), cada uno 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: Las ventanas y puertas deutilizan 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 una ventana o puerta.

Propiedad

Valor predeterminado

Notas

_id

 

Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.

_tipo

puerta

Solo lectura.

color

 

Un color hexadecimal de la ruta.

x

0

Coordine el centro de la puerta en el eje x.

y

0

Coordine el centro de la puerta en el eje y.

está abierto

falso

Determina si un jugador puede atravesar esta puerta.

está bloqueado

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 barrera.

vía

 

Representado como dos manejadores (manejador0 y manejador1), cada uno con coordenadas x e y.


Texto

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo "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.
arriba 0  
izquierda 0  
ancho 0  
alto 0  
texto ""  
tamaño de fuente 16 Para obtener los mejores resultados, utilice 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.
rotación 0  
color rgb(0, 0, 0)  
accidente cerebrovascular "transparente"  
familia_tipográfica «Arial» Si no se configura, al cambiar posteriormente el valor de la propiedad «text», el tamaño de fuente se reducirá a 8. Valores posibles (no importa si se escribe en mayúsculas o minúsculas): «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 "" Capa actual, una de «gmlayer», «objects», «map», «walls» o «foreground». La capa de paredes se utiliza para la iluminación dinámica, y los caminos en la capa de paredes bloquearán la luz.
controlado por "" Lista delimitada por comas de los ID de los jugadores que pueden controlar el texto. Los jugadores que controlan pueden eliminar el texto. Si el texto ha sido creado por un jugador, dicho jugador se incluye automáticamente en la lista.

Todos los jugadoresestán representados por la palabra «todos» en la lista.

desvanecer al solaparse verdadero Cuando es verdadero, la superposición del límite interior de un gráfico de capa de objeto con el objeto de la capa en primer plano hará que su opacidad se convierta en el valor de fadeOpacity.
Cuando sea falso, permanecerá con opacidad total independientemente de la superposición.
opacidad de desvanecimiento 0.3 Este valor determina la opacidad del objeto cuando se superpone un gráfico en la capa del objeto y fadeOnOverlap se establece en true.
renderizarComoPaisaje falso Cuando sea verdadero, este objeto quedará oculto por la iluminación dinámica y la máscara Ocultar/Revelar.

Gráfico (ficha/mapa/tarjeta/etc.)

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo «gráfico» Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_subtipo "ficha" Puede ser «ficha» (para fichas y mapas) o «tarjeta» (para tarjetas). Solo lectura.
_cardid   Establezca un ID si el gráfico es una tarjeta. 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. Véase la nota sobre las restricciones de imgsrc y avatar más abajo.
bar1_link   Establezca un ID si la barra 1 está vinculada a un carácter.
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 del gráfico.
arriba 0 Número de píxeles desde el borde superior del mapa hasta el centro del gráfico.
ancho 0 Ancho del gráfico, en píxeles.
alto 0 Altura del gráfico, en píxeles.
rotación 0 La orientación del token en grados.
capa ""

Capa actual, una de «gmlayer», «objects», «map», «walls» o «foreground». La capa de paredes se utiliza para la iluminación dinámica, y los caminos en la capa de paredes bloquearán la luz.

isdrawing falso Esta propiedad se modifica desde el menú contextual Avanzado.
desactivarAjustar falso Desactivar el ajuste gráfico a la cuadrícula.
desactivarMenúToken falso Desactive la configuración del menú de tokens gráficos (burbujas de tokens y menú radial).
flipv falso Gire verticalmente.
fliph falso Gire horizontalmente.
special Ability Name "" El nombre del token.
gmnotes "" Notas sobre la ficha solo visibles para el GM.
controlado por "" Lista delimitada por comas de los ID de los jugadores que pueden controlar el gráfico. Los jugadores que controlan pueden eliminar el gráfico. Si el gráfico ha sido creado por un jugador, dicho jugador se incluye automáticamente en la lista.

Todos los jugadoresestán representados por la palabra «todos» en la lista.

valor_bar1 "" Valor actual de la barra 1. Puede ser un número o un texto.
bar2_valor ""  
valor_bar3 ""  
bar1_máximo "" Valor máximo de la barra 1. Si se establecen tanto _value como _max, es posible que se muestre una barra encima del token que indique el porcentaje de la barra 1.
bar2_máximo ""  
bar3_máximo ""  
aura1_radio "" Radio del aura, utilizando las unidades establecidas en la configuración de la página. Puede ser un número entero o un número flotante. Establezca la cadena vacía para borrar el aura.
aura2_radio ""  
aura1_color #FFFF99 Un color hexadecimal o el aura.
aura2_color «#59E594»  
aura1_cuadrado falso ¿El aura es un círculo o un cuadrado?
aura2_cuadrado falso  
color_tinte "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 a continuación para obtener más información.
marcadores_token "" Una matriz JSON convertida en cadena que contiene un objeto para cada marcador de ficha que hay actualmente en el juego:. A continuación puede encontrar un ejemplo.
nombre de la muestra falso Si se muestra la placa con el nombre del token.
nombre de los actores falso Muestre la placa de identificación a todos los jugadores.
barra_de_reproductores1 falso Mostrar la barra 1 a todos los jugadores.
barra_de_reproducción2 falso  
barra_de_reproducción3 falso  
showplayers_aura1 falso Mostrar Aura 1 a todos los jugadores.
showplayers_aura2 falso  
edit_name_jugadores verdadero Permitir a los jugadores controladores editar el nombre del token. También muestra la placa de identificación a los jugadores que controlan, incluso si showplayers_name es falso.
editores_bar1 verdadero Permitir a los jugadores controladores editar la barra 1 del token. También muestra la barra 1 a los jugadores que controlan, incluso si showplayers_bar1 es falso.
editadores_bar2 verdadero  
edit_bar3 verdadero  
editores_aura1 verdadero Permitir a los jugadores controladores editar el Aura 1 de la ficha. También muestra Aura 1 a los jugadores que controlan, incluso si showplayers_aura1 es falso.
editores_aura2 verdadero  
radio_de_luz "" Radio de iluminación dinámico.
radio_de_atenuación_de_luz "" Inicio del radio de luz tenue. Si light_dimradius es una cadena vacía, el token emitirá una 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.
luz_otrosjugadores falso Muestre la luz del token a todos los jugadores.
luz_hassight falso La luz tiene «visión» para controlar a los jugadores a efectos de la configuración «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ía en la «mitad» delantera del «campo de visión».
luz_losángeles «360» Ángulo (en grados) del campo de visión del gráfico (suponiendo que light_hassight está establecido en verdadero).
último movimiento "" El último movimiento de la ficha. Es una lista de coordenadas delimitadas por comas. Por ejemplo, «300,400» significaría que la ficha comenzó su último movimiento en la posición izquierda=300, arriba=400. Siempre se supone que los valores actuales superior + izquierdo del token son el «punto final» del último movimiento. Los puntos de referencia se indican mediante múltiples conjuntos de coordenadas. Por ejemplo, «300,400,350,450,400,500» indicaría que el token comenzó en izquierda=300, arriba=400, luego estableció un punto de referencia en izquierda=350, arriba=450, otro punto de referencia en izquierda=400, arriba=500, y luego terminó el movimiento en sus coordenadas actuales arriba + izquierda.
multiplicador_de_luz «1» Multiplicador de la eficacia de las fuentes de luz. Un multiplicador de dos permitiría al token ver 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 una ficha en el que se revela la Niebla de Guerra Avanzada.
multiplicador_de_sensibilidad_a_la_luz 100 Multiplicador de la eficacia de las fuentes de luz. Un multiplicador de 200 permitiría que el token viera el doble de lejos que un token con un multiplicador de 100, con la misma fuente de luz.
efecto_de_visión_nocturna
  Cambia el efecto de visión nocturna. Otras opciones incluyen «Atenuación» y «Nocturno».
ubicación_de_la_barra   Ajusta la ubicación de las barras de tokens. Las opciones incluyen «overlap_top», «overlap_bottom» y «bottom».
barra compacta
  Ajusta si la barra es compacta o no. Otra opción es compacta.
bloquearMovimiento falso Opción para bloquear un gráfico en su lugar. Valor booleano verdadero o falso
desvanecer al solaparse verdadero Cuando es verdadero, la superposición del límite interior de un gráfico de capa de objeto con el objeto de la capa en primer plano hará que su opacidad se convierta en el valor de fadeOpacity .
Cuando sea falso, permanecerá en su baseOpacity establecida independientemente de la superposición.
opacidad de desvanecimiento .3 Este valor determina la opacidad del objeto cuando se superpone un gráfico en la capa del objeto y fadeOnOverlap se establece en true.
renderizarComoPaisaje falso Cuando sea verdadero, este objeto quedará oculto por la iluminación dinámica y la máscara Ocultar/Revelar.
opacidad base 1.0 Este valor determina la opacidad inicial de los gráficos. Está activo en cualquier capa, no solo en la capa de primer plano.

Ejemplo de marcadores simbólicos

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

Notas importantes sobre los personajes vinculados + fichas

Tenga en cuenta que, en el caso de los tokens vinculados a personajes, el campocontrolledbydel token se sustituye por el campocontrolledbydel personaje.

En el caso de las barras de tokens (por ejemplo,bar1_valueybar1_max) en las que el token está vinculado a un atributo (por ejemplo,bar1_linkestá establecido), al establecer un valor para la barra se actualizarán automáticamente también los valoresactualesy/omáximosdel atributo subyacente, por lo que no es necesario establecer ambos manualmente.

Además, cuando se modifica el atributo (o barra de fichas) en el juego, se escuchará unevento change:attribute(y específico de la propiedad, por ejemplo,change:attribute:current), seguido de un eventochange:graphic(ychange:graphic:bar1_value). Puede elegir responder a cualquiera de los dos eventos, pero los valores de barra subyacentes aún no se actualizarán cuando se active el evento de atributo, ya que este se activa primero.

Notas importantes sobre los indicadores de estado

A partir del 6 de agosto de 2013, ha cambiado la forma en que se gestionan los marcadores de estado en los tokens. La propiedad «statusmarkers» del objeto gráfico es ahora una lista delimitada por comas de todos los colores/iconos de marcadores de estado que deben estar activos en el token. El formato es el siguiente:

Delimitado por comas (utilice «join» para crear o «split» para convertirlo en una matriz). 
//Si un icono/color de estado va seguido del símbolo «@», el número que aparece después de
//«@» se mostrará como insignia en el icono statusmarkers = «red,blue,skull,dead,brown@2,green@6»

Aunque puede acceder directamente a la propiedadstatusmarkers, para mantener la compatibilidad con los scripts existentes y facilitar el trabajo con los marcadores de estado sin necesidad de escribir código para dividir y analizar 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 marcador de estado tiene una propiedad «status_<markername>». Por ejemplo:

obj.get("status_red"); //Devolverá false si el marcador no está activo, true si lo está y una cadena (por ejemplo, "2" o "5") si actualmente hay una insignia establecida en el marcador
obj.get('status_bluemarker'); //Sigue siendo compatible con versiones anteriores y es equivalente a obj.get("status_blue");
obj.set("status_red", false); //eliminaría el marcador
obj.set("status_skull", "2"); //establecería una insignia de "2" en el icono de la calavera y la añadiría al token si aún no está activa.

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 un token y, por ejemplo,change:graphic:status_redNO es un evento válido y nunca se activará.

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

«rojo», «azul», «verde», «marrón», «morado», «rosa», «amarillo», «muerto», «calavera», «somnoliento», «medio corazón», «media neblina», «interdicción», «caracol», «hélice de rayo», «llave inglesa», «corazón encadenado», «perno químico», «zona mortal», «bébame», «grieta en el borde», «máscara ninja», «cronómetro», «red de pesca», «sobremarcha», «fuerte», «puño», «candado», «tres hojas», «ala esponjosa», «apaleado», «pisada», «flecha», «aura», «dolor de espalda», «bandera negra», «ojo sangrante», «escudo de perno», «corazón roto», «telaraña», «escudo roto», «bandera ondeando», «radioactivo», «trofeo», «cráneo roto», «orbe congelado», «bomba rodante», «torre blanca», «agarrar», «gritar», «granada», «ametralladora», «todos para uno», «traje de ángel», «blanco de tiro con arco»

Página

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo página Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_zorder "" Lista de ID delimitada por comas que especifica el orden de los objetos en la página. toFrontytoBack(y sus elementos asociados del menú contextual) pueden reordenar esta lista. Solo lectura.
nombre "" Título de la página.
mostrar cuadrícula verdadero Mostrar la cuadrícula en el mapa.
mostraroscuridad falso Mostrar la niebla de guerra en el mapa.
iluminación de espectáculos falso Utilice iluminación dinámica.
ancho 25 Ancho en unidades.
alto 25 Altura en unidades.
incremento_de_encaje 1 Tamaño de un espacio de cuadrícula en unidades.
opacidad_de_la_cuadrícula 0.5 Opacidad de las líneas de la cuadrícula.
opacidad_de_la_niebla 0.35 Opacidad de la niebla de guerra para el GM.
color_de_fondo #FFFFFF Color hexadecimal del fondo del mapa.
color de la cuadrícula #C0C0C0 Color hexadecimal de las líneas de la cuadrícula.
tipo_de_red "cuadrada" Uno de «cuadrado», «hexagonal» o «hexagonal». (hex corresponde a Hex(V) y hexr corresponde a Hex(H))
número_escala 5 La distancia de una unidad.
unidades_de_escala «ft» El tipo de unidades que se utilizarán para la escala.
etiquetas de cuadrícula falso Mostrar etiquetas de cuadrícula para cuadrícula hexagonal.
tipo diagonal «cuatro» Uno de «cuatro», «pitagórico» (euclidiano), «trescinco» o «manhattan».
archivado falso Si la página se ha archivado.
iluminación actualizada falso Actualice la iluminación dinámica solo cuando se suelte un objeto.
fuerza luminosa falso Aplicar la línea de visión para los objetos.
restricción de luz falso No permita que los objetos que tienen visión se muevan a través de las paredes de iluminación dinámica.
lightglobalillum falso Si es cierto que un token puede «ver» en cualquier lugar, se supone que hay luz brillante presente.
jukeboxtrigger   Controla la reproducción de la página al cargarla. Las opciones incluyen «nonestopall» o el id-de-la-pista.
iluminación_dinámica_activada falso  
modo_luz_diurna_activado falso  
Opacidad del modo de luz diurna 1  
modo explorador apagado Opciones: «desactivado», «básico»
efecto oscuridad "ninguno" Opciones: «ninguna», «niebla oscura», «niebla clara»

Campaña

Propiedad Valor predeterminado Notas
_id raíz Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo "campaña" Se puede utilizar para identificar el tipo de objeto o buscar el objeto; sin embargo, tenga en cuenta que solo hay un objeto Campaña y que se puede acceder a él a través deCampaign(). Solo lectura.
orden de giro "" Una cadena JSON del orden de turno. Véase más abajo.
página de iniciativas falso ID de la página utilizada para el rastreador cuando se abre la ventana del orden de turno. Cuando se establece enfalso, se cierra la ventana del orden de turno.
id de la página del jugador falso ID de la página en la que está establecido el marcador del reproductor. Los jugadores ven esta página de forma predeterminada, a menos que se sustituya por las páginas específicas de los jugadores que se indican a continuación.
páginas específicas de los jugadores falso Un objeto (NO UNA CADENA JSON) con el formato: {"player1_id": "page_id", "player2_id": "page_id" ... } Cualquier reproductor establecido en una página de este objeto anulará el playerpageid.
_carpeta_del_diario "" Una cadena JSON que contiene datos sobre la estructura de carpetas del juego. Solo lectura.
_carpeta_jukebox "" Una cadena JSON que contiene datos sobre la estructura de la lista de reproducción del jukebox del juego. Solo lectura.
Capa de primer plano visible verdadero Cuando sea verdadero, ustedes verán los objetos en la capa del primer plano. Cuando sea falso, no lo harán. Nota: esta es una configuración global que afecta a todas las páginas.

 Orden de turno

El orden de turno es una cadena JSON que representa la lista actual del orden de turno. Es una matriz 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úrese de mantenerlos sincronizados o podría obtener resultados extraños.

Para trabajar con el orden de turno, deberá utilizarJSON.parse()para obtener un objeto que represente el estado actual del orden de turno (NOTA: compruebe primero que no sea una cadena vacía""... si lo es, inicialícela usted mismo con una matriz vacía). Aquí hay un ejemplo de objeto de orden de turno:

[
    {
     "id":"36CA8D77-CF43-48D1-8682-FA2F5DFD495F", //El ID del objeto gráfico. Si se configura esta opción, la lista de turnos extraerá automáticamente el nombre y el icono para la lista basándose en el gráfico de la mesa.
     "pr":"0", //El valor actual del elemento de la lista. Puede ser un número o texto.
     "custom":"" //Título personalizado para el artículo. Se ignorará si el ID se establece en un valor distinto de «-1».
    },
    {
     "id":"-1", //Para los elementos personalizados, el ID DEBE establecerse en "-1" (tenga en cuenta que se trata de una CADENA, no de un NÚMERO).
     "pr":"12",
     "custom":"Prueba personalizada" //El nombre que se mostrará para los elementos personalizados.
    }
]

Para modificar el orden de turno, edite el objeto de orden de turno actual y, a continuación, utiliceJSON.stringify()para cambiar el atributo en la campaña. Tenga en cuenta que el orden de los turnos en la lista es el mismo que el orden de la matriz, por lo que, por ejemplo,push()añade un elemento al final de la lista,unshift()lo añade al principio, etc.

var turnorder;
if(Campaign().get("turnorder") == "") turnorder = []; //NOTA: Primero comprobamos que el turnorder no sea solo una cadena vacía. Si es así, trátelo como una matriz vacía.
else turnorder = JSON.parse(Campaign().get("turnorder"));

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

Jugador

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo "jugador" Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_d20idusuario   ID de usuario: para todo el sitio. Por ejemplo, la página de usuario del jugador en la wiki es /User:ID, donde ID es el mismo valor almacenado en _d20userid. Solo lectura.
_displayname "" El nombre actual que aparece en pantalla del jugador. Se puede cambiar desde la página de configuración del usuario. Solo lectura.
_en línea falso Solo lectura.
_última página "" El identificador de la última página que el jugador vio como GM. Esta propiedad no se actualiza para los jugadores o GM que se han unido como jugadores. Solo lectura.
macrobar "" Cadena delimitada por comas de las macros de la barra de macros del reproductor. Solo lectura.
hablando como "" El ID del jugador o personaje que usted ha seleccionado en el menú desplegable «Como». Cuando se establece en la cadena vacía, el jugador habla como él o ella mismo(a). Cuando se establece en un personaje, el valor es«personaje|ID», donde ID es el ID del personaje. Cuando el GM habla 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 mediciones en el mapa, sus círculos de ping, etc.
mostrar barra de macros falso Si se muestra la barra de macros del jugador.

Macro

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo "macro" Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_playerid   El ID del jugador que creó esta macro. Solo lectura.
special Ability Name "" El nombre de la macro.
acción "" El texto de la macro.
visible para "" Lista delimitada por comas con los ID de los jugadores que pueden ver la macro, además del jugador que la ha creado.

Todos los jugadoresestán representados por la palabra «todos» en la lista.

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

 


Tablas para tiradas

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo mesa plegable Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
special Ability Name «nueva tabla»  
reproductores de espectáculos verdadero  

Elemento de tabla 

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo «elemento de tabla» Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_rollabletableid "" ID de la tabla a la que pertenece este elemento. Solo lectura.
avatar "" URL de una imagen utilizada para el elemento de la tabla. Consulte la nota sobre las restricciones relativas a los avatares y las fuentes de imágenes (imgsrc) más abajo.
special Ability Name ""  
peso 1 Peso del elemento de la tabla en comparación con los demás elementos de la misma tabla. En pocas palabras, un elemento con peso 3 tiene tres veces más probabilidades de ser seleccionado al tirar los dados que un elemento con peso 1.

Personaje

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo "personaje" Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
avatar "" URL de una imagen utilizada para el personaje. Consulte la nota sobre las restricciones relativas a los avatares y las fuentes de imágenes (imgsrc) más abajo.
special Ability Name ""  
biografía "" La biografía del personaje. Consulte la nota siguiente sobre cómo acceder a los campos Notas, GMNotas y biografía.
gmnotes "" Notas sobre el personaje que solo puede ver el GM. Consulte la nota siguiente sobre cómo acceder a los campos Notas, GMNotas y biografía.
archivado falso  
diarios de jugadores "" Lista delimitada por comas con los ID de los jugadores que pueden ver este personaje. Utilice «all» para que todos los jugadores puedan ver.

Todos los jugadoresestán representados por la palabra «todos» en la lista.

controlado por "" Lista delimitada por comas con los ID de los jugadores que pueden controlar y editar este personaje. Utilice «all» para dar a todos los jugadores la posibilidad de editar.

Todos los jugadoresestán representados por la palabra «todos» en la lista.

_defaulttoken "" Una cadena JSON que contiene los datos del token predeterminado del personaje, si se ha establecido uno. Tenga en cuenta que se trata de un «blob» similar a «bio» y «notes», por lo que debe pasar una función de devolución de llamada a get(). Solo lectura.

Atributo

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo "atributo" Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_characterid "" ID del personaje al que pertenece este atributo. Solo lectura. Obligatorio cuando se utilizacreateObj.
special Ability Name "Sin título"  
actual "" Se puede acceder al valor actual del atributo en el chat y las macros con la sintaxis@{Character Name|Attribute Name} o en las habilidades con la sintaxis@{Attribute Name}.
máxima "" Se puede acceder al valor máximo del atributo en el chat y las macros con la sintaxis@{Character Name|Attribute Name|max} o en las habilidades con la sintaxis@{Attribute Name|max}.

 Importante: Consulte la nota siguiente sobre cómo trabajar con hojas de personaje para obtener información sobre cómo los valores predeterminados de las hojas de personaje afectan al uso de los atributos.


Habilidad

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo "habilidad" Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
_characterid "" El personaje al que pertenece esta habilidad. Solo lectura. Obligatorio cuando se utilizacreateObj.
special Ability Name «Sin título_Habilidad»  
Descripción "" La descripción no aparece en la interfaz de la hoja de personaje.
acción "" El texto de la habilidad.
istokenaction falso ¿Es esta habilidad una acción simbólica que debería aparecer cuando se seleccionan los símbolos vinculados a su personaje principal?

Nota

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo "nota" Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
avatar "" URL de una imagen utilizada para el folleto. Consulte la nota sobre las restricciones relativas a los avatares y las fuentes de imágenes (imgsrc) más abajo.
special Ability Name «Nota misteriosa»  
notas "" Contiene el texto del folleto. Consulte la nota siguiente sobre el uso de Notes y GMNotes.
gmnotes "" Contiene el texto del folleto que solo ve el GM. Consulte la nota siguiente sobre el uso de Notes y GMNotes.
diarios de jugadores "" Lista delimitada por comas con los ID de los jugadores que pueden ver este documento. Utilice «all» para mostrar a todos los jugadores.

Todos los jugadoresestán representados por la palabra «todos» en la lista.

archivado falso  
controlado por "" Lista delimitada por comas con los ID de los jugadores que pueden controlar y editar este documento.

Todos los jugadoresestán representados por la palabra «todos» en la lista.

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


Cubierta

Tenga en cuenta que hay métodos API auxiliares para «robar», «repartir» o «barajar» cartas del mazo. Véasela publicación del foro sobre la actualización de la API de marzo de 2018.

Propiedad Valor predeterminado Notas
_id "" id de la baraja
_tipo cubierta  
special Ability Name "" nombre de la baraja
_barajaActual "" Una lista delimitada por comas de las cartas que se encuentran actualmente en el mazo (incluidas aquellas que se han jugado sobre la mesa o en las manos). Cambios cuando se baraja el mazo.
_currentIndex -1 el índice actual de nuestra posición en la baraja, «¿qué carta se sacará a continuación?».
_currentCardShown verdadero mostrar la carta actual en la parte superior del mazo
reproductores de espectáculos verdadero mostrar el mazo a los jugadores
jugadores pueden dibujar verdadero ¿Pueden ustedes robar cartas?
avatar "" la «parte posterior» de las cartas de esta baraja
mostrar falso mostrar el mazo en el tablero de juego (¿el mazo está visible actualmente?)
jugadores_vieron_tarjetas verdadero ¿Pueden los jugadores ver el número de cartas que tienen los demás jugadores en la mano?
jugadores_ven_las_cartas_del_rival falso ¿Pueden los jugadores ver el anverso de las cartas cuando miran las manos de otros jugadores?
gm_seenumcards verdadero ¿Puede el GM ver el número de cartas que tiene cada jugador en la mano?
gm_ver_tarjetas_delanteras falso ¿Puede el GM ver el anverso de las cartas cuando mira la mano de cada jugador?
tarjetas infinitas falso ¿Hay un número «infinito» de cartas en esta baraja?
_cardSequencer -1 Se utiliza internamente para avanzar el mazo al robar cartas.
cartas jugadas «faceup» ¿Cómo se juegan las cartas de esta baraja sobre la mesa? «boca arriba» o «boca abajo».
altura predeterminada "" ¿Cuál es la altura predeterminada para las cartas jugadas sobre la mesa?
ancho predeterminado ""  
modo de descarte "ninguno" ¿Qué tipo de pila de descarte tiene este mazo? «none» = sin pila de descartes, «choosebacks» = permite a los jugadores ver el reverso de las cartas y elegir una, «choosefronts» = ver el anverso y elegir, «drawtop» = robar la carta descartada más recientemente, «drawbottom» = robar la carta descartada más antigua.
_pilaDeDescartes "" ¿Cuál es la pila de descartes actual de este mazo? Lista de tarjetas delimitadas por comas. Son cartas que se han retirado del juego y no se volverán a colocar en el mazo al barajarlo hasta que se realice una recuperación.

Tarjeta

Propiedad Valor predeterminado Notas
special Ability Name "" Nombre de la tarjeta
avatar "" Parte delantera de la tarjeta
card_back "" Anular la imagen del reverso de la tarjeta
_deckid "" ID de la baraja
_tipo «tarjeta»  
_id ""  

Mano

Tenga en cuenta que cada jugador solo debe tener UNA mano.

Propiedad Valor predeterminado Notas
mano actual "" Lista de cartas actualmente en la mano, separadas por comas. Tenga en cuenta que esto ya no es de solo lectura. Lo ideal sería ajustarlo únicamente con las funciones de la baraja de cartas.
_tipo mano  
_parentid "" ID del jugador al que pertenece la mano.
_id ""  
vista actual «bydeck» Cuando el jugador abre la mano, ¿la vista es «por baraja» o «por carta»?

Pista de Jukebox

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo «jukeboxtrack» Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
jugando falso Booleano utilizado para determinar si la pista se está reproduciendo o no. Si se establece en «true» y softstop en «false», se reproduce una pista.
parada suave falso Booleano utilizado para determinar si una pista sin bucle ha finalizado al menos una vez. Debe establecerse en «false» para garantizar que se reproduzca una pista.
título "" La etiqueta visible para la pista en la pestaña del reproductor.
volumen 30 El nivel de volumen de la pista. Tenga en cuenta que esto debe establecerse como un número entero (no una cadena), o podría interrumpir la funcionalidad. Valores de 0 a 100 (porcentaje).
bucle falso ¿Se debe reproducir la pista en bucle? Establezca en verdadero si es así.

Efectos especiales personalizados

Propiedad Valor predeterminado Notas
_id   Un identificador único para este objeto. Único en todo el mundo entre todos los objetos de este juego. Solo lectura.
_tipo «custfx» Se puede utilizar para identificar el tipo de objeto o buscar el objeto. Solo lectura.
special Ability Name "" El nombre visible para el FX en la lista de FX.
definición {} Objeto Javascript que describe el FX.

Restricciones de las propiedades imgsrc y avatar

Aunque ahora puede editar las propiedadesimgsrcyavatar, con el fin de garantizar la seguridad de todos los usuarios de Roll20, hemos establecido las siguientes restricciones para dichas propiedades:


En el futuro, es posible que añadamos una herramienta para que se puedan cargar imágenes específicamente para su uso con scripts Mod (API), pero por ahora utilice las imágenes cargadas en su propia biblioteca. Tenga en cuenta que si elimina una imagen de su biblioteca, se eliminará de todos los juegos que utilicen esa imagen, incluidos los juegos que utilicen sus scripts Mod (API).


Uso de los campos Notas, GMNotas y Biografía Asíncrono

Para acceder a los campos «notes», «gmnotes» o «bio» en Personajes y Fichas, debe pasar una función de devolución de llamada como segundo argumento a la función get(). Aquí tiene un ejemplo:

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

Puede establecer el valor de estos campos como de costumbre. Tenga en cuenta que actualmente (a fecha de 09/05/2016) existe un error con estos campos asíncronos, por el que al configurarlos pasando valores a createObj falla silenciosamente, dejando el objeto en un estado extraño. Solo debe establecer estos valores utilizando .set hasta que se resuelva este problema. Detalles sobre el foro. También hay un error (a fecha de 05/11/2016) por el que, al intentar establecer las propiedades notes y gmnotes en la misma llamada a set(), la segunda propiedad de la llamada se establece de forma errónea. Detalles sobre el foro.


Trabajar con hojas de personaje

La función Hojas de personajes afecta al uso del tipo de objeto Atributos, ya que las hojas tienen la capacidad de especificar un valor predeterminado para cada atributo de la hoja. Sin embargo, si el atributo se establece en el valor predeterminado, aún no se ha creado un objeto Atributo real en el juego para ese personaje. Ofrecemos una función práctica que le oculta esta complejidad. Debe utilizar esta función para obtener el valor de un atributo en el futuro, especialmente si sabe que un juego utiliza una hoja de personaje.

getAttrByName(id_carácter, nombre_atributo, tipo_valor)

Simplemente especifique el ID del personaje, elnombre(no el ID) del atributo (por ejemplo, «HP» o «Str») y, a continuación, si desea el «actual» o el «máximo» para value_type. Aquí tiene 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)]]»


Tenga en cuenta que los campos que tienen valores calculados automáticamente devolverán la fórmula en lugar del resultado del valor. A continuación, puede pasar esa fórmula a sendChat() para utilizar el motor de dados y calcular el resultado automáticamente.

Asegúrese de consultar también la hoja de personaje para obtener más información sobre cómo interactúan las hojas de personaje con la API.

getAttrByNamesoloobtendrá el valor del atributo, no el objeto del atributo en sí. Si desea hacer referencia a propiedades del atributo distintas de «current» o «max», o si desea cambiar las propiedades del atributo, debe utilizar una de las otras funciones anteriores, comofindObjs.

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


Creación de objetos

createObj(tipo, atributos)

Nota: actualmente puede crear objetos «gráfico», «texto», «ruta», «carácter», «habilidad», «atributo», «folleto», «tabla desplegable», «elemento de tabla» y «macro».

Puede crear un nuevo objeto en el juego utilizando la funcióncreateObj. Debe pasar el tipo del objeto (una de las propiedades_typeválidas de la lista de objetos anterior), así como un objetode atributosque contenga una lista de propiedades para el objeto. Tenga en cuenta que si el objeto tiene un objeto padre (por ejemplo, los atributos y habilidades pertenecen a los personajes, los gráficos, los textos y las rutas 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). Tenga en cuenta también que, incluso al crear nuevos objetos, no puede establecer propiedades de solo lectura, ya que se establecerán automáticamente con su valor predeterminado. La única excepción a esto es cuando se crea una ruta, en cuyo caso debe incluir la propiedad «path», pero esta no se puede modificar una vez creada la ruta.

createObjdevolverá el nuevo objeto, para que pueda continuar 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: "Strength",
        current: 0,
        max: 30,
        characterid: obj.id
    });
});

Eliminación de objetos

objeto.eliminar()

Nota: actualmente puede eliminar objetos «gráfico», «texto», «ruta», «carácter», «habilidad», «atributo», «folleto», «tabla desplegable», «elemento de tabla» y «macro».

Puede eliminar objetos de juego existentes utilizando la función.remove(). La función .remove() funciona con todos los objetos que puede crear con la función createObj. Usted llama a la función directamente en el objeto. Por ejemplo,miPersonaje.eliminar();.


Objetos globales

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

Campaña() (función)

Función que devuelve el objetoCampaña. Dado que solo hay una campaña, este global siempre apunta a la única campaña del juego. Útil para comprobar si un objeto se encuentra en la página activa utilizandoCampaign().get("playerpageid").


estado

La variablede estadoes un objeto en el ámbito global al que pueden acceder todos los scripts que se ejecutan en un juego. Puede acceder al objetostatedesde cualquier función o callback en cualquier momento simplemente utilizando la variable global denominadastate. Además, el objetode estadose mantiene entre las ejecuciones del Sandbox, por lo que puede utilizarlo para almacenar información que desee tener en futuras ejecuciones de su script.

Nota:Debe utilizar el objeto de estado para almacenar información que solo necesita la API, ya que no se envía a los ordenadores de los jugadores y no aumenta el tamaño del archivo del juego. Almacene los valores que se necesitan en el juego en las propiedades de los objetos Roll20.

Tipos almacenables

El objetode estadosolo es capaz de conservar tipos de datos simples, tal y como admite el estándar JSON .

Tipo Ejemplos Descripción
Booleano verdaderofalso El valorverdaderoofalso.
Número 123,5101,23e20 Cualquier formato numérico compatible con Javascript. Punto flotante o entero.
Cadena «Hola, fantasía» «Oh, y mundo» Una cadena de texto estándar.
Matriz [ 1, 2, 3, 4 ][ 'A','B','C'][1, 2, ['bob', 3], 10, 2.5] Una colección ordenada de cualquiera de los tipos, incluyendo otras matrices.
Objeto { key: 1, value: 'roll20' } Un objeto clave/valor simple 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 inicial, desaparecerán la primera vez que se restaureel estadodesde la persistencia, como por ejemplo al reiniciar el entorno de pruebas.

  • Nota:Esto incluye los objetos Roll20 que se obtienen de eventos o de las funcionesfindObjs(),getObj(),filterObjs(),createObj(), etc.

Recordatorios importantes

El objetode estadose comparte entre todos los scripts de un entorno aislado. Para evitar dañar otros scripts, es importante seguir unas sencillas pautas:

  • Nunca asigne directamente al objetode estadoraíz.
state = { break: 'all the things' };  // ¡¡¡NUNCA HAGA ESTO!!!

 

  • Evite utilizar variables locales llamadasstateen sus scripts. Aunque esto funcionará, resultará confuso para los usuarios posteriores de sus scripts y podría causar problemas si el código se edita sin cuidado.
función turn(){
    var state = Campaign().get('turnorder');  // ¡Mala práctica, evítela!
    // ...
}

 

  • Siempre coloquen sus propiedades debajo de al menos una propiedad de espacio de nombres. Asegúrese de utilizar una propiedad de espacio de nombres suficientemente descriptiva. Evite nombres comoscriptosettings. Lo mejor es utilizar el nombre de su módulo o su propio nombre o apodo.
if( ! state.MyModuleNamespace ) {
    state.MyModuleNamespace = { module: 'my module', ok: 'this is fine!', count: 0 };
}
state.MyModuleNamespace.count++;

Ejemplo de uso

Este es un ejemplo práctico que utiliza el objetode estadode forma adecuada.

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

    // Compruebe si existe la propiedad del espacio de nombres y, si no existe, créela.
    if( ! state.MyModuleNS ) {
        state.MyModuleNS = {
            version: 1.0,
            config: {
                color1: '#ff0000',
                color2: '#0000ff'
            },
            count: 0
        };
    }

    // Uso de las propiedades de estado para configurar un mensaje para el chat. 
    sendChat(
        'Módulo de prueba',
        '<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>'
    );
});

Buscar/filtrar objetos

La API proporciona varias funciones auxiliares que se pueden utilizar para buscar objetos.

getObj(type, id)
Esta función obtiene un único objeto si se le pasa el _type del objeto y el _id. Siempre que sea posible, es mejor utilizar esta función en lugar de otras funciones de búsqueda, 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(atributos)

Pase a esta función una lista de atributos y le devolverá todos los objetos que coincidan como una matriz. Tenga en cuenta que esto funciona con todos los objetos de todos los tipos en todas las páginas, por lo que probablemente desee incluir al menos un filtro para _type y _pageid si está trabajando con objetos de mesa.

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

También puede pasar un segundo argumento opcional que contenga un objeto con una lista de opciones, entre las que se incluyen:

  • caseInsensitive(verdadero/falso): si es verdadero, las propiedades de cadena se compararán sin tener en cuenta las mayúsculas y minúsculas de la cadena.
var targetTokens = findObjs({
    name: "target"
}, {caseInsensitive: true});
//Devuelve todos los tokens con el nombre «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 la matriz de resultados. Actualmente, no es recomendable utilizar filterObjs() para la mayoría de los fines, ya que findObjs() tiene una indexación integrada para mejorar la velocidad de ejecución, por lo que casi siempre es mejor utilizar findObjs() para obtener primero los objetos del tipo deseado y, a continuación, filtrarlos utilizando el método nativo .filter() para matrices.

var results = filterObjs(function(obj) {    
  if(obj.get("left") < 200 && obj.get("top") < 200) return true;    
  else return false;
});
//Results es una matriz de todos los objetos que se encuentran en la esquina superior izquierda de la mesa.

obtenerTodosLosObjetos()

Devuelve una matriz con todos los objetos del juego (de todos los tipos). Equivalente a llamar a filterObjs y simplemente devolvertruepara cada objeto.


getAttrByName(id_carácter, nombre_atributo, tipo_valor)

Obtiene el valor de un atributo, utilizando el valor predeterminado de la hoja de personaje si el atributo no está presente. value_typees un parámetro opcional que puede utilizar para especificar «current» (actual) o «max» (máximo).

getAttrByNamesoloobtendrá el valor del atributo, no el objeto del atributo en sí. Si desea hacer referencia a propiedades del atributo distintas de «current» o «max», o si desea cambiar las propiedades del atributo, debe utilizar una de las otras funciones anteriores, comofindObjs.

Para las secciones repetidas, puede utilizar el formatorepeating_section_$n_attribute, dondenes el número de fila repetida (empezando por cero). Por ejemplo,repeating_spells_$2_namedevolverá el valor denamede la tercera fila derepeating_spells.

Puede lograr un comportamiento equivalente agetAttrByName conlo siguiente:

// current y max dependen completamente del atributo y del sistema de juego
// en cuestión; no hay ninguna función disponible para determinarlos automáticamente
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: 22 de 24