Underscore.js
Vous avez accès à la bibliothèque Underscore.js (via l'objet global_) pour vous faciliter la tâche. Underscore fournit des fonctions d'aide pour des opérations telles que_.each(pour parcourir un tableau d'objets). Veuillez consulter la documentation Underscore pour plus d'informations.
Exploitation forestière
journal (message)
Vous pouvez utiliser cette fonction pour enregistrer la sortie dans la console Mod (API) de la page Éditeur de script. Utile pour déboguer vos scripts et mieux comprendre ce qui se passe dans le bac à sable du mod (API).
on("change:graphic", function(obj) {
log("Changement détecté pour l'objet ID : " + obj.id);
});
Commande d'objets
toFront(obj)ettoBack(obj)
Ces deux fonctions permettent de déplacer un objet sur la table vers l'avant (ou l'arrière) de la calque sur laquelle il se trouve actuellement. Veuillez noter que vous devez transmettre un objet réel, tel que celui que vous recevez dans un rappel d'événement ou en appelantgetObjoufindObjs.
Nombres aléatoires
entier aléatoire(max)
Veuillez utiliser cette fonction pour les dés. Cette fonction tient compte de biais modulo qui garantit que les nombres aléatoires obtenus sont également répartis de manière uniforme entre 1 et MAX.
Renvoie un nombre entier aléatoire, dont la valeur minimale est 1 et la valeur maximale estmax. Il s'agit de la même fonctionnalité que celle utilisée par Roll20 pour ses lancers de dés, et ces chiffres ont été statistiquement et rigoureusement prouvés comme étant aléatoires.
Math.random()
Vous pouvez appeler Math.random() comme d'habitude dans vos scripts Mod (API), en étant assuré que les résultats seront aléatoires, car la fonction « par défaut » Math.random() en Javascript a été remplacée par le générateur de nombres pseudo-aléatoires (PRNG) cryptographiquement sécurisé qui alimente Roll20. Ainsi, les scripts existants qui utilisent Math.random() peuvent être utilisés en sachant que les résultats sont aussi proches que possible du hasard sur un ordinateur.
Veuillez ne pas utiliser Math.random() si vous souhaitez obtenir une distribution uniforme des nombres dans une plage donnée. Bien que Math.random() fournisse un nombre aléatoire de qualité, la transformation de ce nombre aléatoire en une plage avec une distribution uniforme (comme un lancer de dés) par Roll20 n'est pas aussi simple qu'une multiplication avec un modulo ou une fonction floor. Veuillez utiliserrandomInteger(max)dans ces cas-là.
Le joueur est MJ
joueurEstGM(identifiantJoueur)
La fonction « Le joueur est-il le MJ ? » renvoie une réponse booléenne indiquant si un joueur dans le jeu est le MJ ou non. La fonction renverra toujours la réponse correcte en fonction du moment présent. Ainsi, même si un MJ choisit de rejoindre la partie en tant que joueur ou si un joueur est promu MJ en cours de partie, playerIsMJ() répondra de manière appropriée sans qu'il soit nécessaire de vider le cache ou de redémarrer le bac à sable Mod (API).
Personnage
setDefaultTokenForCharacter( personnage, jeton )
Définit le jeton par défaut pour l'objet personnage fourni en fonction des détails de l'objet jeton fourni. Les deux objets doivent déjà exister. Cela remplacera tout jeton par défaut actuellement associé au personnage.
Effets (FX)
spawnFx(x, y, type, pageid)
Génère un effet de courte durée à l'emplacement x, y de type. Si vous omettez le pageid ou transmettez « undefined », la page sur laquelle se trouvent actuellement les joueurs (« playerpageid » dans l'objet Campaign) sera utilisée par défaut.
Pour les effets intégrés, le type doit être une chaîne de caractères et correspondre à l'un des éléments suivants :couleur du faisceau,couleur de la bombe,couleur du souffle,couleur des bulles,couleurde la brûlure,couleur de l'éclatement,couleur de l'explosion,couleur de la lueur,couleur du missile,couleur de la nova,couleur des éclaboussures.
Où « couleur » dans ce qui précède désigne l'une des couleurs suivantes :acide,sang,charme,mort,feu,givre,sacré,magie,boue,fumée,eau.
Pour les effets personnalisés, le type doit être l'ID de l'objet custfx correspondant à l'effet personnalisé.
spawnFxBetweenPoints(point1, point2, type, pageid)
Fonctionne de la même manière que spawnFx, mais au lieu d'un seul point, vous transmettez deux points, au format {x: 100, y: 100}. Par exemple : spawnFxBetweenPoints({x: 100, y: 100}, {x: 400, y: 400}, « beam-acid ») ; L'effet se déplacera entre les deux points pour les effets qui prennent en charge cette fonctionnalité (les mêmes qui permettent l'action côté client).
Les types d'effets suivants doivent toujours utiliser spawnFxBetweenPoints au lieu de spawnFx :beam-color,breath-color,splatter-color.
spawnFxWithDefinition(x, y, définitionJSON, identifiantPage)
Génère un effet personnalisé ad hoc en utilisant le JSON pour définir certains effets à l'emplacement x, y. Si vous omettez le pageid ou transmettez « undefined », la page sur laquelle se trouvent actuellement les joueurs (« playerpageid » dans l'objet Campaign) sera utilisée par défaut.
définition JSON est un objet javascript conforme à la spécification JSON pour les effets spéciaux personnalisés. Custom FX.
Playlist du Jukebox
jouerJukeboxPlaylist(playlistid)
La fonction de lecture utilise l'ID du dossier (obtenu à partir de la propriété « _jukeboxfolder » dans l'objet Campaign) de la liste de lecture et commence à lire cette liste pour tous les participants au jeu.
arrêterJukeboxListeDeLecture()
La fonction stop ne nécessite aucun argument et interrompra toute playlist en cours de lecture.
Autres
envoyerPing(gauche, haut, identifiantPage, (facultatif) identifiantJoueur, (facultatif) déplacerTout, (facultatif) visiblePour)
Envoie un « ping » sur table (comme si un joueur maintenait le bouton de sa souris enfoncé). Veuillez indiquer les coordonnées supérieures/gauches et l'identifiant de la page à pinguer. Vous pouvez éventuellement spécifier l'identifiant d'un joueur qui a effectué le ping. Si vous ne le faites pas, « api » sera utilisé par défaut et le ping sera jaune.
Vous pouvez passer « true » pour l'option moveAll si vous souhaitez également déplacer les vues des joueurs vers cet emplacement.
Vous pouvez définir les identifiants des joueurs dans visibleTo pour les joueurs qui peuvent voir ou être déplacés par le ping. Ceci est présenté sous la forme d'un identifiant de joueur unique, d'un tableau ou d'une chaîne de caractères séparée par des virgules.
on("chat:message", function(msg) {
// Veuillez saisir « !pingtest » dans le chat pour exécuter le test
if(msg.type == "api" && msg.content.indexOf("!pingtest") !== -1) {
// Pour obtenir un joueur spécifique, veuillez utiliser findObjs({_type: "player"})[i].id au lieu de null pour le troisième paramètre
players = findObjs({_type: "player"});
player1 = players[1].id;
player2 = players[2].id;
// Créer un tableau contenant tous les identifiants des joueurs
var allPlayerIDs = players.map(function(player) {
return player['id'];
});
// Envoyer un ping à tous les joueurs de cette page vers le même emplacement.
sendPing(300, 300, Campaign().get('playerpageid'), null, true);
setTimeout(function() {
// Envoyer un ping à tous les utilisateurs de cette page vers le même emplacement
sendPing(1500, 500, Campaign().get('playerpageid'), msg.playerid, true, "");
}, 1000);
setTimeout(function() {
// Envoyer un ping uniquement au joueur spécifié à cet emplacement
sendPing(1200, 500, Campaign().get('playerpageid'), null, true, player1);
}, 2000);
setTimeout(function() {
// Envoyer un ping à un tableau d'identifiants de joueurs (joueurs 1 et 2) à cet emplacement
sendPing(900, 100, Campaign().get('playerpageid'), player2, true, [player1, player2]);
}, 3000);
setTimeout(function() {
// Envoyer un ping à une liste séparée par des virgules fournie sous forme de chaîne à cet emplacement
sendPing(300, 300, Campaign().get('playerpageid'), player1, true, allPlayerIDs.join());
}, 4000);
}
})
Remarque sur les distances et les grilles dans Roll20
Dans Roll20, une « unité » correspond toujours à 70 pixels à l'écran. L'« unité » est l'élément de base sur lequel reposent la distance et la grille. Par défaut :
- 1 unité = 5 pieds
- 1 unité = 1 carré de la grille
- Par conséquent, 5 pieds = 1 unité = 1 carré
Cependant, le MJ peut modifier à la fois la taille de la grille et l'échelle de distance. 1 unité correspond toujours à 70 pixels, mais le MJ peut modifier les paramètres de manière à ce qu'une unité corresponde désormais à 10 pieds (soit 70 pixels = 10 pieds), ou que chaque case de la grille corresponde à 2 unités (soit 140 pixels par case).