ロール・テンプレートの作り方

ロールテンプレートは キャラクターシートシステムの特別な側面であり、ロールの結果を表示するための追加のレイアウトとスタイルのオプションを提供します。


内蔵ロール・テンプレート

以下のロール・テンプレートはRoll20に組み込まれており、どのゲームでも使用できます。

ロールテンプレートのデフォルト例2.JPG

デフォルト

デフォルトのテンプレートを使用するには、"&{template:default}"を使用する。

プロパティ 期待値
名称 ロール一覧のヘッダーに表示されるロール名

デフォルトのテンプレートは特殊で、どんな引数を与えても表にリストアップする。 例えば、次のようにすることができる:

&{template:default} {{name=テスト攻撃}}{{attack=[[1d20]]}}
{{note=これはいくつかの注意内容です}}。{セーヴィング・スロー=対意志}}

ここには、デフォルト・テンプレートとそれに依存するCSSクラスのかなり正確な例です。


ロールテンプレートの作成

シート作成者であれば、キャラクターシートのHTMLとCSSに、好きなだけロールテンプレートを含めることができます。 以下にその方法をお伝えしよう。

プロ契約者であれば、ゲームに「カスタム」キャラクターシート・オプションを使用している場合、独自のロール・テンプレートを作成することができます。 以下の指示に従ってください。


ロールテンプレートのレイアウトの定義

ロールテンプレートを作成する最初のステップは、レイアウトを定義することです。 ロールテンプレートは単なるHTMLであり、キャラクターシートの他の部分(divand テーブルを含む)と同じHTMLにアクセスすることができます。 ロール・テーブルのレイアウト例です:

<rolltemplate class="sheet-template-test">
    <div class="sheet-template-container">
	<div class="sheet-template-header">{{rollname}}</div>
	{{#attack}}<div class="sheet-template-row">Attack: {{attack}} {{attackadvantage}} vs AC</div>{{/attack}}
        {{#damage}}
	<div class="sheet-template-row"><span>ダメージ: </span>{{damage}} 
        <span>クリティカル: </span>{{dmgcrit}}</div>
	<div class="sheet-template-row"><span>Type: </span>{{dmgtype}}</div>
       {{/damage}}
       {{#atteffect}}
	 <div class="sheet-template-row">
	 <span class="sheet-template-desc">効果: </span>{{atteffect}}
         </div>
       {{/atteffect}}
</rolltemplate>

&<>テンプレートは、"sheet-rolltemplate-<template_name>" template_nameのclassを持つrolltemplateタグを持つべきである。 ロール・テンプレートはキャラクター・シートのHTMLの好きな場所に書くことができますが、一番最後に書くことをお勧めします。 テンプレートから自動的に「削除」されるので、キャラクター・ビューではシートの一部として表示されません。 ロールテンプレート同士を入れ子にすることはできない。

その後、どのようにロールを構成するかはあなた次第だ。 私たちはテーブルレイアウトを推奨しますが、それはあなた次第です。

テンプレート内部では、以下の項目にアクセスできる:

プロパティ

ダブルカーリーブレースを使うことで、好きなプロパティを含めることができる。 だから {{myproperty}}は何でも(インライン・ロール、テキスト。 など)は、ロール中の{{myproperty=<value>}}によってテンプレートに与えられる。 新しいプロパティを作成するには、テンプレートに追加し、固有の名前を付けるだけです。 ここでも、すべてのヘルパー関数との互換性を最大限に確保するため、スペースの使用は避けること。

ロジック

<property>}}の後に{{/<property>}}とすると、この2つのタグの間にあるすべての部分は、プロパティに値が含まれている場合のみ表示されます。 これは、あるテンプレートにいくつかの異なるパーツを提供する場合に便利である。 例えば、ダイスの「効果」の部分は呪文にのみ適用されることがあるので、ダイスに効果がない場合、その部分は表示されません。

また、{{^<property>}}の後に{{/<property>}}を続けることで、逆の意味にすることもできます--つまり、指定されたプロパティが存在しない場合にのみ、そのセクションを表示するということです。

ヘルパー機能

ロールを扱うヘルパー関数もいくつか用意されている。 これらは上記の通常のLogicパターンと同様に使用しますが、関数を呼び出し、プロパティを提供します。 タグの間に含まれるセクションは、関数がtrueと評価された場合にのみ表示される。

ヘルパー機能 セクションを表示
{{#rollWasCrit() <ロール名>}}. 提供されたロールにクリティカルが含まれていれば、その部分が表示される。 例えば {{#rollWasCrit() attack}}は、少なくとも1つのクリティカルロールを持つインラインロールの "attack" プロパティをチェックする。
{{#rollWasFumble() <ロール名>}}. rollWasCrit()と同じですが、ファンブル(出目が1かどうか)をチェックします。
{{#rollTotal() <ロール名>}}. インライン・ロールの合計値をチェックする。 一致すれば、そのセクションが表示される。 例えば {{#rollTotal() attack 10}}は、インラインロールの合計が10であった場合、"attack "プロパティをチェックする。
{{#rollGreater() <ロール名>}}. インライン・ロールの合計値をチェックする。 ロールの結果が大きければ、そのセクションが表示される。 例えば {{#rollGreater() AC 16}}は、インラインロールの結果が17以上であれば、"AC "プロパティをチェックする。
{{#rollLess() <rollname>}}. インライン・ロールの合計値をチェックする。 ロール結果が小さければ、そのセクションが表示される。 例えば {{#rollLess() deathsave 10}}は、インライン・ロールの結果が9以下であれば、"deathsave "プロパティをチェックする。
{{#rollBetween() <ロール名>}}. インライン・ロールの合計値をチェックする。 rollBetween()関数は2つの数値を受け取る。 ロールの結果が等しいか、またはその間の場合、そのセクションが表示される。 例えば {{#rollBetween() strength 7 9}}は、7、8、9のインライン・ロールを "strength "プロパティでチェックする。

注意:すべてのヘルパー関数は、プロパティ内で最初に見つかったインラインロールのみをチェックします。

重要:ヘルパー関数のセクションを "閉じる "ときは、すべての引数を含む関数呼び出し全体を置かなければならない。 例えば {{#rollWasCrit() attack}}{{/rollWasCrit()攻撃}}によってクローズされる。

以下は、攻撃ロールがクリティカルだった場合にのみクリティカル・ダメージのセクションを表示するロール・テンプレートの例である:

<div class="sheet-template-container">
		<div class="sheet-template-header">{{rollname}}</div>
		{{#attack}}<div class="sheet-template-row"><span>攻撃: </span>{{attack}}</div>{{/attack}}
		<div class="sheet-template-row">
			<span>ダメージ: </span>{{damage}} 
			{{#rollWasCrit() attack}}
				<span>クリティカル: </span>{{dmgcrit}}
			{{/rollWasCrit() attack}}.
		</div>
		<div class="sheet-template-row"><span>Type: </span>{{dmgtype}}</div>
   </div>

論理の逆転 

また、何かがロジックに合致しない場合にテストできるのも便利だ。 出目が合計と等しいか大きいかを知りたい場合、直接それを行うことはできない。 しかし、出目が合計より小さいかどうかをテストすることはできます。

始まり、/^で終わる。 そのテストはこんな感じだ:

{{#rollLess() attackroll }}
     <span>Roll Less Than attackroll! </span>
{{/rollLess() attackroll }} 攻撃ロール。
{{#^rollLess() attackroll }}
     <span>Roll NOT Less than attackroll!</span>
     <span>言い換えると、ロールはアタックロール以上です。</span>
{{/^rollLess() attackroll }} です。

ヘルパー関数変数

rollTotal()やrollBetween()など、数値を受け取るヘルパー関数はすべて、同じロールテンプレート内の別のインラインロールの結果を数値の代わりに使用できます。 例えば {{#rollGreater() save poison}}はセーブインラインロールの結果とポイズンインラインロールの結果を比較し、セーブの結果の方が大きければセクションを表示する。

特別なヘルパー関数: allProps()

allProps()と呼ばれる特別なヘルパー関数があり、これを使用すると、ロールに渡されたすべてのプロパティを、明示的に指定しなくても動的に一覧表示することができる。 無視するプロパティを指定することもできます。 例えば、以下は、「攻撃」プロパティを除く、ロールに含まれる各プロパティのテーブル行を持つテーブルを示す:

<div>
    <caption>{{name}}</caption>
    {{#allprops() attack}}
       <div>{{key}}</div><div>{{value}}</div>
    {{/allprops()攻撃}} {{/allprops()攻撃}}。
</div>

スタイリング・ロール・テンプレート

ロール・テンプレートをスタイルするには、キャラクター・シートのCSSにロール・テンプレート用のCSSを含めます。 この例では、ロールテンプレートの名前は "test "です):

.sheet-rolltemplate-test div.sheet-template-container {
	border:2px solid #000 !important;
	border-radius:3px 3px 3px;
}.

.sheet-rolltemplate-test .sheet-template-header {
	background-color: rgba(112, 32, 130,1);
	color:#000;
	padding:2px;
	border-bottom:1px solid black;
	line-height: 1.6em;
	font-size: 1.2em;
}.

.sheet-rolltemplate-test div {
	padding:5px;
	border-bottom:1px solid black;
}.

.sheet-rolltemplate-test div:nth-child(odd) {
	background-color: rgba(217, 217, 214,1);
}.

.sheet-rolltemplate-test div:nth-child(even) {
	background-color: rgba(233, 233, 233,1);
}.

.sheet-rolltemplate-test .inlinerollresult {
	display: inline-block;
	min-width: 1.5em;
	text-align: center;
	border:2px solid rgba(167, 168, 170,1);
}.

.sheet-rolltemplate-test .inlinerollresult.fullcrit {
	border:2px solid #3FB315;
}.

.sheet-rolltemplate-test .inlinerollresult.fullfail {
	border:2px solid #B31515;
}.

.sheet-rolltemplate-test .inlinerollresult.importantroll {
	border:2px solid #4A57ED;
}.

すべてのスタイルが".sheet-rolltemplate-<templatename>" で始まっていることに注目してください。 その後、独自のカスタムHTML(使用したテーブル、div、クラスなど)をスタイル設定できます。 ロール・テンプレートのレイアウトに含めるクラス(上記の例では「tcat」など)には、セキュリティ上の理由から「.userscript-」が先頭に追加されることに注意してください。 一番簡単なのは、レイアウトを作成し、ゲーム内でロールを実行し、結果のHTMLを検査することです。


ロールテンプレートの例

以下に、ロールテンプレート機能のシステム固有の例を示します。


ダンジョンズ&ドラゴンズ第5版


ロールテンプレート5e.png

マクロだ:

&{template:5eAttack} {{name=@{meleeweaponname1}}}{{subtags=Main Hand, Finess, @{meleedmgtype1}}}
{{attack=[[1d20+@{meleetohit1}]]}}。{{attackadv=[[1d20+@{meleetohit1}]]}}。
{{damage=[[@{meleedmg1}+@{meleedmgbonus1}]]}}{{dmgcrit=[[@{meleedmg1} ]]}}。

HTML:

<rolltemplate class="sheet-rolltemplate-5eAttack">
    <div class="container">
        <div><h1>{{name}}</h1></div>
        <div><span class="subheader">{{subtags}}</span></div>
        <div class="arrow-container"><div class="arrow-right"></div></div>
        <div class="rowcolor"><span class="tcat">Attack: </span>{{attack}} | {{attackadv}} vs AC</div>
        {{#damage}}
            <div>
                 <span class="tcat">ダメージ: </span>{{damage}} 
                 <span class="tcat">Crit: </span>{{dmgcrit}}
            </div>
        {{/damage}}
        {{#snkattk}}
            <div>
                 <span class="tcat">スニークアタック: </span>{{snkattk}} 
                 <span class="tcat">Crit: </span>{{snkcrit}}
            </div>
        {{/snkattk}}
    </div>
</rolltemplate>
CSSだ:
.sheet-rolltemplate-5eAttack .sheet-container {
    background-color:#
    border:1px solid;
    padding:2px;
    width: 189px;
}.

.sheet-rolltemplate-5eAttack .sheet-container h1 {
    color: rgb(126, 45, 64);
    font-size: 1.2em;
    font-variant: small-caps;
    line-height: 20px;
}.

.sheet-rolltemplate-5eAttack div {
    padding:2px;
};
 
.sheet-rolltemplate-5eAttack span {
    color: rgb(126, 45, 64);
    font-family:"Times New Roman", Times, serif;
    font-size: 1.2em;
    font-variant: small-caps;
    line-height: 1.6em;
    padding-left: 5px;
    text-align: left;
}.
 
.sheet-rolltemplate-5eAttack .sheet-subheader {
    color:#
    font-size: 1em;
    font-style: italic;
}.
 
.sheet-rolltemplate-5eAttack .sheet-arrow-right {
    border-bottom: 2px solid transparent;
    border-left: 180px solid rgb(126, 45, 64);
    border-top: 2px solid transparent;
}.
 
.sheet-rolltemplate-5eAttack .sheet-tcat {
    font-style: italic;
}.
 
.sheet-rolltemplate-5eAttack .inlinerollresult {
    background-color:#
    border: none;
}.
 
.sheet-rolltemplate-5eAttack .inlinerollresult.fullcrit {
    color:#
    border: none;
}.
 
.sheet-rolltemplate-5eAttack .inlinerollresult.fullfail {
    color:#
    border: none;
}.
 
.sheet-rolltemplate-5eAttack .inlinerollresult.importandivoll {
    color:#
    border: none;
}.

 


ダンジョンズ&ドラゴンズ3.5/パスファインダー


ロールテンプレート pf.png

マクロだ:

&{template:pf_spell} {{name=@{repeating_lvl-0-spells_0_name}}}{{school=@{repeating_lvl-0-spells_0_school}}} 
{{レベル=ソーサラー/ウィザード 0}}{{casting_time=@{repeating_lvl-0-spells_0_cast-time}}} 
{{components=@{repeating_lvl-0-spells_0_components}}} {{範囲=@ }}。{{range=@{repeating_lvl-0-spells_0_range}}} 
{{target=@{repeating_lvl-0-spells_0_targets}}} {{持続時間=@ }}。{{duration=@{repeating_lvl-0-spells_0_duration}}} 
{{saving_throw=@{repeating_lvl-0-spells_0_save}}} {{sr=@ }}{{sr=@{repeating_lvl-0-spells_0_sr}}} {{rng_attack=@ }}。 
{{rng_attack=[[1d20 + @{attk-ranged}]]}}{{damage=1d3([[1d3]])}} 
{{spell_description=@{repeating_lvl-0-spells_0_description}}} {{spell_description=@ }}

HTML:

<rolltemplate class="sheetrolltemplate-pf_spell">
    <table>
        <tr><th>{{name}}</th></tr>
        <tr>
            <td>
				<span class="tcat">School </span>{{school}}; 
				<span class="tcat">Level </span>{{level}}
			</td>        
        </tr>
        <tr>
            <td><span class="tcat">Casting Time </span>{{casting_time}}</td>        
        </tr>
        <tr>
            <td><span class="tcat">Components </span>{{components}}</td>        
        </tr>
        <tr>
            <td><span class="tcat">Range </span>{{range}}</td>        
        </tr>
        <tr>
            <td><span class="tcat">Effect/Target </span>{{target}}</td>        
        </tr>
        <tr>
            <td><span class="tcat">Duration </span>{{duration}}</td>        
        </tr>
        <tr>
            <td>
				<span class="tcat">Saving Throw </span>{{saving_throw}}; 
				<span class="tcat">Spell Resistance </span>{{sr}}
			</td>         
        </tr>
        {{#rng_attack}}
            <tr><td><span class="tcat">Ranged Attack </span>{{rng_attack}}</td></tr>
        {{/rng_attack}}
        {{#mel_attack}}
            <tr><td><span class="tcat">近接攻撃 </span>{{mel_attack}}</td></tr>
        {{/mel_attack}}
		{{#damage}}
			<tr><td><span class="tcat">ダメージ: </span>{{damage}}</td></tr>
		{{/damage}}
        <tr>
            <td>{{spell_description}}</td>        
        </tr>
    </table>
</rolltemplate>
CSSだ:
.sheet-rolltemplate-pf_spell table {
    width: 100%;
    padding:2px;
    background:url(http://i.imgur.com/BLb0XMU.jpg) top left repeat;
}.
 
.sheet-rolltemplate-pf_spell th {
	color: rgb(233, 223, 151);
    background-color: rgb(63, 32, 33);
    padding-left: 5px;
	line-height: 1.1em;
	font-size: 1em;
    text-align: left;
	font-family:"Arial", Helvetica, sans-serif;
    text-transform: uppercase;
}.
 
.sheet-rolltemplate-pf_spell .sheet-arrow-right {
    border-top: 3px solid transparent;
    border-bottom:3px solid transparent;
	border-left: 180px solid rgb(126, 45, 64);
}.
 
.sheet-rolltemplate-pf_spell .sheet-tcat {
    font-weight: bold;
}.
 
.sheet-rolltemplate-pf_spell td {
    padding-left: 5px;
    font-size: 0.9em;
}.
 
.sheet-rolltemplate-pf_spell .inlinerollresult {
    background-color: transparent;
    border: none;
}.
 
.sheet-rolltemplate-pf_spell .inlinerollresult.fullcrit {
	color:#
    border: none;
}.
 
.sheet-rolltemplate-pf_spell .inlinerollresult.fullfail {
	color:#
    border: none;
}.
 
.sheet-rolltemplate-pf_spell .inlinerollresult.importantroll {
	color:#
    border: none;
}.

闇の世界


ロールテンプレート wod.png

マクロだ:

&{template:wod} {{name=@{character_name}}}{{roll_name=Command}} 
{attr=知能}}です。{{attr_num=@{intelligence}}}{{skill=威嚇}} {{skill_num=威嚇}}。 
{{skill_num=@{intimidation}}} {{skill=Intimidation}} {{skill_num=@ }}{{pwr=Dominate}} {{pwr_num=@ }}。{{pwr_num=@{dominate}}} です。{{mod_num=?{Modifiers|0}}} 
{{result=[[{(@{intelligence}+@{intimidation}+@{dominate}+?{Modifiers|0})d10! }>8]]}} {{result=[[{(@ +@ +@ +? )d10!

HTML:

<ロールテンプレート class="sheet-rolltemplate-wod">
    <table>
        <tr><th>{{name}} rolls{{#roll_name}} {{roll_name}}{{/roll_name}}</th></tr>
        <tr><td class="attr">
            {{#attr}}
                {{attr}}({{attr_num}})
            {{/attr}}
            {{#skill}}
                 + {{skill}}({{skill_num}})
            {{/skill}}
		    {{#pwr}}
		    	 + {{pwr}}({{pwr_num}})
		    {{/pwr}}
            {{#mod_num}}
                 + Modifiers({{mod_num}})
            {{/mod_num}}
        </td></tr>
        <tr>
            <td class="result">{{result}} 成功</td>        
        </tr>
    </table>
</rolltemplate>
CSSだ:
.sheet-rolltemplate-wod table {
    width: 189px;
    height: 189px;
    padding:2px;
    background: url(http://i.imgur.com/xBk4U1p.jpg) top left;
    background-size: 189px 189px;
    background-repeat: no-repeat;
    font-family:"Courier New", Courier, monospace;
    font-weight: bold;
    border-spacing:0;
}.
 
.sheet-rolltemplate-wod th {
	color: rgb(112, 0, 0);
    padding:15px 2px 20px;
	line-height: 1.2em;
	font-size: 1.2em;
    text-align: left;
}.
 
 
.sheet-rolltemplate-wod td {
    padding-left: 20px;
    font-size: 1.0em;
    vertical-align: top;
}.
 
.sheet-rolltemplate-wod .sheet-result {
    font-size: 1.2em;
    text-align: center;
    color: rgb(112, 0, 0);
    padding-bottom: 20px;
}.
 
.sheet-rolltemplate-wod .inlinerollresult {
    background-color: transparent;
    color:#
    border: none;
}.
 
.sheet-rolltemplate-wod .inlinerollresult.fullcrit {
   color:#
    border: none;
}.
 
.sheet-rolltemplate-wod .inlinerollresult.fullfail {
    color:#000000;
    border: none;
}.
 
.sheet-rolltemplate-wod .inlinerollresult.importantroll {
	color:#
    border: none;
}.
この記事は役に立ちましたか?
185人中120人がこの記事が役に立ったと言っています