API:オブジェクト

Roll20 API で使用されるオブジェクトにはいくつかの種類があります。 ここでは、それぞれの簡単なリストと、それが何であるか、どのようなプロパティが含まれているか(デフォルト値とともに)を示します。 一般的な経験則として、アンダースコア(_)で始まるプロパティは読み取り専用であり、変更することはできません。 オブジェクトのプロパティにアクセスするにはobj.get("property")を使い、新しい値を設定するにはobj.set("property", newvalue)またはobj.set({property: newvalue, property2: newvalue2}) を使う必要があります。

注:オブジェクトのidプロパティは、グローバルにユニークな ID です。異なるタイプのオブジェクトであっても、2 つのオブジェクトが同じ ID を持つことはありません。 さらに、オブジェクトのidは頻繁にアクセスされ、決して変更されないため、必要に応じてobj .get("_id")の代わりにobj.idを使用してアクセスできるショートカットが用意されています(どちらでも動作します)。


パス

プロパティ デフォルト値 備考
_id  

このオブジェクトの一意なID。 このゲームに登場するすべての
オブジェクトで世界的にユニーク。 読み取り専用。

タイプ パス オブジェクトの種類を特定したり、
オブジェクトを検索するために使用できます。 読み取り専用。
ページID    オブジェクトがあるページのID。 読み取り専用。
パス    パス内の行を記述するJSON文字列。 新しいパスを作成する場合を除き、読み取り専用。 詳しくはパスの項を参照。
フィル "透明" 塗りつぶしの色。 文字列 "transparent"、または16進数の色を文字列として使用する。
ストローク "#000000" ストローク(ボーダー)の色。
ローテーション 0 回転(度)。
"" 現在のレイヤー。"gmlayer"、"objects"、"map"、"walls "のいずれか。 壁レイヤーはダイナミック・ライティングに使われ、壁レイヤー上のパスは光を遮る。
ストローク幅 5  
0  
高さ 0  
トップ 0 パスの中心のY座標
0 パスの中心のX座標
スケールエックス 1  
スケールY 1  
管理 ""

パスをコントロールできるプレーヤーIDのカンマ区切りリスト。 コントロールするプレーヤーはパスを削除することができる。 パスが選手によって作成された場合、その選手は自動的にリストに含まれる。

全選手は、リストに「all」があることで表される。

バリアタイプ

ダイナミックライティングバリアタイプのオプションには、"wall"、"oneWay"、"transparent "があります。

一方向反転 擬似

ブーリアン

パス・データのフォーマットの詳細については、パスのセクションを参照のこと。

 


注: WindowとDoorは、他のタイプのオブジェクトと比較して、逆軸を使用します。 例えば、他のオブジェクトでは100となるトップ変数が、窓やドアではy -100となる。

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
タイプ 「ウィンドウ 読み取り専用。
カラー   パスの16進数の色。
x 0 X軸のドア中心座標。
y 0 Y軸のドア中心座標。
isOpen 擬似 プレーヤーがこのウィンドウを移動できるかどうかを決定する。
ロックされている 擬似 プレーヤーがウィンドウを操作できないようにする。
パス   xとyの座標を持つ2つのハンドル(handle0とhandle1)として表現される。

on('chat:message', function(msg) {
    if (msg.type === 'api' && msg.content === '!cw') {
        const currentPageID = Campaign().get('playerpageid');
        const win = createObj('window', {
            x: 70,
            y. -70:-70,
            pageid: currentPageID,
            path:{
		        handle0: {
        			x: -70,
        			y: 0,
        		},
        		handle1: {
        			x: 35,
        			y: 0,
        		}
        	},
            color: '#000000'
        });
    }

    if (msg.type === 'api' && msg.content === '!mw') {
        const win = getObj('window', '-NG38yUgghBBoV8YR0y1');
        win.set({
           x: 240,
           y: -139
        });
    }

    if (msg.type === 'api' && msg.content === '!dw') {
        const win = getObj('window', '-NG38yUgghBBoV8YR0y1');
        win.remove();
    }.
});

ドア

注: WindowとDoorは、他のタイプのオブジェクトと比較して逆軸を使用します。 例えば、他のオブジェクトでは100となるトップ変数が、窓やドアではy -100となる。

プロパティ

デフォルト値

備考

_id

 

このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。

タイプ

ドア

読み取り専用。

カラー

 

パスの16進数の色。

x

0

X軸のドア中心座標。

y

0

Y軸のドア中心座標。

isOpen

擬似

プレイヤーがこのドアを通って移動できるかどうかを決定する。

ロックされている

擬似

プレーヤーがドアに触れることができないようにする。

isSecret

擬似

プレイヤーの視界からドアアイコンを取り除き、バリアとして機能させる。

パス

 

xとyの座標を持つ2つのハンドル(handle0とhandle1)として表される。


テキスト

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
_タイプ 「テキスト オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
ページID   オブジェクトがあるページのID。 読み取り専用。
トップ 0  
0  
0  
高さ 0  
テキスト ""  
フォントサイズ 16 最良の結果を得るには、編集メニューのプリセットサイズに従うこと:8, 10, 12, 14, 16, 18, 20, 22, 26, 32, 40, 56, 72, 100, 200, 300.
ローテーション 0  
カラー "rgb(0, 0, 0)"  
フォントファミリー 「アリアル これが設定されていない場合、後で「text」プロパティの値を変更すると、font_sizeは8に縮小される。 可能な値(大文字小文字は重要ではありません):「Arial"、"Patrick Hand"、"Contrail One"、"Shadows Into Light"、"Candal"。 無効な名前を指定すると、無名の等幅セリフフォントが使われる。
"" 「gmlayer"、"objects"、"map"、"walls"。
管理 "" テキストをコントロールできるプレーヤーIDのカンマ区切りリスト。 コントロールするプレーヤーは、テキストを削除することができる。 テキストが選手によって作成された場合、その選手は自動的にリストに含まれる。

全選手は、リストに「all」があることで表される。


グラフィック(トークン/地図/カード/その他)

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
タイプ 「グラフィック オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
サブタイプ 「トークン token"(トークンや地図の場合)または "card"(カードの場合)。 読み取り専用。
カーディッド   グラフィックがカードの場合はIDを設定する。 読み取り専用。
ページID   オブジェクトがあるページのID。 読み取り専用。
イムグスク   グラフィック画像のURL。 以下のimgsrcとアバターの制限についての注意を参照してください。
バー1_リンク   バー1が文字にリンクされている場合、IDに設定される。
バー2リンク    
バー3_リンク    
表す   このトークンが表す文字のID。
0 地図の左端からグラフィックの中心までのピクセル数。
トップ 0 地図の上端からグラフィックの中心までのピクセル数。
0 グラフィックの幅(ピクセル単位)。
高さ 0 グラフィックの高さ(ピクセル単位)。
ローテーション 0 トークンの向き。
"" 「gmlayer"、"objects"、"map"、"walls"。
ドローイング 擬似 このプロパティは、Advanced コンテキストメニューから変更します。
フリップフ 擬似 縦に反転させる。
フルフ 擬似 水平に反転させる。
名称 "" トークンの名前。
注釈 "" トークンに関する注意事項はGMにのみ表示されます。
管理 "" グラフィックを操作できるプレーヤーIDのカンマ区切りリスト。 コントロールする選手は、グラフィックを削除することができる。 グラフィックが選手によって作成された場合、その選手は自動的にリストに含まれる。

全選手は、リストに「all」があることで表される。

bar1_value "" バー1の現在値。 これは数字でもテキストでもよい。
バー2_値 ""  
バー3_値 ""  
bar1_max "" バー1の最大値。 valueと_maxの両方が設定されている場合、トークンの上にバー1のパーセンテージを示すバーが表示される。
バー2_マックス ""  
バー3_max ""  
オーラ1_半径 "" オーラの半径。ページの設定で設定された単位を使用する。 整数または浮動小数点数。 オーラを消すには空の文字列を設定する。
オーラ2_半径 ""  
オーラ1_カラー "#FFFF99" 16進数の色、またはオーラ。
オーラ2_カラー "#59E594"  
オーラ1_スクエア 擬似 オーラは円か四角か?
オーラ2_スクエア 擬似  
色合い "透明" 16進数の色、つまり「透明」。 グラフィックの色を染める。
ステータスマーカー "" 現在アクティブなステータスマーカーのカンマ区切りのリスト。 詳しくは以下の注釈を参照のこと。
トークン・マーカー "" 現在ゲーム内にある各トークンマーカーのオブジェクトを含む、文字列化されたJSON配列。 以下に例を挙げる。
名前 擬似 トークンのネームプレートを表示するかどうか。
ショウプレーヤー名 擬似 選手全員にネームプレートを見せる。
ショープレイヤーズ・バー1 擬似 バー1を全選手に見せる。
ショープレイヤーズ・バー2 擬似  
ショープレイヤーズ・バー3 擬似  
ショープレイヤーズ_aura1 擬似 オーラ1を全選手に見せる。
ショープレイヤーズ_aura2 擬似  
プレーヤーズエディット名 真の コントロールするプレイヤーがトークンの名前を編集できるようにする。 また、showplayers_nameがfalseの場合でも、コントロールするプレーヤーにネームプレートを表示する。
プレーヤーズエディットバー1 真の コントロールプレイヤーがトークンのバー1を編集できるようにする。 また、たとえshowplayers_bar1がfalseであっても、コントロールするプレーヤーにバー1を表示する。
プレーヤーエディットバー2 真の  
プレーヤーエディット・バー3 真の  
プレーヤーズエディット_aura1 真の コントロール・プレイヤーがトークンのオーラ1を編集できるようにする。 また、showplayers_aura1がfalseであっても、操作しているプレーヤーにオーラ1を表示する。
プレーヤーズエディット_aura2 真の  
ライト半径 "" ダイナミックな照明半径。
ライトディムラジアス "" 調光半径の開始点。 light_dimradiusが空文字列の場合、トークンはlight_radiusの距離まで明るい光を放ちます。 light_dimradiusに値がある場合、トークンはlight_dimradiusの値まで明るい光を出し、そこからlight_radiusの値まで暗い光を出します。
ライト・他選手 擬似 トークンの光をプレイヤー全員に見せる。
ライトハサイト 擬似 ライトは、"Enforce Line of Sight "設定の目的のために、プレーヤーをコントロールするための "視力 "を持っている。
ライトアングル "360" ライトの角度(度)。 例えば、「180」は「視野」の前方「半分」だけを照らすことを意味する。
ライト・ロサングル "360" グラフィックの視野の角度(°)(light_hassightがtrueに設定されていると仮定した場合)
ラストムーブ "" トークンの最後の一手。 コンマで区切られた座標のリストだ。 例えば、"300,400 "は、トークンがleft=300, top=400で最後の動きを開始したことを意味する。 トークンの現在の上+左の値は、常に最後の移動の「終了点」であると仮定される。 ウェイポイントは複数の座標で示される。 例えば、"300,400,350,450,400,500 "は、トークンがleft=300,top=400でスタートし、left=350,top=450でウェイポイントを設定し、left=400,top=500で別のウェイポイントを設定し、現在のtop+left座標で移動を終了したことを示します。
ライトマルチプライヤー "1" 光源の有効性に関する乗数。 倍率が2の場合、トークンは同じ光源で倍率1のトークンの2倍の距離を見ることができる。
adv_fow_view_distance "" 高度な霧の戦場》が公開されているトークンの周囲の半径。
感光倍率 100 光源の有効性に関する乗数。 倍率200のトークンは、同じ光源で倍率100のトークンの2倍の距離を見ることができる。
ナイトビジョン効果
  ナイトビジョン効果を変更する。 その他のオプションには、"調光 "と "夜間 "がある。
バー・ロケーション   トークンバーの位置を調整する。 オプションには 'overlap_top'、'overlap_bottom'、'bottom' がある。
コンパクト・バー
  バーをコンパクトにするかどうかを調整する。 他の選択肢はコンパクトだ。
ロックムーブメント 擬似 グラフィックを固定するオプション。 真偽値

トークン・マーカーの例

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

リンクされたキャラクター+トークンに関する重要な注意事項

キャラクターにリンクされたトークンの場合、トークンのcontrolledbyフィールドはキャラクターのcontrolledbyフィールドによってオーバーライドされることに注意してください。

トークンがアトリビュートにリンクされている(例えば、bar1_ linkが設定されている)トークンバー(例えば、bar1_valueや bar1_max)については、バーに値を設定すると、基礎となるアトリビュートの現在値や最大値も自動的に更新されるので、手動で両方を設定する必要はありません。

さらに、ゲーム内でアトリビュート(またはトークンバー)が変更されると、change:attribute(およびプロパティ固有、たとえばchange:attribute:current)イベントと、それに続くchange:graphic(およびchange:graphic:bar1_value)イベントが聞こえます。 どちらのイベントにも応答することができますが、属性イベントが先に発生するため、属性イベントが発生しても、基礎となるバーの値はまだ更新されません。

ステータス・マーカーに関する重要な注意事項

2013年8月6日より、トークンのステータス・マーカーの取り扱い方法が変更されました。 Graphicオブジェクトの "statusmarkers "プロパティが、トークン上で有効なすべてのステータス・マーカーの色/アイコンのカンマ区切りリストになりました。 形式は以下の通り:

//カンマ区切り(joinで作成、splitで配列化)。 
// ステータスアイコン/カラーに"@"シンボルが続く場合、
//"@"の後の数字がアイコンのバッジとして表示される statusmarkers = "red,blue,skull,dead,brown@2,green@6"

既存のスクリプトとの後方互換性を維持し、文字列の分割と解析を自分で処理するコードを書く必要なくステータス・マーカーを扱う簡単な方法を提供するために、statusmarkersプロパティに直接アクセスすることができますが、ステータス・マーカーを扱うために設定/取得できるオブジェクトの「仮想」プロパティのセットを提供します。 各ステータス・マーカーは、"status_<markername>" プロパティを持つ。 例えば、こうだ:

obj.get("status_red"); //Will return false if the marker is not active, true if it is, and a string (e.g. "2" or "5") if there is currently a badge set on the marker
obj.get('status_bluemarker'); //Is still supported for backwards compatability, and is equivalent to doing obj.get("status_blue");
obj.set("status_red", false); //マーカーを削除する
obj.set("status_skull", "2"); //ドクロのアイコンに "2 "のバッジをセットし、まだアクティブでなければトークンに追加する。

これらの仮想プロパティはイベントを持たないので、トークンのステータス・マーカーの変更をリッスンするにはchange: graphic :statusmarkersを使わなければならない。

使用可能なステータスマーカーの全リスト(マーカートレイに表示される順番と同じ):

「赤」、「青」、「緑」、「茶」、「紫」、「ピンク」、「黄」、「死」、「髑髏」、「眠」、「半心」、「半霞」、「阻止」、「カタツムリ」、「稲妻」、「スパナ」、「chained-heart"、"chemical-bolt"、"death-zone"、"drink-me"、"edge-crack"、"ninja-mask"、"stopwatch"、"fishing-net"、"overdrive"、"strong"、"fist"、"padlock"、"three-leaves"、"ふわふわの翼"、"叩かれた"、"踏ん張った"、"矢を受けた"、"オーラ"、"背中の痛み"、"黒い旗"、"出血した目"、"ボルトシールド"、"壊れた心"、"クモの巣"、"壊れた盾"、"飛ぶ旗""放射能", "トロフィー", "ブロークンスカル", "フローズンオーブ", "ローリングボム", "ホワイトタワー", "グラブ", "スクリーム", "グレネード", "セントリーガン", "オールフォーワン", "エンジェルアウトフィット", "アーチェリーターゲット"

ページ

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
_タイプ 「ページ オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
"ゾルダー "" ページ上のオブジェクトの順序を指定するIDのカンマ区切りリスト。 toFrontと toBack(およびそれらに関連するコンテキストメニュー項目)は、このリストを並べ替えることができる。 読み取り専用。
名称 "" ページのタイトル
ショーグリッド 真の 地図上にグリッドを表示する。
ショウダークネス 擬似 地図上に戦争の霧を表示する。
ショーライト 擬似 ダイナミックな照明を使う。
25 単位は幅。
高さ 25 単位は高さ。
スナップインクリメント 1 グリッドスペースのサイズ(単位)。
グリッド不透明度 0.5 グリッド線の不透明度。
霧の不透明度 0.35 GMにとっての戦争の霧の不透明さ。
背景色 "#FFFFFFF" 地図の背景の16進数色。
グリッドカラー "#C0C0C0" グリッド線の16進数色。
グリッドタイプ 「正方形 square"、"hex"、"hexr "のいずれか。 (hexはHex(V)に対応し、hexrはHex(H)に対応する)
スケール番号 5 1単位の距離。
単位 「フィート スケールに使用する単位の種類。
グリッドラベル 擬似 六角形グリッドのグリッドラベルを表示する。
ダイアゴナルタイプ "4人" foure」、「pythagorean」(ユークリッド)、「threefive」、「manhattan」のいずれか。
アーカイブ 擬似 ページがアーカイブストレージに保存されているかどうか。
ライトアップドロップ 擬似 オブジェクトがドロップされたときのみ、Dynamic Lightingを更新します。
ライトンフォルセロス 擬似 物体の見通し線を強制する。
ライトリストリクトムーブ 擬似 視力のある物体がダイナミック・ライティングの壁を通り抜けて移動できないようにする。
光葉 擬似 トークンが "見える "場所であれば、明るい光があるとみなされる。
ジュークボックストリガー   ロード時のページ再生を制御する。 オプションには'nonestopall'またはid-of-the-trackがある。

キャンペーン

プロパティ デフォルト値 備考
_id 「ルート このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
_タイプ 「キャンペーン ただし、Campaign オブジェクトは 1 つしかなく、Campaign() からアクセスできることに注意してください。 読み取り専用。
ターンオーダー "" ターン順のJSON文字列。 下記参照。
イニシアティブページ 擬似 ターンオーダーウィンドウが開いているときに、トラッカーに使用されるページのID。 false に設定すると、ターンオーダーウィンドウは閉じる。
プレイヤーページID 擬似 プレーヤーのブックマークが設定されているページのID。 プレイヤーはデフォルトでこのページを見ることができます。
選手別ページ 擬似 形式のオブジェクト(NOT JSON STRING):{"player1_id":"page_id", "player2_id":"page_id" ...}このオブジェクトのページに設定されたプレーヤーは、playerpageidをオーバーライドします。
ジャーナルフォルダー "" ゲームのフォルダ構造に関するデータを含むJSON文字列。 読み取り専用。
ジュークボックスフォルダー "" ゲームのジュークボックス・プレイリスト構造に関するデータを含むJSON文字列。 読み取り専用。

 ターンオーダー

ターンオーダーは、現在のターンオーダーリストを表すJSON文字列である。 これはオブジェクトの配列である。 現在のところ、ターン・オーダーは一度に1つのページのオブジェクトしか含むことができません -- 現在のターン・オーダーのページIDは "initiativepage "属性です。 両者を同期させておかないと、おかしな結果になってしまうかもしれない。

ターン・オーダーを操作するには、JSON.parse()を使って、現在のターン・オーダーの状態を表すオブジェクトを取得します(注意:最初に空文字列「"」でないことを確認してください。) 以下はターンオーダーオブジェクトの例である:

[
    {
     "id": "36CA8D77-CF43-48D1-8682-FA2F5DFD495F", //GraphicオブジェクトのID。 これが設定されている場合、ターンオーダーリストは卓上のグラフィックに基づいてリストの名前とアイコンを自動的に引き出します。
     "pr": "0", //リスト内の項目の現在値。 数字でもテキストでもよい。
     "カスタム":"//アイテムのカスタムタイトル。 IDが"-1 "以外の値に設定されている場合は無視される。
    },
    {
     "id":"-1", //カスタムアイテムの場合、IDは"-1 "に設定しなければならない(MUST)。
     "pr": "12",
     "custom": "Test Custom" //カスタム項目に表示される名前。
    }
]

ターン順を変更するには、現在のターン順オブジェクトを編集し、JSON.stringify()を使用してキャンペーンの属性を変更します。 リストの順番は配列の順番と同じなので、例えばpush()はリストの最後に項目を追加し、unshift()は先頭に追加する、といった具合である。

var turnorder;
if(Campaign().get("turnorder") == "") turnorder = []; //注:最初に、turnorderが単なる空文字列でないことを確認する。 もしそうなら、空の配列のように扱う。
else turnorder = JSON.parse(Campaign().get("turnorder"));

//ターン・オーダーの最後に新しいカスタム・エントリーを追加する。
turnorder.push({
    id: "-1",
    pr: "15",
    custom: "Turn Counter"
});
Campaign().set("turnorder", JSON.stringify(turnorder));
 

選手

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
_タイプ "選手" オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
_d20ユーザーID   ユーザーID - サイト全体。 例えば、wiki上のプレーヤーのユーザーページは/User:IDで、IDは_d20useridに格納されているのと同じ値です。 読み取り専用。
表示名 "" 選手の現在の表示名。 ユーザーの設定ページから変更可能。 読み取り専用。
オンライン 擬似 読み取り専用。
トップページ "" プレイヤーがGMとして最後に閲覧したページのページID。 このプロパティは、プレイヤーとして参加したプレイヤーやGMには更新されません。 読み取り専用。
マクロバー "" プレーヤーのマクロバーにあるマクロをカンマ区切りで表した文字列。 読み取り専用。
と言いながら "" プレーヤーが「As」ドロップダウンから選択したプレーヤーまたはキャラクターのID。 空文字列をセットすると、プレーヤーは自分自身として話す。 文字に設定された場合、値は "character|ID "となり、IDは文字のIDである。 GMが他のプレイヤーとして発言する場合、値は "player|ID "となり、IDはプレイヤーのIDです。
カラー "#13B9F0" 選手の名前の横のマスの色、地図上の測定値の色、ピングサークルなど。
ショーマクロバー 擬似 選手のマクロバーが表示されているかどうか。

マクロ

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
タイプ 「マクロ オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
プレーヤID   このマクロを作成したプレーヤーのID。 読み取り専用。
名称 "" マクロの名前。
アクション "" マクロのテキスト。
見える "" カンマ区切りのリストで、マクロを作成したプレーヤーの他に、マクロを表示できるプレーヤーのIDを指定します。

全選手は、リストに「all」があることで表される。

アイソトークンアクション 擬似 このマクロは、トークンが選択されたときに表示されるべきトークン・アクションですか?

 


ロール式テーブル

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
タイプ "ロールテーブル" オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
名称 「新しいテーブル  
ショープレイヤーズ 真の  

表項目 

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
タイプ "テーブルアイテム" オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
ロールテーブルID "" このアイテムが属するテーブルのID。 読み取り専用。
アバター "" テーブルアイテムに使用される画像への URL。 以下のアバターとimgsrcの制限についての注意を参照してください。
名称 ""  
重量 1 同じテーブル内の他の項目と比較したテーブル項目の重量。 簡単に言えば、重さ3のアイテムは、重さ1のアイテムよりも、テーブルの上で転がったときに選ばれる確率が3倍高いということだ。

キャラクター

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
タイプ 「キャラクター オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
アバター "" キャラクターに使用されている画像のURL。 以下のアバターとimgsrcの制限についての注意を参照してください。
名称 ""  
バイオ "" その人物の経歴 Notes、GMNotes、およびbioフィールドへのアクセスについては、以下の注記を参照してください。
注釈 "" GMのみが閲覧可能なキャラクターに関するメモ。 Notes、GMNotes、およびbioフィールドへのアクセスについては、以下の注記を参照してください。
アーカイブ 擬似  
選手日記 "" このキャラクターを閲覧できるプレイヤーIDのカンマ区切りリスト。 all "を使用すると、全選手に閲覧権限を与えることができる。

全選手は、リストに「all」があることで表される。

管理 "" このキャラクターを操作・編集できるプレイヤーIDのカンマ区切りリスト。 すべてのプレーヤーに編集権限を与えるには「all」を使用する。

全選手は、リストに「all」があることで表される。

デフォルトトークン "" Characterのデフォルトトークンが設定されている場合、そのデータを含むJSON文字列。 これは "bio "や "notes "と同じような "blob "なので、get()にコールバック関数を渡す必要があることに注意。 読み取り専用。

属性

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
タイプ "属性" オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
キャラクターID "" この属性が属するキャラクターのID。 読み取り専用。 createObjを使用する場合は必須です。
名称 無題  
現在 "" 属性の現在値は、チャットやマクロでは構文@{Character Name|Attribute Name}で、能力では構文@{Attribute Name} でアクセスできる。
マックス "" 属性の最大値は、チャットやマクロでは構文@{Character Name|Attribute Name|max}で、能力では構文@{Attribute Name|max} でアクセスできる。

 重要: キャラクターシートのデフォルト値がアトリビュートの使用にどのように影響するかについては、キャラクターシートの操作に関する以下のノートを参照してください。


能力

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
タイプ 能力 オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
キャラクターID "" この能力を持つキャラクター。 読み取り専用。 createObjを使用する場合は必須です。
名称 "無題_能力"  
記述 "" 説明文はキャラクターシートのインターフェイスには表示されません。
アクション "" 能力のテキスト。
アイソトークンアクション 擬似 この能力は、親キャラクターにリンクされたトークンが選択されたときに表示されるべきトークン・アクションですか?

配布資料

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
タイプ 「ハンドアウト オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
アバター "" 配布資料に使用した画像のURL。 以下のアバターとimgsrcの制限についての注意を参照してください。
名称 「謎のノート  
備考 "" 配布資料のテキストを含む。 NotesとGMNotesの使用については、以下の注意を参照してください。
注釈 "" GMだけが見ることができるハンドアウトのテキストが含まれています。 NotesとGMNotesの使用については、以下の注意を参照してください。
選手日記 "" この配布物を見ることができるプレーヤーIDのカンマ区切りのリスト。 全選手に表示するには「all」を使う。

全選手は、リストに「all」があることで表される。

アーカイブ 擬似  
管理 "" この配布物を制御および編集できるプレーヤIDのカンマ区切りリスト。

全選手は、リストに「all」があることで表される。

注: APIはフォルダ階層にアクセスできない。 APIで作成されたプリントはルートレベルに置かれます。


デッキ

デッキからカードを「引く」、「配る」、「シャッフルする」ヘルパーAPIメソッドがあることに注意。 2018年3月のAPI Updateフォーラムの投稿を参照

プロパティ デフォルト値 備考
_id "" デッキのID
_タイプ 「デッキ  
名称 "" デッキ名
カレントデッキ "" 現在デッキに入っているカード(卓上/手札にプレイされたカードを含む)のカンマ区切りのリスト。 デックがシャッフルされると変化する。
現在のインデックス -1 山札の中の自分の場所の現在のインデックス、「次にどんなカードが引かれるか?
現在のカード表示 真の 現在のカードを山札の一番上に見せる
ショープレイヤーズ 真の デッキを選手に見せる
プレーヤーズキャンドロー 真の 選手はカードを引けますか?
アバター "" このデッキのカードの「裏」。
表示 擬似 ゲームボードにデッキを見せる(現在デッキが見えているか?)
プレーヤーズカード 真の プレイヤーは他のプレイヤーの手札の枚数を見ることができますか?
プレーヤーズ・カード 擬似 他のプレイヤーの手札を見るとき、プレイヤーはカードの表を見ることができますか?
gm_seenumcards 真の GMは各プレイヤーの手札の枚数を見ることができますか?
gm_seefrontofcards 擬似 GMは各プレイヤーの手札を見るとき、カードの表を見ることができますか?
無限カード 擬似 このデッキのカードは「無限」にあるのですか?
カードシーケンサー -1 内部的には、カードを引くときにデッキを進めるために使用される。
カード遊び 「フェイスアップ このデッキのカードはどのように卓上に出されるのですか? フェースアップ」または「フェースダウン」。
デフォルト高さ "" 卓上に出されたカードのデフォルトの高さは?
デフォルト幅 ""  
ディスコンパイルモード "なし" このデッキにはどのような捨山がありますか? none」=捨て札の山を作らない、「choosebacks」=裏を見て1枚を選ぶ、「choosefronts」=表を見て選ぶ、「drawtop」=直近に捨てられたカードを引く、「drawbottom」=最も古い捨て札を引く。
廃棄パイル "" このデッキの現在の捨て札の山は? カンマ区切りのカードリスト。 これらのカードはプレイから取り除かれ、リコールが行われ るまでシャッフルでデッキに戻されることはありません。

カード

プロパティ デフォルト値 備考
名称 "" カード名
アバター "" カード表面
デッキ "" デッキのID
タイプ 「カード  
_id ""  

各プレイヤーは1つのハンドしか持ってはならないことに注意。

プロパティ デフォルト値 備考
カレントハンド "" 現在手札にあるカードのカンマ区切りのリスト。 これはもはや読み取り専用ではないことに注意。 理想的には、カードデッキの機能だけで調整するのが望ましい。
_タイプ  
_parentid "" ハンドを持つプレーヤーのID
_id ""  
カレントビュー 「バイデッキ プレーヤーがハンドをオープンした時、ビューは「バイデッキ」ですか、それとも「バイカード」ですか?

ジュークボックス・トラック

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
_タイプ 「ジュークボックストラック オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
遊び 擬似 トラックが再生中かどうかを判断するためのブール値。 これを "true "に設定し、softstopを "false "に設定すると、トラックを再生する。
ソフトストップ 擬似 ループしていないトラックが少なくとも1回終了したかどうかを判断するために使用されるブール値。 トラックを確実に再生するには、この値を "false "に設定しなければならない。
タイトル "" ジュークボックス・タブのトラックの可視ラベル。
ボリューム 30 トラックの音量レベル。 これは(文字列ではなく)整数に設定しなければならない。 数値は0~100(パーセンテージ)。
ループ 擬似 トラックはループさせるべきか? その場合はtrueに設定する。

カスタムFX

プロパティ デフォルト値 備考
_id   このオブジェクトの一意なID。 このゲームに登場するすべてのオブジェクトの中で、世界的にユニークな存在。 読み取り専用。
_タイプ "custfx" オブジェクトのタイプを識別したり、オブジェクトを検索するために使用することができます。 読み取り専用。
名称 "" FXリストのFXの可視名。
定義 {} FXを記述するJavascriptオブジェクト。

imgsrcとアバターのプロパティの制限

imgsrcと アバターのプロパティを編集できるようになりましたが、Roll20のすべてのユーザーに安全性を提供するために、これらのプロパティに以下の制限を設けました:

  • Roll20 ライブラリにアップロードされた画像ファイルを使用する必要があります。外部サイト (Imgur など) や Roll20 マーケットプレイスでは使用できません。 メインサーバーにアップロードされた画像の場合は'https://s3.amazonaws.com/files.d20.io/images/'、Devサーバーにアップロードされた画像の場合は'https://s3.amazonaws.com/files.staging.d20.io/images/'で始まります。 画像のソースURLは、ブラウザの開発者ツールを使って見ることができます。


将来的には、MOD(API)スクリプト専用に画像をアップロードできるツールを追加するかもしれませんが、今のところは、自分のライブラリにアップロードした画像を使ってください。 ライブラリから画像を削除すると、MOD(API)スクリプトを使ったゲームも含め、その画像を使ったすべてのゲームから削除されることに注意してください。


Notes、GMNotes、Bioフィールドの使用 非同期

CharactersおよびHandoutsの "notes"、"gmnotes"、または "bio "フィールドにアクセスするには、get()関数の第2引数にコールバック関数を渡す必要があります。 例を挙げよう:

var character = getObj("character", "-JMGkBaMgMWiQdNDwjjS");
character.get("bio", function(bio) {
    log(bio); //ここでキャラクターのbioに何かをする。
});

これらのフィールドの値は通常通り設定できる。 現在(2016/05/09時点)、これらの非同期フィールドにはバグがあり、createObjに値を渡して設定すると、オブジェクトを奇妙な状態にしたまま静かに失敗することに注意してください。 この問題が解決するまでは、.setを使用してこれらの値を設定する必要があります。 詳細 フォーラム. また、同じset()呼び出しでnotesとgmnotesの両方のプロパティを設定しようとすると、呼び出しの2番目のプロパティが誤って設定されるというバグもある(2016/11/05現在)。 詳細 フォーラム.


キャラクターシートを使う

Character Sheets機能は、Attributesオブジェクト・タイプの使い方に影響します。なぜなら、シートには、シート上の各属性のデフォルト値を指定する機能があるからです。 しかし、アトリビュートがデフォルト値に設定されている場合、そのキャラクタの実際のアトリビュートオブジェクトはまだゲーム内に作成されていません。 私たちは、この複雑さを隠してくれる便利な機能を提供しています。 特に、あるゲームがキャラクター・シートを使用していることが分かっている場合は、この関数を使用して属性の値を取得する必要があります。

getAttrByName(character_id, attribute_name, value_type)

キャラクターのID、属性の名前(IDではない)(例えば "HP "や "Str "など)、そしてvalue_typeに "current "か "max "を指定するだけだ。 例を挙げよう:

var character = getObj("character", "-JMGkBaMgMWiQdNDwjjS");
getAttrByName(character.id, "str"); //strの現在の値、例えば "12"
getAttrByName(character.id, "str", "max"); //strの最大値、例えば"[[floor(@{STR}/2-5)]]"


自動計算された値を持つフィールドは、値の結果ではなく数式を返すことに注意してください。 その計算式を sendChat() に渡すと、ダイスエンジンを使って自動的に結果を計算してくれます。

また、必ず キャラクターシートのドキュメントも参照してください。

getAttrByNameは属性の値のみを取得し、属性オブジェクト自体は取得しません。 current "または "max "以外の属性のプロパティを参照したい場合、または属性のプロパティを変更したい場合は、findObjsなど、上記の他の関数のいずれかを使用する必要があります。

要求された属性が存在しない場合、getAttrByName()undefined を返します。


オブジェクトの作成

createObj(タイプ, 属性)

注:現在、'graphic'、'text'、'path'、'character'、'ability'、'attribute'、'handout'、'rollabletable'、'tableitem'、'macro'オブジェクトを作成することができます。

ゲーム内で新しいオブジェクトを作成するには、createObj関数を使用します。 オブジェクトのタイプ(上記のオブジェクト・リストにある有効な_typeプロパティの1つ)と、オブジェクトのプロパティのリストを含むattributesオブジェクトを渡す必要があります。 オブジェクトに親オブジェクトがある場合(例えば、アトリビュートやアビリティはキャラクタに属し、グラフィックやテキスト、パスはページなどに属します)、プロパティのリストに親のIDを渡さなければならないことに注意してください(例えば、アトリビュートを作成するときはcharacteridプロパティを含めなければなりません)。 また、新しいオブジェクトを作成する場合でも、読み取り専用のプロパティを設定することはできません。 この例外は、パスを作成するときに、'path'プロパティを含める必要がありますが、パスが最初に作成された後は変更できません。

createObjは新しいオブジェクトを返すので、そのオブジェクトを使って作業を続けることができる。

//ゲームに追加されたキャラクターに新しいStrength属性を作成する。
on("add:character", function(obj) {
    createObj("attribute", {
        name: "Strength",
        current: 0,
        max:30,
        characterid: obj.id
    });
});

オブジェクトの削除

オブジェクトを削除します。

注:現在、'graphic'、'text'、'path'、'character'、'ability'、'attribute'、'handout'、'rollabletable'、'tableitem'、'macro'オブジェクトを削除することができます。

既存のゲームオブジェクトを削除するには、.remove()関数を使用します。 .remove()関数は、createObj関数で作成できるすべてのオブジェクトに対して機能します。 オブジェクトに対して直接関数を呼び出す。 例えば、mycharacter.remove();


グローバル・オブジェクト

スクリプトのどこでもグローバルに利用できるオブジェクトがいくつかあります。

キャンペーン() (機能)

キャンペーン・オブジェクトを返す関数。 キャンペーンは1つしかないため、このグローバルは常にゲーム内の唯一のキャンペーンを指す。 Campaign().get("playerpageid")を使用して、オブジェクトがアクティブ・ページにあるかどうかをチェックする場合などに便利です。


状態

ステート変数は、ゲーム内で実行されているすべてのスクリプトからアクセス可能なグローバルスコープのオブジェクトです。 stateというグローバル変数を使うだけで、どの関数やコールバックからもいつでもステート・オブジェクトにアクセスできる。 さらに、状態オブジェクトは サンドボックスの実行の間に永続化されるので、スクリプトの将来の実行に必要な情報を保存するために使うことができます。

注意:stateオブジェクトは、プレイヤーのコンピュータに送信されることはなく、ゲームファイルを大きくすることもないため、APIでのみ必要とされる情報を格納するために使用する必要があります。 ゲーム内で必要な値をRoll20オブジェクトのプロパティに保存します。

保存可能なタイプ

ステート・オブジェクトが永続化できるのは、単純なデータ型だけである。 JSON標準によってサポートされています。

タイプ 説明
ブーリアン 値はtrueまたはfalse
番号 123.5 10 1.23e20 Javascriptがサポートする任意の数値フォーマット。 浮動小数点または整数。
ストリング ハロー・ファンタジー "ああ、そして世界" 標準的な文字列。
配列 [ 1, 2, 3, 4 ] ['A','B','C']。[1, 2, ['bob', 3], 10, 2.5]. 他の配列を含む、任意の型の順序付きコレクション。
対象 { key: 1, value: 'roll20' } 文字列をキーとし、他のオブジェクトを含む任意の型を値とする単純なキー/値オブジェクト。

警告初期状態でステートに保存された関数は動作しているように見えますが、サンドボックスの再起動など、ステートが永続化から復元された最初の時点で消えてしまいます。

  • 注意:これには、イベントやfindObjs(),getObj(),filterObjs(),createObj() などの関数から取得した Roll20 オブジェクトも含まれます。

重要な注意事項

ステートオブジェクトは、サンドボックス内のすべてのスクリプトで共有される。 他のスクリプトを壊さないためには、いくつかの簡単なガイドラインに従うことが重要である:

  • 決してルート・ステート・オブジェクトに直接割り当てないこと。
state = { break: 'all the things' }; // 絶対にやってはいけない!

 

  • 避けるスクリプトの中でstateという名前のローカル変数を使うのは避けましょう。 これでも動作はしますが、後でスクリプトを使用するユーザーを混乱させ、コードが不注意に編集された場合に問題を引き起こす可能性があります。
function turn(){
    var state = Campaign().get('turnorder'); // 悪い習慣なので避けましょう!
    // ...
}

 

  • 常にプロパティを少なくとも1つの名前空間プロパティの下に配置します。 十分に説明的な名前空間プロパティを使用するようにしてください。 スクリプトや セッティングのような名前は避ける。 モジュール名か自分の名前かハンドルネームを使うのがベストだ。
if( ! state.MyModuleNamespace ) {
    state.MyModuleNamespace = { module:'私のモジュール', ok:'これでいい!', count:0 };
}
state.MyModuleNamespace.count++;

使用例

これは、ステート・オブジェクトを適切に使用する実例である。

on('ready',function() {
    "use strict";

    // 名前空間プロパティが存在するかどうかをチェックし、存在しない場合は作成する
    if( ! state.MyModuleNS ) {
        state.MyModuleNS = {
            version: 1.0,
            config: {
                color1: '#ff0000',
                color2: '#0000ff'
            }
            count:0
        };
    }.

    // stateプロパティを使用して、チャットへのメッセージを設定する。 
    sendChat(
        'Test Module',
        '<span style="color: '+state.MyModuleNS.config.color1+';">'+
            'State test'+
        '</span> '+
        '<span style="color: '+state.MyModuleNS.config.color2+';">'+
            'Script v'+state.MyModuleNS.version+' started '+(++state.MyModuleNS.count)+' times!'+
        '</span>'
    );
});

オブジェクトの検索/フィルタリング

APIは、オブジェクトの検索に使用できるいくつかのヘルパー関数を提供している。

getObj(type, id)
オブジェクトの_typeと_idを渡すと、この関数は1つのオブジェクトを取得する。 オブジェクトのコレクション全体を反復処理する必要がないのはこの関数だけなので、可能な限り他のfind関数よりもこの関数を使うのがベストだ。

on("change:graphic:represents", function(obj) {
    if(obj.get("represents") != "") {
       var character = getObj("character", obj.get("represents"));
    }.
});

 


findObjs(attrs)

この関数に属性のリストを渡すと、一致するすべてのオブジェクトを配列として返します。 これは、全ページの全タイプのオブジェクトに対して動作することに注意してください -- したがって、卓上オブジェクトを扱う場合は、少なくとも_typeと_pageidのフィルタを含めたいでしょう。

var currentPageGraphics = findObjs({                              
  _pageid:Campaign().get("playerpageid"),                              
  _type:"graphic",                          
});
_.each(currentPageGraphics, function(obj) {    
  //現在のページにあり、グラフィックであるobjで何かを行う。
});

また、オプションの第2引数として、以下のようなオプションのリストを含むオブジェクトを渡すこともできる:

  • caseInsensitive(true/false):trueの場合、文字列プロパティは文字列の大文字と小文字を区別せずに比較されます。
var targetTokens = findObjs({
    name: "target"
}, {caseInsensitive: true});
//'target'、'Target'、'TARGET'などの名前を持つすべてのトークンを返す。

filterObjs(コールバック)

指定したコールバック関数を各オブジェクトに対して実行し、もしコールバック関数が true を返したら、そのオブジェクトを結果の配列に含めます。 findObjs()には実行速度を向上させるためのインデックスが組み込まれているため、ほとんどの場合、findObjs()を使用して目的の型のオブジェクトを最初に取得し、配列のネイティブ.filter()メソッドを使用してそれらをフィルタリングする方が良いでしょう。

var results = filterObjs(function(obj) {    
  if(obj.get("left") < 200 && obj.get("top") < 200) return true;    
  else return false;
});
//resultsは、テーブルトップの左上隅にあるすべてのオブジェクトの配列です。

getAllObjs()

ゲーム内のすべてのオブジェクト (すべてのタイプ) の配列を返します。 filterObjsを呼び出して、すべてのオブジェクトに対してtrueを返すのと同じです。


getAttrByName(character_id, attribute_name, value_type)

属性の値を取得します。属性が存在しない場合は、キャラクターシートのデフォルト値を使用します。 value_typeはオプションのパラメータで、"current "または "max "を指定する。

getAttrByNameは属性の値のみを取得し、属性オブジェクト自体は取得しません。 current "または "max "以外の属性のプロパティを参照したい場合、または属性のプロパティを変更したい場合は、findObjsなど、上記の他の関数のいずれかを使用する必要があります。

繰り返しセクションの場合は、repeating_section_$n_attribute という書式を使うことができる。nは、繰り返し行番号(ゼロから始まる)。 例えば、repeating_spells_$2_nameはrepeating_spellsの3行目のnameの値を返す。

以下のようにすれば、getAttrByNameと同等の動作を実現できる:

// current と max は、アトリビュートとゲームシステムに完全に依存します
// そのため、これらを自動的に決定する関数はありません
function myGetAttrByName(character_id,
                         attribute_name,
                         attribute_default_current,
                         attribute_default_max,
                         value_type) {
    attribute_default_current = attribute_default_current || '';
    attribute_default_max = attribute_default_max || '';
    value_type = value_type || 'current';

    var attribute = findObjs({
        type: 'attribute',
        characterid: character_id,
        name: attribute_name
    }, {caseInsensitive: true})[0];
    if (!attribute) {
        attribute = createObj('attribute', {
            characterid: character_id,
            name: attribute_name,
            current: attribute_default_current,
            max: attribute_default_max
        });
    }

    if (value_type == 'max') {
        return attribute.get('max');
    } else {
        return attribute.get('current');
    }.
}
この記事は役に立ちましたか?
23人中21人がこの記事が役に立ったと言っています