API:関数ドキュメント

Roll20は、コアJavaScriptや他のライブラリに含まれていない多くの関数を利用できるようにします。


グローバル変数

可変 説明
_ これは の名前空間オブジェクトです。ライブラリの名前空間オブジェクトです。
状態 ステートオブジェクトのプロパティは、ゲームセッションの間持続します。

_(アンダースコア)

これは の名前空間オブジェクトです。ライブラリの名前空間オブジェクトです。 アンダースコアには、コレクションを操作するための多くの機能があります。


状態

ステートオブジェクトのプロパティは、ゲームセッション間で持続します。 同じステートオブジェクトは、キャンペーン内のすべてのMOD(API)スクリプトの間でも共有されるため、ステートに値を書き込むときは、名前の衝突を避けるために、フットプリントをできるだけ小さくすることを強くお勧めします。 注意:ステートはJSONでシリアライズされるので、関数やオブジェクトを循環参照で保存することはできない。


グローバル機能

リターン・タイプ 機能 説明
Roll20オブジェクト キャンペーン シングルトンのCampaign Roll20オブジェクトを取得します。
Roll20オブジェクト createObj 新しい Roll20 オブジェクトを作成します。
オブジェクトの配列 Roll20オブジェクト filterObjs 述語テストに合格したすべての Roll20 オブジェクトを取得します。
オブジェクトの配列 Roll20オブジェクト findObjs 与えられた属性のセットに一致するプロパティを持つすべての Roll20 オブジェクトを取得します。
オブジェクトの配列 Roll20オブジェクト すべてのオブジェクトを取得する キャンペーン内のすべてのRoll20オブジェクトを取得します。
さまざま GetAttrByName Roll20 オブジェクトの属性の現在値または最大値を取得します。
Roll20オブジェクト ゲットオブジェクト 特定の Roll20 オブジェクトを取得します。
  u MOD(API)コンソールにメッセージを記録します。
  オン イベントハンドラを登録する。
  onSheetWorkerCompleted のフルスタックの後に実行される1回限りのイベントハンドラを登録する。 シートワーカースクリプトが完了した後に実行されます。
ブーリアン プレーヤーIsGM プレイヤーが現在GM権限を持っているかどうかをチェックします。
  プレイジュークボックスプレイリスト ジュークボックスのプレイリストの再生を開始する。
番号 ランダム整数 ランダムな整数値を生成する。
  センドチャット チャットメッセージを送信します。
  センドピン マウスの左ボタンを押したときと同じようにPingを送信する。
  スポーンFX パーティクルエミッターを生成する。
  spawnFxBetweenPoints ある地点から別の地点に移動するパーティクルエミッターを生成する。
  spawnFxWithDefinition FX Roll20オブジェクトで表現されていないパーティクルエミッターをスポーンします。
  stopJukeboxプレイリスト 再生中のジュークボックス・プレイリストをすべて停止する。
  戻る グラフィックRoll20オブジェクトを、同じテーブルトップレイヤー上の他のすべてのグラフィックの下に移動する。
  トゥフロント グラフィックのRoll20オブジェクトを、同じテーブルトップレイヤー上の他のすべてのグラフィックの上に

キャンペーン

パラメータ

パラメータなし

リターン

シングルトンのキャンペーンRoll20オブジェクト。

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

createObj

パラメータ

TYPE(String) 作成する Roll20 オブジェクトのタイプ。 作成できるのは 'graphic'、'text'、'path'、'character'、'ability'、'attribute'、'handout'、'rollabletable'、'tableitem'、'macro' だけです。ATTRIBUTES(Object) Roll20 オブジェクトのプロパティに使う初期値。

リターン

作成された Roll20 オブジェクト。

親オブジェクトを持つ Roll20 オブジェクトを作成する場合 (例えば、character Roll20 オブジェクトの子である attribute Roll20 オブジェクトを作成する場合)、attributes に親の id を指定する必要があります。

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

パス Roll20 オブジェクトを作成する場合、読み取り専用のプロパティ_path に値を指定する必要があります。 これは、Roll20 オブジェクトを作成する際に読み取り専用プロパティの値を設定できないというルールの例外です。

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

配布資料Roll20オブジェクトを作成する場合、作成時にテキストや注釈を設定することはできません。

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

パラメータ

CALLBACK(Function) すべての Roll20 オブジェクトをテストする述語関数。 コールバック関数は Roll20 オブジェクトをパラメータとして受け取り、true (filterObjs の返り値に含まれる Roll20 オブジェクト) か false (その他の Roll20 オブジェクト) を返します。

リターン

述語テストに合格した Roll20 オブジェクトの配列。

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

パラメータ

OPTIONS(Object, optional) options.caseInsensitive が true の場合、 Roll20 オブジェ ク ト と 属性の文字列比較は大文字小文字を区別 し な く な り ます。

リターン

属性に一致するプロパティを持つ Roll20 オブジェクトの配列。

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

すべてのオブジェクトを取得する

パラメータ

パラメータなし

リターン

キャンペーン内のすべてのRoll20オブジェクトの配列。

var everything = getAllObjs();

GetAttrByName

パラメータ

VALUE_TYPE(String, optional) "current" または "max" のいずれか (省略された場合のデフォルトは "current" です)。

リターン

該当する属性の現在または最大のプロパティ。 希望するプロパティが設定されていない場合、キャラクタシートで指定されたデフォルト値(デフォルト値がある場合)が代わりに使用されます。

var character = getMyCharacter(),
    strength = getAttrByName(character.id, 'strength'),
    strength_max = getAttrByName(character.id, 'strength', 'max');

ゲットオブジェクト

パラメータ

ID(String) 取得する Roll20 オブジェクトの一意な ID。

リターン

指定された Roll20 オブジェクト。

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

ログ

パラメータ

MESSAGE(varies) Mod(API)コンソールに投稿するメッセージ。 messageパラメータはJSON.stringifyでStringに変換されます。

リターン

(ヴォイド)

on('chat:message', function(msg) {
    log('Message received from:');
    log(getObj('player', msg.playerid));
});
"Message received from:"
{"_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":""}

オン

パラメータ

EVENT(String)イベントには5つのタイプがある。readychangeadddestroychatreadyを除くすべてのイベントタイプは、オブジェクトタイプとペアになっていなければならない。 チャットの場合、これは常にメッセージだ。 それ以外は、Roll20オブジェクトのtypeプロパティとなります。 イベントの 2-3 の部分 (タイプ、オブジェクト、オプションでプロパティ) はコロンで区切られます。 CALLBACK(関数) 指定したイベントが発生したときに呼び出される関数。 addイベントにはobjパラメータがあり、これは新しいRoll20オブジェクトへの参照です。destroyイベントにはobjパラメータがあり、これはもう存在しないRoll20オブジェクトへの参照です。chatイベントにはmsgパラメータがあり、これはチャットに送られたメッセージの詳細を含みます。

リターン

(ヴォイド)

イベントは、登録された順番に、最も特定的なものから最も特定的でないものへと発生する。 この例では、グラフィックRoll20オブジェクトのleftプロパティを変更すると、関数3が呼び出され、関数1関数2と続く。

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

addイベントは新しいセッションが始まったときに、すでにキャンペーンにあるRoll20オブジェクトに対して発生しようとします。 この動作を防ぐために、readyイベントが発生するまでaddイベントの登録を待つことができる。

on('add:graphic', function(obj) {
    // セッションが始まると、この関数はキャンペーン内のすべてのグラフィックに対して呼び出されます
    // この関数は、新しいグラフィックRoll20オブジェクトが作成されるたびに呼び出されます
});

on('ready', function() {
    on('add:graphic', function(obj) {
        // この関数は、新しいグラフィックRoll20オブジェクトが作成されるときにのみ*呼び出され、既に存在するものに対しては呼び出されません
    });
});

変更イベントのpreパラメータは Roll20 オブジェクトではなく、古い JavaScript オブジェクトです。 そのため、get関数やset関数は使用できず、読み取り専用プロパティでは先頭のアンダースコアを省略することはできません。

on('change:graphic', function(obj, prev) {
    var id1 = obj.id, // 3つとも等価
        id2 = obj.get('id'),
        id3 = obj.get('_id'),

        id4 = prev.id, // 未定義
        id5 = prev.get('id'), // 未定義は関数ではない
        id6 = prev._id; // 正しい

    // どちらも等価
    obj.set('left', 70);
    obj.set({
        left: 70
    });

    prev.set('left', 70); // undefined は関数ではない
    prev.set({ // undefined は関数ではない
        left: 70
    });
    prev.left = 70; // 正しいが、卓上では何も変わらない
});

キャラクターとハンドアウトのRoll20オブジェクト(notesgmnotesbio)の非同期フィールドでは、prevパラメータは必要なデータを保持しません。 (代わりにシステムで使用される数値の識別子を持つ)。 これらのフィールドの1つ前の値にアクセスする必要がある場合は、自分でそれを追跡しておく必要がある:

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

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

        // do stuff....

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

onSheetWorkerCompleted

パラメータ

CALLBACK(Function) 現在のシートワーカースクリプトの「スタック」が完了したときに呼び出される関数。

リターン

(ヴォイド)

この関数は、setWithWorker の前に呼び出されることを意図しています。 コールバック関数は一度だけ呼び出される。

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];
    // calculatedAttr.get('current') で何かする;
});
mySourceAttr.setWithWorker({ current: 5 });

 


プレーヤーIsGM

パラメータ

PLAYER_ID(String) チェックする Roll20 オブジェクトの ID。

リターン

そのプレイヤーが現在GM権限を持っていればtrue、そうでなければfalse

この機能は、MOD(API)コマンドをGMの使用に限定する場合に特に便利です。

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;
        // ...
    }
});

プレイジュークボックスプレイリスト

パラメータ

PLAYLIST_ID(String) 再生を開始するプレイリストの ID。

リターン

(ヴォイド)

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

ランダム整数

パラメータ

MAX(数値) 返す数値の最大値。

リターン

1から最大値までのランダムな整数。 この関数はMath.random()よりも良い分布を持っているので、そちらを推奨する。 この機能は 量子ロール機能は使用しませんが、量子ロールが使用できない場合にダイスエンジンがフォールバックするのと同じ擬似ランダムアルゴリズムを使用します。

この関数は 1 から最大値までの整数を返すので、 Roll20 のサイコロエンジンの全機能を必要としない場合に、 ダイスの出目を素早く生成するのに最適です。 ダイスエンジン.

var d20Result = randomInteger(20); // 20面ダイスを振るのとほぼ同じ。

sendChat 非同期

パラメータ

SPEAKINGAS(String) 送信するメッセージにつける名前。 speakingAsがplayer|player_idまたはcharacter|character_idの形式である場合、メッセージはそのプレイヤーまたはキャラクターとして送信されます。 MESSAGE(String) チャットに送るメッセージ。CALLBACK(Function, optional) コールバックが指定された場合、チャットメッセージの結果はチャットに表示されるのではなく、コールバックに渡されます。 OPTIONS(Object, optional) options.noarchiveがtrueの場合、メッセージはチャットアーカイブに追加されません。 options.use3dがtrueの場合、メッセージ中のサイコロの出目は3Dサイコロ機能を使用します。 コールバックが指定されている場合、オプションは適用されない。

リターン

(ヴォイド)

sendChat('例', 'これは簡単な例です。');

chat:messageイベントをトリガーした同じプレイヤーやキャラクターとしてメッセージを送信するコードを簡単に書くことができます。

on('chat:message', function(msg) {
    var character = findObjs({ type: 'character', name: msg.who })[0],
        player = getObj('player', msg.playerid),
        message = ' said something';

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

コールバックパラメータは、Roll20の ダイスエンジン. コールバックを使用する場合、speakingAsの値は特に必要ありません。

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

options.noarchiveは、主に以下のようなメニューをプレイヤーに送信するために設計されています。 APIコマンドボタンで作成したメニューを送信するために設計されています。

sendChat('System', '[Clear changes](!clear)\n[Add tile](!add)\n[View sample](!view)\n[Save layout](!save)', null, { noarchive: true });

センドピン

パラメータ

LEFT(Number) ping を配置する x 座標。TOP(Number) ping を配置する y 座標。PAGE_ID(String) ping を配置するページ Roll20 オブジェクトの id。PLAYER_ID(String, 任意) ping は指定されたプレーヤーの色を使用する。 MOVEALL(Boolean, optional) moveAll が true の場合、該当ページ上のすべてのプレーヤーのビューが ping を中心に表示されます。

注:現時点では、moveAllが trueの場合、GMのみが自分のビューを中央に表示します。 この動作については ここに

リターン

(ヴォイド)

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); // 選択されたトークンの中央に全員を配置
    }.
});

スポーンFX

パラメータ

LEFT(数値) パーティクルエミッターを配置するx座標TOP(数値) パーティクルエミッターを配置するy座標TYPE(文字列) 配置するパーティクルエミッターのタイプ。 内蔵エフェクトの場合、"type-color "とする。typeはbomb、bubbling、burn、burst、explode、glow、missile、novaのいずれか、colorはacid、blood、charm、death、fire、frost、holy、magic、slime、smoke、waterのいずれか。 カスタムエフェクトの場合、これはFX Roll20オブジェクトのidでなければなりません。注意:ビーム、ブレス、スプラッタータイプはspawnFxでは使用できません。 代わりに spawnFxBetweenPoints を参照してください。 PAGE_ID(String, optional) パーティクルエミッタを配置するページ Roll20 オブジェクトの ID。 省略すると、Campaign().get('playerpageid')が代わりに使用されます。

リターン

(ヴォイド)


spawnFx(1400, 1400, 'bubbling-acid');

spawnFxBetweenPoints

パラメータ

START(Object) パーティクルエミッターの始点。 END(Object) パーティクルエミッターの終了点。 TYPE(String) 配置するパーティクルエミッターのタイプ。 内蔵エフェクトの場合、"type-color "とし、typeはbeam、bomb、breath、bubbling、burn、burst、explode、glow、missile、nova、splatterのいずれか、colorはacid、blood、charm、death、fire、frost、holy、magic、slime、smoke、waterのいずれか。 カスタムエフェクトの場合、これはFX Roll20オブジェクトのidでなければなりません。PAGE_ID(String, optional) パーティクルエミッタを配置するページRoll20オブジェクトのid。 省略すると、Campaign().get('playerpageid')が代わりに使用されます。

リターン

(ヴォイド)

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

spawnFxWithDefinition

パラメータ

LEFT(Number) パーティクルエミッタを配置するx座標TOP(Number) パーティクルエミッタを配置するy座標DEFINITION(Object) 配置するパーティクルエミッタの特性。 可能なプロパティのリストとデフォルトのパーティクルエミッターのタイプと色のプロパティについては、カスタムFXを参照してください。 PAGE_ID(String、オプション) パーティクルエミッタを配置するページのRoll20オブジェクトのID。 省略すると、Campaign().get('playerpageid')が代わりに使用されます。

リターン

(ヴォイド)

// この2つは等価である
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,
    angleRandom:35,
    emissionRate:1,
    startColour: [0, 35, 10, 1],
    startColourRandom:[0, 10, 10, 0.25],
    endColour: [0, 75, 30, 0],
    endColourRandom:   [0, 20, 20, 0]
});

stopJukeboxプレイリスト

パラメータ

パラメータなし

リターン

(ヴォイド)

stopJukeboxPlaylist();

戻る

パラメータ

OBJ(Roll20オブジェクト) レイヤーの後ろに送るRoll20オブジェクト。

リターン

(ヴォイド)

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

トゥフロント

パラメータ

OBJ(Roll20オブジェクト) レイヤーの前面に持ってくるRoll20オブジェクト。

リターン

(ヴォイド)

on('ready', function() {
    on('add:graphic', function(obj) {
        toFront(obj);
    });
});
 
この記事は役に立ちましたか?
12人中6人がこの記事が役に立ったと言っています