チャラクターマンサー

チャラクタマンサーは、仮想卓上での意思決定プロセスを通じてユーザーを導くためのロール20システムである。 に実装されている。 Roll20公式DND 5eおよび Roll20公式パスファインダーのキャラクターシートに実装されています。


翻訳

キャラクターシートの他の部分と同様に、シート標準はチャラクタマンサーに従うべきである。 これには国際化(または国際化翻訳キー)が含まれます。 htmlタグに要素を追加することで、どの要素も翻訳に指定することができる。 翻訳の仕組みについて詳しくはこちら.


スライド

イントロスライド

<charmancer class="sheet-charmancer-intro">

チャラクタマンサーは、一連のスライドを順番に読み込むことで機能する。 スライドは、キャラクタ・シートのHTMLファイルに含まれるHTMLのブロックである。 <charmancer>の タグが付いている。 各スライドを呼び出したり、参照したりするためには、 <charmancer> タグの中に、"sheet-charmancer-"というクラスの前に、スライドの名前をつける必要があります。 スライドには、文字シートと同じHTML要素や入力が含まれますが、以下のような追加や例外があります。 スライドは、startCharactermancer(<スライド名>) 関数を介してシートワーカーから呼び出されるか、「次へ」ボタンを介して別のスライドから呼び出されます。


コンペンディウムiFrame

<div class="sheet-compendium-page sheet-example" accept="CategoryIndex:Backgrounds"></div>

スライド内で使用できるのは、キャラクター・シートの大要のページを表示できる大要iFrameです。 スライド内のタグに "sheet-compendium-page "というクラスが与えられ、acceptパラメータも与えられると、スライドがレンダリングされるときに、その中に埋め込まれたCompendium iFrameも含まれます。 acceptパラメータは、キャラクターシートが使用しているブックのCompendiumページと一致しなければなりません。 Compendium iFrameは、Sheet WorkerがchangeCompendiumPage関数を使用して動的に更新することができます。


スライドナビゲーション

次のボタン

<button type="submit" value="example">Next</button>

次へボタンはチャラクタマンサーを次のスライドに移行させます。 ボタンのタイプは "submit "で、valueパラメータは他のスライドの名前と一致しなければなりません。 さらに、可視かつ必須であるすべてのチャラクタマンサーの入力に値があるかどうかのチェックも行われます。 この操作は、値のない必要な入力をハイライトして返し、次のスライドには進みません。


バックボタン

<button type="back" value="example">Back</button>

戻るボタンは、タイプとして "戻る "を要求し、必須フィールドを検証しないという例外を除いて、次へボタンと同じように機能する。


キャンセルボタン

<button type="cancel" value="example">Cancel Charactermancer</button>

キャンセルボタンはチャラクタマンサーを閉じ、ユーザーをキャラクターシートに戻します。 ボタンの種類は「キャンセル」でなければならない。 ボタンをクリックすると発生するイベントを通して値を渡すことができ、on"mancer:cancel "リスナーによって聞くことができる。 


フィニッシュボタン

<button type="finish" value="example">変更の適用</button>

FinishボタンはCharactermancerを閉じ、キャラクターシートに戻ります。 ボタンの種類は「finish」でなければならない。 終了ボタンをクリックすると、on"mancerfinish:name "リスナーで聞くことができるイベントが作成されます。


最終スライド

ファイナル」という名称は、特別なスライドのために予約されている。 最終スライドは、チャラクターマンサーとキャラクターシートの間の移行として機能します。 ファイナルスライドが呼び出されると、チャラクタマンサーは無効になりますが、finishCharactermancer()が呼び出されるまでは、ファイナルスライドの内容を表示しています。 このスライドにより、キャラクターシートとワーカーは、プレイヤーにコントロールを戻す前に、チャラクタマンサーデータオブジェクトのすべての結果を受け取り、適用することができます。


チャラクタマンサー入力

<input type="text" name="comp_example">

チャラクタマンサーの属性は、キャラクターシートとは異なる命名規則を用いています。 Charactermancer 入力は"comp_"で始まる。 この規約で命名された入力と選択は、自動的にその値をCharactermancer Data Objectに渡します。 このデータオブジェクトは、getCharmancerData()関数を呼び出すことで、現在および将来のスライドで参照することができ、また、mancerfinishイベントでキャラクターシート用に出力されます。

Charactermancer Data Object

{
    "first-slide":
    {
        "data":
        {},
        "values":
        {}
    },
    "second-slide":
    {
		"data":
		{
			"choice1":
			{
				"ウィジェットの数":
				{
					"ウィジェット":2
				},
				"ウィジェットの種類":
				{ 
					"タイプ":"Spongy"
				}.
			}
		},
        "値":
        {
            "choice1":"Widget:Example"
        },
		"repeating":["<repeating_id1>", "<repeating_id2>"]
    }.
}

Charactermancerデータオブジェクトは、プロセスを通して、各スライドで入力と選択からのデータを自動的に保存します。 これらのインプットとセレクトの値は、スライドの名前と "values "キーの下にJSON形式で保存される。 さらに、getCompendiumData関数からデータオブジェクトのスライド名前空間に "data "を渡すことができる。 スライド内で繰り返しセクションが使用されている場合、繰り返しIDはそのスライドの「繰り返し」キーの下に保存されます。 getCharmancerData関数を使えば、いつでもオブジェクト全体を取得することができます。


必須

<input type="text" name="comp_example" required> 

タグで「必須」とマークされた入力と選択は、そのフィールドに値が与えられるまで、ユーザーが現在のスライドを完了して次のスライドに移動することができません。 次へ]ボタンが使用されたときに空白のままにされた必須フィールドには、"シートヒライト "クラスが与えられ、ユーザーは次のスライドに進めません。 必須入力が条件付きセクションの中に隠されている場合、その入力は必須ではありません。 エレメントのグループを必須にすることができる。 Requiredが親divのタグに追加された場合、中のすべての子InputsとSelectsも同様にRequiredになります。


コンペンディウム・ポピュレーテッド・セレクト

<select name="comp_race" accept="Category:Items"> 

スライド内のセレクトには、Roll20 Compendiumのオプションが自動入力されます。 selectは、Compendium互換の検索文字列を含むAcceptパラメータを必要とする。 複雑な複数属性検索を使用して、特定のフィルタリングされた結果を提供することができます。 この方法で入力されたオプションは、結果の後に括弧で囲まれたソース展開が含まれる。 


条件付きセクション

 <div class="sheet-choice sheet-example"> 

条件付きセクションは、"シート選択 "タグを持つHTMLタグです。 これらのセクションは、スライドがレンダリングされるたびにデフォルトで非表示になります。 それぞれshowChoices(<クラス名>)hideChoices(<クラス名>)関数で表示・非表示が可能です。


アクションボタン

 <button type="action" name="act_starting_gold"></button> 

Charactermancerのアップデートで導入されたアクションボタン。 これらのボタンは、on "clicked "イベントリスナーでリッスンできる。 これらはチャラクタマンサーに限らず、キャラクターシートでも使用できます。 ボタンのタイプは "action "で、ボタン名の前にact_を付けなければならない。


Charactermancer リスナー

これらのリスナーはCharactermancerの変更に対して働き、Charactermancerの機能にアクセスできます。


マンサーチェンジ

on("mancerchange:choice_1 mancerchange:choice_3", function(eventinfo) {...}); 

mancerchange リスナーは、Charactermancer Inputs の値が変更されたときにトリガーします。 以下のプロパティを含む引数を渡す:

  • currentStep: "charmancer-intro" ユーザーが現在いるスライド
  • newValue: "Races:Elf""Charactermancer "の入力値が変更されました。
  • sourceType: "player" 変更のトリガーが "worker "か "player "か。
  • triggerName: "race" 変更されたCharactermancer Inputの名前

page:<スライド名>

on("page:charmancer-intro", function(eventinfo) {...});

ページリスナーは、nextボタンまたはstartCharmancer関数によって呼び出されたときに、スライドを開いたときにトリガーされます。 以下のプロパティを含む引数を渡す:

  • sourceType: "player" 変更のトリガーが "worker "か "player "か。
  • triggerName: "charactermancer-intro" 今開かれたチャラクタマンサースライドの名前

clicked:<アクションボタン名>

on("clicked:action_button", function(eventinfo) {...});

クリックされたリスナーは、アクション・ボタンがクリックされたときにトリガーされます。 以下のプロパティを含む引数を渡す:

  • triggerName: "clicked:action_button" クリックされたアクションボタンの名前

mancerroll:<ロールボタン名>

 on("mancerroll:roll_stats", function(eventinfo) {...}); 

このリスナーは、チャラクタマンサーのロールボタンがクリックされたときにトリガーされます。 以下のプロパティを含む引数を渡す:

  • currentStep: "charmancer-intro" ユーザーが現在いるスライド
  • ロール:出目の結果を含むJSONオブジェクト。
  • triggerName: "roll_stats" リスナーのトリガーとなったチャラクタマンサーのロール名。

シート・リスナー

これらのリスナーは、チャラクタマンサーが退場した後に起動し、通常のシートワーカーセットにアクセスできます。


マンサーキャンセル

 on("mancer:cancel", function(eventinfo) {...}); 

mancer:cancelリスナーは、プレイヤーがキャンセルボタンによってチャラクタマンサーを終了したときにトリガーされます。 これは、ユーザーがチャラクタマンサーを終了したスライドの名前を持つオブジェクトを引数として渡します:

  • 値を指定します:"slide1"

mancerfinish:<name>

 on("mancerfinish:l1-mancer", function(eventinfo) {...}); 

mancerfinishリスナーは、プレイヤーが終了ボタンによってチャラクタマンサーを終了したときにトリガーされます。 チャラクタマンサーデータオブジェクトと同じ値を持つオブジェクトを引数として渡します。 ここで、チャラクタマンサーの選択がシート自体に適用されます。 setCharmancerText() 関数は、変更が適用されている間に "final "スライドを更新できるように、ここで利用可能です。


機能

チャラクタマンサーが活動している間は、以下の例外を除き、通常のシート・ワーカーは使用できません:

setAttrs() は、機能は異なりますが、チャラクタマンサーがアクティブな間でも使用可能で、現在のチャラクタマンサースライドの値のみを設定することができます。 シートの属性を変更せずにアクセスする関数(getAttrs() getSectionIDs() など )は、通常通り動作します。 getCompendiumPage() getCompendiumQuery()は 、シートとCharactermancerの両方で動作します。

セレクタについての注意:これらの関数の多くは、スライド上の関連するhtml要素を見つけるためにcssセレクタを使用します。 このセレクタの最初の部分はクラスでなければなりませんが、それ以外の部分は有効なJQueryセレクタ構文を使用できます。


これらの機能は、チャラクターマンサーがアクティブなときのみ利用可能です:

startCharactermancer(<スライド名>)

startCharactermancer("最初のスライド"); 

startCharactermancer関数はCharactermancerを起動します。 これはキャラクターシートを隠し、Charactermancerをロードします。 これは最初の引数として渡された名前のスライドのHTMLを読み込み、そのスライドのページを開くリスナーをトリガーします。


setCharmancerText(<更新オブジェクト>);

 setCharmancerText({"class_example": "Hello world!"}); 

setCharmancerText 関数を使用すると、現在のスライドのセクションを新しいテキストで更新できます。 関数の引数として渡されるオブジェクトは、キーが更新される要素のセレクタで、値がそれらのセクションの既存のコンテンツを置き換えるテキストです。 この関数は、htmlタグの使用を許可し、すべてのテキストは、文字シートの残りの部分で使用されているのと同じサニタイズ関数(例えば、クラス名の前にsheet-を 付ける)に渡されます。


changeCompendiumPage(<IFrameセレクタ>, <コンペンディウム・ページ名>)

 changeCompendiumPage("sheet-iframe", "ウェルカムページ"); 

changeCompendiumPage関数を使うと、現在のスライドのCompendium iFrameに読み込まれているCompendiumページを動的に変更することができます。 第一引数はiFrameのクラス名と一致し、第二引数はレンダリングするCompendiumページを渡す。 ユニークな一致を保証するために、ページのカテゴリーを使用することをお勧めします。 例えば、"Druid "は "Classes "カテゴリーと "NPC "カテゴリーの両方のページにマッチするかもしれませんが、"Classes:Druid "はユニークなページになります。


changeCharmancerPage(<スライド名>, <コールバック>)

 changeCharmancerPage("options_slide", function() {...}); 

この関数は、チャラクタマンサーの現在のスライドを変更します。 最初の引数はスライドの名前。 コールバックを受け付け、スライドがロードされた後に呼び出されます。


setAttrs(<更新オブジェクト>)

 setAttrs({"test_attribute": 2}) 

setAttrs関数は、Charactermancerの入力に対しても、Character Sheetの属性と同じように動作しますが、以下の例外があります。 チャラクタマンサーがアクティブな間は、チャラクタマンサーの入力を更新するためだけに使用することができ、ラジオとチェックボックスの入力が設定された値と一致しない場合、クリアされます。 これらの属性は、スライド上に入力がなければなりません。さもなければ、次のページに移動するときに、その値はCharactermancerデータオブジェクトから削除されます。


setCharmancerOptions(<クラス名>, <選択オプション>, <設定>, <コールバック>); </pre>

 setCharmancerOptions("select-class", "Category:Items Type:Weapons", {add:["Magic Longsword", "Axe of Amazingness"], category: "Items"}); 

setCharmancerOptions関数を使うと、必要に応じてチャラクタマンサーセレクトやラジオ入力を動的オプションで更新することができます。 この関数は最初の2つの引数を必要とするが、最大4つまで受け付けることができる。 最初の引数は、オプションを入力したいチャラクタマンサーセレクトのクラス名です。 第2引数には、あらかじめ定義されたオプションの配列を渡すか、Compendium Search文字列を渡してCompendiumからオプションの動的リストを生成することができます。 第3引数には、以下のいくつかのオプション設定を指定できる。 最後の引数は、setCharmancerOptionsが戻った後に実行されるコールバックです。 このコールバックは、見つかった値/満たされた値の配列であるパラメータを取得します。 type='radio'入力で使用される場合、関数は同じように動作しますが、スライド上のその名前を持つすべてのスパンを見つけ、<ラベル><入力 type="checkbox">コンテンツ</ラベル>で代わりに埋めます。

  • カテゴリを指定します:オプションのカテゴリー名
  • disable:無効にするオプションの配列。
  • 選択された:最初に選択されたオプションの値
  • を追加します:セレクト・オプションの下に追加するオプションの配列。
  • show_source:Compendium Expansion の頭文字を括弧で囲んだオプションを表示する (選択オプションとして compendium クエリを使用する場合にのみ利用可能)

disableCharmancerOptions(<クラス名>, <選択オプション>, <設定>);

 disableCharmancerOptions("select-class", ["one", "two"]); 

disableCharmancerOptions は、setCharmancerOptions と同様に機能します。 チャラクターマンサーセレクトかラジオ入力を無効にするオプションの配列しか受け付けない。 この機能は、現在選択されているオプションを無効にすることはない。 2つ以上のセレクトが同じ値を持つ場合、それらすべてを一度に無効化する。 空の配列を渡すと、すべてが再び有効になる。


showChoices([<クラス名>]);

 showChoices(["シートテスト", "シートテスト2]); 

showChoices関数は、sheet-choice クラスを持つ隠れた条件セクションを表示します。 引数として、条件付きセクションのクラス名の配列を受け取ります。


hideChoices([<クラス名>]);

 hideChoices(["sheet-test", "sheet-test2]); 

hideChoices関数は、現在表示されているシート選択 クラスの条件付きセクションを非表示にします。 引数には、非表示にする条件付きセクションのクラス名を配列で渡します。 引数が与えられない場合は、現在のスライド上のすべての選択肢を隠す。


getCompendiumPage(<コンペンディウムページ名>, [<値>], <コールバック>)

 getCompendiumPage(<code> Compendium Name", function(data) {...}); 

getCompendiumPage関数は、コンペンディウムページのデータ属性を取得し、そのデータをチャラクタマンサーデータオブジェクトとコールバック関数の両方に渡すことができます。 この関数が受け取る最初の引数は、データを取得したいコンペンディウム・ページの名前、またはページの配列です。 この場合も、正しい結果を得るために、<category>:<pagename>のフォーマットを使用することを推奨する。 3番目のオプションは、データ・オブジェクトを引数として渡すコールバックである。

この関数が属性のmancerchange: イベントで呼び出された場合、すべてのデータは現在のスライドのJSONオブジェクトの "data "セクションに、その属性の名前に一致するキーの下に保存されます。 データが正しく保存されるように、getCompendiumPage がそのイベントで最初に呼ばれる非同期シートワーカーであることを確認することをお勧めします。 この関数で複数のページを取得した場合、最初のページだけがデータに保存される。 第一引数に空文字列が指定された場合、その属性の現在保存されているデータはクリアされます(属性の値はクリアされません)。

このデータはFirebaseには保存されません。 むしろ、チャラクタマンサーが最初に開かれたときに、すべてのデータフィールドが大要から一度に取り出される。


getCompendiumQuery(<コンペンディウムクエリー文字列>, <コールバック>)

 getCompendiumQuery("Category:Spells Level:1|2|3 Class:*Bard", function(data) {...}); 

この関数はgetCompendiumPageと同様に機能しますが、結果を取得するためにクエリー文字列(またはクエリーの配列)を使用し、Charactermancerオブジェクトにデータを保存しない点が異なります。


getCharmancerData()

 var data = getCharmancerData(); 

getCharmancerDataは、Charactermancer Data Objectの現在の値を返します。


deleteCharmancerData([<pages>], <Callback>)

 deleteCharmancerData(["slide1", "slide3", "slide4"], function(data) {...}) 

deleteCharmancerData 関数は2つの引数を受け取ります。 最初の引数は、関連するすべてのCharactermancer Data Objectのデータと値を削除するスライド名の配列です。 引数としてスライドが渡されない場合、この関数はすべてのデータと選択肢を削除します。 第2引数は、deleteCharmancerData 関数が完了した後に実行されるコールバックです。


フィニッシュ・チャラクタマンサー() =

 finishCharactermancer() 

特殊な場合、finishCharactermancer関数は最終スライドをキャラクターシートに戻します。


setSectionOrder(<繰り返しセクション名>, <セクション配列>, <コールバック>);

(通常のシートワーカー機能であり、チャラクタマンサー機能ではない)

 setSectionOrder("proficiencies", final-array, callbackFunction); 

setSectionOrder関数を使用すると、好みに応じて繰り返しセクションを並べることができます。 この関数は、リピーティングセクション(repeating_が この値の前に付加されます)、リピーティングアイテムのデータに基づいて順序付けするメソッド、およびオプションのコールバック関数を受け入れます。


チャラクタマンサー・リピーティング・セクション

チャラクタマンサーの繰り返しセクションは、キャラクターシートの繰り返しセクションとは機能が異なります。 チャラクタマンサーのリピーティングセクションは、ページ上の特定の要素( <フィールドセット>)に定義されるのではなく、チャラクタマンサーのアクティブなスライド内の任意の要素(別のリピーティングセクション内を含む)に追加できるHTMLコードのスニペットです。 このHTMLは、シートの他の部分と同じようにサニタイズされる。

スライドにセクションが追加されると、その行に対して一意の行IDが生成されます。 このidは、このセクションの親要素にクラスとして適用され、そのセクション内の入力、アクションボタン、ロールボタンの名前を変更するために使用されます。 命名規則は、"repeating_123456789_row_input "で、"row "はリピーター・セクションの名前、"input "は入力の名前である。 繰り返しセクションの入力値は、そのスライドの残りの値とともに、Charactermancerデータオブジェクトの "values "キーの下に保存されます。 各スライドの "repeating" 配列に、繰り返しのセクション名 (中の各値ではなく、親セクションの名前) が追加されます。

mancerchange mancerroll 、およびクリックされたリスナーは、繰り返されるセクションの変更を聞くことができる。 repeating_123456789_row_inputに対する 変更では、属性自体、mancerchange:repeating_row_input 、およびそれが含まれるセクション、mancerchange:repeating_row に対して変更がトリガーされます。 そのセクションが別のリピーティングセクションの中にある場合、親リピーティングセクションのイベントも発生します。 繰り返しのセクション変更のイベント情報には、上記の通常の要素に加えて、いくつかの新しい要素が含まれる:

  • sourceAttribute: "repeating_123456789_row_input" 変更された特定の属性
  • sourceSection: "repeating_row" sourceAttribute が属するリピーティング・セクションの名前。
  • triggerName: "repeating_row" トリガーされたリスナーの名前

これらのセクションは永続的ではありません。つまり、ユーザーがスライドを離れて再度訪れたとき、スライドは繰り返しセクションなしで読み込まれ、これらのセクションをページに追加するためにワーカーが起動する自動変更イベントに依存します (スライドの再訪については、以下のセクションを参照してください)。


セクションの定義

<charmancer class="sheet-repeating-row">

 <charmancer class="sheet-repeating-row"> 

繰り返しセクションを定義するには、<charmancer>タグの中に、"sheet-repeating-"というキーワードで始まるクラスを使って、コード・スニペットを置きます。 上記の例では、<charmancer>タグ内のコードは、"row "と呼ばれる繰り返しセクションとして定義されます。


addRepeatingSection(<クラス名>, <セクション名>, <新しい名前>, <コールバック>)

 addRepeatingSection("sheet-class", "row", "spellrow", function(sectionid) {...}); 

説明: 指定された繰り返しセクションを、指定されたターゲット要素に追加する。 第一引数はターゲット要素のセレクタで、第二引数は追加するリピーティング・セクションを指定する。 第3引数はオプションで、この特定のセクションの新しいセクション名を定義します。省略した場合は、セクション名は第2引数の名前をそのまま使用します。 このセクションのコールバックは、セクションに割り当てられたセクションIDを受け取ります。


clearRepeatingSections(<target>, <callback>)

 clearRepeatingSections("sheet-class", function() {...}); 

この関数は、第1引数で指定された要素からすべての繰り返しセクションをクリアする。 これはHTMLそのものを、Charactermancerデータオブジェクト内の対応する値とともに削除します。


clearRepeatingSectionById([<section_ids>], <コールバック>)

 clearRepeatingSectionById([<id1>, <id2>, ...], function() {...}); 

この関数はclearRepeatingSections関数と似ているが、第一引数の配列で定義された特定の繰り返しセクションのみをクリアする。 また、指定されたセクションの内側にある繰り返しセクションもクリアされる。


getRepeatingSections(<ターゲット>, <コールバック>)

 getRepeatingSections("sheet-class", function(repeating) {...}); 

この関数は、現在のスライド上の繰り返しセクションに関するより詳細な情報を返します。 第1引数はターゲット要素のセレクタである。 これは、その要素内の繰り返しセクションのリストを取得するために使用されます。 これが省略された場合、この関数はこのスライド上のすべての繰り返しセクションを返します。 コールバックに返されるデータには、繰り返しセクションの構造を示すJSONオブジェクトも含まれています。


スライドの再検討

もしユーザがスライドから離れ、後でそのスライドを再び訪れた場合、Charactermancerは自動的にページ上に保存された値の変更イベントをトリガーします。 これは、シートワーカーを発射させ、スライドを以前の状態に戻すためである。 これは、HTMLを操作する関数(setCharmancerTextや addRepeatingSectionの ような)によって行われた変更が永続化されないために必要です。 スライドを見直す際には、これらの労働者が解雇される可能性があることを念頭に置くことが重要である。 それに応じて労働者の計画を立てる。 スライドを再表示するとき、前回繰り返したセクションIDは、名前が一致するセクションで再利用されるので、これらのIDは一定のままにしておく必要があることに注意してください。


擬似属性 charactermancer_step

charactermancer_step 属性は、character_name属性のような疑似属性です。 これにより、チャラクタマンサーが次に起動したときに開くステップを設定することができます。 この属性は通常のsetAttrs 関数で設定でき、チャラクタマンサーがアクティブな間は設定できません。

この記事は役に立ちましたか?
37人中7人がこの記事が役に立ったと言っています