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("コマ・マーカー", 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 || '一致するコマ・マーカーが見つかりませんでした'

sendChat("コマ・マーカー", 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("コマ・マーカー", currentMarkers);

});

});

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