obj.get("property")
et définir de nouvelles valeurs en utilisantobj.set("property", newvalue)
ouobj.set({property: newvalue, property2: newvalue2})
.Note :La propriétéid
d'un objet est un identifiant unique à l'échelle mondiale : aucun objet ne doit avoir le même, même s'il s'agit d'un type d'objet différent. En outre, étant donné que l'identifiant d'un objet est fréquemment utilisé et qu'il ne change jamais, il existe un raccourci permettant d'y accéder en utilisantobj.id
au lieu deobj.get("_id")
si vous le souhaitez (l'un ou l'autre fonctionnera).
Pathv2 (Jumpgate Tabletop)
Propriété | Valeur par défaut | Notes |
---|---|---|
_id |
Un identifiant unique pour cet objet. Unique à l'échelle mondiale parmi tous les objets |
|
_type | "pathv2" | Peut être utilisé pour identifier le type d'objet ou rechercher l'objet . Lecture seule. |
_pageid | ID de la page dans laquelle l'objet se trouve. Lecture seule. | |
shape | "" | "pol", "free", "eli", or "rec" Determines if the path is displayed as a polyline, freehand, ellipse, or rectangle. |
points | A JSON string containing and array of x,y points used to create the path. | |
fill | "transparent" | Fill color. Use the string "transparent" or a hex color as a string, for example "#000000" |
stroke | "#000000" | Stroke (border) color. |
rotation | 0 | Rotation (in degrees). |
layer | "" | Current layer, one of "gmlayer", "objects", "map", or "walls". The walls layer is used for dynamic lighting, and paths on the walls layer will block light. |
stroke_width | 5 | |
y | 0 | Y-coordinate for the center of the path |
x | 0 | X-coordinate pour le centre du chemin |
controlledby | "" |
Liste des identifiants des joueurs séparés par des virgules qui peuvent contrôler le chemin. Les joueurs qui ont le contrôle peuvent supprimer le chemin. Si le chemin a été créé par un joueur, ce joueur est automatiquement inclus dans la liste. Tous les joueurs est représenté en ayant 'all' dans la liste. |
barrierType | "mur" |
Les options de type de barrière d'éclairage dynamique incluent "mur", "un sens", et "transparent" |
un sens inversé | faux |
booléen |
The shape property has the following values:
- "pol" - Polyline. A straight line is drawn between each consecutive point. If the starting point and ending point are the same, it creates a closed shape.
- "free" - Freehand. A curve is drawn using the points as guides. If the starting point and ending point are the same, it creates a closed shape.
- "eli" - Ellipse. An ellipse is draw using the points to set a bounding box. Only the first two points are used.
- "rec" - Rectangle. A rectangle is draw using the points to set a bounding box. Only the first two points are used.
The points property is a JSON string containing an array of points. Points are represented as a two position array of an x and y location. A triangle from (0,0) to (0,70) to (70,0), and back to (0,0) would be represented as "[[0,0],[0,70],[70,0],[0,0]]".
The x and y properties position the PathV2 object on the page. They specify where the center of the drawing should be. For some shapes (ellipses and rectangles), that is pretty easy to figure out. For more complex shapes (polylines and freehands), you will need to find the minimum and maximum values from the points property and use the point equidistant between them.
Path (Classic Tabletop)
Propriété | Valeur par défaut | Notes |
---|---|---|
_id |
Un identifiant unique pour cet objet. Globally unique across all |
|
_type | "voie" | Can be used to identify the object type or search for the object. Lecture seule. |
pageid | ID de la page dans laquelle se trouve l'objet. Lecture seule. | |
_path | A JSON string describing the lines in the path. Read-only, except when creating a new path. See the section on Paths for more information. | |
fill | "transparente" | Fill color. Use the string "transparent" or a hex color as a string, for example "#000000" |
stroke | "#000000" | Stroke (border) color. |
rotation | 0 | Rotation (in degrees). |
calque | "" | Current layer, one of "gmlayer", "objects", "map", or "walls". The walls layer is used for dynamic lighting, and paths on the walls layer will block light. |
stroke_width | 5 | |
width | 0 | |
height | 0 | |
top | 0 | Y-coordinate for the center of the path |
actuelle | 0 | X-coordinate for the center of the path |
scaleX | 1 | |
scaleY | 1 | |
controlledby | "" |
Comma-delimited list of player IDs who can control the path. Controlling players may delete the path. If the path was created by a player, that player is automatically included in the list. Tous les joueurs sont représentés en ajoutant 'all' à la liste. |
barrierType | "wall" |
Dynamic Lighting Barrier type options include "wall", "oneWay", and "transparent" |
oneWayReversed | false |
boolean |
Pour plus d'informations sur le format de_path
données, consultez la section sur les chemins.
Fenêtre
Remarque : Les fenêtres et les portes utilisent un axe inversé par rapport à d'autres types d'objets. Par exemple, une variable top qui serait 100 pour un autre objet est y -100 pour une fenêtre ou une porte.
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Globalement unique à travers tous les objets de ce jeu. Lecture seule. | |
_type | "fenêtre" | En lecture seule. |
couleur | Une couleur hexadécimale du chemin. | |
x | 0 | Centre de coordonnées de la porte sur l'axe x. |
y | 0 | Centre de coordonnées de la porte sur l'axe y. |
isOpen | false | Détermine si un joueur peut passer à travers cette fenêtre. |
isLocked | false | Empêche les joueurs d'interagir avec la fenêtre. |
path | Représenté par deux poignées (poignée0 et poignée1) chacune avec des coordonnées x et y. |
Example
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(); } });
Portes
Note: 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 y -100 pour une fenêtre ou une porte.
Propriété |
Valeur par défaut |
Notes |
_id |
Un identifiant unique pour cet objet. Unique à l'échelle globale parmi tous les objets de ce jeu. En lecture seule. |
|
type |
“door” |
En lecture seule. |
color |
Une couleur hexadécimale du chemin. |
|
x |
0 |
Coordonnée du centre de la porte sur l'axe des x. |
y |
0 |
Coordonnée du centre de la porte sur l'axe des y. |
isOpen |
faux |
Détermine si un joueur peut passer à travers cette porte. |
isLocked |
faux |
Empêche les joueurs de pouvoir interagir avec la porte. |
isSecret |
faux |
Supprime une icône de porte de la vue du joueur et fonctionne comme une barrière. |
chemin |
Représenté comme deux poignées (handle0 et handle1) chacune avec les coordonnées x et y. |
Texte
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Unique dans l'ensemble des 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. | |
sommet | 0 | |
gauche | 0 | |
largeur | 0 | |
hauteur | 0 | |
texte | "" | |
taille_de_police | 16 | Pour de meilleurs résultats, respectez 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)" | |
stroke | "transparent" | |
famille_de_polices | "Arial | Si ce paramètre n'est pas défini, lorsque la valeur de la propriété "text" sera modifiée ultérieurement, la taille de la police sera ramenée à 8. Valeurs possibles (la casse n'est pas importante) : "Arial", "Patrick Hand", "Contrail One", "Shadows Into Light" et "Candal". Spécifier un nom invalide entraîne l'utilisation d'une police de caractères sans nom, en serif monospace. |
calque | "" | "gmlayer", "objects", "map" ou "walls". |
controlledby | "" | Liste séparée par des virgules des identifiants des joueurs pouvant contrôler le texte. Les joueurs contrôlants peuvent supprimer le texte. Si le texte a été créé par un joueur, ce joueur est automatiquement inclus dans la liste.
All Players is represented by having 'all' in the list. |
Graphique (Jetons/Carte/Plateau/Etc.)
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Unique dans 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. |
_subtype | "jeton" | Peut être "token" (pour les jetons et les cartes) ou "card" (pour les cartes). En lecture seule. |
_cardid | Défini à un identifiant si le graphique est une carte. Lecture seule. | |
_pageid | ID of the page the object is in. Lecture seule. | |
imgsrc | L'URL de l'image du graphique. Voir la note sur imgsrc et les restrictions d'avatar ci-dessous. | |
bar1_link | Défini comme un ID si la barre 1 est liée à un personnage. | |
bar2_link | ||
bar3_link | ||
représente | ID du personnage que ce jeton représente. | |
gauche | 0 | Nombre de pixels entre le bord gauche de la carte et le centre du graphique. |
sommet | 0 | Nombre de pixels entre le bord supérieur de la carte et le centre du graphique. |
largeur | 0 | Largeur de la graphique, en pixels. |
hauteur | 0 | Hauteur de la graphique, en pixels. |
rotation | 0 | L'orientation du jeton en degrés. |
layer | "" | "gmlayer", "objects", "map", ou "walls". |
isdrawing | false | Cette propriété est modifiée à partir du menu contextuel Avancé. |
flipv | false | Inversion verticale. |
fliph | false | Inversion horizontale. |
name | "" | Le nom du jeton. |
gmnotes | "" | Notes sur le jeton uniquement visibles par le MJ. |
controlledby | "" | Comma-delimited list of player IDs who can control the graphic. Controlling players may delete the graphic. If the graphic was created by a player, that player is automatically included in the list.
Tous les joueursest représenté par "tous" dans la liste. |
bar1_value | "" | Valeur actuelle de la Barre 1. Cela peut être un nombre ou du texte. |
bar2_value | "" | |
bar3_value | "" | |
bar1_max | "" | Valeur maximale de la Barre 1. Si _value et _max sont tous les deux définis, une barre peut être affichée au-dessus du jeton montrant le pourcentage de la Barre 1. |
bar2_max | "" | |
bar3_max | "" | |
aura1_radius | "" | Rayon de l'aura, en utilisant les unités définies dans les paramètres de la page. Peut être un entier ou un nombre à virgule. Défini sur une chaîne vide pour effacer l'aura. |
aura2_radius | "" | |
aura1_color | "#FFFF99" | Une couleur hexadécimale ou l'aura. |
aura2_color | "#59E594" | |
aura1_square | faux | L'aura est-elle un cercle ou un carré? |
aura2_square | faux | |
tint_color | "transparent" | Couleur hexadécimale, ou "transparente". Teintera la couleur du graphique. |
statusmarkers | "" | Une liste séparée par des virgules des statusmarkers actuellement actifs. Voir les notes ci-dessous pour plus d’informations. |
token_markers | "" | Un tableau JSON crypté contenant un objet pour chaque marqueur de jeton actuellement dans le jeu:. Vous trouverez ci-dessous un exemple. |
showname | false | Indique si le nom du jeton est affiché. |
showplayers_name | false | Affiche la plaque signalétique à tous les joueurs. |
showplayers_bar1 | false | Affiche la Barre 1 à tous les joueurs. |
Afficher/Masquer la Barre de joueurs 2 | false | |
Afficher/Masquer la Barre de joueurs 3 | false | |
Afficher/Masquer l'Aura N°1 aux joueurs. | false | Afficher l'Aura N°1 à tous les joueurs. |
Afficher/Masquer l'Aura N°2 aux joueurs. | false | |
Modifier le nom des joueurs | true | Autoriser les joueurs contrôlants à modifier le nom du pion. Affiche également la plaque signalétique aux joueurs contrôlants, même si showplayers_name est faux. |
playersedit_bar1 | true | Autoriser les joueurs contrôlants à modifier la Barre 1 du pion. Affiche également la Barre 1 aux joueurs contrôlants, même si showplayers_bar1 est faux. |
playersedit_bar2 | true | |
playersedit_bar3 | true | |
playersedit_aura1 | vrai | Permet aux joueurs qui le contrôlent de modifier l'Aura du jeton 1. Montre également l'Aura 1 aux joueurs qui contrôlent, même si showplayers_aura1 est faux. |
playersedit_aura2 | vrai | |
rayon_lumière | "" | Rayon d'éclairage dynamique. |
light_dimradius | "" | Début du rayon d'éclairage faible. Si light_dimradius est une chaîne vide, le jeton émettra une lumière vive jusqu'à la distance light_radius. Si light_dimradius a une valeur, le jeton émettra une lumière vive jusqu'à la valeur light_dimradius, et une lumière tamisée de là jusqu'à la valeur light_radius. |
light_otherplayers | faux | Affichez la lumière du jeton à tous les joueurs. |
light_hassight | faux | La lumière possède un "sight" pour les joueurs contrôlants aux fins du paramètre "Enforce Line of Sight". |
light_angle | "360" | Angle (in degrees) of the light's angle. For example, "180" means the light would show only for the front "half" of the "field of vision". |
light_losangle | "360" | Angle (in degrees) of the field of vision of the graphic (assuming that light_hassight is set to true) |
lastmove | "" | The last move of the token. It's a comma-delimited list of coordinates. For example, "300,400" would mean that the token started its last move at left=300, top=400. It's always assumed that the current top + left values of the token are the "ending point" of the last move. Les points de passage sont indiqués par plusieurs ensembles de coordonnées. Par exemple, "300,400,350,450,400,500" indiquerait que le jeton a commencé à gauche=300, en haut=400, puis a défini un point de passage à gauche=350, en haut=450, un autre point de passage à gauche=400, en haut=500, puis a terminé le déplacement à ses coordonnées actuelles (haut + gauche). |
light_multiplier | "1" | Multiplicateur de l'efficacité des sources de lumière. Un multiplicateur de deux permettrait au jeton de voir deux fois plus loin qu'un jeton avec un multiplicateur de un, avec la même source de lumière. |
adv_fow_view_distance | "" | The radius around a token where Advanced Fog of War is revealed. |
light_sensitivity_multiplier | 100 | Multiplier on the effectiveness of light sources. A multiplier of 200 would allow the token to see twice as far as a token with a multiplier of 100, with the same light source. |
night_vision_effect |
Changes the Night Vision Effect. Other options include “Dimming” and “Nocturnal” | |
bar_location | Adjusts the location of the token bars. Les options incluent 'overlap_top', 'overlap_bottom','bottom' | |
compact_bar |
Ajuste si la barre est compacte ou non. Une autre option est compacte. | |
lockMovement | false | Une option pour verrouiller un graphique en place. Valeur booléenne true ou false |
Icônes de jeton Example
{
"id":59, // l'id de la base de données pour le
"name":"Bane", // le nom (non-unique) du marqueur
"tag":"Bane::59", // comment le jeton est référencé
// cela inclura l'id pour les marqueurs personnalisés, mais pas
// pour les marqueurs par défaut.
"url":"https://s3.amazonaws.com/files.d20.io/images/59/yFnKXmhLTtbMtaq-Did1Yg/icon.png?1575153187"
// ^l'url de l'image du marqueur de jeton
}
Notes importantes sur les personnages et les jetons liés
Notez que pour les jetons liés aux personnages, le champcontrolledby
sur le jeton est remplacé par le champcontrolledby
du personnage.
Pour les barres de jetons (par exemplebar1_value
etbar1_max
) dont le jeton est lié à un attribut (par exemplebar1_link
est défini), la définition d'une valeur pour la barre mettra automatiquement à jour les valeurscurrent
et/oumax
de l'attribut sous-jacent, de sorte que vous n'aurez pas à définir les deux manuellement.
En outre, lorsque l'attribut (ou la barre de jetons) est modifié(e) dans le jeu, vous entendrez un événementchange:attribute
(et une propriété spécifique, par exemplechange:attribute:current
), suivi d'un événementchange:graphic
(etchange:graphic:bar1_value
). Vous pouvez choisir de répondre à l'un ou l'autre événement, mais les valeurs de la barre sous-jacente ne seront pas encore mises à jour lorsque l'événement d'attribut se déclenche, car il se déclenche en premier.
Notes importantes sur les marqueurs de statut
À partir du 6 août 2013, la manière dont les marqueurs de statut sur les jetons sont gérés a changé. La propriété "statusmarkers" de l'objet Graphique est désormais une liste de tous les couleurs/icônes de marqueurs de statut qui doivent être actifs sur le jeton, séparée par des virgules. Le format est le suivant :
//Séparé par des virgules (utilisez join pour créer ou split pour transformer en tableau).
//Si une icône/couleur de statut est suivie d'un symbole "@", le nombre après
//"@" sera affiché comme badge sur l'icône
statusmarkers = "rouge,bleu,crâne,mort,marron@2,vert@6"
Bien que vous puissiez accéder directement à la propriétéstatusmarkers
, nous fournissons un ensemble de propriétés "virtuelles" sur l'objet que vous pouvez définir/obtenir pour travailler avec les marqueurs d'état, afin de maintenir la compatibilité ascendante avec les scripts existants et de fournir un moyen facile de travailler avec les marqueurs d'état sans avoir besoin d'écrire du code pour gérer la division et l'analyse de la chaîne de caractères vous-même. Chaque marqueur d'état a une propriété "status_<markername>" . Par exemple :
obj.get("status_red"); // Renvoie false si le marqueur n'est pas actif, true sinon, et une chaîne (i.e. "2" ou "5") si un badge est actuellement défini sur le marqueur
obj.get('status_bluemarker'); // Est encore pris en charge pour la compatibilité ascendante, et est équivalent à faire obj.get("status_blue");
obj.set("status_red", false); // retirerait le marqueur
obj.set("status_skull", "2"); // définitrait un badge "2" sur l'icône tête de mort et l'ajouterait au jeton s'il n'est pas déjà actif.
Notez que ces propriétés virtuelles n'ont pas d'événements, vous devez donc utiliserchange:graphic:statusmarkers
pour écouter les changements des marqueurs d'état d'un jeton, et par exemplechange:graphic:status_red
n'est PAS un événement valide et ne se déclenchera jamais.
Voici la liste complète des marqueurs d'état disponibles (dans le même ordre qu'ils apparaissent dans le plateau de marqueurs) :
"rouge", "bleu", "vert", "brun", "violet", "rose", "jaune", "mort", "crâne", "endormi", "demi-cœur", "demi-folie", "interdiction", "escargot", "hélice foudroyante", "clé à molette", "cœur enchaîné", "boulon chimique", "zone de mort", "buvez-moi", "fissure du bord", "masque de ninja", "chronomètre", "filet de pêche", "surmultipliée", "forte", "poing", "cadenas", "trois feuilles", "aile duveteuse", "pilonné", "piétiné", "fléché", "aura", "mal de dos", "drapeau noir", "oeil saignant", "bouclier à boulons", "coeur brisé", "toile d'araignée", "bouclier brisé", "drapeau volant", "radioactif", "trophée", "crâne brisé", "orbe gelé", "bombe roulante", "tour blanche", "saisir", "crier", "grenade", "fusil de sentinelle", "tout pour un", "tenue d'ange", "cible de tir à l'arc"
Page
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | A unique ID for this object. Unique au monde pour tous les objets de ce jeu. Joueur: | |
_type | "page" | Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. En lecture seule. |
_zorder | "" | Liste des ID séparés par des virgules spécifiant l'ordre des objets sur la page. vers l'avant et vers l'arrière (et leurs éléments de menu contextuel associés) peuvent réorganiser cette liste. Read-only. |
name | "" | Titre de la page. |
showgrid | true | Afficher la grille sur la carte. |
showdarkness | false | Afficher le brouillard de guerre sur la carte. |
showlighting | false | Utiliser l'éclairage dynamique. |
width | 25 | Largeur en unités. |
height | 25 | Taille en unités. |
incrément_capture | 1 | Taille de l'espace de la grille en unités. |
opacité de la grille | 0.5 | Opacité des lignes de la grille. |
opacité_brouillard | 0.35 | Opacité du brouillard de guerre pour le GM. |
couleur_de_fond | "#FFFFFF" | Couleur hexadécimale de l'arrière-plan de la carte. |
couleur de la grille | "#C0C0C0" | Couleur hexadécimale des lignes de la grille. |
type de grille | "carré" | L'un des choix suivants : "square", "hex" ou "hexr". (hex correspond à Hex(V), et hexr correspond à Hex(H)) |
numéro d'échelle | 5 | La distance d'une unité. |
unités_échelle | "ft" | Le type d'unités à utiliser pour l'échelle. |
gridlabels | false | Afficher les étiquettes de la grille pour une grille hexagonale. |
diagonaltype | "foure" | L'un des "foure", "pythagorean" (Euclidienne), "threefive" ou "manhattan". |
archived | faux | Si la page a été archivée. |
lumièreupdatedrop | faux | Ne mettre à jour l'éclairage dynamique que lorsqu'un objet est déposé. |
lightenforcelos | faux | Faire respecter la ligne de visée des objets. |
légertrestrictmove | faux | Ne permettez pas aux objets qui ont une vue de se déplacer à travers les murs de l'éclairage dynamique. |
lightglobalillum | false | Si c'est vrai, partout où un jeton peut "voir", on suppose qu'il y a une lumière vive. |
gâchette du juke-box | Contrôle la lecture de la page au chargement. Options include ‘nonestopall’ or the id-of-the-track | |
dynamic_lighting_enabled | false | |
daylight_mode_enabled | false | |
daylightModeOpacity | 1 | |
explorer_mode | "off" | Options: "off", "basic" |
darknessEffect | "aucun" | Options: "none", "darkfog", "lightfog" |
Campagne
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | "root" | A unique ID for this object. Globally unique across all objects in this game. Lecture seule. |
_type | "campaign" | Can be used to identify the object type or search for the object — however, note that there is only one Campaign object, and it can be accessed via Campaign() . Read-only. |
ordre de tour | "" | Une chaîne JSON de l'ordre de tour Voir ci-dessous. |
page d'initiative | faux | ID de la page utilisée pour le suivi lorsque la fenêtre de l'ordre de tour est ouverte. Lorsque défini surfaux , la fenêtre de l'ordre de tour se ferme. |
IDpagejoueur | faux | ID de la page sur laquelle le signet du joueur est défini. Les joueurs voient cette page par défaut, à moins d'être remplacée par des pages spécifiques aux joueurs ci-dessous. |
pages spécifiques aux joueurs | faux | Un objet (PAS UNE CHAÎNE JSON) du format : {"player1_id": "page_id", "player2_id": "page_id" ... } Tout joueur réglé sur une page dans cet objet remplacera l'identifiant de page joueur. |
_dossierjournal | "" | Une chaîne JSON qui contient des données sur la structure des dossiers du jeu. En lecture seule. |
_dossiermp3 | "" | Une chaîne JSON qui contient des données sur la structure des listes de lecture du jukebox du jeu. En lecture seule. |
Ordre de tour
L'ordre de tour est une chaîne JSON représentant la liste de l'ordre de tour actuel. Il s'agit d'un tableau d'objets. Actuellement, l'ordre de tour ne peut contenir que des objets d'une seule page à la fois - l'ID de page actuelle pour l'ordre de tour est l'attribut "initiativepage". Assurez-vous de les maintenir tous les deux synchronisés, sinon vous pourriez obtenir des résultats étranges.
Pour travailler avec l'ordre de tour, vous voudrez utiliserJSON.parse()
pour obtenir un objet représentant l'état actuel de l'ordre de tour (REMARQUE: Vérifiez d'abord qu'il ne s'agit pas d'une chaîne vide""
... s'il l'est, initialisez-le vous-même avec un tableau vide). Voici un exemple d'objet d'ordre de tour:
[
{
"id":"36CA8D77-CF43-48D1-8682-FA2F5DFD495F", //L'ID de l'objet graphique. Si cela est défini, la liste de l'ordre de tour récupérera automatiquement le nom et l'icône de la liste en fonction de l'objet graphique sur la table.
"pr":"0", //La valeur actuelle de l'élément dans la liste. Peut être un nombre ou du texte.
"custom":"" //Titre personnalisé pour l'élément. Sera ignoré si l'ID est défini sur une valeur autre que "-1".
},
{
"id":"-1", //Pour les éléments personnalisés, l'ID DOIT être défini sur "-1" (notez que c'est une CHAÎNE, pas un NOMBRE.
"pr":"12",
"custom":"Test Custom" //Le nom à afficher pour les éléments personnalisés.
}
]
Pour modifier l'ordre de passage, modifiez l'objet "ordre de passage" actuel, puis utilisezJSON.stringify()
pour modifier l'attribut de la campagne. Notez que l'ordre des tours dans la liste est le même que l'ordre du tableau. Par exemple,push()
ajoute un élément à la fin de la liste,unshift()
l'ajoute au début, etc.
var turnorder;
if(Campaign().get("turnorder") == "") turnorder = []; //NOTE: We check to make sure that the turnorder isn't just an empty string first. If it is treat it like an empty array.
else turnorder = JSON.parse(Campaign().get("turnorder"));
//Add a new custom entry to the end of the turn order.
turnorder.push({
id: "-1",
pr: "15",
custom: "Turn Counter"
});
Campaign().set("turnorder", JSON.stringify(turnorder));
Player
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Globally unique across all objects in this game. En lecture seule. | |
_type | "joueur" | Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. En lecture seule. |
_d20userid | ID de l'utilisateur - pour l'ensemble du site. Par exemple, la page utilisateur du joueur sur le wiki est /User :ID, où ID est la même valeur que celle stockée dans _d20userid. En lecture seule. | |
Nom d'affichage | "" | Nom d'affichage actuel du joueur. Peut être modifié à partir de la page des paramètres de l'utilisateur. En lecture seule. |
en ligne | faux | Lecture seule. |
page d'accueil | "" | 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 se sont inscrits en tant que joueurs. Lecture seule. |
Macrobar | "" | Chaîne de macros délimitée par des virgules dans la barre de macros du lecteur. En lecture seule. |
parlercomme | "" | L'ID du joueur ou du personnage que le joueur a sélectionné dans la liste déroulante "En tant que". Lorsque réglé sur une chaîne vide, le joueur parle en son nom propre. Lorsque réglé sur un personnage, la valeur est "character|ID", où ID est l'ID du personnage. Lorsque le MJ parle au nom d'un autre joueur, la valeur est "player|ID", où ID est l'ID du joueur. |
couleur | "#13B9F0" | La couleur du carré à côté du nom du joueur, ainsi que la couleur de ses mesures sur la carte, de ses cercles de ping, etc. |
affichermacrobarre | faux | Afficher ou non la barre de macro du joueur. |
Macro
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Unique à l'échelle mondiale 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. |
_playerid | L'ID du joueur qui a créé cette macro. Lecture seule. | |
nom | "" | Nom de la macro. |
action | "" | Le texte de la macro. |
visible pour | "" | Liste délimitée par des virgules d'ID de joueurs qui peuvent visualiser la macro en plus du joueur qui l'a créée.
Tous les joueurssont représentés en ayant 'all' dans la liste. |
istokenaction | faux | Est-ce que cette macro est une action de jeton qui devrait s'afficher lorsque des jetons sont sélectionnés? |
Table lancable
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Un identifiant unique dans tous les objets de ce jeu. Lecture seule. | |
_type | "rollabletable" | Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. Lecture seule. |
nom | "nouvelle-table" | |
afficherjoueurs | vrai |
Élément de Table
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Unique à l'échelle mondiale pour tous les objets de ce jeu. Lecture seule. | |
_type | "objetdetable" | Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. Lecture seule. |
_rollabletableid | "" | ID de la table à laquelle cet élément appartient. Lecture seule. |
avatar | "" | URL vers une image utilisée pour l'élément de table. Voir la note sur les restrictions de l'avatar et de imgsrc ci-dessous. |
nom | "" | |
poids | 1 | Poids de l'élément de table par rapport aux autres éléments de la même table. Simply put, an item with weight 3 is three times more likely to be selected when rolling on the table than an item with weight 1. |
Caractère
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un ID unique pour cet objet. Unique dans tous les objets de ce jeu. Lecture seule. | |
_type | "character" | 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. Voir la note ci-dessous concernant les restrictions d'avatar et d'imgsrc. |
nom | "" | |
approche | "" | La biographie du personnage. Voir la note ci-dessous concernant l'accès aux champs Notes, GMNotes et bio. |
GMNotes | "" | Notes sur le personnage visibles uniquement par le MJ. Voir la note ci-dessous concernant l'accès aux champs Notes, GMNotes et bio. |
archivé | faux | |
inplayerjournals | "" | Liste de joueurs séparés par des virgules qui peuvent voir ce personnage. Utilisez "all" pour donner à tous les joueurs la possibilité de voir.
Tous les joueurssont représentés en ayant 'all' dans la liste. |
contrôlé par | "" | Liste de joueurs séparés par des virgules qui peuvent contrôler et modifier ce personnage. Utilisez "all" pour donner à tous les joueurs la possibilité de modifier.
Tous les joueursest représenté par "tous" dans la liste. |
_defaulttoken | "" | Une chaîne JSON contenant les données du jeton par défaut du personnage si un tel jeton est défini. Notez que ceci est un "blob" similaire à "bio" et "notes", donc vous devez passer une fonction de rappel à get(). En lecture seule. |
Attribut
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Unique à travers tous les objets de ce jeu. En lecture seule. | |
type | "attribut" | Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. En lecture seule. |
_characterid | "" | ID du personnage auquel appartient cet attribut. En lecture seule. Obligatoire lors de l'utilisation decreateObj . |
name | "Sans titre | |
actuel | "" | La valeur actuelle de l'attribut est accessible dans le chat et les macros avec la syntaxe@{Character Name|Attribute Name} ou dans les capacités avec la syntaxe@{Attribute Name} . |
max | "" | La valeur maximale de l'attribut est accessible dans le chat et les macros avec la syntaxe@{Character Name|Attribute Name|max} ou dans les capacités avec la syntaxe@{Attribute Name|max} . |
Important : Voir la note ci-dessous sur l'utilisation des feuilles de caractères pour savoir comment les valeurs par défaut des feuilles de caractères affectent l'utilisation des attributs.
Capacité
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Unique au monde pour tous les objets de ce jeu. En lecture seule. | |
type | "capacité" | Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. En lecture seule. |
Caractère | "" | Le personnage à qui appartient cette capacité. Lecture seule. Obligatoire lors de l'utilisation decreateObj . |
nom | "Untitled_Ability" | |
description | "" | La description n'apparaît pas dans l'interface de la feuille de personnage. |
action | "" | Le texte de la capacité. |
istokenaction | faux | Cette capacité est-elle une action de jeton qui doit apparaître lorsque des jetons liés à son personnage parent sont sélectionnés ? |
Document à distribuer
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Unique au monde pour tous les objets de ce jeu. Lecture seule. | |
type | "polycopié" | Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. En lecture seule. |
avatar | "" | URL d'une image utilisée pour le polycopié. Voir la note sur les restrictions relatives aux avatars et aux imgsrc ci-dessous. |
nom | "Note mystérieuse | |
notes | "" | Contient le texte du polycopié. Voir la note ci-dessous concernant l'utilisation de Notes et de GMNotes. |
gmnotes | "" | Contient le texte du document que seul le MJ voit. Voir la note ci-dessous concernant l'utilisation de Notes et de GMNotes. |
journaux inplayer | "" | Liste délimitée par des virgules des identifiants des joueurs qui peuvent voir ce document. Utilisez "tous" pour afficher tous les joueurs.
Tous les joueursest représenté par "tous" dans la liste. |
archivé | faux | |
controlledby | "" | Liste délimitée par des virgules des identifiants des joueurs qui peuvent contrôler et modifier ce document.
All Players is represented by having 'all' in the list. |
Remarque :L'API n'a pas accès à la hiérarchie des dossiers. Les documents créés par l'API seront placés au niveau de la racine.
Pont
Notez qu'il existe des méthodes API d'assistance pour "tirer", "distribuer" ou "mélanger" les cartes du jeu. VoirAPI Update forum post from March 2018.
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | "" | Identité du pont |
_type | "pont" | |
nom | "" | nom du jeu |
pont en cours | "" | une liste de cartes délimitée par des virgules qui se trouvent actuellement dans le jeu (y compris celles qui ont été jouées sur la table ou dans les mains). Change lorsque le jeu est mélangé. |
Indice actuel | -1 | l'indice actuel de notre place dans le jeu, "quelle carte sera tirée ensuite ? |
Carte actuelle affichée | vrai | afficher la carte actuelle sur le dessus du jeu |
showplayers | vrai | montrer le jeu aux joueurs |
joueurscandraw | vrai | les joueurs peuvent-ils tirer des cartes ? |
avatar | "" | le "dos" des cartes de ce jeu |
montré | false | afficher la pioche sur le plateau de jeu (la pioche est-elle actuellement visible ?) |
joueurs_seenumcards | vrai | Les joueurs peuvent-ils voir le nombre de cartes dans les mains des autres joueurs ? |
joueurs_seefrontofcards | faux | Les joueurs peuvent-ils voir le recto des cartes lorsqu'ils regardent les mains des autres joueurs ? |
gm_seenumcards | vrai | Le GM peut-il voir le nombre de cartes dans la main de chaque joueur ? |
gm_seefrontofcards | faux | Le GM peut-il voir le recto des cartes lorsqu'il regarde la main de chaque joueur ? |
cartes infinies | faux | y a-t-il un nombre 'infini' de cartes dans ce deck ? |
_cardSequencer | -1 | utilisé en interne pour faire avancer le deck lors de la distribution des cartes. |
cartesjouées | "facevisible" | comment les cartes de ce deck sont-elles jouées sur la table ? 'facevisible' ou 'retourner'. |
hauteurdéfaut | "" | quelle hauteur défaut pour les cartes jouées sur la table ? |
largeur par défaut | "" | |
mode de rejet du profil | "none" | Quel est le type de pile de défausse de ce jeu ? 'none' = pas de pile de défausse, 'choosebacks' = permettre aux joueurs de voir le dos des cartes et d'en choisir une, 'choosefronts' = voir le devant des cartes et choisir, 'drawtop' = tirer la carte la plus récemment défaussée, 'drawbottom' = tirer la carte la plus anciennement défaussée. |
pile de rejets | "" | Le jeu est un jeu d'enfant, c'est un jeu d'enfant, c'est un jeu d'enfant. liste de cartes délimitée par des virgules. Il s'agit de cartes qui ont été retirées du jeu et qui ne seront pas remises dans le jeu lors d'un mélange jusqu'à ce qu'un rappel soit effectué. |
Carte
Property | Default Value | Notes |
---|---|---|
nom | "" | Nom de la carte |
avatar | "" | Face de la carte |
card_back | "" | Override card back image |
_deckid | "" | ID du deck |
_type | "carte" | |
_id | "" |
Man
Notez que chaque joueur ne devrait avoir QU'UNE seule main.
Propriété | Valeur par défaut | Notes |
---|---|---|
currentHand | "" | liste séparée par des virgules des cartes actuellement dans la main. Notez que ceci n'est plus en lecture seule. Idéalement, cela devrait seulement être ajusté à l'aide des fonctions de jeu de cartes. |
_type | "hand" | |
_parentid | "" | ID du joueur à qui appartient la main |
_id | "" | |
currentView | "bydeck" | quand le joueur ouvre la main, est la vue 'par deck' ou 'par carte'? |
Piste de jukebox
Propriété | Valeur par défaut | Notes |
---|---|---|
_id | Un identifiant unique pour cet objet. Unique à l'échelle globale dans tous les objets de ce jeu. En lecture seule. | |
type | "jukeboxtrack" | Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. Read-only. |
joue à | false | Boolean utilisé pour déterminer si la piste est en lecture ou non. Définir ceci sur "true" et softstop sur "false" joue une piste. |
softstop | false | Boolean utilisé pour déterminer si une piste non bouclée s'est terminée au moins une fois. Ceci doit être défini sur "false" pour s'assurer qu'une piste sera lue. |
titre | "" | L'étiquette visible de la piste dans l'onglet jukebox. |
volume | 30 | Le niveau de volume de la piste. Notez qu'il doit s'agir d'un entier (et non d'une chaîne), sous peine d'interrompre la fonctionnalité. Valeurs de 0 à 100 (pourcentage). |
boucle | false | La piste doit-elle être bouclée ? Si c'est le cas, la valeur est fixée à true. |
Custom FX
Property | Default Value | Notes |
---|---|---|
_id | A unique ID for this object. Unique au monde pour tous les objets de ce jeu. Read-only. | |
_type | "custfx" | Peut être utilisé pour identifier le type d'objet ou rechercher l'objet. Read-only. |
nom | "" | Le nom visible de la bourse dans la liste des bourses. |
définition | {} | Objet Javascript décrivant le FX. |
restrictions des propriétés imgsrc et avatar
Bien que vous puissiez désormais modifier les propriétésimgsrc
etavatar
, nous avons mis en place les restrictions suivantes pour ces propriétés afin d'assurer la sécurité de tous les utilisateurs de Roll20 :
- Vous devez utiliser un fichier image téléchargé dans votre bibliothèque Roll20 - pas un site externe (comme Imgur) et pas le Marché Roll20. Il commencera par 'https://s3.amazonaws.com/files.d20.io/images/' pour les images téléchargées vers le serveur principal, ou 'https://s3.amazonaws.com/files.staging.d20.io/images/' pour les images téléchargées vers le serveur de développement. Vous pouvez consulter l'URL source d'une image en utilisant les outils de développement de votre navigateur.
- Vous devez inclure la chaîne de requête dans l'URL - par exemple, 'https://s3.amazonaws.com/files.staging.d20.io/images/123456/med.png?12345678', pas seulement 'https://s3.amazonaws.com/files.staging.d20.io/images/123456/med.png'
- Pour les objets graphiques (jetons), vous devez utiliser la taille "thumb" de l'image. Il devrait ressembler à 'https://s3.amazonaws.com/files.staging.d20.io/images/123456/thumb.png?12345678'.
Dans le futur, nous pourrions ajouter un outil pour que les images puissent être téléchargées spécifiquement pour être utilisées avec les scripts Mod (API), mais pour l'instant, utilisez simplement les images téléchargées dans votre propre bibliothèque. Notez que si vous supprimez une image de votre bibliothèque, elle sera supprimée de tous les jeux utilisant cette image, y compris les jeux utilisant vos scripts Mod (API).
Utilisation des champs Notes, GMNotes et Bio de manière 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("character", "-JMGkBaMgMWiQdNDwjjS");
character.get("bio", function(bio) {
log(bio); //do something with the character bio here.
});
Vous pouvez définir la valeur de ces champs normalement. Notez qu'il existe actuellement (au 09/05/2016) un bug avec ces champs asynchrones, où les définir en passant des valeurs à createObj échoue silencieusement, laissant l'objet dans un état étrange. Vous ne devriez définir ces valeurs qu'en utilisant .set jusqu'à ce que ce problème soit résolu. Détails sur leForum. Il y a aussi un bug (à partir du 05/11/2016) où essayer de définir à la fois les propriétés notes et gmnotes dans le même appel set() entraîne la définition erronée de la deuxième propriété dans l'appel. Détails sur leForum.
Travailler avec des fiches de personnage
La fonctionnalité des fiches de personnage affecte l'utilisation du type d'objet Attributs, car les fiches ont la possibilité de spécifier une valeur par défaut pour chaque attribut sur la fiche. Cependant, si l'attribut est défini sur la valeur par défaut, il n'existe pas encore d'objet Attribut réel créé dans le jeu pour ce personnage. Nous fournissons une fonction de commodité qui masque cette complexité pour vous. Vous devriez utiliser cette fonction pour obtenir la valeur d'un attribut à l'avenir, surtout si vous savez qu'un jeu utilise une fiche de personnage.
getAttrByName(character_id, attribute_name, value_type)
Il suffit de spécifier l'ID du caractère, le nom(et non l'ID) de l'attribut (par exemple "HP" ou "Str"), puis de préciser si vous souhaitez "current" ou "max" pour value_type. Voici un exemple :
var character = getObj("character", "-JMGkBaMgMWiQdNDwjjS");
getAttrByName(character.id, "str"); // la valeur actuelle de For, par exemple "12"
getAttrByName(character.id, "str", "max"); // la valeur max de For, par exemple "[[floor(@{STR}/2-5)]]"
Notez que les champs ayant des valeurs calculées automatiquement renverront la formule au lieu du résultat de la valeur. Vous pouvez ensuite transmettre cette formule à sendChat() pour utiliser le moteur de dés afin de calculer automatiquement le résultat pour vous.
Consultez également la documentation de la feuille de personnagepour plus d'informations sur la façon dont les feuilles de personnage interagissent avec l'API.
getAttrByName
n'obtiendra quela valeur de l'attribut, et non l'objet attribut lui-même. Si vous souhaitez vous référer à d'autres propriétés de l'attribut que "actuelle" ou "max", ou si vous souhaitez modifier des propriétés de l'attribut, vous devez utiliser l'une des autres fonctions ci-dessus, comme findObjs
.
Dans le cas où l'attribut demandé n'existe pas,getAttrByName()
renverraundefined
.
Création d'objets
createObj(type, attributs)
Note : Vous pouvez actuellement créer des objets 'graphiques', 'texte', 'chemin', 'personnage', 'faculté', 'attribut', 'aide', 'tablederoll', 'élémentdetable' et 'macro'.
Vous pouvez créer un nouvel objet dans le jeu en utilisant la fonctioncreateObj
. Vous devez indiquer le type de l'objet (l'une des propriétés valides_type
de la liste des objets ci-dessus), ainsi qu'un objetattributs
contenant une liste de propriétés pour l'objet. Notez que si l'objet a un objet parent (par exemple, les attributs et les facultés appartiennent aux personnages, les graphiques, les textes et les chemins appartiennent aux pages, etc.), vous devez spécifier dans la liste des propriétés l'ID du parent (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 des propriétés en lecture seule, elles seront automatiquement définies sur leur valeur par défaut. La seule exception à cette règle est lors de la création d'un chemin, vous devez inclure la propriété 'path', mais elle ne peut pas être modifiée une fois que le chemin est créé initialement.
createObj
retournera le nouvel objet, de sorte que vous pouvez continuer à travailler avec lui.
//Crée un nouvel attribut "Strength" sur tous les personnages ajoutés au jeu.
on("add:character", function(obj) {
createObj("attribute", {
name: "Strength",
current: 0,
max: 30,
characterid: obj.id
});
});
Supprimer des objets
object.remove()
Remarque : actuellement, vous pouvez supprimer des objets 'graphic', 'text', 'path', 'character', 'ability', 'attribute', 'handout', 'rollabletable', 'tableitem' et 'macro'.
Vous pouvez supprimer les objets de jeu existants en utilisant la fonction remove().remove()
. La fonction .remove() fonctionne sur tous les objets que vous pouvez créer avec la fonction createObj. Vous appelez la fonction directement sur l'objet. Par exemple,mycharacter.remove();
.
Objets Globaux
Il existe plusieurs objets disponibles globalement n'importe où dans votre script.
Campagne() (fonction)
Une fonction qui renvoie l'objetCampaign
. Étant donné qu'il n'y a qu'une seule campagne, cette variable globale pointe toujours vers la seule campagne du jeu. Utile pour des choses comme vérifier si un objet est sur la page active en utilisantCampaign().get("playerpageid")
.
État
La variablestate
est un objet global accessible à tous les scripts du jeu. Vous pouvez accéder à l'objetstate
depuis n'importe quelle fonction ou callback à tout moment en utilisant la variable globale nomméestate
. En outre, l'objetstate
est conservé entre les exécutions deSandbox, de sorte que vous pouvez l'utiliser pour stocker des informations dont vous souhaitez disposer lors des prochaines exécutions de votre script.
Note :Vous devez utiliser l'objet state pour stocker les informations dont l'API a seulement besoin, car elles ne sont pas envoyées aux ordinateurs des joueurs et ne rendent pas votre fichier de jeu plus volumineux. Stockez les valeurs nécessaires en jeu dans les propriétés des objets Roll20.
Types stockables
L'objetstate
n'est capable de conserver que des types de données simples, comme le prévoit la normeJSON.
Stéréotype | Exemples | Description |
---|---|---|
Booléen |
vrai faux
|
La valeur vrai ou faux . |
Nombre |
123,5 10 1,23e20
|
Tout format de nombre pris en charge par Javascript. Nombre flottant ou entier. |
Chaîne de caractères |
'Bonjour le monde fantastique' "oh, et le Monde"
|
Une chaîne de caractères 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. |
Objectif | { key: 1, value: 'roll20' } |
Un objet clé/valeur simple avec des clés de chaîne et n'importe quel type comme valeur, y compris d'autres objets. |
Attention :Si les fonctions semblent fonctionner lorsqu'elles sont stockées initialement dans l'état, elles disparaissent la première fois que l'étatest restauré à partir de la persistance, par exemple lors d'un redémarrage du bac à sable.
-
Note :Cela inclut les objets Roll20 que vous obtenez à partir d'événements ou des fonctions
findObjs()
,getObj()
,filterObjs()
,createObj()
, etc.
Rappels Importants
L'objetstate
est partagé par tous les scripts d'un bac à sable. Pour éviter de casser d'autres scripts, il est important de suivre quelques directives simples :
-
Ne jamaisassigner directement à l'objet racine
state
.
state = { break: 'all the things' }; // NE JAMAIS FAIRE CELA !!!
-
Évitezd'utiliser des variables locales nommées
state
dans vos scripts. Bien que cela fonctionne, cela sera déroutant pour les utilisateurs ultérieurs de vos scripts et pourrait causer des problèmes si le code est modifié sans précaution.
function turn(){
var state = Campaign().get('turnorder'); // Mauvaise pratique, à éviter !
// ...
}
-
Toujoursplacer vos propriétés sous au moins une propriété d'espace de noms. Assurez-vous d'utiliser une propriété d'espace de noms suffisamment descriptive. Évitez les noms comme
script
ousettings
. Il est préférable d'utiliser le nom de votre module ou votre propre nom ou pseudonyme.
if( ! state.MyModuleNamespace ) {
state.MyModuleNamespace = { module: 'mon module', ok: 'c'est bien !', count: 0 };
}
state.MyModuleNamespace.count++;
Exemple d'utilisation
Il s'agit d'un exemple pratique qui utilise l'objetstate
de manière appropriée.
on('ready',function() {
"use strict" ;
// Vérifier si la propriété namespaced existe, 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 pour le chat.
sendChat(
'Test Module',
'<span style="color: '+state.MyModuleNS.config.color1+';">'+
'State test'+
'</span> '+
'<span style="color: '+state.MyModuleNS.config.color2+';">'+
'Script v'+state.MyModuleNS.version+' démarré '+(++state.MyModuleNS.count)+' fois!'+
'</span>'
) ;
}) ;
Recherche/filtrage d'objets
L'API fournit plusieurs fonctions d'aide qui peuvent être utilisées pour trouver des objets.
getObj(type, id)
Cette fonction obtient un seul objet si le _type de l'objet et l'_id sont passés. Il est préférable d'utiliser cette fonction plutôt que les autres fonctions de recherche chaque fois que possible, car c'est la seule qui ne doit pas parcourir l'ensemble de la collection d'objets.
on("change:graphic:represents", function(obj) {
Si(obj.get("represents") != "") {
var personnage = getObj("character", obj.get("represents"));
}
});
findObjs(attrs)
Transmettez cette fonction une liste d'attributs, et elle renverra tous les objets correspondants sous forme de tableau. Notez que cela s'applique à tous les objets de tous les types sur toutes les pages - donc vous voudrez probablement inclure au moins un filtre pour _type et _pageid si vous travaillez avec des objets de jeu de rôle.
var personnagesPageCourante = findObjs({
_pageid: Campaign().get("playerpageid"),
_type: "graphic",
});
_.each(personnagesPageCourante, function(obj) {
//Faites quelque chose avec obj, qui est sur la page actuelle et qui est un graphique.
});
Vous pouvez également passer un deuxième argument facultatif qui contient un objet avec une liste d'options, y compris :
- caseInsensitive(true/false) : Si vrai, les propriétés des chaînes de caractères seront comparées sans tenir compte de la casse de la chaîne.
var targetTokens = findObjs({
name : "target"
}, {caseInsensitive: true}) ;
/Retourne tous les tokens dont le nom est "target", "Target", "TARGET", etc.
filterObjs(callback)
Exécute la fonction de rappel fournie sur chaque objet et, si la fonction de rappel renvoie un résultat positif, l'objet est 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 améliorer la 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 is an array of all objects that are in the top-left corner of the tabletop.
getAllObjs()
Renvoie un tableau de tous les objets du jeu (tous types confondus). Cela équivaut à appeler filterObjs et à renvoyertrue
pour chaque objet.
getAttrByName(character_id, attribute_name, value_type)
Obtient la valeur d'un attribut, en utilisant la valeur par défaut de la feuille de caractères si l'attribut n'est pas présent. value_type
est un paramètre facultatif, que vous pouvez utiliser pour spécifier "current" ou "max".
getAttrByName
n'obtiendra quela valeur de l'attribut, et non l'objet attribut lui-même. Si vous souhaitez référencer des propriétés de l'attribut autres que "current" ou "max", ou si vous souhaitez modifier des propriétés de l'attribut, vous devez utiliser l'une des autres fonctions ci-dessus, telles quefindObjs
.
Pour les sections répétitives, vous pouvez utiliser le formatrepeating_section_$n_attribute
, oùn
est le numéro de ligne répétitive (en commençant par zéro). Par exemple,repeating_spells_$2_name
retournera la valeur dename
de la troisième ligne derepeating_spells
.
Vous pouvez obtenir le même comportement quegetAttrByName
avec ce qui suit :
// current and max are completely dependent on the attribute and game system
// in question; there is no function available for determining them automatically
function myGetAttrByName(character_id,
attribute_name,
attribute_default_current,
attribute_default_max,
value_type) {
attribute_default_current = attribute_default_current || '';
attribute_default_max = attribute_default_max || '';
value_type = value_type || 'current';
var attribute = findObjs({
type: 'attribute',
characterid: character_id,
name: attribute_name
}, {caseInsensitive: true})[0];
if (!attribute) {
attribute = createObj('attribute', {
characterid: character_id,
name: attribute_name,
current: attribute_default_current,
max: attribute_default_max
});
}
if (value_type == 'max') {
return attribute.get('max');
} else {
return attribute.get('current');
}
}