L'objet « campagne » stocke la liste des icônes de jeton disponibles dans le jeu (intégrées et personnalisées). Ces informations sont stockées sous le nom de _token_markers. Il s'agit d'un fichier en lecture seule. Pour y accéder depuis un script de mod, utilisez :
Campaign().get("_token_markers");
La valeur renvoyée est un tableau JSON converti en chaîne de caractères, contenant un objet pour chaque icône de jeton présente actuellement dans le jeu.
{
"id" : 59, // l'identifiant de la base de données pour le marqueur
"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 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 de l'icône de jeton
}
Nous avons rédigé un exemple de script pour vous montrer comment vous pouvez l'utiliser pour trouver les icônes de jeton disponibles dans votre campagne.
Veuillez ajouter ce script à votre jeu et les commandes suivantes seront disponibles :
!markernames affichera tous les marqueurs dans le Chat avec leur image, leur nom et leur identifiant
!markerids affichera dans le Chat tous les marqueurs correspondant au nom indiqué
!settokenmarker ajoutera la chaîne fournie à la liste des marqueurs d'état des jetsons actuellement sélectionnés. Veuillez noter que cela n'effectue aucune validation pour s'assurer que l'icône de jeton existe, cela ajoute simplement la valeur fournie aux icônes de jeton.
!gettokenmarkers affiche dans le Chat l'attribut « statusmarkers » du jeton actuellement sélectionné
on("ready", () => {
const tokenMarkers = JSON.parse(Campaign().get("_token_markers"));
const getChatMessageFromTokenMarkers = markers => {
let chatMessage = '';
_.each(markers, marker => {
chatMessage += `<p><img src='${marker.url}'> ${marker.id}: ${marker.name}</p>`;
});
return chatMessage;
};
on("chat:message", msg => {
if (msg.content.split(" ")[0].toLowerCase() === '!markernames') {
let chatMessage = getChatMessageFromTokenMarkers(tokenMarkers);
sendChat("Icônes de jeton", chatMessage);
} else if (msg.content.split(" ")[0].toLowerCase() === '!markerids') {
const markerName = msg.content.split(" ")[1].toLowerCase();
let results = [];
_.each(tokenMarkers, marker => {
if (marker.name.toLowerCase() === markerName) results.push(marker);
});
log(results);
let chatMessage = getChatMessageFromTokenMarkers(results);
chatMessage = chatMessage || 'Impossible de trouver des icônes de jeton correspondantes'
sendChat("Icônes de jeton", chatMessage);
} else if (msg.content.split(" ")[0].toLowerCase() === '!settokenmarker') {
const markerName = msg.content.split(" ")[1].toLowerCase();
if (!msg.selected && msg.selected[0]._type == "graphic") return;
obj = getObj(msg.selected[0]._type, msg.selected[0]._id);
currentMarkers = obj.get("statusmarkers").split(',');
currentMarkers.push(markerName);
obj.set("statusmarkers", currentMarkers.join(','));
} else if (msg.content.split(" ")[0].toLowerCase() === '!gettokenmarkers') {
if (!msg.selected) return;
if (msg.selected[0]._type !== "graphic") return;
obj = getObj(msg.selected[0]._type, msg.selected[0]._id);
currentMarkers = obj.get("statusmarkers");
sendChat("Icônes de jeton", currentMarkers);
}
});
});