Roll20では、JavaScriptのコア機能や他のライブラリには含まれていない、さまざまな機能が利用可能です。
ゲームでは、Mod Script サンドボックス v1.0(Campaign().sandboxVersion === "1.0")またはv1.5("1.5")が実行される場合があります。 「Mod Script サンドボックス v1.5」と記載されている機能のみ。 v1.0では動作しません。
グローバル変数
| 変数 | Descriptionq |
|---|---|
_ |
これは、Underscore.jsライブラリのネームスペースオブジェクトです。 |
都道府県 |
状態オブジェクトのプロパティはゲームセッション間で保持されます。 |
_ (アンダースコア)
これは、Underscore.jsライブラリのネームスペースオブジェクトです。アンダースコアにはコレクション操作のための多くの関数が用意されています。
都道府県
状態オブジェクトのプロパティはゲームセッション間で保持されます。また、同じステートオブジェクトはキャンペーン内のすべてのModスクリプト間で共有されるため、ステートに値を書き込む際は、名前の競合を避けるために、占有するリソースを可能な限り最小限に抑えることを強く推奨します。注:状態はJSONでシリアライズされるため、関数や循環参照を持つオブジェクトを保存することはできません。
グローバル関数
| 戻り値の型 | 関数 | Descriptionq |
|---|---|---|
Roll20オブジェクト |
キャンペーン |
シングルトンの Campaign Roll20 オブジェクトを取得します。 |
Roll20オブジェクト |
オブジェクト作成 |
新しいRoll20オブジェクトを作成します。 |
Roll20 オブジェクトの配列 |
フィルターオブジェクト |
述語テストに合格するすべてのRoll20オブジェクトを取得します。 |
Roll20 オブジェクトの配列 |
オブジェクトを検索 |
指定された能力値のセットに一致するプロパティを持つすべてのRoll20オブジェクトを取得します。 |
Roll20 オブジェクトの配列 |
getAllObjs |
キャンペーン内のすべてのRoll20オブジェクトを取得します。 |
異なる |
getAttrByName |
Roll20オブジェクトの能力値の現在の値または最大値を取得します。 |
異なる |
getComputed |
Mod Script サンドボックス v1.5 専用です。 Beaconの計算プロパティを取得します。 |
異なる |
getSheetDefaultValue |
能力値名のデフォルトのキャラクターシートを取得します。 |
異なる |
getSheetItem |
シートアイテム(能力値。v1.5 では Beacon /user.* も対象)を取得します。 |
Roll20オブジェクト |
getObj |
特定のRoll20オブジェクトを取得します。 |
ログ |
Mod出力コンソールにメッセージを記録します。 | |
オン |
イベントハンドラを登録します。 | |
onSheetWorkerCompleted |
Sheet Workerスクリプトのスタック全体が処理完了した後に実行される、1回限りのイベントハンドラを登録します。 | |
performAction |
Mod Script サンドボックス v1.5 専用です。ビーコンシートのシートアクションを実行します。 | |
ブール値 |
プレイヤーはGMです |
プレイヤーが現在GM権限を持っているかどうかを確認します。 |
プレイジュークボックスプレイリスト |
音楽プレーヤーのプレイリストを再生開始。 | |
番号 |
乱数 |
乱数整数値を生成します。 |
sendChat |
チャットメッセージを送信します。 | |
sendPing |
左マウスボタンを押し続けるのと同様のピングを送信します。 | |
setAttrs |
キャラクターに対して1つ以上の能力値を設定します。 | |
setComputed |
Mod Script サンドボックス v1.5 専用です。書き込み可能なBeacon計算プロパティを設定します。 | |
setSheetItem |
シートアイテム(属性。v1.5 では Beacon /user.* も含む)を設定します。 |
|
スポーンエフェクト |
パーティクルエミッターを生成します。 | |
ポイント間でエフェクトを生成 |
ある点から別の点へ移動するパーティクルエミッターを生成します。 | |
定義付きエフェクト生成 |
FX Roll20オブジェクトで表現されていないパーティクルエミッターを生成します。 | |
stopJukeboxPlaylist |
現在再生中のすべての音楽プレーヤープレイリストを停止します。 | |
上へ |
Mod Script サンドボックス v1.5 専用です。同じレイヤー上のオブジェクトを、別のオブジェクトの真上に配置します。 | |
戻る |
グラフィック、テキスト、パス、またはパスv2を、そのレイヤー上の他のオブジェクトの下に移動します。 | |
toBelow |
Mod Script サンドボックス v1.5 専用です。同じレイヤー上のオブジェクトのすぐ下に、別のオブジェクトを配置します。 | |
toFront |
グラフィック、テキスト、パス、またはパスv2を、そのレイヤー上の他のオブジェクトよりも上に移動します。 IDではなく、オブジェクトを渡してください。 | |
カードの補助ツール |
shuffleDeck、cardInfo、recallCards、dealCardsToTurn、drawCard、pickUpCard、takeCardFromPlayer、playCardToTable、giveCardToPlayer—「オブジェクト:デッキ」を参照。 |
キャンペーン
パラメータ
パラメータなし
返品
シングルトンキャンペーンのRoll20オブジェクト。
例
var currentPageID = Campaign().get('playerpageid'),
currentPage = getObj('ページ', currentPageID);
Campaign().sandboxVersionは「1.0」または「1.5」です。 Campaign().nodeVersionは、Node.js のバージョン文字列です。 Mod Script サンドボックス v1.5 専用です。 sheetName、computedSummary、およびactionSummary。「オブジェクト:キャンペーン」を参照してください。
オブジェクト作成
パラメータ
TYPE (文字列) 作成するRoll20オブジェクトのタイプ。 「graphic」、「text」、「path」、「pathv2」、「キャラクター」 、 「 技能 」、「能力値」、「ハンドアウト」、「rollabletable」、「tableitem」、「マクロ」、「カード」、「デッキ」、「custfx」、「window」、「door」、および「pin」を作成できます。 Mod Script サンドボックス v1.5 専用です。 'pageFolder'。
ATTRIBUTES (オブジェクト) Roll20 オブジェクトのプロパティに使用する初期値。
返品
作成されたRoll20オブジェクト。
例
親オブジェクトを持つRoll20オブジェクトを作成する場合(たとえば、キャラクターのRoll20オブジェクトの子となる能力値のRoll20オブジェクトを作成する場合など)、attributesに親オブジェクトのIDを指定する必要があります。
on('ready', function() {
on('add:character', function(obj) {
createObj('能力値', {
name: 'Strength',
current: 0,
max: 30,
characterid: obj.id
});
});
});
パスを作成する際は、パス(_path として保存される)とページIDを指定してください。アンダースコアを含まないパスが、作成時の名前です。その後は読み取り専用になります。
createObj('path', {
pageid: Campaign().get('playerpageid'),
left: 7000,
top: 140,
width: 140,
height: 140,
レイヤー: 'objects',
path: JSON.stringify([['M', 0, 0], ['L', 70, 0], ['L', 0, 70], ['L', 0, 0]])
});
Roll20の「ハンドアウト」オブジェクトを作成する際、作成時にはテキストやGMノートを設定することはできません。
var handout = createObj('handout', {
name: 'A Letter Addressed to You',
inplayerjournals: 'all',
archived: false
});
handout.set('notes', 'メモは、ハンドアウトの作成後にのみ設定できます。');
handout.set('gmnotes', 'gmnotes は、notes とは別の呼び出しで設定してください。');
フィルターオブジェクト
パラメータ
CALLBACK(関数) Roll20のすべてのオブジェクトに対して検証を行う述語関数。コールバック関数は、パラメータとして Roll20 オブジェクトを受け取り、`true`(`filterObjs` の戻り値に含まれる Roll20 オブジェクトの場合)または `false`(それ以外のすべての Roll20 オブジェクトの場合)を返す必要があります。
返品
述語テストを通過したRoll20オブジェクトの配列。
オブジェクトを検索
パラメータ
ATTRIBUTES (オブジェクト) キャンペーン内のRoll20オブジェクトと照合するための、キーと値のペアの集合。
OPTIONS(オブジェクト、オプション)
-
caseInsensitive— true の場合、文字列の比較は大文字と小文字を区別しません。 -
startsWith— true の場合、文字列値は接頭辞として一致します。 -
tagMatch—タグの照合時:'all'(デフォルト;オブジェクトにリストされたすべてのタグが含まれている)、'any'(少なくとも1つ)、'only'(リストされたセットと完全に一致する)。
返品
能力値と一致するプロパティを持つRoll20オブジェクトの配列。キーの先頭のアンダースコアは省略可能です。「type」と「_type」はどちらも一致します。
例
var npcs = findObjs({ type: 'キャラクター', controlledby: '' });
var knights = findObjs({ type: 'キャラクター', name: 'Sir' }, { startsWith: true });
getAllObjs
パラメータ
パラメータなし
返品
キャンペーン内のすべてのRoll20オブジェクトの配列。
getAttrByName
パラメータ
CHARACTER_ID (文字列) キャラクターのID。 ATTRIBUTE_NAME (文字列) 属性の名前。 VALUE_TYPE (文字列、省略可) 「current」または「max」(デフォルトは「current」)。
返品
currentまたはmaxプロパティ。設定されていない場合、キャラクターシートのデフォルト設定が使用されます(設定がある場合)。
getComputed
Mod Script サンドボックス v1.5 専用です。 (v1.0 では、この名前は何も実行しないスタブです。)
パラメータ
オブジェクト:{ characterId, property, args?, playerId? }.
Beaconのキャラクターシートを使用する際、計算プロパティの値を取得します。 Campaign().computedSummary を使用してリスト名を表示します。 playerId は省略可能です。ただし、Beacon の機能によっては(たとえばロールクエリなど)、これが必要となる場合があります。
getSheetDefaultValue
パラメータ
ATTRIBUTE_NAME(文字列)、VALUE_TYPE(文字列、省略可)「current」または「max」。
返品
そのフィールドのシートのデフォルト値であり、実際の文字値ではありません。
getSheetItem
パラメータ
getSheetItem(characterId, property, valtype?, options?)— 非同期 (Promise)。
v1.0では、これはgetAttrByNameをラップしています。 Mod Script サンドボックス v1.5 専用です。 Beaconシートでは、user.* という名前の計算プロパティやカスタム属性も読み取られます。
getObj
パラメータ
TYPE(文字列)、ID(文字列)
返品
指定されたRoll20オブジェクト。
on('チャット:メッセージ', function(msg) {
var sendingPlayer = getObj('player', msg.playerid);
});
ログ
パラメータ
メッセージ(内容により異なる)が、Mod出力コンソールに表示されます。 JSON.stringify を使用して変換されました。
Mod Script サンドボックス v1.5 専用です。エラーメッセージには、[Roll20キャラクター -id] のようなコンテキストオブジェクトが含まれていることがよくあります。
オン
パラメータ
EVENT (文字列) イベントには、ready、change、add、destroy、チャットの5種類があります。 「ready」を除き、イベントをオブジェクト型と関連付けます。チャットの場合、そのタイプは常に「メッセージ」となります。変更イベントでは、プロパティ、オブジェクトID、あるいはその両方を指定することもできます:change:graphic:left、change:graphic:ID、change:graphic:ID:left。グラフィックスは、change:tokenやchange:dicetoken といったサブタイプのイベントも発生させます。「イベント」をご覧ください。
CALLBACK(関数)のreadyイベントには、コールバックパラメータはありません。変更イベントには、objパラメータ(変更後の Roll20 オブジェクト)とprevパラメータ(変更前のプロパティを含むプレーンな JavaScript オブジェクト)があります。 addevents にはobjパラメータ(新しいオブジェクト)があります。 destroyイベントにはobjパラメータ(もはや存在しないオブジェクト)があります。チャットイベントには、msgパラメータ(メッセージの詳細)があります。
返品
(無効)
イベントは登録された順序で発生し、最も特異なイベントから最も特異でないイベントへと処理されます。この例では、Roll20のグラフィックオブジェクトの「left」プロパティを変更すると、function3が呼び出され、続いてfunction1、そしてfunction2が呼び出されます。
on('change:graphic', function1);
on('change:graphic', function2);
on('change:graphic:left', function3);
新しいセッションが開始されると、キャンペーン内にすでに存在するRoll20オブジェクトに対して、「イベントの追加」が実行されるよう試みられます。この動作を防ぐには、readyイベントが発生するまで、addイベントの登録を待てばよいです。
on('add:graphic', function(obj) {
// セッションが開始されると、キャンペーン内のすべてのグラフィックに対してこの関数が呼び出されます
});
on('ready', function() {
on('add:graphic', function(obj) {
// この関数は、新しいグラフィックのRoll20オブジェクトが作成された場合に*のみ*呼び出されます
});
});
変更イベントの「prev」パラメータは、Roll20 オブジェクトではありません。 getやset は使用できません。また、読み取り専用プロパティでは、先頭のアンダースコアを省略することはできません。 prev.id ではなく、prev._id を使用してください。
キャラクターおよびハンドアウトブロブフィールド(bio、notes、gmnotes)およびキャラクターの_defaulttokenについては、prevはテキストではありません。 「graphicgmnotes」は単なる文字列です。必要に応じて、以前のBLOBの値を自分でキャッシュしておいてください。
onSheetWorkerCompleted
パラメータ
CALLBACK(関数) シート開発者・スクリプトの現在のスタックが完了したときに呼び出されます。 setWithWorker の実行前に呼び出すことを想定しています。一度だけ実行されます。コールバックには{ workersExecuted: boolean } が渡される場合があります。
performAction
Mod Script サンドボックス v1.5 専用です。 (v1.0 では、この名前は何も実行しないスタブです。)
パラメータ
{ characterId, action, args?, playerId? }
ビーコンシートのシートアクションを実行します。 Campaign().actionSummary を使用して名前の一覧を表示します。 playerIdは任意ですが、Beacon の機能によってはこれが必要となる場合があります。その名前がビーコンアクションでない場合、v1.5ではsendChatを介して、その名前のキャラクターの技能にフォールバックすることがあります。
プレイヤーはGMです
パラメータ
PLAYER_ID (文字列)
返品
プレイヤーが現在GM権限を持っている場合はtrue。
特に、ModスクリプトのコマンドをGMのみが使用できるように制限するのに役立ちます。記述どおり、msg.type !== 'api'のままにしておいてください。これがコマンドメッセージのタイプです。
プレイジュークボックスプレイリスト
パラメータ
PLAYLIST_ID (文字列) 再生を開始するプレイリストのID。
ランダムな整数
パラメータ
MAX(数値) 最大値(上限を含む)。
返品
1 からmax までの間のランダムな整数。サイコロのような範囲を生成するには、Math.random()よりもこちらを使うことをお勧めします。
sendChat 非同期
パラメータ
SPEAKINGAS (文字列) 名前、またはプレイヤー|プレイヤーID/キャラクター|キャラクターID。 MESSAGE (文字列)。 CALLBACK(関数、オプション) — 結果はチャットに表示される代わりに、コールバック関数に渡されます。 OPTIONS (Object, optional)noarchive,use3d.
コマンドボタンについては、「Mod Scripts: チャット」を参照してください([ラベル](!command))。
sendPing
パラメータ
LEFT、TOP、PAGE_ID、PLAYER_ID(オプション)、MOVEALL(オプション)、VISIBLETO(オプション)。 player_id が省略された場合、ping は黄色になります。 moveAllが true の場合、ビューは ping を中央に配置します。 visibleTo には、プレイヤー ID、ID の配列、またはコンマ区切りの文字列を指定できます。
setAttrs
パラメータ
CHARACTER_ID(文字列)、ATTRIBUTE_OBJ(名前 → 値 のオブジェクト)。 _maxで終わる名前は、最大値を設定します。繰り返し $n 名前を繰り返し指定することが可能です。 options.silentでは、setWithWorker の代わりにset が使用されます。
setComputed
Mod Script サンドボックス v1.5 専用です。
{ characterId, property, args?, playerId? } — 書き込み可能なBeaconの計算プロパティを設定します。 Campaign().computedSummary を参照してください。
setSheetItem
setSheetItem(characterId, property, value, valtype?, options?)— 非同期。 v1.0 では、能力値を設定します。 Mod Script サンドボックス v1.5 専用です。また、Beaconの計算プロパティやuser.*のカスタム能力値も対象となります。オプションには、createAttr、withWorker、allowThrow などがあります。
スポーンエフェクト
パラメータ
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 のいずれかです。カスタムエフェクトの場合、custfxオブジェクトの ID。注:beam、breath、splatterはspawnFxでは使用できません。spawnFxBetweenPoints を参照してください。 PAGE_ID(文字列、省略可)のデフォルト値はCampaign().get('playerpageid') です。
spawnFx(1400, 1400, '泡立つ酸');
ポイント間でエフェクトを生成
パラメータ
START (オブジェクト){ x, y }. END (Object){ x, y }. TYPE (文字列) をspawnFx として、さらにビーム、ブレス、スプラッターを追加します。 PAGE_ID(文字列、省略可)。
spawnFxBetweenPoints({ x: 1400, y: 1400 }, { x: 2100, y: 2100 }, 'beam-acid');
Mod Script サンドボックス v1.5 専用です。ビーム型のエフェクトが終点を直接指すようになりました(角度計算のバグが修正されました)。
定義付きエフェクト生成
パラメータ
LEFT、TOP、DEFINITION(エミッタを記述するオブジェクト)、PAGE_ID(省略可)。プロパティ名については、「オブジェクトのカスタムFX」の記事を参照してください。
角度: 270, 角度Random: 35, 发射率: 1, 开始颜色: [0, 35, 10, 1], 开始颜色Random: [0, 10, 10, 0.25], 结束颜色: [0, 75, 30, 0], 结束颜色Random: [0, 20, 20, 0] });
stopJukeboxPlaylist
現在再生中の音楽プレーヤーのプレイリストをすべて停止します。
stopJukeboxPlaylist();
カードの補助者
両方のサンドボックス版で利用可能です。詳細については、「Modスクリプト:オブジェクト(デッキ)」をご覧ください。
shuffleDeck(deckid, discard, newOrder)cardInfo(settings)recallCards(deckid, type)dealCardsToTurn(deckid)drawCard(deckid, cardid)pickUpCard(cardid, fromDiscard)takeCardFromPlayer(playerid, options)playCardToTable(cardid, settings)giveCardToPlayer(cardid, playerid)
setDefaultTokenForCharacter
CHARACTER(キャラクターオブジェクト)、TOKEN(グラフィックオブジェクト)。どちらもすでに存在していなければなりません。トークンからキャラクターの_defaulttokenブロブを書き込みます。そのフィールドを設定するには、この方法を使います。set()では設定できません。
上へ
Mod Script サンドボックス v1.5 専用です。
パラメータ
OBJ(グラフィック、テキスト、パス、またはpathv2)、TARGET(オブジェクトまたはID)。
対象のすぐ上に、同じレイヤー上にobjを配置します。
前へ / 次へ
OBJは、グラフィック、テキスト、パス、またはpathv2でなければなりません。 IDではなく、オブジェクトを渡してください。 v1.5では、これらは大幅に高速化されており、これらの型にはtoFront()およびtoBack() というインスタンスメソッドも備わっています。
toBelow
Mod Script サンドボックス v1.5 専用です。
「target」(オブジェクトまたはID)のすぐ下に、objを同じレイヤー上に配置します。