API : Documentation des fonctions

Roll20 propose plusieurs fonctionnalités qui ne sont pas disponibles dans le JavaScript de base ou dans d'autres bibliothèques.


Variables globales

Variable Description
_ Il s'agit de l'objet d'espace de noms pour l' Underscore.js .
état Les propriétés de l'objet d'état seront conservées entre les sessions de jeu.

_ (Tiret bas)

Il s'agit de l'objet d'espace de noms pour l' Underscore.js . Underscore propose de nombreuses fonctions pour la manipulation de collections.


état

Les propriétés de l'objet d'état seront conservées entre les sessions de jeu. Le même objet d'état est également partagé entre tous les scripts Mod (API) d'une campagne. Il est donc fortement recommandé, lorsque vous écrivez des valeurs dans l'état, de minimiser autant que possible votre empreinte afin d'éviter les conflits de noms. Remarque : l'état est sérialisé avec JSON, vous ne pouvez donc pas stocker de fonctions ou d'objets avec des références cycliques.


Fonctions globales

Type de retour Fonction Description
Objet Roll20 Campagne Récupère l'objet unique Campaign Roll20.
Objet Roll20 créerObj Permet de créer un nouvel objet Roll20.
Ensemble d'objets objets Roll20 filterObjs Récupère tous les objets Roll20 qui satisfont à un test prédicat.
Ensemble d'objets objets Roll20 findObjs Récupère tous les objets Roll20 dont les propriétés correspondent à un ensemble d'attributs donné.
Ensemble d'objets objets Roll20 obtenirTousLesObjets Récupère tous les objets Roll20 de la campagne.
varie getAttrByName Obtient la valeur actuelle ou maximale d'un attribut d'objet Roll20.
Objet Roll20 getObj Récupère un objet Roll20 spécifique.
  u Enregistre un message dans la console Mod (API).
  sur Enregistre un gestionnaire d'événements.
  surSheetWorkerCompleted Enregistre un gestionnaire d'événements unique à exécuter après une pile complète de scripts de feuille .
Booléen joueurEstGM Vérifie si un joueur dispose actuellement des privilèges de MJ.
  Lecteur Jukebox Liste de lecture Veuillez commencer à lire une liste de lecture du jukebox.
Numéro  nombre entier aléatoire Génère une valeur entière aléatoire.
  envoyer un message Envoie un message instantané.
  envoyer un ping Envoie une commande ping similaire à celle obtenue en maintenant le bouton gauche de la souris enfoncé.
  spawnFx Génère un émetteur de particules.
  générer des effets entre des points Génère un émetteur de particules qui se déplace d'un point à un autre.
  spawnFxWithDefinition Génère un émetteur de particules qui n'est pas représenté par un objet FX Roll20.
  Arrêter la lecture de la liste de lecture du jukebox Interrompt toutes les listes de lecture actuellement en cours de lecture sur le jukebox.
  Retour Déplace un objet graphique Roll20 sous tous les autres graphiques du même calque de table.
  toFront Déplace un objet graphique Roll20au-dessus de tous les autres graphiques situés sur le même calque de table.

Campagne

Paramètres

Aucun paramètre

Retours

L'objet Roll20 de la campagne unique.

Exemples

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

créerObj

Paramètres

TYPE(Chaîne) Le type d'objet Roll20 à créer. Seuls « graphic », « text », « path », « personnage », « ability », « attribute », « document », « rollabletable », « tableitem » et « macro » peuvent être créés. ATTRIBUTES(Object) Valeurs initiales à utiliser pour les propriétés de l'objet Roll20.

Retours

L'objet Roll20 qui a été créé.

Exemples

Lors de la création d'un objet Roll20 qui possède un objet parent (par exemple, lors de la création d'un objet Roll20 attribut, qui est un enfant d'un objet Roll20 personnage), il est nécessaire de fournir l'identifiant du parent dansles attributs.

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

Lors de la création d'un objet Roll20 de type chemin, il est nécessaire de fournir une valeur pour la propriété en lecture seule_path. Il s'agit d'une exception à la règle qui empêche de définir la valeur des propriétés en lecture seule lors de la création d'objets Roll20.

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

Lors de la création d'un objet Roll20 Document, il n'est pas possible de définir le texte ou les notes du maître du jeu au moment de la création.

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

filterObjs

Paramètres

CALLBACK(Fonction) Une fonction prédicative permettant de tester tous les objets Roll20. La fonction de rappel reçoit un objet Roll20 en tant que paramètre et doit renvoyer soit true (pour les objets Roll20 qui seront inclus dans la valeur de retour filterObjs), soit false (pour tous les autres objets Roll20).

Retours

Un tableau d'objets Roll20 qui ont réussi le test de prédicat.

Exemples

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

findObjs

Paramètres

ATTRIBUTES(Objet) Ensemble de paires clé:valeur à associer aux objets Roll20 dans la campagne. OPTIONS(Objet, facultatif) Si options.caseInsensitive est vrai, les comparaisons de chaînes entre les objets Roll20 et les attributs ne tiendront pas compte de la casse.

Retours

Tableau d'objets Roll20 dont les propriétés correspondentaux attributs.

Exemples

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

obtenirTousLesObjets

Paramètres

Aucun paramètre

Retours

Tableau de tous les objets Roll20 de la campagne.

Exemples

var tout = getAllObjs();

getAttrByName

Paramètres

CHARACTER_ID(Chaîne) Identifiant de l'objet Roll20 du personnage qui est le parent de l'objet Roll20 de l'attribut dont vous souhaitez obtenir la valeur.ATTRIBUTE_NAME(Chaîne) Le nom de l'objet Roll20 attribut dont vous souhaitez obtenir la valeur. VALUE_TYPE(Chaîne, facultatif) Soit « current » (actuel), soit « max » (maximum) (la valeur par défaut est « current » si elle est omise).

Retours

La propriétéactuelleoumaximalede l'attribut approprié. Si la propriété souhaitée n'est pas définie, la valeur par défaut spécifiée dans la feuille de personnage (s'il y en a une) sera utilisée à la place.

Exemples

var personnage = getMyPersonnage(),
    strength = getAttrByName(personnage.id, 'strength'),
    strength_max = getAttrByName(personnage.id, 'strength', 'max');

getObj

Paramètres

TYPE(Chaîne) Le type d'objet Roll20 à récupérer. ID(Chaîne) L'identifiant unique de l'objet Roll20 à récupérer.

Retours

L'objet Roll20 spécifié.

Exemples

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

journal

Paramètres

MESSAGE(variable) Le message à envoyer à la console Mod (API). Le paramètre message sera converti en chaîne de caractères à l'aide de JSON.stringify.

Retours

(Nul)

Exemples

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

sur

Paramètres

EVENT(Chaîne) Il existe cinq types d'événements : ready, change, add, destroy et chat. À l'exception de ready, tous les types d'événements doivent également être associés à un type d'objet. Pour le chat, il s'agit toujours d'un message. Pour tout le reste, il s'agit de la propriété de type d'un objet Roll20. En plus du type d'objet, les événements de modification peuvent également spécifier une propriété de l'objet Roll20 à surveiller. Les 2-3 parties de l'événement (type, objet et, éventuellement, propriété) sont séparées par des deux-points. Ainsi, les chaînes d'événements valides comprennent, sans s'y limiter, « ready », « chat:message », « change:graphic », « change:campaign:playerpageid », « add:personnage » et « destroy:document ». CALLBACK(Fonction) La fonction qui sera appelée lorsque l'événement spécifié se produira. Les paramètres transmis dépendent du type d'événement : les événements « ready » n'ont pas de paramètres de rappel. Les événements « change » ont un paramètre « obj », qui est une référence à l'objet Roll20 tel qu'il existe après le changement, et un paramètre « prev », qui est un objet JavaScript classique avec des propriétés correspondant à l'objet Roll20 avant l'événement de changement.Les événements « add » ont un paramètre « obj », qui est une référence au nouvel objet Roll20. Les événements « destroy » ont un paramètre « obj », qui est une référence à l'objet Roll20 qui n'existe plus. Les événements « chat » ont un paramètre « msg », qui contient les détails du message qui a été envoyé au chat.

Retours

(Nul)

Exemples

Les événements sont déclenchés dans l'ordre dans lequel ils ont été enregistrés, du plus spécifique au moins spécifique. Dans cet exemple, une modification de la propriétégauched'un objet graphique Roll20 entraînera l'appel dela fonction3, suivie dela fonction1, puis dela fonction2.

on('change:graphic', function1);
on('change:graphic', function2);
on('change:graphic:left', function3);

Les événements « add »tenteront de se déclencher pour les objets Roll20 déjà présents dans la campagne lorsqu'une nouvelle session commence. Afin d'éviter ce comportement, il est conseillé d'attendre que l'événement «ready» se déclenche avant d'enregistrer votre événement «add».

on('add:graphic', function(obj) {
    // Lorsque la session commence, cette fonction sera appelée pour chaque graphique de la campagne
    // Cette fonction sera également appelée chaque fois qu'un nouvel objet graphique Roll20 sera créé
});

on('ready', function() {
    on('add:graphic', function(obj) {
        // Cette fonction sera appelée *uniquement* lorsqu'un nouvel objet graphique Roll20 est créé, et non pour ceux qui existent déjà
    });
});

Le paramètreprepour les événementsde modificationn'est pas un objet Roll20, mais un simple objet JavaScript classique. Par conséquent, il n'est pas possible d'utiliser les fonctionsgetouset, et il est nécessaire de conserver les traits de soulignement au début des propriétés en lecture seule.

on('change:graphic', function(obj, prev) {
    var id1 = obj.id, // les trois sont équivalents
        id2 = obj.get('id'),
        id3 = obj.get('_id'),

        id4 = prev.id, // indéfini
        id5 = prev.get('id'), // undefined n'est pas une fonction
        id6 = prev._id;       // correct

    // les deux sont équivalents
    obj.set('left', 70);
    obj.set({
        left: 70
    });

    prev.set('left', 70); // undefined n'est pas une fonction
    prev.set({ // undefined n'est pas une fonction
        left: 70
    });
    prev.left = 70; // correct, bien que cela ne change rien sur la table
});

Pour les champs asynchrones des objets Roll20 de type personnage et document (notes,gmnotes etbio), le paramètreprevne contiendra pas les données requises. (Il comportera à la place un identifiant numérique utilisé par le système.) Si vous avez besoin d'accéder à la valeur précédente de l'un de ces champs, vous devrez en assurer le suivi vous-même :

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

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

        // effectuer des actions...

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

surSheetWorkerCompleted

Paramètres

CALLBACK(Fonction) La fonction qui sera appelée lorsque la « pile » actuelle des scripts de feuille sera terminée.

Retours

(Nul)

Exemples

Cette fonction doit être appelée avant setWithWorker. La fonctionde rappelne sera appelée qu'une seule fois.

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

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

 


joueurEstGM

Paramètres

PLAYER_ID(Chaîne) Identifiant de l'objet Roll20 du joueur à vérifier.

Retours

vraisi le joueur dispose actuellement des autorisations MJ,fauxdans le cas contraire.

Exemples

Cette fonction est particulièrement utile pour limiter les commandes Mod (API) à l'usage des MJ.

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

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

Lecteur Jukebox Liste de lecture

Paramètres

PLAYLIST_ID(Chaîne) Identifiant de la liste de lecture à démarrer.

Retours

(Nul)

Exemples

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

nombre entier aléatoire

Paramètres

MAX(Nombre) Le nombre maximal à renvoyer, inclus.

Retours

Un nombre entier aléatoire compris entre 1 (inclus) etmax(inclus). Cette fonction offre une meilleure distribution queMath.random() et est donc recommandée à sa place. Cette fonction n'utilise pas le Jet quantique utilisée par le moteur de dés, mais elle utilise le même algorithme pseudo-aléatoire que celui auquel le moteur de dés aura recours si le Jet quantique n'est pas disponible.

Exemples

Étant donné que cette fonction renvoie un nombre entier compris entre 1 etmax, elle est idéale pour générer rapidement le résultat d'un lancer de dés si vous n'avez pas besoin de toute la puissance du moteur de dés de Roll20. ..

var d20Result = randomInteger(20); // équivaut approximativement à lancer un dé à 20 faces

sendChat Asynchrone

Paramètres

SPEAKINGAS(Chaîne) Le nom à associer au message envoyé. Si speakingAs est au format joueur|joueur_id ou personnage|personnage_id, le message sera envoyé en tant que ce joueur ou ce personnage. Dans le cas contraire, le message utilisera le nom donné comme si un MJ avait utilisé la commande /as. MESSAGE(Chaîne) Le message à envoyer au chat. CALLBACK(Fonction, facultatif) Si callback est spécifié, le résultat du message de chat lui sera transmis au lieu d'apparaître dans le chat. Le paramètre de la méthode de rappel est un tableau d'objets message. OPTIONS (Objet, facultatif) Si options.noarchive est vrai, le message ne sera pas ajouté aux archives des chats. Si options.use3d est défini sur « true », les lancers de dés dans le message utiliseront la fonctionnalité de dés en 3D. Les options ne sont pas applicables si le rappel est spécifié.

Retours

(Nul)

Exemples

sendChat('Exemple', 'Ceci est un exemple simple.');

Vous pouvez facilement écrire du code pour envoyer un message en tant que même joueur ou personnage qui a déclenché un événementchat:message.

on('chat:message', function(msg) {
    var personnage = findObjs({ type: 'character', name: msg.who }) [0],
        player = getObj('player', msg.playerid),
        message = ' a dit quelque chose';

    if (personnage) sendChat('personnage|'+personnage.id, personnage.get('name')+message);
    else sendChat('player|'+player.id, player.get('displayname')+message);
});

Le paramètrecallbackest utile si vous avez besoin d'utiliser le moteur de dés de Roll20. moteur de dés. Il n'est pas nécessaire d'utiliser la valeurspeakingAslors de l'utilisation durappel, car le message n'apparaîtra pas dans le chat de toute façon.

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

options.noarchiveest principalement conçu pour envoyer aux joueurs des menus créés à partir de boutons de commande API sans encombrer leur historique de discussion.

sendChat('Système', '[Effacer les modifications](!clear)\n[Ajouter une vignette](!add)\n[Afficher un exemple](!view)\n[Enregistrer la disposition](!save)', null, { noarchive: true });

envoyer un ping

Paramètres

LEFT(Nombre) La coordonnée x à laquelle placer le ping. TOP(Nombre) La coordonnée y à laquelle placer le ping. PAGE_ID(Chaîne) L'identifiant de l'objet Roll20 de la page sur lequel placer le ping. PLAYER_ID(Chaîne, facultatif) Le ping utilisera la couleur du joueur spécifié. Si player_id est omis, le ping sera jaune. MOVEALL(Booléen, facultatif) Si moveAll est vrai, tous les joueurs de la page appropriée verront leur vue centrée sur le ping.

Remarque :pour le moment, seuls les GM verront leur affichage centré simoveAllest défini surtrue. Ce comportement est documenté ici.

Retours

(Nul)

Exemples

on('chat:message', function(msg) {
    var obj;
    if (msg.type === 'api' && msg.content.indexOf('!ping') === 0) {
        if (!msg.selected) return;
        obj = getObj(msg.selected[0]._type, msg.selected[0]._id);
        sendPing(obj.get('left'), obj.get('top'), obj.get('pageid'), msg.playerid, true); // centrer tout le monde sur le jeton sélectionné
    }
});

spawnFx

Paramètres

GAUCHE(Nombre) : Coordonnée x pour positionner l'émetteur de particules. HAUT(Nombre) : Coordonnée y pour positionner l'émetteur de particules. TYPE(Chaîne) : Type d'émetteur de particules à positionner. Pour les effets intégrés, il devrait s'agir de « type-couleur », où le type est l'un des suivants : bombe, bulles, brûlure, explosion, lueur, missile ou nova, et la couleur est l'une des suivantes : acide, sang, charme, mort, feu, givre, sacré, magie, boue, fumée ou eau. ou water. Pour les effets personnalisés, il s'agit de l'identifiant de l'objet FX Roll20. Remarque : les types beam, breath et splatter ne peuvent pas être utilisés avec spawnFx. Veuillez consulter spawnFxBetweenPoints à la place. PAGE_ID(chaîne, facultatif) Identifiant de l'objet Roll20 de la page sur lequel placer l'émetteur de particules. Si cette information est omise, Campaign().get('playerpageid') sera utilisé à la place.

Retours

(Nul)

Exemples

spawnFx(1400, 1400, « acidité bouillonnante ») ;

générer des effets entre des points

Paramètres

START(Objet) Le point de départ de l'émetteur de particules. Le point doit être au format { x : nombre, y : nombre }.END(Objet) Le point final pour l'émetteur de particules. Le point doit être au format { x : nombre, y : nombre }.TYPE(String) Le type d'émetteur de particules à placer. Pour les effets intégrés, il devrait s'agir de « type-couleur », où le type est l'un des suivants : rayon, bombe, souffle, bulles, brûlure, explosion, lueur, missile, nova, ou éclaboussure et « color » est l'un des suivants : acide, sang, charme, mort, feu, givre, sacré, magie, boue, fumée ou eau. Pour les effets personnalisés, il s'agit de l'identifiant de l'objet FX Roll20. PAGE_ID(chaîne, facultatif) Identifiant de l'objet Roll20 de la page sur lequel placer l'émetteur de particules. Si cette information est omise, Campaign().get('playerpageid') sera utilisé à la place.

Retours

(Nul)

Exemples

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

spawnFxWithDefinition

Paramètres

GAUCHE(Nombre) : Coordonnée x pour positionner l'émetteur de particules. HAUT(Nombre) : Coordonnée y pour positionner l'émetteur de particules. DÉFINITION(Objet) : Caractéristiques de l'émetteur de particules à positionner. Veuillez consulter la section Effets personnalisés pour obtenir la liste des propriétés disponibles ainsi que les propriétés des types et couleurs d'émetteurs de particules par défaut. Veuillez consulter la bibliothèque FX pour découvrir certains effets personnalisés créés par les utilisateurs de Roll20. PAGE_ID(chaîne, facultatif) Identifiant de l'objet Roll20 de la page sur lequel placer l'émetteur de particules. Si cette information est omise, Campaign().get('playerpageid') sera utilisé à la place.

Retours

(Nul)

Exemples

Ces deux éléments sont équivalents :
spawnFx(1400, 1400, 'bubbling-acid');
spawnFxWithDefinition(1400, 1400, {
    maxParticles: 200,
    size: 15,
    sizeRandom: 3,
    lifeSpan: 20,
    lifeSpanRandom: 5,
    speed: 7,
    speedRandom: 2,
    gravity: { x: 0.01, y: 0.65 },
    angle : 270,
    angle aléatoire : 35,
    taux d'émission : 1,
    couleur de départ :       [0, 35, 10, 1],
    couleur de départ aléatoire : [0, 10, 10, 0,25],
    endColour:         [0, 75, 30, 0],
    endColourRandom:   [0, 20, 20, 0]
});

Arrêter la lecture de la liste de lecture du jukebox

Paramètres

Aucun paramètre

Retours

(Nul)

Exemples

arrêterJukeboxPlaylist() ;

Retour

Paramètres

OBJ(objet Roll20) L'objet Roll20 à placer à l'arrière de son calque.

Retours

(Nul)

Exemples

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

toFront

Paramètres

OBJ(objet Roll20) L'objet Roll20 à placer au premier plan de son calque.

Retours

(Nul)

Exemples

on('ready', function() {
    on('add:graphic', function(obj) {
        toFront(obj);
    });
});
 
Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 7 sur 13