API:トークン・マーカー

Roll20 API に、カスタム・トークン・マーカーをサポートする新しい関数が追加されました。 この情報はキャンペーンノードの下に「token_markers」として保存されます。 を経由してapiからアクセスできる。

Campaign().get("token_markers");

この情報は読み取り専用である。

戻り値は、現在ゲーム内にある各トークンマーカーのオブジェクトを含む文字列化されたJSON配列になります。

{
"id":59, // トークンのデータベースID
"name": "Bane", // マーカーの名前(一意ではない)
"tag": "Bane::59", // トークンの実際の参照方法
// これには、カスタムマーカーの場合はIDが含まれるが、
// デフォルトマーカーの場合は含まれない。
"url": "https://s3.amazonaws.com/files.d20.io/images/59/yFnKXmhLTtbMtaq-Did1Yg/icon.png?1575153187"
// トークン・マーカーの画像の URL
}.

このスクリプトを使用して、キャンペーンで使用可能なトークン・マーカーを見つける方法を、スクリプトの例で説明します。

このスクリプトをゲームに追加すると、これらのコマンドが使用できるようになります:

!markernamesはすべてのマーカーを画像、名前、idとともにチャットに出力します。

!markerids <name>は、指定された名前にマッチするすべてのマーカーをチャットに出力します。

!.settokenmarker <string>与えられた文字列を、現在選択されているトークンのマーカー・リストに追加します。 これは、トークン・マーカーが存在するかどうかのバリデーションは行わず、単に指定された値をトークン・マーカーに追加するだけであることに注意してください。

gettokenmarkersは現在選択されているトークンのstatusmarker属性をチャットに出力します。

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("Token Markers", 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 || 'Unable to find any matching token markers'

sendChat("Token Markers", 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].

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("Token Markers", currentMarkers);

} }.

});

});
 
この記事は役に立ちましたか?
36人中8人がこの記事が役に立ったと言っています