Scripts de mod : Objets

Il existe plusieurs types d'objets utilisés dans les scripts de mod. Voici un bref aperçu de chacun d'entre eux, de leur nature et des propriétés qu'ils contiennent (ainsi que leurs valeurs par défaut). En règle générale, les propriétés qui commencent par un trait de soulignement (_) sont en lecture seule et ne peuvent pas être modifiées. Vous devez accéder aux propriétés des objets à l'aide de la syntaxe `obj.get("propriété")` et définir de nouvelles valeurs à l'aide de `obj.set("propriété", nouvelle_valeur) ` ou `obj.set({propriété : nouvelle_valeur, propriété2 : nouvelle_valeur2})`.

Remarque : la propriété « id » d'un objet correspond à un identifiant unique au niveau global : aucun objet ne doit en posséder un identique à un autre, même parmi des types d'objets différents. De plus, étant donné que l'identifiant d'un objet est fréquemment utilisé et ne change jamais, il existe un raccourci vous permettant d'y accéder en utilisant « obj.id » au lieu de « obj.get("_id") » si vous le souhaitez (les deux méthodes fonctionnent).

Uniquement pour le script Mod Bac à sable v1.5. Les objets prennent également en charge la propriété `obj.type`, qui équivaut à `obj.get("type") ` ou `obj.get("_type")`.

if ('graphic' === obj.type) {
  // effectuer une action
}

Pathv2 (disponible sur la dernière version du moteur VTV)

Propriété Valeur par défaut Notes
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type « pathv2 » Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. En lecture seule.
pageid Identifiant de la page dans laquelle se trouve l'objet. À lecture seule.
forme "" pol, free, eli ou rec: Détermine si le tracé s'affiche sous forme de polyligne, de tracé à main levée, d'ellipse ou de rectangle.
points Chaîne JSON contenant un tableau de points x, y utilisés pour créer le chemin.
remplir "transparent" Couleur de remplissage. Utilisez la chaîne « transparent » ou une couleur hexadécimale sous forme de chaîne, par exemple #000000
accident vasculaire cérébral #000000 Couleur du contour.
rotation 0 Rotation (en degrés).
calque "" Calque actuel : « gmlayer », « objects », « Carte », « walls » ou « foreground ». Les motifs sur les murs sont des calques qui font obstacle à la lumière.
largeur_de_trait 5
y 0 Coordonnée Y du centre du chemin
x 0 Coordonnée X du centre du chemin
contrôlé par "" Liste séparée par des virgules des identifiants des joueurs autorisés à contrôler le chemin. Les joueurs contrôlant peuvent supprimer le chemin. Si le chemin a été créé par un joueur, ce dernier est automatiquement inclus dans la liste. La mention « Tous les joueurs » signifie que tous figurent dans la liste.
Type de barrière "mur" Les options de type « barrière d’éclairage dynamique » comprennent « mur », « oneWay » et « transparent ».
oneWayReversed faux booléen
fonduEnTransition vrai Lorsque cette option est activée, tout chevauchement entre le contour intérieur d'un élément graphique d'un calque d'objet et l'objet du calque de premier plan entraînera la modification de son opacité, qui prendra la valeur définie dans « fadeOpacity ». Si la valeur est fausse, l'opacité restera maximale, indépendamment du chevauchement.
opacité de fondu 0.3 Cette valeur détermine l'opacité de l'objet lorsqu'il est recouvert par un élément graphique situé sur le calque de l'objet et que le paramètre « fadeOnOverlap » est défini sur « true »
Rendre en tant que décor false Si cette option est activée, cet objet sera masqué par l'éclairage dynamique et le masque.
interactionRéinitialisation manuelle false Lorsque cette option est activée, elle réinitialise les interactions sur l'objet.
interaction déclenchée faux Cette valeur sera définie sur « true » lorsqu'une interaction sera déclenchée.

La propriété « shape » peut prendre les valeurs suivantes :

  • pol- Polyligne. Une ligne droite est tracée entre chaque point consécutif. Si le point de départ et le point d'arrivée sont identiques, cela crée une forme fermée.
  • gratuit- À main levée. Une courbe est tracée en utilisant les points comme guides. Si le point de départ et le point d'arrivée sont identiques, cela crée une forme fermée.
  • eli - Ellipse. Une ellipse est dessinée à l'aide des points pour définir un cadre de sélection. Seuls les deux premiers points sont utilisés.
  • rec - Rectangle. Un rectangle est dessiné à l'aide des points pour définir un cadre de sélection. Seuls les deux premiers points sont utilisés.

La propriété « points » est une chaîne JSON contenant un tableau de points. Les points sont représentés sous la forme d'un tableau à deux positions correspondant à un emplacement x et y. Un triangle reliant (0,0) à (0,70), puis à (70,0), avant de revenir à (0,0) serait représenté par [[0,0],[0,70],[70,0],[0,0]]. Les propriétés x et y permettent de positionner l'objet PathV2 sur la page. Ils indiquent où doit se trouver le centre du dessin. Pour certaines formes (ellipses et rectangles), cela est relativement simple à déterminer. Pour les formes plus complexes (polylignes et tracés à main levée), vous devrez déterminer les valeurs minimale et maximale à partir de la propriété « points » et utiliser le point situé à égale distance entre ces deux valeurs.

Uniquement pour le script Mod Bac à sable v1.5. Méthodes d'instance : toFront(), toBack(), toAbove(cible), toBelow(cible). La cible peut être un objet graphique, un objet texte, un objet « path » ou « pathv2 », ou encore l'identifiant d'un tel objet.

Chemin (Sur table)

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type "chemin" Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
pageid Identifiant de la page dans laquelle se trouve l'objet. À lecture seule.
_chemin Tableau JSON contenant des commandes de dessin. Chaque commande se présente sous la forme [« M », x, y) ou [« L », x, y) (déplacement ou ligne), ou [« C », ...) pour une courbe. x et y correspondent aux décalages par rapport au coin supérieur gauche du tracé. Indiquez le chemin d'accès lors de la création. En lecture seule par la suite.
remplir "transparent" Couleur de remplissage. Utilisez la chaîne « transparent » ou une couleur hexadécimale sous forme de chaîne, par exemple #000000
accident vasculaire cérébral #000000 Couleur du contour.
rotation 0 Rotation (en degrés).
calque "" Calque actuel : « gmlayer », « objects », « Carte », « walls » ou « foreground ». Les motifs sur les murs sont des calques qui font obstacle à la lumière.
largeur_de_trait 5
largeur 0
hauteur 0
en haut 0 Coordonnée Y du centre du chemin
à gauche 0 Coordonnée X du centre du chemin
échelle X 1
échelleY 1
contrôlé par "" Liste séparée par des virgules des identifiants des joueurs autorisés à contrôler le chemin. Les joueurs contrôlant peuvent supprimer le chemin. Si le chemin a été créé par un joueur, ce dernier est automatiquement inclus dans la liste. La mention « Tous les joueurs » signifie que tous les joueurs figurent dans la liste.
Type de barrière "mur" Les options de type « barrière d'éclairage dynamique » comprennent « mur », « oneWay » et « transparent ».
oneWayReversed faux booléen
fonduEnTransition vrai Lorsque cette option est activée, tout chevauchement entre le contour intérieur d'un élément graphique d'un calque d'objet et l'objet du calque de premier plan entraînera la modification de son opacité, qui prendra la valeur définie dans « fadeOpacity ». Si la valeur est fausse, l'opacité restera maximale, indépendamment du chevauchement.
opacité de fondu 0.3 Cette valeur détermine l'opacité de l'objet lorsqu'il est recouvert par un élément graphique situé sur le calque de l'objet et que le paramètre ` fadeOnOverlap ` est défini sur `true`
Rendre en tant que décor faux Si cette option est activée, cet objet sera masqué par l'éclairage dynamique et le masque.
interactionRéinitialisation manuelle faux Lorsque cette option est activée, elle réinitialise les interactions sur l'objet.
interaction déclenchée faux Cette valeur sera définie sur « true » lorsqu'une interaction sera déclenchée.

Transmettez le chemin (enregistré sous le nom _path) lors de la création d'un chemin classique. Le format est décrit dans la ligne _path ci-dessus.

Uniquement pour le script Mod Bac à sable v1.5. Méthodes d'instance : toFront(), toBack(), toAbove(target), toBelow(target). La cible peut être un objet graphique, un texte, un tracé ou un objet « pathv2 », ou encore l'identifiant d'un tel objet.

Fenêtre

Remarque : les fenêtres et les portes utilisent un axe inversé par rapport aux autres types d'objets. Par exemple, une variable supérieure qui serait de 100 pour un autre objet est de y -100 pour une fenêtre ou une porte.

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type "fenêtre" À lecture seule.
pageid Page à laquelle appartient cette fenêtre. Veuillez passer le « pageid » lors de la création. En lecture seule par la suite.
couleur « #ff0000 » Une couleur hexadécimale de la fenêtre.
x 0 Coordonnées du centre de la fenêtre sur l'axe x.
y 0 Coordonnées du centre de la fenêtre sur l'axe y.
estOuvert faux Détermine si un joueur peut traverser cette fenêtre.
est verrouillé faux Empêche les utilisateurs d'interagir avec la fenêtre.
chemin Deux poignées, « handle0 » et « handle1 », chacune avec des coordonnées x et y. Ces coordonnées correspondent à des décalages par rapport aux coordonnéesx et y de cet objet, sur le même axe y inversé.

Exemple

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
    });
  }
  si (msg.type === 'api' && msg.content === '!dw') {
    const win = getObj('window', '-NG38yUgghBBoV8YR0y1');
    win.remove();
  }
});

Porte

Remarque : les fenêtres et les portes utilisent un axe inversé par rapport aux autres types d'objets. Par exemple, une variable « top » qui prendrait la valeur 100 pour un autre objet vaut « y - 100 » pour une fenêtre ou une porte.

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type « porte » À lecture seule.
pageid Page à laquelle appartient cette porte. Veuillez passer le « pageid » lors de la création. En lecture seule par la suite.
couleur "" Une couleur en hexadécimal pour la porte.
x 0 Coordonnées du centre de la porte sur l'axe x.
y 0 Coordonnées du centre de la porte sur l'axe y.
estOuvert faux Détermine si un joueur peut franchir cette porte.
est verrouillé faux Empêche les joueurs d'interagir avec la porte.
estSecret faux Supprime l'icône d'une porte de la vue du joueur et agit comme une barrière.
chemin Deux poignées, « handle0 » et « handle1 », chacune avec des coordonnées x et y. Ces coordonnées correspondent à des décalages par rapport aux coordonnéesx et y de cet objet, sur le même axe y inversé.

Texte

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type "texte" Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
pageid Identifiant de la page dans laquelle se trouve l'objet. À lecture seule.
en haut 0
à gauche 0
largeur 0
hauteur 0
texte  ""
taille de police 16 Pour obtenir les meilleurs résultats, veuillez respecter les tailles prédéfinies dans le menu d'édition : 8, 10, 12, 14, 16, 18, 20, 22, 26, 32, 40, 56, 72, 100, 200, 300.
rotation 0
couleur rgb(0, 0, 0)
accident vasculaire cérébral "transparent"
famille de polices « Arial » Si ce paramètre n'est pas défini, lorsque vous modifierez ultérieurement la valeur de la propriété « text », la taille de la police sera réduite à 8. Valeurs possibles (sans distinction de majuscules/minuscules) : Arial, Patrick Hand, Contrail One, Shadows Into Light et Candal. Si vous spécifiez un nom non valide, une police à espacement fixe et à empattement sera utilisée.
calque "" Calque actuel : l'une des suivantes : gmlayer, objets, carte, murs ou premier plan.
contrôlé par "" Liste séparée par des virgules des identifiants des joueurs autorisés à contrôler le texte. Les administrateurs peuvent supprimer le texte. Si le texte a été créé par un joueur, ce dernier est automatiquement inclus dans la liste. La mention « Tous les joueurs » signifie que tous figurent dans la liste.
fonduEnTransition vrai Lorsque cette option est activée, tout chevauchement entre le contour intérieur d'un élément graphique d'un calque d'objet et l'objet du calque de premier plan entraînera la modification de son opacité, qui prendra la valeur définie dans « fadeOpacity ». Si la valeur est fausse, l'opacité restera maximale, indépendamment du chevauchement.
opacité de fondu 0.3 Cette valeur détermine l'opacité de l'objet lorsqu'il est recouvert par un élément graphique situé sur le calque de l'objet et que le param ètre `fadeOnOverlap` est défini sur « true »
Rendre en tant que décor faux Si cette option est activée, cet objet sera masqué par l'éclairage dynamique et le masque.
interactionRéinitialisation manuelle faux Lorsque cette option est activée, elle réinitialise les interactions sur l'objet.
interaction déclenchée faux Cette valeur sera définie sur « true » lorsqu'une interaction sera déclenchée.

Uniquement pour le script Mod Bac à sable v1.5. Méthodes d'instance : toFront(), toBack(), toAbove(target), toBelow(target). La cible peut être un objet graphique, un texte, un tracé, un objet « pathv2 » ou l'identifiant d'un tel objet.

Épingles

L'objet « pin » représente les repères de carte, c'est-à-dire des marqueurs interactifs qui s'affichent directement sur la carte. Les épingles peuvent afficher des images, présenter des infobulles, contenir des Notes du MJ et être associées à des Documents dans votre Journal. Ils peuvent être visibles ou cachés, permettant ainsi des révélations spectaculaires, éclairant un lieu découvert, ou peuvent être utilisés comme marqueurs d'information pour un jeu plus interactif. Vous trouverez des informations supplémentaires sur les épingles dans le centre d’aide.

Propriété Valeur par défaut Remarques
_id Un identifiant unique, comme les autres objets Roll20. À lecture seule.
type épingle Le type de broche. À lecture seule.
_pageid "" L'identifiant de la page à laquelle cette épingle est associée. À lecture seule.
x 0 La coordonnée X de l'épingle sur la page.
y 0 La coordonnée Y de l'épingle sur la page.
bgColor N° 242424 Couleur d'arrière-plan de l'épingle (code hexadécimal ou transparent). Prend en charge les chaînes de couleur HTML #RRGGBB ou #RRGGBBAA (translucidité).
forme « larme » Forme de la broche. Les valeurs autorisées sont : « teardrop », « circle », « diamond » et « square »
icône « point de base » Icône intégrée lorsque « customizationType » est défini sur « icon »
pinImage "" URL de l'image affichée lorsque « customisationType » est défini sur « image »
Type de personnalisation « icône » Détermine si le repère affiche l'icône ou l'image du repère. Veuillez définir `pinImage` sur une URL d'image valide lorsque vous utilisez `customizationType: image`. Le fait de basculer entre « icon » et « image » dans le paramètre « customizationType » n'efface pas la variable « pinImage »; l'URL est conservée.
utiliserIcôneTexte faux Lorsque la valeur de useTextIcon est « true », la broche affiche une étiquette de texte à la place d'une icône ou d'une image. Cette étiquette est extraite de « iconText » ; seuls les 3 premiers personnages sont affichés
Texte de l'icône "" Libellé (les 3 premiers personnages sont utilisés) lorsque useTextIcon est défini sur « true »
taille de l'image de l'info-bulle "moyenne" Taille de l'image dans l'infobulle de l'épingle. Les valeurs autorisées sont : small, medium, large, xl
uRL  "" Identifiant du document vers lequel renvoie ce lien. Le paramètre « linkType » n'accepte que les valeurs « Document » ou « ».
type de lien "" Le type d'objet lié. Valeurs valides : Document, « » (chaîne vide).
sous-lien "" Texte d'en-tête vers lequel vous devez vous rendre dans le document joint. À utiliser avec subLinkType (headerPlayer ou headerGM).
subLinkType "" Le type de sous-lien. Valeurs valides : headerPlayer, headerGM, « » (chaîne vide).
titre "" Le texte du titre affiché sur l'épingle.
remarques "" Une chaîne de caractères ordinaire. Il ne s'agit d'aucun des champs de type « personnage » ou « blob » des documents distribués.
gmNotes "" Chaîne de caractères standard, réservée au MJ. Il ne s'agit ni d'un champ de type « caractère » ni d'un champ de type « blob » de type « Document ».
Image d'info-bulle "" Identifiant d'image Roll20 pour l'image d'info-bulle affichée sur l'épingle.
visibleTo "" Tout le monde peut voir la broche. « » le cache aux joueurs.
autoNotesType "" Format pour les notes générées automatiquement. Valeurs valides : « » (chaîne vide), blockquote.
tooltipVisibleTo tout Contrôle qui peut visualiser l'info-bulle. Valeurs valides : all, "" (chaîne vide).
tooltipTitleVisibleTo tout Contrôle qui peut visualiser le titre de l'info-bulle. Valeurs valides : all, "" (chaîne vide).
plaque signalétique visible par tout Contrôle qui peut visualiser le nom. Valeurs valides : « all », « » (chaîne vide).
imageVisibleTo tout Contrôle qui peut visualiser l'image. Valeurs valides : all, "" (chaîne vide).
notesVisiblesPour tout Contrôle qui peut consulter les notes. Valeurs valides : all, "" (chaîne vide).
gmNotesVisibleTo tout Contrôle qui peut consulter les notes du MJ. Valeurs valides : « all », « » (chaîne vide).
échelle 1.0 Facteur d'échelle pour la broche. Doit être compris entre 0,25 et 2,0.
image désynchronisée faux Si l'image de l'épingle est désynchronisée par rapport à l'objet auquel elle est associée. La modification d'une propriété désynchronisée définit les trois propriétés sur la même valeur.
notes désynchronisées faux Si les notes associées à l'épingle sont désynchronisées par rapport à l'objet auquel elle est liée. La modification d'une propriété désynchronisée définit les trois propriétés sur la même valeur.
gmNotesDesynced faux Si les notes du MJ de la broche sont désynchronisées par rapport à l'objet auquel elle est associée. La modification d'une propriété désynchronisée définit les trois propriétés sur la même valeur.

Remarque 1 : Si vous souhaitez utiliser du contenu personnalisé dans les épingles (pour remplacer l'image, les notes et les Notes du MJ de Document), vous devez définir au moins l'une des propriétés « désynchronisées » sur « true » (ce qui les activera toutes).

Remarque 2 : Valeurs d'icônes valides : base-dot, base-castle, base-skullSimple, base-spartanHelm, base-radioactive, base-heart, base-star, base-starSign, base-pin, base-speechBubble, base-file, base-plus, base-circleCross, base-dartBoard, base-badge, base-flagPin, base-crosshair, base-scrollOpen, base-diamond, base-photo, base-fourStarShort, base-circleStar, base-lock, base-crown, base-leaf, base-signpost, base-beer, base-compass, base-video, clé-de-base, coffre-de-base, village-de-base, épée-vers-le-haut-de-base, maison-de-base, maison-de-base2, église-de-base, bâtiment-administratif-de-base, forgeron-de-base, écurie-de-base, engrenage-de-base, pont-de-base, montagne-de-base, point-d’exclamation-de-base, point-d’interrogation-de-base.

Graphique (Jeton/Carte/Carte/etc.)

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type « graphique » Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
sous-type "jeton" Il peut s'agir d'un jeton (jetons et cartes), d'une carte ou d'un jeton-dé. À lecture seule.
_cardid Définir un identifiant si le graphique est une carte. À lecture seule.
_pageid Identifiant de la page dans laquelle se trouve l'objet. À lecture seule.
imgsrc L'URL de l'image du graphique. Veuillez consulter la note ci-dessous concernant les restrictions relatives à « imgsrc » et aux avatars.
bar1_link Définir un identifiant si la barre 1 est associée à un personnage.
bar2_link
bar3_link
bar4_link
représente Identifiant du personnage que ce jeton représente.
à gauche 0 Nombre de pixels entre le bord gauche de la carte et le centre du graphique.
en haut 0 Nombre de pixels entre le bord supérieur de la carte et le centre du graphique.
largeur 0 Largeur de l'image, en pixels.
hauteur 0 Hauteur de l'image, en pixels.
rotation 0 L'orientation du jeton en degrés.
calque "" Calque actuel : « gmlayer », « objets », « Carte », « murs » ou « premier plan ».
est en train de dessiner faux Cette propriété peut être modifiée à partir du menu contextuel Avancé.
désactiver l'accrochage faux Veuillez désactiver l'alignement automatique des graphiques sur la grille.
désactiverLeMenuToken faux Veuillez désactiver les paramètres du menu graphique des jetons (bulles de jetons et menu radial).
flipv faux Veuillez retourner verticalement.
fliph faux Veuillez retourner horizontalement.
nom "" Le nom du jeton.
gmnotes "" Notes réservées au MJ. Une chaîne synchrone, souvent du code HTML encodé en URL (elle peut commencer par %3Cou%3E). Il ne s'agit pas d'un champ de type « blob » de caractères ou de données brutes.
contrôlé par "" Liste séparée par des virgules des identifiants des joueurs autorisés à contrôler le graphique. Les joueurs ayant le contrôle peuvent supprimer le graphique. Si le graphique a été créé par un joueur, ce dernier est automatiquement inclus dans la liste. La mention « Tous les joueurs » signifie que tous figurent dans la liste.
valeur de la barre 1 "" Valeur actuelle de la barre 1. Il peut s'agir d'un nombre ou d'un texte.
valeur de la barre 2 ""
valeur bar3 ""
bar4_value ""
bar1_max "" Valeur maximale de la barre 1. Si _value et _max sont tous deux définis, une barre peut s'afficher au-dessus du jeton, indiquant le pourcentage de la barre 1.
bar2_max ""
bar3_max ""
bar4_max ""
rayon de l'aura "" Rayon de l'aura, exprimé dans les unités définies dans les paramètres de page. Peut être un nombre entier ou un nombre à virgule flottante. Définissez la chaîne vide pour effacer l'aura.
rayon de l'aura ""
couleur d'aura 1 #FFFF99 Une couleur hexadécimale de l'aura.
aura2_couleur #59E594
aura1_options « cercle » Définit la forme d'une aura. Les options valides sont « circle » ou « square ». Remarque : synchronisation assurée avec aura1_square
aura2_options « cercle » Définit la forme d'une aura. Les options valides sont « circle » ou « square ». Remarque : synchronisé avec aura2_square
aura1_carré faux L'aura est-elle un cercle ou un carré ?
aura2_carré faux
couleur de teinte "transparent" Couleur en hexadécimal, ou transparente. Permet de modifier la couleur du graphique.
indicateurs de statut "" Une liste, séparée par des virgules, des indicateurs d'état actuellement actifs. Les marqueurs personnalisés utilisent la balise « nom::id » issue de Campaign _token_markers. Veuillez consulter les remarques ci-dessous.
nom affiché faux Si le nom du jeton est visible.
Afficher le nom des acteurs faux Veuillez montrer le nom à tous les joueurs.
barre_des_acteurs_1 faux Veuillez afficher la barre 1 à tous les joueurs.
barre_des_acteurs faux
barre_des_acteurs_3 faux
showplayers_bar4 false
showplayers_aura1 faux Afficher l'aura 1 à tous les joueurs.
afficher les acteurs_aura2 faux
Modifier le nom du joueur vrai Permettez aux joueurs aux commandes de modifier le nom du jeton. Affiche également le nom du personnage aux joueurs qui contrôlent le jeu, même si le paramètre ` showplayers_name` est défini sur « false ».
playersedit_bar1 vrai Permettez aux joueurs aux commandes de modifier la barre 1 du jeton. Affiche également la barre 1 aux joueurs contrôlant le jeu, même si la variable « showplayers_bar1 » est définie sur « false ».
playersedit_bar2 vrai
playersedit_bar3 vrai
playersedit_bar4 vrai
bar1_num_permission "" Définissez le mode d'affichage de la superposition « bar1 ». Valeurs valides : tout le monde, masqué. « » signifie que seuls les rédacteurs verront cette valeur
bar2_num_permission ""
bar3_num_permission ""
bar4_num_permission ""
playersedit_aura1 vrai Permettez aux joueurs qui contrôlent le jeton de modifier son aura n° 1. Affiche également l'Aura 1 aux joueurs contrôlant le jeu, même si la variable « showplayers_aura1 » est définie sur « false ».
playersedit_aura2 vrai
rayon de lumière "" OBSOLÈTE Éclairage dynamique classique : rayon de lumière intense. Voir « bright_light_distance ».
rayon_lumineux "" OBSOLÈTE Éclairage dynamique classique : début du rayon de basse lumière. Si light_dimradius est une chaîne vide, le jeton émettra une lumière vive jusqu'à la distance indiquée par light_radius. Si la paramètre « light_dimradius » est défini, le jeton émettra une lumière intense jusqu'à la valeur « light_dimradius », puis une basse lumière à partir de ce point jusqu'à la valeur « light_radius ». Veuillez vous reporter à la section « low_light_distance » de la documentation sur l'Éclairage dynamique
lumière_autresjoueurs faux OBOLÉ: Éclairage dynamique classique : affiche la lumière de ce jeton à tous les joueurs. Il ne s'agit pas de « has_night_vision ».
lumière_hassight false Obsolète: Éclairage dynamique classique : cette source lumineuse permet aux joueurs qui la contrôlent de bénéficier d’une ligne de vue pour appliquer la règle de la ligne de vue. Voir « has_bright_light_vision ».
angle de lumière « 360 » OBOLÉ: Éclairage dynamique classique : angle en degrés. Le 180 éclaire la moitié avant du champ. Voir « has_directional_bright_light », « directional_bright_light_center » et « directional_bright_light_total ».
lumière_losangle « 360 » OBSOLÈTE Éclairage dynamique classique : angle (en degrés) du champ de vision du graphique (en supposant que la variable `light_hassight` soit définie sur `true`). Voir `has_limit_field_of_vision`, `limit_field_of_vision_center` et `limit_field_of_vision_total` dans la documentation sur l'éclairage dynamique.
côtés "" Liste d'images secondaires séparées par des barres verticales. Chaque entrée est encodée en URL. Séparez à l'aide de |, puis décodez à l'aide de la fonction decodeURIComponent.
côté courant 0 Répartissez-les sur les côtés. Uniquement pour le script Mod Bac à sable v1.5. La définition de « currentSide » met automatiquement à jour « imgsrc », y compris les images du Marketplace. Si la même méthode .set() contient également une valeur imgsrc valide, c'est cette dernière qui est utilisée à la place.
dernier mouvement "" Le dernier déplacement du jeton. Il s'agit d'une liste de coordonnées séparées par des virgules. Par exemple, « 300,400 » signifierait que le jeton a commencé son dernier déplacement aux coordonnées gauche = 300, haut = 400. On part toujours du principe que les valeurs actuelles « haut » et « gauche » du jeton correspondent au « point d'arrivée » du dernier déplacement. Les points de cheminement sont indiqués par plusieurs ensembles de coordonnées. Par exemple, « 300,400,350,450,400,500 » indiquerait que le jeton a commencé à la position gauche = 300, haut = 400, puis a défini un point de passage à gauche = 350, haut = 450, un autre point de passage à gauche = 400, haut = 500, avant de terminer son déplacement à ses coordonnées actuelles (haut + gauche).
multiplicateur de lumière « 1 » Multiplicateur d'éclairage dynamique classique, OBSOLÈTE. 1 correspond à une vision normale. L'éclairage dynamique actuel utilise le paramètre « light_sensitivity_multiplier », dont la valeur normale est 100.
distance_de_visualisation_adv_fow "" Le rayon autour d'un jeton où le Brouillard de guerre avancé est révélée.
facteur_de_sensibilité_à_la_lumière 100 Facteur multiplicateur de l'efficacité des sources lumineuses. Un multiplicateur de 200 permettrait au jeton de voir deux fois plus loin qu'un jeton avec un multiplicateur de 100, avec la même source lumineuse.
effet_de_vision_nocturne null Effet de vision nocturne. « null » est l'effet par défaut. Parmi les autres valeurs, on trouve « Dimming » et « Nocturnal ».
emplacement du bar null L'emplacement des barres de jeton. « null » correspond au placement par défaut. Autres valeurs : overlap_top, overlap_bottom, bottom.
compact_bar null Style « bar ». La valeur par défaut est « null ». La fonction « compact » utilise la barre « compact ».
verrouillage du mouvement faux Une option permettant de verrouiller un graphique en place. Valeur booléenne vraie ou fausse
fonduEnTransition vrai Lorsque cette option est activée, tout chevauchement entre le contour intérieur d'un élément graphique d'un calque d'objet et l'objet du calque de premier plan entraînera la réduction de son opacité à la valeur définie dans `fadeOpacity`. Si cette valeur est fausse, l'opacité restera fixée à sa valeur « baseOpacity », quel que soit le chevauchement.
opacité de fondu .3 Cette valeur détermine l'opacité de l'objet lorsqu'il est recouvert par un élément graphique situé sur le calque de l'objet et que le paramètre ` fadeOnOverlap ` est défini sur `true`
Rendre en tant que décor faux Si cette option est activée, cet objet sera masqué par l'éclairage dynamique et le masque.
opacité de base 1.0 Opacité initiale de l'élément graphique, quel que soit le calque.
interactionRéinitialisation manuelle faux Lorsque cette option est activée, elle réinitialise les interactions sur l'objet.
interaction déclenchée faux Cette valeur sera définie sur « true » lorsqu'une interaction sera déclenchée.

Propriétés actuelles de l'éclairage dynamique (en plus des champs light_* classiques mentionnés ci-dessus) :

Propriété Par défaut
a_une_vision_dans_la_lumière_intense faux
dispose_d'une_vision_nocturne faux
teinte_vision_nocturne null
distance_de_vision_nocturne 0
émet_une_lumière_intense faux
distance_lumière_intense 0
emits_low_light faux
low_light_distance 0
opacité_lumière_faible 0
lightColor "transparent"
has_limit_field_of_vision faux
limite_du_champ_de_vision_central 0
champ_visuel_total_limite 0
a-t-il-un-champ-limité-de-vision-nocturne faux
limite_du_champ_de_vision_nocturne_central 0
limite_champ_de_vision_nocturne_total 0
has_directional_bright_light faux
lumière_directionnelle_intense_au_centre 0
lumière_directionnelle_intense_totale 0
has_directional_dim_light faux
lumière_diffuse_directionnelle_centre 0
lumière_diffuse_directionnelle_totale 0
infobulle ""
afficher_l'info-bulle faux
gm_only_tooltip faux
renderAsDarkness faux

Uniquement pour le script Mod Bac à sable v1.5. La définition de « currentSide » met automatiquement à jour « imgsrc »:

const setRandomSide = (obj) => {
  if ('graphic' === obj.type) {
    obj.set({
      currentSide: randomInteger(obj.get('sides')?.split('|').length ?? 1) - 1
    });
  }
};

Uniquement pour le script Mod Bac à sable v1.5. Méthodes illustrées :

  • createCopy(properties) — effectue une copie comme le ferait la fonction createObj, y compris les éléments «imgsrc » et «sides » du Marketplace. Renvoie le nouveau graphique.
  • toFront(), toBack(), toAbove(target), toBelow(target) — identiques aux fonctions globales. La cible peut être un objet ou un identifiant.
obj.createCopy({ pageid, calque, left: x, top: y });

Exemple d'icônes de jeton

La liste des marqueurs disponibles dans l'ensemble du jeu est : Campaign().get('_token_markers'). Chaque entrée se présente comme suit :

{
  "id":59, // l'identifiant de la base de données pour l'
  "name":"Bane", // le nom (non unique) du marqueur
  "tag":"Bane::59", // la manière dont le jeton est effectivement référencé
  // cela inclura l'identifiant des marqueurs personnalisés, mais pas
  // celui des marqueurs par défaut.
  "url":"https://s3.amazonaws.com/files.d20.io/images/59/yFnKXmhLTtbMtaq-Did1Yg/icon.png?1575153187"
  // ^l'URL de l'image de l'icône de jeton
}

Remarques importantes concernant les personnages liés et les jetons Veuillez noter que, pour les jetons liés à des personnages, le champ « controlledby » du jeton est remplacé par celui du personnage. Pour les barres de jeton (par exemple,bar1_value et bar1_max) où le jeton est lié à un attribut (par exemple, lorsquebar1_link est défini), le fait d'attribuer une valeur à la barre mettra automatiquement à jour les valeurs actuelle et/ou maximale de l'attribut sous-jacent ; vous n'avez donc pas besoin de les définir manuellement toutes les deux. De plus, lorsque l'attribut (ou la barre de jeton) est modifié en jeu, vous entendrez un événement « change:attribute » (et un événement spécifique à la propriété, par exemple« change:attribute:current »), suivi d'un événement « change:graphic » (et d'un événement « change:graphic:bar1_value »). Vous pouvez choisir de répondre à l'un ou l'autre événement, mais les valeurs des barres sous-jacentes ne seront pas encore mises à jour lorsque l'événement d'attribut se déclenchera, car il se déclenche en premier.

Remarques importantes concernant les indicateurs de statut: depuis le 6 août 2013, la manière dont sont gérés les indicateurs de statut sur les jetons a changé. La propriété « statusmarkers » de l'objet Graphic est désormais une liste, séparée par des virgules, de toutes les couleurs et icônes des marqueurs d'état qui doivent être actifs sur le jeton. Le format est le suivant :

//Séparé par des virgules (utilisez join pour créer ou split pour convertir en tableau).
//Si une icône ou une couleur d'état est suivie du symbole « @ », le nombre figurant après «
» //« @ » s'affichera sous forme de badge sur l'icône
statusmarkers = "red,blue,skull,dead,brown@2,green@6"

Bien que vous puissiez accéder directement à la propriété `statusmarkers`, afin de garantir la compatibilité ascendante avec les scripts existants et de vous offrir un moyen simple d'utiliser les marqueurs d'état sans avoir à écrire de code pour gérer vous-même le fractionnement et l'analyse de la chaîne, nous mettons à votre disposition un ensemble de propriétés virtuelles sur l'objet que vous pouvez définir ou consulter pour travailler avec les marqueurs d'état. Chaque marqueur d'état dispose d'une propriété « status_<markername> ». Par exemple :

obj.get("status_red"); //Renvoie false si le marqueur n'est pas actif, true s'il l'est, et une chaîne (par exemple « 2 » ou « 5 ») si un badge est actuellement défini sur le marqueur
obj.get('status_bluemarker'); //Toujours pris en charge pour des raisons de compatibilité ascendante, équivalent à obj.get("status_blue");
obj.set("status_red", false); //Supprimerait le marqueur
obj.set("status_skull", "2"); //Définirait un badge « 2 » sur l'icône du crâne et l'ajouterait au jeton s'il n'est pas déjà actif.

Veuillez noter que ces propriétés virtuelles ne disposent pas d'événements ; vous devez donc utiliser « change:graphic:statusmarkers » pour détecter les modifications apportées aux marqueurs d'état d'un jeton. Par exemple, « change:graphic:status_red » n'est PAS un événement valide et ne se déclenchera jamais. La liste complète des marqueurs d'état disponibles (dans le même ordre que celui dans lequel ils apparaissent dans le bac à marqueurs) :

« rouge », « bleu », « vert », « marron », « violet », « rose », « jaune », « mort », « crâne », « somnolent », « demi-cœur », « demi-brume », « interdiction », « escargot », « hélice de foudre », « clé à molette », « cœur enchaîné », « boulon chimique », « zone mortelle », « bois-moi », « fissure », « masque de ninja », « chronomètre », « filet de pêche », « surrégime », « fort », « poing », « cadenas », « trois feuilles », « aile duveteuse », « martelé », « empreinte », « fléché », « aura », « mal de dos », « drapeau noir », « œil ensanglanté », « bouclier boulonné », « cœur brisé », « toile d'araignée », « bouclier brisé », « drapeau flottant », « radioactif », « trophée », « crâne brisé », « orbe gelé », « bombe roulante », « tour blanche », « saisir », « crier », « grenade », « mitrailleuse », « tous pour un », « tenue d'ange », « cible de tir à l'arc »

Page

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type "page" Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
zorder "" Liste d'identifiants séparés par des virgules spécifiant l'ordre des objets sur la page. La chaîne stockée comporte souvent une virgule à la fin ; supprimez les segments vides lorsque vous la divisez. Les méthodes « toFront » et « toBack » réorganisent cette liste. À lecture seule.
nom "" Titre de la page.
afficher la grille vrai Veuillez afficher la grille sur la carte.
montrer l'obscurité faux Afficher le brouillard de guerre sur la carte.
éclairage de spectacle faux ÉCLATÉ: Éclairage dynamique classique : pour utiliser l'éclairage dynamique, consultez la section « dynamic_lighting_enabled » dans la documentation relative à l'éclairage dynamique
largeur 25 Largeur en unités.
hauteur 25 Hauteur en unités.
incrément de déclenchement 1 Taille d'une case de la grille en unités.
opacité de la grille 0.5 Opacité des lignes de la grille.
opacité du brouillard 0.35 Opacité du brouillard de guerre pour le MJ.
couleur_d'arrière-plan « #ffffff » Couleur hexadécimale de l'arrière-plan de la carte. Enregistré en minuscules.
couleur de grille #C0C0C0 Couleur hexadécimale des lignes de la grille.
type_de_grille "carré" Soit carré, hexagonal (Hex V), hexagonal (Hex H), dimétrique ou isométrique.
numéro d'échelle 5 La distance d'une unité.
Unités d'échelle « ft » Le type d'unités à utiliser pour l'échelle.
Étiquettes de grille faux Afficher les étiquettes de la grille hexagonale.
type diagonal « quatre » L'un des quatre: pythagoricien (euclidien), trois-cinq ou manhattan.
archivé false Si la page a été archivée.
lumière actualisée faux Veuillez mettre à jour l'éclairage dynamique uniquement lorsqu'un objet est déposé.
force légère faux ÉCLATÉ: Éclairage dynamique classique : appliquez la règle de la ligne de visée pour les objets.
restriction de déplacement faux Ne permettez pas aux objets dotés de la vision de traverser les murs d'Éclairage dynamique.
lumière globale faux ÉCARTÉ Éclairage dynamique classique : si cette valeur est définie sur « true » à un endroit où un jeton peut « voir », on suppose qu’une lumière vive est présente. Consultez la section « daylight_mode_enabled » dans la documentation sur l'Éclairage dynamique
adv_fow_enabled faux OBSOLÈTE: « Brouillard de guerre » avancé (version classique).
adv_fow_dim_reveals faux OBSOLÈTE: « Brouillard de guerre » classique (ancienne version) : une basse lumière révèle le brouillard.
adv_fow_show_grid faux OBSOLÈTE « Brouillard de guerre avancé » : affiche la grille à travers le brouillard.
décalage_x_de_la_grille 0 Décalage horizontal de la grille.
décalage_y_de_la_grille 0 Décalage vertical de la grille.
force_lighting_refresh null Configuré pour demander un rafraîchissement de l'Éclairage dynamique. La valeur par défaut est « null », et non une valeur booléenne.
déclencheur de jukebox null Jouer la page une fois le chargement terminé. Les options disponibles sont : « none », « stop », « all » ou un identifiant de piste.
dynamic_lighting_enabled faux Utilisez l'éclairage dynamique
mode_jour_activé faux Utiliser le mode lumière du jour
Opacité du mode lumière du jour 1 permet de régler l'intensité de la lumière en Mode lumière du jour
mode explorateur « désactivé » Options : désactivé, basique
effet d'obscurité "aucun" Options : aucune, brouillard foncé, brouillard clair
_placement 0 Uniquement pour le script Mod Bac à sable v1.5. Clé de tri dans le menu de la page. Les pages existantes utilisent des valeurs ponctuelles (par exemple 2 000). Triez selon ce nombre ; ne l'utilisez pas comme index de tableau. En lecture seule, sauf via les méthodes de placement.
_chemin "," Uniquement pour le script Mod Bac à sable v1.5. Identifiants de dossiers de page séparés par des virgules. Les valeurs commencent généralement par une virgule et peuvent se terminer par d'autres virgules. Supprimez les segments vides lors du fractionnement. En lecture seule, sauf via les méthodes de placement.
_wrapperAutoColor #ffffff Uniquement pour le script Mod Bac à sable v1.5. Couleur de l'enveloppe calculée. À lecture seule.
useAutoWrapper vrai Uniquement pour le script Mod Bac à sable v1.5. Si cette valeur est vraie, utilisez _wrapperAutoColor.
wrapperColor null Uniquement pour le script Mod Bac à sable v1.5. Utilisé lorsque la valeur de « useAutoWrapper » est « false ».

Uniquement pour le script Mod Bac à sable v1.5. Méthodes : placeBefore(obj), placeAfter(obj) (obj étant une page ou un dossier de pages), placeIn(obj) (obj étant un dossier de pages). Le fait de passer d'un niveau de dossier à un autre met à jour _path.

PageFolder

Uniquement pour le script « Mod Script Bac à sable » v1.5.

Les objets « pageFolder » correspondent aux dossiers de pages du menu de la page. Vous pouvez les créer et les supprimer. La suppression d'un dossier fait remonter ses sous-éléments d'un niveau dans le menu.

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type « pageFolder » À lecture seule.
nom « Nouveau dossier » Affiché dans le menu de la page.
_placement 0 Commande dans le menu de la page.
_chemin "," Identifiants des dossiers de la page parent, séparés par des virgules.

Méthodes : placeBefore(obj), placeAfter(obj) (page ou dossier de pages), placeIn(obj) (dossier de pages). La modification des dossiers met à jour le paramètre _path pour ce dossier et ses sous-dossiers. La fonction remove() déplace les éléments enfants vers le haut, puis supprime le dossier.

var dossier = createObj('pageFolder', { nom : 'Donjons' });

Campagne

Propriété Valeur par défaut Remarques
_id racine Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type "campagne" Peut être utilisé pour identifier le type d'objet ou pour rechercher l'objet — veuillez toutefois noter qu'il n'existe qu'un seul objet « Campaign » et qu'il est accessible via Campaign(). À lecture seule.
ordre de passage "" Une chaîne JSON représentant l'ordre des tours. Veuillez consulter ci-dessous.
page d'initiative false Identifiant de la page utilisée pour le suivi lorsque la fenêtre d'ordre des tours est ouverte. Lorsque cette option est définie sur « false », la fenêtre de l'ordre des tours se ferme.
identifiant de la page du joueur false Identifiant de la page sur laquelle le signet du lecteur est défini. Les joueurs voient cette page par défaut, sauf si les pages spécifiques aux joueurs mentionnées ci-dessous la remplacent.
pages spécifiques aux joueurs false Un objet (et NON une chaîne JSON) au format : {player1_id: page_id, player2_id: page_id } … } Tout lecteur associé à une page de cet objet remplacera la valeur « playerpageid ».
dossierjournal "" Une chaîne JSON contenant des données relatives à la structure des dossiers du jeu. À lecture seule.
_jukeboxfolder "" Chaîne JSON contenant des données relatives à la structure de la liste de lecture du Jukebox du jeu. À lecture seule.
_token_markers « [] » Tableau JSON des icônes de jeton disponibles dans le jeu (intégrées et personnalisées). À lecture seule. Consultez l'exemple « Icônes de jeton » dans la rubrique « Graphique ».
couche de premier plan visible vrai Lorsque cette option est activée, les joueurs verront les objets sur le calque de premier plan. Si elles sont fausses, elles ne le feront pas. Remarque : il s'agit d'un paramètre global qui affecte toutes les pages.
tokenBubbleMax 3 Les valeurs valides sont 3 ou 4, qui correspondent au nombre de bulles de jetons. Disponible dans la version améliorée du moteur VTV.

Ces propriétés supplémentaires sont lues sur l'objet renvoyé par la fonction Campaign(), et non via la méthode get:

Propriété Bac à sable Remarques
sandboxVersion les deux « 1,0 » ou « 1,5 »
nodeVersion les deux Chaîne de caractères indiquant la version de Node.js pour le processus « Bac à sable »
nom_de_la_feuille v1.5 uniquement Nom abrégé de la feuille de personnage configurée
résumé calculé v1.5 uniquement Noms de propriétés calculées Beacon disponibles
résumé de l'action v1.5 uniquement Actions disponibles pour les feuilles Beacon
log(Campaign().sandboxVersion);

Ordre des tours L'ordre des tours est une chaîne JSON représentant la liste actuelle de l'ordre des tours. Il s'agit d'un ensemble d'objets. À l'heure actuelle, l'ordre des tours ne peut contenir que des objets provenant d'une seule page à la fois ; l'identifiant de la page actuelle pour l'ordre des tours correspond à l'attribut « initiativepage ». Veuillez vous assurer qu'ils restent synchronisés, sinon vous pourriez obtenir des résultats inattendus. Pour gérer l'Ordre des tours, vous devrez utiliser la fonction JSON.parse() afin d'obtenir un objet représentant l'état actuel de l'Ordre des tours (REMARQUE : vérifiez d'abord qu'il ne s'agit pas d'une chaîne vide ""…; si c'est le cas, initialisez-le vous-même avec un tableau vide). Voici un exemple d’objet « Ordre des tours » :

[
  {
    "id":"36CA8D77-CF43-48D1-8682-FA2F5DFD495F", // L'identifiant de l'objet graphique. Si cette option est activée, la liste de l'ordre des tours affichera automatiquement le nom et l'icône correspondant à la liste basée sur le graphisme de la table.
    « pr » : « 0 », //Valeur actuelle de l'article dans la liste. Il peut s'agir d'un nombre ou d'un texte.
    « custom » : « » //Titre personnalisé pour l'article. Sera ignoré si l'ID est défini sur une valeur autre que « -1 ».
  },
  {
    "id":"-1", //Pour les articles personnalisés, l'ID DOIT être défini sur « -1 » (veuillez noter qu'il s'agit d'une CHAÎNE DE CARACTÈRES et non d'un NOMBRE).
    "pr":"12",
    "custom":"Test Custom" // Le nom à afficher pour les articles personnalisés.
  

Pour modifier l'ordre des tours, modifiez l'objet « Ordre des tours » actuel, puis utilisez la fonction JSON.stringify() pour modifier l'attribut correspondant dans la campagne. Veuillez noter que l'ordre des articles dans la liste correspond à l'ordre du tableau ; ainsi, par exemple, la fonction `push()` ajoute un article à la fin de la liste, tandis que la fonction `unshift()` l'ajoute au début, etc.

var turnorder ;
if(Campaign().get("turnorder") == "") turnorder = []; //REMARQUE : nous vérifions d'abord que turnorder n'est pas simplement une chaîne vide. Si c'est le cas, veuillez le traiter comme un tableau vide.
sinon turnorder = JSON.parse(Campaign().get("turnorder"));
//Ajouter une nouvelle entrée personnalisée à la fin de l'Ordre des tours.
turnorder.push({
  id : « -1 »,
  pr : « 15 »,
  custom : « Compteur de tours »
});
Campaign().set("turnorder", JSON.stringify(turnorder));

Joueur

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type "joueur" Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
Identifiant utilisateur d20 Identifiant utilisateur — valable sur l'ensemble du site. Par exemple, la page utilisateur du joueur sur le wiki est /User:ID, où ID correspond à la valeur stockée dans _d20userid. À lecture seule.
nom d'affichage "" Le pseudonyme actuel du joueur. Ce paramètre peut être modifié depuis la page des paramètres de l'utilisateur. À lecture seule.
en ligne false À lecture seule.
_lastpage "" L'identifiant de la dernière page consultée par le joueur en tant que MJ. Cette propriété n'est pas mise à jour pour les joueurs ou les MJ qui ont rejoint le jeu en tant que joueurs. À lecture seule.
macrobar "" Chaîne de caractères délimitée par des virgules contenant les macros présentes dans la barre de macros du joueur. À lecture seule.
parlant en tant que "" L'identifiant du joueur ou du personnage que le joueur a sélectionné dans la liste déroulante « As ». Lorsque cette option est définie sur une chaîne vide, le joueur s'exprime en tant que lui-même. Lorsqu'elle est définie sur un personnage, la valeur est « personnage|<ID>» , où «<ID> » correspond à l'identifiant du personnage.
couleur #13B9F0 La couleur du carré situé à côté du nom du joueur, ainsi que la couleur de ses repères sur la Carte, de ses cercles de ping, etc.
Afficher la barre de macros false Si la barre de macros du joueur est affichée.

Macro

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type "macro" Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
identifiant_joueur L'identifiant du joueur qui a créé cette macro. À lecture seule.
nom "" Le nom de la Macro.
action "" Le texte de la macro.
visible pour "" Liste séparée par des virgules des identifiants des joueurs autorisés à visualiser la macro, en plus du joueur qui l'a créée. La mention « Tous les joueurs » signifie que tous les joueurs figurent dans la liste.
istokenaction false Cette macro est-elle une Action des jetons qui devrait apparaître lorsque des jetons sont sélectionnés ?

Table de jet

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type « table pliante » Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
nom nouvelle table
afficher les acteurs vrai

Uniquement pour le script Mod Bac à sable v1.5. La fonction createToken(properties) crée un graphique dont les côtés proviennent des avatars des articles du tableau (les images du Marketplace sont autorisées). Renvoie le graphique. Si aucun article de la table ne dispose d'un avatar, rien n'est créé.

Article du tableau

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type « élément de tableau » Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
_rollabletableid "" Identifiant de la table à laquelle cet article appartient. À lecture seule.
avatar "" URL de l'image utilisée pour l'article du tableau. Veuillez consulter la remarque ci-dessous concernant les restrictions relatives aux avatars et aux balises ` imgsrc `.
nom ""
poids 1 Poids de l'article du tableau par rapport aux autres articles du même tableau. En termes simples, un article ayant un poids de 3 a trois fois plus de chances d'être sélectionné lors d'un tirage au sort qu'un article ayant un poids de 1.

Personnage

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type "personnage" Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
avatar "" URL vers une image utilisée pour le personnage. Veuillez consulter la note ci-dessous concernant les restrictions relatives aux avatars et aux sources d'images.
nom ""
biographie "" La biographie du personnage. Veuillez consulter la remarque ci-dessous concernant l'accès aux champs Notes, GMNotes et Bio.
gmnotes "" Remarques sur le personnage visibles uniquement par le MJ. Veuillez consulter la remarque ci-dessous concernant l'accès aux champs Notes, GMNotes et Bio.
archivé false
journaux des joueurs "" Liste séparée par des virgules des identifiants des joueurs autorisés à visualiser ce personnage. Utilisez « Tous » pour permettre à tous les joueurs de voir. La mention « Tous les joueurs » signifie que tous figurent dans la liste.
contrôlé par "" Liste séparée par des virgules des identifiants des joueurs autorisés à contrôler et modifier ce personnage. Utilisez « Tous » pour permettre à tous les joueurs de modifier. La mention « Tous les joueurs » signifie que tous les joueurs figurent dans la liste.
jeton par défaut "" Une chaîne JSON correspondant au jeton par défaut du personnage, s’il en existe un. Il s'agit d'un « blob », à l'instar de la biographie et des notes; la fonction get() prend donc une fonction de rappel. Ne l'initialisez pas avec la méthode set(). Écrivez-le à l'aide de la fonction ` setDefaultTokenForCharacter`.
inParty false Si le personnage fait partie du groupe.
tags « [] » Tableau JSON de chaînes de caractères. Pas d'espaces ni de virgules. Les tags non valides sont supprimés ; un avertissement est envoyé à la console de sortie Mod. Disponible sur les deux versions du Bac à sable.

Uniquement pour le script Mod Bac à sable v1.5. sheetEnvironment est « classique » ou « beacon ». Appelez cette méthode sous la forme character.sheetEnvironment (et non via get).

Uniquement pour le script Mod Bac à sable v1.5. La fonction createToken(properties, options, callback) crée un graphique à partir du Jeton par défaut du personnage. S'il n'y a pas de Jeton par défaut, c'est l'Avatar du personnage qui est utilisé. S'il n'y a pas d'avatar non plus, la création échoue. Les images provenant de la Marketplace sont autorisées. Comme _defaulttoken est asynchrone, l'élément graphique est transmis à la fonction de rappel au lieu d'être renvoyé.

Option Par défaut Remarques
preferAvatar false Préférez l'avatar du personnage comme source d'image.
à plusieurs facettes false Comment les pages sont créées : « false » conserve les pages telles qu'elles apparaissent dans le Jeton par défaut ; «true » / « ensure » ajoute « imgsrc » et « avatar » s'il n'y a pas de pages; « replace » remplace les pages existantes ; « append » / « prepend » ajoute «imgsrc » / « avatar ».
obj.createToken({ pageid, layer, left: x, top: y }, { multisided: 'ensure' }, function (token) {
  token.set('status_green', 5);
});

Attributs

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type "attributs" Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
_characterid "" Identifiant du personnage auquel cet attribut est associé. À lecture seule. Obligatoire lors de l'utilisation de createObj.
nom "Sans titre"
actuelle "" Vous pouvez accéder à la valeur actuelle de l'attribut dans le Chat et les macros à l'aide de la syntaxe @{Nom du personnage|Nom de l'attribut} ou dans les caractéristiques à l'aide de la syntaxe @{Nom de l'attribut}.
max "" Vous pouvez accéder à la valeur maximale de l'attribut dans le chat et les macros à l'aide de la syntaxe @{Nom du personnage|Nom de l'attribut|max}, ou dans les caractéristiques à l'aide de la syntaxe @{Nom de l'attribut|max}.

Important : veuillez consulter la remarque ci-dessous concernant l'utilisation des Feuilles de personnage pour savoir comment les valeurs par défaut de ces Feuilles de personnage influencent l'utilisation des Attributs.

Caractéristique

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique au monde parmi tous les objets de ce jeu. À lecture seule.
type "caractéristique" Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
_characterid "" Le personnage auquel appartient cette capacité. À lecture seule. Obligatoire lors de l'utilisation de createObj.
nom « Sans titre_Capacité »
description "" La description n'apparaît pas dans l'interface de la feuille de personnage.
action "" Le texte de la caractéristique.
istokenaction false Cette caractéristique est-elle une action des jetons qui devrait apparaître lorsque les jetons liés à son personnage parent sont sélectionnés ?

Document

Propriété Valeur par défaut Remarques
_id Identifiant unique pour cet objet. Unique à l'échelle mondiale parmi tous les objets de ce jeu. À lecture seule.
type "document" Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. À lecture seule.
épingles « [] » Une chaîne JSON contenant un tableau d'objets représentant chacune des broches associées aux parties de ce Document.
avatar "" URL vers une image utilisée pour le document distribué. Veuillez consulter la note ci-dessous concernant les restrictions relatives aux avatars et aux balises ` imgsrc `.
nom « Note mystérieuse »
notes "" Contient le texte du document distribué. Veuillez consulter la note ci-dessous concernant l'utilisation de Notes et GMNotes.
gmnotes "" Contient le texte du document que seul le MJ peut consulter. Veuillez consulter la note ci-dessous concernant l'utilisation de Notes et GMNotes.
journaux des joueurs "" Liste séparée par des virgules des identifiants des joueurs autorisés à consulter ce document. Utilisez « Tout » pour afficher l'information à tous les joueurs. La mention « Tous les joueurs » signifie que tous figurent dans la liste.
archivé false
contrôlé par "" Liste séparée par des virgules des identifiants des joueurs autorisés à contrôler et à modifier ce document. La mention « Tous les joueurs » signifie que tous figurent dans la liste.
tags « [] » Tableau JSON de chaînes de caractères. Les mêmes règles que pour les tags de personnages. Disponible sur les deux versions du Bac à sable.

Remarque : Campaign().get("_journalfolder") est accessible en lecture. Les scripts ne peuvent pas écrire dans le dossier « Journal ». Les documents générés par des scripts sont placés dans le répertoire racine.

Pont

Il existe des fonctions de script Mod permettant de piocher, distribuer, mélanger, rappeler, ramasser, prendre, jouer et donner des cartes : shuffleDeck, cardInfo, recallCards, dealCardsToTurn, drawCard, pickUpCard, takeCardFromPlayer, playCardToTable, giveCardToPlayer. Elles sont disponibles sur les deux versions du Bac à sable. Consultez la documentation relative aux fonctions.

Propriété Valeur par défaut Remarques
_id "" Identifiant du jeu
type pont
nom "" nom du jeu de cartes
_currentDeck "" Une liste séparée par des virgules des cartes actuellement présentes dans le paquet (y compris celles qui ont été jouées sur table ou dans les mains). Les cartes changent lorsque le jeu est mélangé.
index actuel -1 l'indice actuel de notre position dans le jeu : « Quelle carte sera tirée ensuite ? »
_currentCardShown vrai afficher la carte actuelle au sommet du paquet
afficher les acteurs vrai présenter le jeu aux joueurs
joueurs peuvent dessiner vrai Les joueurs peuvent-ils piocher des cartes ?
avatar "" le verso des cartes de ce jeu de cartes
affichée false Afficher le paquet de cartes sur le plateau de jeu (le paquet est-il actuellement visible ?)
joueurs_cartons_reçus vrai Les joueurs peuvent-ils voir le nombre de cartes que les autres joueurs ont en main ?
joueurs_voir_cartes_face_à_face false Les joueurs peuvent-ils voir le recto des cartes lorsqu'ils regardent la main des autres joueurs ?
gm_vuecartes vrai Le MJ peut-il voir le nombre de cartes que chaque joueur a en main ?
gm_seefrontofcards false Le MJ peut-il voir le recto des cartes lorsqu'il examine la main de chaque joueur ?
infinitecards false Y a-t-il un nombre infini de cartes dans ce jeu de cartes ?
_cardSequencer -1 Utilisé en interne pour faire avancer le jeu lors du tirage des cartes.
cartes jouées « faceup » Comment les cartes de ce jeu sont-elles utilisées sur table ? face vers le haut ou face vers le bas.
hauteur par défaut "" Quelle est la hauteur par défaut des cartes posées sur la table ?
largeur par défaut ""
mode de rejet "aucun" Quel type de pile de défausse ce jeu de cartes comporte-t-il ? none = pas de pile de défausse, choosebacks = autorise les joueurs à voir le dos des cartes et à en choisir une, choosefronts = permet de voir le recto des cartes et d'en choisir une, drawtop = piocher la dernière carte défaussée, drawbottom = piocher la plus ancienne carte défaussée.
_pile-de-rejet "" Quelle est la pile de défausse actuelle de ce jeu de cartes ? Liste de cartes séparées par des virgules. Il s'agit de cartes qui ont été retirées du jeu et qui ne seront pas remises dans le paquet lors du mélange, à moins qu'un rappel ne soit effectué.

Carte

Propriété Valeur par défaut Notes
nom "" Nom de la carte
avatar "" Recto de la carte
card_back "" Remplacer l'image au dos de la carte
_deckid "" Identifiant du jeu de cartes
type « carte »
_id ""

Uniquement pour le script Mod Bac à sable v1.5. La fonction createToken(propriétés, options) génère un graphique comme si la carte avait été posée sur la table (les images de la Marketplace sont autorisées). Renvoie le graphique.

Option Par défaut Notes
asCard vrai Si cette affirmation est vraie, l'élément graphique est une carte. Si la valeur est fausse, il s'agit d'un jeton à plusieurs faces qui ressemble simplement à la carte.
face vers le haut jeu de cartes par défaut Affichage recto ou verso ; définit la propriété currentSide.

Main

Veuillez noter que chaque joueur ne doit avoir qu'UNE seule main.

Biens immobiliers Valeur par défaut Notes
main courante "" Liste des cartes actuellement en main, séparées par des virgules. Veuillez noter que ce n'est plus en lecture seule. Idéalement, il ne devrait être ajusté qu'à l'aide des fonctions du jeu de cartes.
type main
parentid "" Identifiant du joueur auquel appartient la main
_id ""
vue actuelle « bydeck » Lorsqu'un joueur dévoile sa main, s'agit-il d'une vue « par pile » ou « par carte » ?

Morceau du Jukebox

Biens immobiliers Valeur par défaut Notes
_id Identifiant unique pour cet objet. Unique à l'échelle mondiale parmi tous les objets de ce jeu. À lecture seule.
type « jukeboxtrack » Cela permet d'identifier le type d'objet ou de rechercher l'objet. En lecture seule.
joue à false Booléen utilisé pour déterminer si la piste est en cours de lecture. Si vous définissez ce paramètre sur « true » et « softstop » sur « false », la piste est lue.
arrêt progressif false Booléen utilisé pour déterminer si une piste non bouclée a été jouée au moins une fois. Ce paramètre doit être défini sur « false » pour garantir la lecture d'un morceau.
titre "" L'étiquette visible pour le morceau dans l'onglet jukebox.
volume 30 Le niveau sonore de la piste. Veuillez noter que cette valeur doit être définie sur un nombre entier (et non une chaîne de caractères), sinon vous risquez de perturber le fonctionnement. Valeurs comprises entre 0 et 100 (pourcentage).
en boucle false La piste doit-elle être mise en boucle ? Veuillez définir cette option sur « true » si tel est le cas.

Effets spéciaux personnalisés

Biens immobiliers Valeur par défaut Notes
_id Un identifiant unique pour cet objet. Unique à l'échelle mondiale parmi tous les objets de ce jeu. En lecture seule.
_type « custfx » Permet d'identifier le type d'objet ou de rechercher cet objet. En lecture seule.
nom "" Le nom visible pour le FX dans la liste FX.
définition {} Objet Javascript décrivant l'effet.

Restrictions relatives aux propriétés « imgsrc » et « avatar »

Bien que vous puissiez désormais modifier les propriétés « imgsrc » et « avatar », afin de garantir la sécurité de tous les utilisateurs de Roll20, nous avons mis en place les restrictions suivantes concernant ces propriétés :

  • Vous devez utiliser un fichier image qui a été mis en ligne dans votre bibliothèque Roll20 – et non sur un site externe (tel qu'Imgur), ni sur la Marketplace de Roll20. Les URL enregistrées sont réécrites sur le CDN de Roll20 (souvent https://files.d20.io/images/...). N'exigez pas le préfixe « s3.amazonaws.com » et ne vous attendez pas à ce que la fonction get("imgsrc") renvoie l'URL que vous avez fournie.
  • Veuillez inclure la chaîne de requête dans l'URL que vous transmettez.
  • Les valeurs « imgsrc » des images ne doivent plus nécessairement comporter le nom de la taille de la vignette. Les URL des images sont adaptées à un format de stockage corrigé et à un emplacement CDN ; ne vous attendez pas à ce que la fonction ` obj.get('imgsrc')` renvoie l'URL que vous avez fournie lors de la création. La fonction `findObjs() ` normalise et met en correspondance les URL ; vous pouvez donc toujours effectuer une recherche à partir de n'importe quelle URL valide.

Si vous supprimez une image de votre bibliothèque, celle-ci sera supprimée de tous les jeux qui l'utilisent, y compris ceux qui utilisent vos scripts de mod.

Uniquement pour le script Mod Bac à sable v1.5. Les fonctions `createCopy ` et `createToken ` permettent de créer des graphiques utilisant des images du Marketplace en les copiant à partir d'un objet existant.

Utilisation des champs Notes, GMNotes et Bio Asynchrone

Pour accéder aux champs « notes », « gmnotes » ou « bio » des Personnages et des Documents, vous devez passer une fonction de rappel en tant que deuxième argument de la fonction get(). Voici un exemple :

var character = getObj("personnage", "-JMGkBaMgMWiQdNDwjjS");
character.get("bio", function(bio) {
  log(bio); // Effectuez ici une action avec la biographie du personnage.
});

Veuillez définir ces champs à l'aide de la fonction set() une fois que l'objet a été créé. Ne transmettez pas de bio, de notes ou de gmnotes à la fonction createObj. Définissez les notes et les gmnotes dans des appels set() distincts. « Graphic gmnotes » est une chaîne de caractères normale et ne figure pas dans cette liste. Le paramètre _defaulttoken est un blob : lisez-le à l'aide d'un callback et écrivez-le à l'aide de la fonction setDefaultTokenForCharacter.

Utilisation des feuilles de personnage

La fonctionnalité Feuilles de personnage influe sur l'utilisation du type d'objet Attributs, car les feuilles permettent de spécifier une valeur par défaut pour chaque attribut de la feuille. Cependant, si l'attribut est défini sur la valeur par défaut, aucun objet Attributs n'a encore été créé dans le jeu pour ce personnage. Nous mettons à votre disposition une fonctionnalité pratique qui vous évite d'avoir à gérer cette complexité. Il est recommandé d'utiliser cette fonction pour obtenir la valeur d'un attribut à l'avenir, en particulier si vous savez qu'un jeu utilise une feuille de personnage. getAttrByName(character_id, attribute_name, value_type) Il vous suffit d'indiquer l'identifiant du personnage, le nom (et non l'identifiant) de l'attribut (par exemple «PV » ou « Str »), puis de préciser si vous souhaitez obtenir la valeur actuelle ou la valeur maximale pour « value_type ». Voici un exemple :

var personnage = getObj("personnage", "-JMGkBaMgMWiQdNDwjjS");
getAttrByName(personnage.id, "str"); // la valeur actuelle de str, par exemple "12"
getAttrByName(personnage.id, "str", "max"); //la valeur maximale de str, par exemple « [[floor(@{STR}/2-5)]] »

Veuillez noter que les champs dont les valeurs sont calculées automatiquement renverront la formule plutôt que le résultat de la valeur. Vous pouvez ensuite transmettre cette formule à sendChat() afin que le moteur de dés calcule automatiquement le résultat pour vous. N'oubliez pas de consulter également la documentation relative aux feuilles de personnage pour obtenir plus d'informations sur la manière dont celles-ci interagissent avec les scripts de mod. Voir également les méthodes setAttrs, getSheetDefaultValue, getSheetItem et setSheetItem (dans les deux bacs à sable). Uniquement pour le script Mod Bac à sable v1.5. getComputed, setComputed, performAction. Consultez la documentation relative aux fonctions.

La méthode `getAttrByName ` ne renvoie que la valeur de l'attribut, et non l'objet attribut lui-même. Si vous souhaitez accéder à des propriétés des attributs autres que « current » ou « max », ou si vous souhaitez modifier les propriétés des attributs, vous devez utiliser l'une des autres fonctions mentionnées ci-dessus, telle que « findObjs ». Si l'objet d'attribut n'existe pas, la fonction getAttrByName() renvoie la valeur par défaut de la feuille de personnage pour ce nom, lorsque celle-ci en définit une, et la valeur « undefined » dans le cas contraire.

Création d'objets

createObj(type, Attributs)

Vous pouvez créer des éléments « graphiques », « texte », « chemin », « cheminv2 », 'personnage', « Caractéristique », « Attribut », « Document », « table déroulante », « tableitem », « Macro », « card », « paquet », « custfx », « window », « porte »et « épingle ». Uniquement pour le script Mod Bac à sable v1.5. « pageFolder ». Vous pouvez créer un nouvel objet dans le jeu à l'aide de la fonction createObj. Vous devez transmettre le type de l'objet (l'une des propriétés _type valides figurant dans la liste d'objets ci-dessus), ainsi qu'un objet « attributes » contenant une liste de propriétés pour cet objet. Veuillez noter que si l'objet possède un objet parent (par exemple, les attributs et les caractéristiques appartiennent aux personnages, tandis que les graphiques, les textes et les tracés appartiennent aux pages, etc.), vous devez indiquer l'identifiant du parent dans la liste des propriétés (par exemple, vous devez inclure la propriété « characterid » lors de la création d'un attribut). Notez également que, même lors de la création de nouveaux objets, vous ne pouvez pas définir de propriétés en lecture seule ; celles-ci seront automatiquement définies sur leur valeur par défaut. La seule exception à cette règle concerne la création d'un chemin : vous devez inclure la propriété « path », mais celle-ci ne peut plus être modifiée une fois le chemin initialement créé. La fonction `createObj` renverra le nouvel objet, ce qui vous permettra de continuer à l'utiliser.

// Créer un attribut « Force » pour les personnages ajoutés une fois le mode Bac à sable prêt.
// L'association de la commande « add:character » avant que le système ne soit prêt se déclenche également pour les personnages qui existent déjà.
on("ready", function() {
  on("add:character", function(obj) {
    createObj("attribute", {
      name: "Force",
      current: 0,
      max: 30,
      characterid: obj.id
    });
  });
});

Suppression d'objets

objet.supprimer()

Vous pouvez supprimer les objets « graphic », « text », « path », « pathv2 », « personnage », « caractéristique », « document », « rollabletable », « tableitem », « Macro », « carte », « deck », « custfx », « window », « door » et « pin ». Uniquement pour le script Mod Bac à sable v1.5. « pageFolder ».

Vous pouvez supprimer des objets de jeu existants à l'aide de la fonction .remove(). La fonction .remove() s'applique à tous les objets que vous pouvez créer à l'aide de la fonction createObj. Vous appelez la fonction directement sur l'objet. Par exemple : mycharacter.remove();.

Objets globaux

Il existe plusieurs objets qui sont disponibles globalement partout dans votre script.

Campagne() (fonction)

Une fonction qui renvoie l'objet « Campaign ». Étant donné qu'il n'existe qu'une seule campagne, cette variable globale fait toujours référence à la seule campagne du jeu. Utile, par exemple, pour vérifier si un objet se trouve sur la page active à l'aide de Campaign().get("playerpageid").

état

La variable d'état est un objet de la portée globale auquel tous les scripts s'exécutant dans un jeu ont accès. Vous pouvez accéder à l'objet « state » à tout moment depuis n'importe quelle fonction ou fonction de rappel, simplement en utilisant la variable globale nommée « state ». De plus, l'objet d'état est conservé d'une exécution à l'autre du Bac à sable Mod Script; vous pouvez donc l'utiliser pour stocker les informations dont vous souhaitez disposer lors des prochaines exécutions de votre script. Remarque : nous vous recommandons d'utiliser l'objet « state » pour stocker les informations dont seuls les scripts de modification ont besoin, car celles-ci ne sont pas transmises aux ordinateurs des joueurs et n'alourdissent pas le fichier de votre jeu. Enregistrez les valeurs nécessaires au jeu dans les propriétés des objets Roll20.

Types stockables

L'objet « state » ne permet de stocker que des types de données simples, tels que pris en charge par la norme JSON.

Type Exemples Description
Booléen vrai faux La valeur « true » ou « false ».
Numéro  123,5 10 1,23e20 Tout format numérique pris en charge par Javascript. Virgule flottante ou entier.
Chaîne « Bonjour Fantasy » « oh, et le monde » Une chaîne de texte standard.
Tableau [ 1, 2, 3, 4 ]
[ « A », « B », « C »][1, 2, [« bob », 3], 10, 2,5]
Une collection ordonnée de n'importe quel type, y compris d'autres tableaux.
Objet { key: 1, value: 'roll20' } Un objet clé/valeur simple avec des clés de type chaîne et n'importe quel type comme valeur, y compris d'autres objets.

Avertissement : bien que les fonctions semblent fonctionner lorsqu'elles sont initialement enregistrées dans l'état, elles disparaîtront dès la première restauration de l'état à partir de la persistance, par exemple lors du redémarrage d'un Bac à sable.

  • Remarque : cela inclut les objets Roll20 que vous obtenez à partir d'événements ou des fonctions findObjs(), getObj(), filterObjs(), createObj(), etc.

Rappels importants

L'objet d'état est partagé entre tous les scripts d'un Bac à sable. Afin d'éviter de perturber le fonctionnement d'autres scripts, il est important de respecter quelques consignes simples :

  • Ne jamais n'effectuez jamais d'affectation directement à l'objet d'état racine.
state = { break: 'tout' }; // NE FAITES JAMAIS CELA !!!
  • Évitez d’utiliser des variables locales nommées « state » dans vos scripts. Bien que cela fonctionne, cela pourrait prêter à confusion pour les utilisateurs ultérieurs de vos scripts et entraîner des problèmes si le code est modifié de manière imprudente.
function turn(){
  var state = Campaign().get('turnorder'); // Mauvaise pratique, à éviter !
  // ...
}
  • Veillez à toujours placez vos propriétés sous au moins une propriété d'espace de noms. Veuillez vous assurer d'utiliser une propriété d'espace de noms suffisamment descriptive. Évitez les noms tels que « script » ou « paramètres ». Il est préférable d'utiliser soit le nom de votre module, soit votre propre nom ou pseudonyme.
if( ! state.MyModuleNamespace ) {
  state.MyModuleNamespace = { module: 'mon module', ok: 'tout va bien !', count: 0 };
}
state.MyModuleNamespace.count++;

Exemple d'utilisation

Voici un exemple concret qui utilise correctement l'objet d'état.

on('ready', function() {
  "use strict";
  // Vérifier si la propriété avec espace de noms existe, et la créer si ce n'est pas le cas
  if( ! state.MyModuleNS ) {
    state.MyModuleNS = {
      version : 1.0,
      config : {
        color1 : '#ff0000',
        color2 : '#0000ff'
      },
      count : 0
    };
  }
  // Utilisation des propriétés de l'état pour configurer un message destiné au chat.
  sendChat(
    'Module de test',
    '<span style="color: '+state.MyModuleNS.config.color1+';">'+
    'Test d'état'+
    '</span> '+
    '<span style="color: '+state.MyModuleNS.config.color2+';">'+
    'Script v'+state.MyModuleNS.version+' lancé '+(++state.MyModuleNS.count)+' fois !'+
    '</span>'
  );
});

Recherche/filtrage d'objets

Les scripts Mod proposent plusieurs fonctions d'aide qui peuvent être utilisées pour localiser des objets.

getObj(type, id)
Cette fonction récupère un objet unique si l'on lui transmet le _type de l'objet et son _id. Il est préférable d'utiliser cette fonction plutôt que les autres fonctions de recherche lorsque cela est possible, car c'est la seule qui ne nécessite pas de parcourir l'ensemble de la collection d'objets.
on("change:graphic:represents", function(obj) {
  if(obj.get("represents") != "") {
    var personnage = getObj("personnage", obj.get("represents"));
  }
});

findObjs(attributs)

Transmettez à cette fonction une liste d'attributs, et elle renverra tous les objets correspondants sous forme de tableau. Veuillez noter que cette opération s'applique à tous les objets, quels que soient leurs types, sur l'ensemble des pages. Vous devrez donc probablement inclure au moins un filtre pour _type et _pageid si vous travaillez avec des objets de table.

var currentPageGraphics = findObjs({
  _pageid: Campaign().get("playerpageid"),
  _type: "graphic",
});
_.each(currentPageGraphics, function(obj) {
  //Effectuez une action sur obj, qui se trouve sur la page actuelle et qui est un élément graphique.
});

Vous pouvez également transmettre un deuxième argument facultatif contenant un objet avec une liste d'options, notamment :

  • caseInsensitive (vrai/faux) : si la valeur est « vrai », les propriétés de type chaîne seront comparées sans tenir compte de la casse de la chaîne
var targetTokens = findObjs({
  name: "target"
} , {caseInsensitive: true});
// Renvoie tous les Jetons dont le nom est « target », « Target », « TARGET », etc.
  • startsWith (vrai/faux) : Si la valeur est « vrai », les propriétés de type chaîne de caractères doivent correspondre en tant que préfixe.
  • tagMatch: Lors de la recherche de balises: « all » (par défaut ; l'objet possède toutes les balises répertoriées), « any » (au moins une), « only » (exactement l'ensemble répertorié).
var knights = findObjs({ type : 'personnage', name : 'Sir' }, { startsWith : true });

filterObjs(callback)

Exécutera la fonction de rappel fournie sur chaque objet, et si le rappel renvoie la valeur true, l'objet sera inclus dans le tableau de résultats. Actuellement, il est déconseillé d'utiliser filterObjs() dans la plupart des cas. Étant donné que findObjs() dispose d'un index intégré pour une meilleure vitesse d'exécution, il est presque toujours préférable d'utiliser findObjs() pour obtenir d'abord les objets du type souhaité, puis de les filtrer à l'aide de la méthode native .filter() pour les tableaux.

var results = filterObjs(function(obj) {
  if(obj.get("left") < 200 && obj.get("top") < 200) return true;
  else return false;
});
// « results » est un tableau contenant tous les objets situés dans le coin supérieur gauche du plateau de la table.

obtenirTousLesObjets()

Renvoie un tableau contenant tous les objets du jeu (tous types confondus). Cela revient à appeler la fonction `filterObjs` et à renvoyer simplement `true ` pour chaque objet.

getAttrByName(identifiant_caractère, nom_attribut, type_valeur)

Récupère la valeur d'un attribut, en utilisant la valeur par défaut de la feuille de personnage si l'attribut n'est pas présent. « value_type » est un paramètre facultatif qui vous permet de spécifier la valeur actuelle ou la valeur maximale. La méthode `getAttrByName ` ne renvoie que la valeur de l'attribut, et non l'objet attribut lui-même. Si vous souhaitez accéder à des propriétés des attributs autres que « current » ou « max », ou si vous souhaitez modifier les propriétés des attributs, vous devez utiliser l'une des autres fonctions mentionnées ci-dessus, telle que « findObjs ». Pour les sections répétitives, vous pouvez utiliser le format « repeating_section_$n_attribute» , où n correspond au numéro de la ligne répétitive (en commençant par zéro). Par exemple, la formule « repeating_spells_$2_name » renverra la valeur de « name » figurant dans la troisième ligne de la table « repeating_spells ». Vous pouvez obtenir un comportement équivalent à celui de `getAttrByName`en procédant comme suit :

```// Les valeurs « current » et « max » dépendent entièrement de l’attribut et du système de jeu
// en question ; il n’existe aucune fonction permettant de les déterminer automatiquement
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');
  }
}
Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 23 sur 26