-
-
Notifications
You must be signed in to change notification settings - Fork 68
SpespeTime_Reference
rev36
タイムライン制御
-
属性
- name
- inherits
- time
- text
- sync
- sync-s
- sync-e
- goto
- call
- notice
- notice-d
- notice-o
- notice-vol
- notice-sync
- style
- icon
- enable
-
属性
-
name
-
inherits
-
no
-
text
-
sync
-
sync-count
-
sync-interval
-
goto
-
call
-
notice
- auto
-
notice-d
-
notice-o
-
notice-vol
-
notice-sync
-
exec
-
args
-
exec-hidden
-
enabled
-
属性
- target
- truncate
- enabled
-
属性
- inherits
- text
- duration
- duration-visible
- delay
- stack-visible
- sync-to-hide
- order
- style
- icon
- job-icon
- enabled
-
属性
- inherits
- image
- duration
- delay
- sync-to-hide
- scale
- left
- top
- enabled
-
属性
-
interval
-
enabled
-
属性
- name
- x,y,z
- tolerance
- enabled
-
dump
-
-
-
属性
-
子要素
-
name
-
enabled
-
属性
- source
- enabled
-
-
属性
- enum
- target-element
- target-attr
- value
- enabled
Razorの構文
Ξ 改訂履歴 Ξ
ルート要素
<timeline>
string, 任意項目
タイムラインを識別するための名前。オーバーレイや管理画面に表示しタイムラインを識別する。
<name>スペスペたいむの説明書</name>
string, 任意項目
動作には一切影響がない項目。ファイルの識別用にリビジョンと詳細説明、作者を記述できる。それぞれ設定画面で表示される。作者はイニシャルでも偽名でもよいので何かしら識別出来る情報を記載することを薦める。
<rev>rev1</rev>
<description>
スペスペたいむの定義ファイルの説明書です。
これ自体をタイムラインとして使用することは出来ません。
ファイルに書かれたコメントを定義ファイル作成時の参考としてください。
</description>
<author>anoyetta</author>
<!-- コピーライトを明記する場合 -->
<author>(c)anoyetta</author>
<!-- 改変によって複数人の作者が存在する場合 -->
<author>
anoyetta
Taro Yamada
Naoki Yoshida
and my friends...
</author>
string, 任意項目
動作には一切影響がない項目。このファイルに適用されたライセンスを記述する。
ライセンスにこだわらない場合は クリエイティブ・コモンズ 表示 - 継承 (CC BY-SA) を適用することを薦める。
- 自由に使用して良い
- 改変物を作成、配布した場合でも元の作者をクレジットしなければならない
- 改変物にもこのライセンスが継承される
いわゆる完全に著作権フリーとする場合は パブリックドメイン (Public Domain) の扱いとなる。この場合も Public Domain と明記することを薦める。全く記載がない場合は通常の著作権の適用となるためパブリックドメインよりも制限が厳しくなる。
<!-- クリエイティブ・コモンズ 表示 - 継承 の例 -->
<license>CC BY-SA</license>
<!-- パブリック・ドメイン の例 -->
<license>Public Domain</license>
string, 任意項目
このタイムラインが自動的にロードされるゾーン名。 FFXIV_ACT_Plugin が識別する CurrentZoneName と一致させる必要があるため英語で指定する。
<!-- 極白虎の例 -->
<zone>The Jade Stoa</zone>
{GLOBAL}
と指定した場合は全てのゾーンで動作する。ただし、全てのゾーンで動作するのはトリガのみであり、一部のトリガをゾーンに依存せず汎用的に使用するための指定。
enum, 任意項目
JA, EN, FR, DE, KO
このタイムライン定義がどのロケール向けに作られているのかを識別する。 ゾーンと合わせて自動ロードの条件に含まれる。 スペスペで設定しているゲームのロケールとタイムラインファイルのロケール、FFXIVプラグインの現在ゾーン名とタイムラインファイルのゾーンのが一致した場合にタイムラインがロードされる。
<locale>JA</locale>
string, 任意項目
最初にロードするサブルーチンを指定する。 指定しない場合はtimeline直下の <a> タグを読み込む。 指定した場合はtimeline直下の <a> タグは無視され、指定されたサブルーチンを初期アクティビティラインとして読み込む。
<entry>メインフェーズ</entry>
string(RegEx), 任意項目
通常では「戦闘開始まで5秒前!」を検知してから4.8秒後にタイムラインをスタートする。 この <start> タグに任意のログを指定するとそのログを検知したときに即時スタートする。<start> タグの指定がある場合は前述の「戦闘開始まで5秒前!」による自動スタートは無効になる。
例) シグマ零式2層
<start>こいつは久しぶりに良い絵だわい……。 誰にも邪魔はさせんぞ!!</start>
<a time="00:06" text="風雷波動" notice="次は、風雷波動。" />
Activityを示すタイムラインの主な定義要素。
string, 任意項目
このアクティビティの識別子。gotoやcallで指定するために使用する。
string, 任意項目
この属性で指定された name のアクティビティの各属性を継承する。
TimeSpan, アクティビティの発生時刻を示す。
mm:ss形式, s形式 どちらで書いてもよい。
string, 任意項目
オーバーレイに表示するアクティビティの表示テキスト。textを省略すると同期のみ、通知のみに使用されオーバーレイには表示されない。
\n で文字列中の改行を示す。
- sync 正規表現結果による置換 : 有効
- 変数よる置換 : 有効
string(RegEx), 任意項目
タイムラインの時間経過を強制的にこのアクティビティの時刻に合わせるためのログマッチングキーワード。ここに指定されたパターンとログがマッチしたときタイムラインの現在時刻をこのアクティビティの時刻に合わせる。正規表現が使える。
スペル・テロップと同様に各種プレースホルダが使用できるが<>をエスケープしなければらないため、プレースホルダを囲む記号を [] に置き換えている。
例)
<me> は タイムライン定義のsync内で使用する場合は [me] と記述する。
double, 任意項目, 既定値-12
syncマッチングを開始する時間のオフセット秒数。このアクティビティの12秒前から同期マッチングを開始する。
double, 任意項目, 既定値12
syncマッチングを終了する時間のオフセット秒数。このアクティビティの12秒後まで同期マッチングを継続する。
string, 任意項目
このアクティビティの時刻が到来したときにここで指定されたnameのアクティビティ、サブルーチンにジャンプする。
string, 任意項目
このアクティビティの時刻が到来したときにここで指定されたnameのサブルーチンをコールする。
string, 任意項目
このアクティビティの時刻が到来したときに通知を行う。waveファイルを指定した場合はwaveを再生する。その他の文字列の場合はTTSとして発声する。
- sync 正規表現結果による置換 : 有効
- 変数よる置換 : 有効
enum, 任意項目, 既定値Both
通知を再生するデバイスを指定します。TTSYukkuriでのメインデバイス、サブデバイスの設定に準ずる。
- Both : 普通の設定。デバイスを指定せず、TTSYukkuriでメイン、サブ両方を定義している場合両方で再生する。
- Main : TTSYukkuriで定義されたメインデバイスでのみ再生する。
- Sub : TTSYukkuriで定義されたサブデバイスでのみ再生する。
double, 任意項目, 既定値-6
通知発生させる時間的オフセット秒数。既定値ではアクティビティの時刻が到来する6秒前に通知する。
float, 任意項目, 既定値1.0
サウンド通知の音量を指定する。0.0(ミュート)~ 1.0 で指定する。
bool, 任意項目, 既定値false
サウンドを同期再生する。true に指定された通知同士は同時再生されずに順次再生されるようになる。
string, 任意項目
設定UIで定義したStyleを割り当てる。指定しない場合は規定のStyleが割当てられる。
string, 任意項目
Styleのicon属性を上書きする。アイコンのファイル名を指定するとStyle定義よりも優先してこの属性のアイコンを表示する。アイコンの表示サイズはStyleのアイコンサイズに依存する。
<a time="00:01" text="マーカ" icon="マーカー.png" />
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
<t text="天雷掌" sync="白虎は「天雷掌」の構え。" notice="天雷掌" goto="フェーズ1" />
タイムラインの実行中に常駐するトリガ。通知に使用したりランダムなフェーズ展開を追尾したりという用途で使用する。
string, 任意項目
このトリガの識別子。
string, 任意項目
この属性で指定された name のトリガの各属性を継承する。
int, 任意項目, 既定値0
判定の順序を指定する。複数のトリガは no属性 でソートされた後に判定される。
string, 任意項目
トリガはオーバーレイには表示されないがログには出力される。そのときに出力されるtext。\n で文字列中の改行を示す。
- sync 正規表現結果による置換 : 有効
- 変数よる置換 : 有効
string(RegEx)
このトリガのマッチングパターン
int, 任意項目, 既定値0
何回目のマッチングでこのトリガを実行するか?
0ならば、毎回のマッチングでトリガを実行する。
1ならば、1回目のマッチング時のみトリガを実行する。
2ならば、2回目のマッチング時のみトリガを実行する。
という仕組み。
int, 任意項目, 既定値0
最後マッチしてから次にマッチするまでの秒数を設定する。0ならば間隔を考慮せず毎回判定する。
string, 任意項目
このトリガにマッチしたときにここで指定されたnameのアクティビティ、サブルーチンにジャンプする。
string, 任意項目
このアクティビティの時刻が到来したときにここで指定されたnameのサブルーチンをコールする。
string, 任意項目
このトリガにマッチしたときに通知を行う。waveファイルを指定した場合はwaveを再生する。その他の文字列の場合はTTSとして発声する。
- sync 正規表現結果による置換 : 有効
- 変数よる置換 : 有効
notice="auto" と指定すると通知メッセージを自動生成して通知する。
<a text="デスセンテンス" notice="auto" notice-o="-6" />
この場合「デスセンテンス まで、あと6秒。」という通知文を自動生成する。
enum, 任意項目, 既定値Both
通知を再生するデバイスを指定します。TTSYukkuriでのメインデバイス、サブデバイスの設定に準ずる。
- Both : 普通の設定。デバイスを指定せず、TTSYukkuriでメイン、サブ両方を定義している場合両方で再生する。
- Main : TTSYukkuriで定義されたメインデバイスでのみ再生する。
- Sub : TTSYukkuriで定義されたサブデバイスでのみ再生する。
double, 任意項目, 既定値0
サウンド通知を発生させる遅延秒数を指定する。他の要素との属性名の統一のため notice-o としているが、実質はサウンド通知に対する delay として動作する。
このオフセット値はサウンド通知にのみ影響し、配下のv-notice, i-noticeには影響を与えない。v-notice, i-notice の表示を遅延させたい場合はそれぞれの要素に搭載された delay 属性によって指定する。
float, 任意項目, 既定値1.0 サウンド通知の音量を指定する。0.0(ミュート)~ 1.0 で指定する。
bool, 任意項目, 既定値false サウンドを同期再生する。true に指定された通知同士は同時再生されずに順次再生されるようになる。
string, 任意項目, 既定値null
このトリガにマッチしたときに指定されたパスを起動する。実行時の作業フォルダは timeline フォルダとなる。
URIを記載した場合はREST APIとみなしてAPIをコールする。
ex. "http://localhost:1334/place"
上記URIをGETで呼び出す
ex. "GET http://localhost:1334/place/1"
上記URIをGETで呼び出す
ex. "POST http://localhost:1334/place"
上記URIをPOSTで呼び出す
ex. "PUT http://localhost:1334/place/1"
上記URIをPUTで呼び出す
ex. "DELETE http://localhost:1334/place/1"
上記URIをDELETEで呼び出す
URIにはプレースホルダを使用できる。プレースホルダは実際の値に置換されURIエンコードされる。POST, PUTメソッドのときのペイロードは trigger タグの配下に <json></json>
タグで定義する。
コマンドの冒頭に /wait [duration]
を付与すると duration 秒遅延させてコマンドを実行する。
ex. exec="/wait 5.5 notepad.exe"
トリガの条件を満たしてから5.5秒後にメモ帳を起動する。
string, 任意項目, 既定値null
exec で指示されたアプリケーションに渡されるコマンドライン引数を指定する。
bool, 任意項目, 既定値false
exec で起動するアプリケーションの Window を非表示にする。対象のアプリケーションによっては効かない場合もある。
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
<t name="to Phase1" sync="オオオオオ……この衝動、もはや止められん!">
<load target="フェーズ1" truncate="true" />
<load target="フェーズ2" />
<load target="最終フェーズ" />
</t>
トリガの子要素として使用する。トリガの条件に合致したときに指定したサブルーチンのアクティビティを現在のアクティビティラインの最後尾に追加する。
string, 任意項目
追加するサブルーチンの名前
bool, 任意項目, 既定値false
追加するときに現在のアクティビティラインをすべて消去してから追加するか否か。消去した場合は強制的に現在のアクティビティが追加されるサブルーチンの冒頭のアクティビティに変わる。
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
<t name="to Phase1" sync="オオオオオ……この衝動、もはや止められん!">
<v-notice text="おおおお!" />
</t>
トリガにヒットしたときに専用のオーバーレイに通知メッセージを表示する。アクティビティ(aタグ)配下でも同様に使用できる。
string, 任意項目
この属性で指定された name のv-noticeの各属性を継承する。
string, 任意項目, 既定値{text}
通知オーバーレイに表示するテキスト。{text}
を指定すると親トリガのtext属性を参照する。{notice}
を指定するうと親トリガのnotice属性を参照する。\n で文字列中の改行を示す。
- sync 正規表現結果による置換 : 有効
- 変数よる置換 : 有効
int, 任意項目, 既定値3
通知を表示する時間
bool, 任意項目, 既定値true
durationを通知オーバーレイに表示するか否か。
double, 任意項目, 既定値0
表示までの遅延秒数
bool, 任意項目, 既定値false
重複ヒット数を通知にオーバーレイに表示するか否か。当該通知の表示中に同じテキストの通知の表示条件を満たしたとき stack 数を加算する。その stack 数を表示する。
string, 任意項目
このキーワードにマッチしたとき残り時間を無視してこの視覚通知を非表示にする。親トリガの正規表現Matchオブジェクトによる置換を使用できる。テロップの非表示機能やスペルのマイナス延長と同等の機能。
<!-- シグマ零式3層のエーテルロットの例 -->
<t text="エーテルロット\n ➜ ${_pc}" sync="[pc]に「エーテルロット」の効果。">
<v-notice
duration="15"
sync-to-hide="${_pc}の「エーテルロット」が切れた。"
order="-3"
icon="Virus.png" />
</t>
現在エーテルロットを持っている人のカウントのみを視覚通知に表示する。エーテルロットが別の人に渡ったときに前の人の効果が切れるためそれを検知して前の人の表示を消す。
int, 任意項目, 既定値0
通知オーバーレイ内の表示順序
string, 任意項目
設定UIで定義したStyleを割り当てる。指定しない場合は規定のStyleが割当てられる。
string, 任意項目
Styleのicon属性を上書きする。アイコンのファイル名を指定するとStyle定義よりも優先してこの属性のアイコンを表示する。アイコンの表示サイズはStyleのアイコンサイズに依存する。
bool, 任意項目, 既定値false
Styleのicon属性を上書きし、triggerのキャプチャーグループに含まれるキャラのジョブアイコンを表示する。複数キャラをキャプチャーしていた場合は最後のキャラのジョブアイコンを表示する。
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
<t name="to Phase1" sync="オオオオオ……この衝動、もはや止められん!">
<i-notice
image="Sample.png"
duration="5"
scale="1.0"
left="500"
top="100" />
</t>
トリガにヒットしたときに専用のオーバーレイに画像を表示する。アクティビティ(aタグ)配下でも同様に使用できる。
string, 任意項目
この属性で指定された name のi-noticeの各属性を継承する。
string, 必須項目
通知オーバーレイに表示するイメージファイル。resources\images
配下のフォルダに配置された png イメージを検索して表示する。よってファイル名のみの指定で良い。フルパスで指定した場合は前述のフォルダ以外の場所のファイルも表示できる。
int, 任意項目, 既定値5
通知を表示する時間
double, 任意項目, 既定値0
表示までの遅延秒数
string, 任意項目
v-notice タグと同様。
double, 任意項目, 既定値1.0
画像の拡大率。画像の縮尺/伸尺を変える場合は指定する。
int, 任意項目, 既定値-1
画像の表示位置。left, top ともに指定しない場合はウィンドウ中央に表示される。
int, 任意項目, 既定値-1
画像の表示位置。left, top ともに指定しない場合はウィンドウ中央に表示される。
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
<t text="楔がポップ!">
<p-sync interval="30">
<combatant name="炎の楔" X="21.5" Y="21.5" Z="0" tolerance="0.01" />
<combatant name="炎の楔" X="30.0" Y="40.0" Z="0" tolerance="0.01" />
<combatant name="炎の楔" X="50.0" Y="60.0" Z="0" tolerance="0.01" />
<combatant name="炎の楔" X="70.0" Y="80.0" Z="0" tolerance="0.01" />
</p-sync>
<v-notice
duration="5"
duration-visible="false"
style="NOTICE_NORMAL"
icon="Marker.png" />
<i-notice
image="フォーメーションA.png"
duration="5"
scale="1.0"
left="500"
top="100" />
</t>
トリガの判定を拡張する。子要素で定義する combatant の座標をすべて満たしたときにトリガを起動する。もっぱらオブジェクトや敵の配置に対して決まった移動やフォーメーションを通知するために使用する。
p-sync に合致したとき通知用の text 属性を動的に置換する代名詞を使用できる。
{nameN} : N番目の combatant の実際の名前で置換する。
{XN} : N番目の combatant の実際のX座標で置換する。
{YN} : N番目の combatant の実際のY座標で置換する。
{ZN} : N番目の combatant の実際のZ座標で置換する。
<t text="{name1}\nX{X1}\nY{Y1}\nZ{Z1}">
<p-sync>
<combatant name="Me Taro" X="21.5" Y="21.5" />
<combatant name="Warrior Jiro" X="30.5" Y="40.5" />
</p-sync>
この場合、text は
Me Taro
X21.5
Y21.5
Z[実際の値]
となる。
* ZはMe Taroが実際にいた場所のZ座標が表示される
double, 任意項目, 既定値30
最後に合致してから再度判定を行うまでの間隔。
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
p-syncの条件となる combatant の座標を定義する。
string(RegEx), 必須項目
対象とする combatant の名前。正規表現であるため完全一致で判定する場合は文頭と文末を指定すること。
"^Naoki Yoshida$"
float, 任意項目
combatant の座標。省略した場合は該当の座標軸を判定対象としない。
float, 任意項目, 既定値0.01
座標の判定誤差。座標は完全一致ではなく多少を誤差を許容して判定する。その判定誤差を指定する。
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
トリガの動作を拡張する。このトリガが実行されるときに周囲の全ての Combatant の座標をログに出力する。a タグの配下でも使用できる。
<!-- 1回目 横回転の定義 -->
<t text="横回転" sync="^15:[id8]:ミドガルズオルム:31C7" notice="横回転。">
<expressions>
<set name="take1_yoko" value="true" />
</expressions>
</t>
<!-- 2回目 横回転の定義 -->
<t text="横回転 ➔離れる" sync="^15:[id8]:ミドガルズオルム:31C9" notice="横回転、離れる。">
<expressions>
<pre name="take1_yoko" value="true" />
</expressions>
</t>
トリガの判定を拡張する。子要素で定義する pre の条件式をすべて満たしたときにトリガを実行する。
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
条件式
string, 必須項目
変数の名前
object, 任意項目, 既定値true
変数を判定する期待値。
- sync 正規表現結果による置換 : 有効
- 変数よる置換 : 有効
ex. <pre name="flag1" value="true">
の場合、下記の条件式と同等の動作となる
if (flag1 == true)
{
トリガを実行する
}
ex. <pre name="flag2" value="false">
の場合
if (flag1 == false)
{
トリガを実行する
}
変数の値を期待値として使用できる。
変数の場合
VAR['変数名']
<!-- フラグAとフラグBが一致するか? -->
<pre name="flagA" value="VAR['flagB']" />
テーブルの場合
TABLE['テーブル名'][インデックス]['フィールド名']
<!-- hogeテーブルの1レコード目のジョブが学者か? -->
<pre name="TABLE['hoge'][0]['job']" value="SCH" />
int?, 任意項目, 既定値null
変数を数値として評価する。一致の場合に真, 不一致の場合に偽 として扱われる。value 属性と同時には使用できない。
変数に値を格納する
string, 必須項目
変数の名前
object, 任意項目, 既定値true
変数に格納する値。bool, int, double, string など任意の変数型を使用できる。
- sync 正規表現結果による置換 : 有効
- 変数よる置換 : 有効
bool, 任意項目, 既定値false
フラグに対してトグル操作を行う。toggle="true"
のとき value は無視される。
string, 任意項目, 既定値null
変数をカウンタとして操作する。
"+1" : 1加算する
"-1" : 1減算する
"1" : 1で初期化する(1を代入する)
value 属性と同時には使用できない。
double, 任意項目, 既定値-1 (無限大)
変数の有効期限、秒数で指定する。ttl="30"
とした場合、30秒経過後にはこの変数は false として扱われる。count 属性を使用した場合はTLLの概念は適用されない。
テーブル生成しデータを格納する。テーブルのフィールドにはキーを設定できる。レコードはキーによって昇順ソートされて格納される。
テーブルの操作は table タグの子要素としてJSONで記述する。JSON文字列は変数や正規表現による置換を使用できる。
- sync 正規表現結果による置換 : 有効
- 変数よる置換 : 有効
Insert
{
"method" : "Insert",
"table" : "TEST",
"cols" : [
{
"name" : "id",
"val" : "0002",
"key" : "true"
},
{
"name" : "job",
"val" : "SCH",
}
]
}
Update
{
"method" : "Update",
"table" : "TEST",
"cols" : [
{
"name" : "id",
"val" : "0002",
"key" : "true"
},
{
"name" : "job",
"val" : "WHM",
}
]
}
Delete
{
"method" : "Delete",
"table" : "TEST",
"cols" : [
{
"name" : "id",
"val" : "0002",
"key" : "true"
},
]
}
テーブルに対するメソッドを指定する。
Insert, Update, Delete
Insert と Update は実質的に同じ処理を行う。キーが重複するレコードが存在しなければ追加し、キーに該当するレコードが存在する場合はそのレコードを更新する。
テーブルの名前
レコードとして格納するフィールドの配列
name
: フィールド名
val
: 格納する値
key
: (任意)このフィールドをキーとするか?
<a time="10" text="テーブルセット1">
<expressions>
<table>
{
"method" : "Insert",
"table" : "TEST",
"cols" : [
{
"name" : "id",
"val" : "0002",
"key" : "true"
},
{
"name" : "job",
"val" : "SCH",
}
]
}
</table>
<table>
{
"method" : "Insert",
"table" : "TEST",
"cols" : [
{
"name" : "id",
"val" : "0001",
"key" : "true"
},
{
"name" : "job",
"val" : "WHM",
}
]
}
</table>
</expressions>
</a>
<a time="15" text="1行目が白魔道士です" notice-o="0">
<expressions>
<pre name="TABLE['TEST'][0]['job']" value="WHM" />
</expressions>
<v-notice
text="テーブル変数は TABLE['TEST'][0]['job'] です。"
duration="2"
duration-visible="false" />
</a>
<a time="18" text="2行目が学者です" notice-o="0">
<expressions>
<pre name="TABLE['TEST'][1]['job']" value="SCH" />
</expressions>
<v-notice
text="テーブル変数は TABLE['TEST'][1]['job'] です。"
duration="2"
duration-visible="false" />
</a>
<s name="メインフェーズ">
<a time="00:29" text="乾坤一擲" notice="次は、乾坤一擲。" />
<a time="00:37" text="呪縛雷" notice="次は、呪縛雷。" />
<a time="00:06" text="風雷波動" notice="次は、風雷波動。" />
<t sync="Added New Combatant 白帝" goto="フェーズ3" />
</s>
アクティビティのブロックを定義するサブルーチンを定義する。s タグの子要素がサブルーチンとして機能する。サブルーチン内の時刻はサブルーチンの開始時からのオフセットで定義すること。
<a> : サブルーチン内部のタイムラインを定義する。時間はサブルーチン開始時点からのオフセットで定義する。
<t> : サブルーチン内部でのみ稼働するトリガを定義する。
<import> : 後述
string
このサブルーチンの名前および識別子。goto, callのターゲットとなる。またこのサブルーチンの実行中はそのサブルーチン名がオーバーレイに表示される。
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
<s name="トリガ定義">
<t sync="starts using パンチ" notice="パンチ!" />
<t sync="starts using キック" notice="キック!" />
</s>
<s name="フェーズ2">
<import source="トリガ定義" />
<a time="00:15" text="パンチ" notice="次は、パンチ。" />
<a time="00:21" text="キック" notice="次は、キック。" />
<a time="00:28" text="アルテマ" notice="次は、アルテマ。" />
</s>
s タグ配下でのみ使用できる。source で指定されたサブルーチンからトリガだけをインポートする。
string
トリガのインポート元のサブルーチン名(name)を指定する。
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
各要素, 属性に規定値を設定する。無効な要素名, 属性。特にキャストできない型の値を設定した場合はエラーになる。ログをよく確認すること。
enum
規定値を設定する要素を指定する
- Activity : a タグ(アクティビティ)に対して適用する
- Trigger : t タグ(トリガ)に対して適用する
- Subroutine : s タグ(サブルーチン)に対して適用する
- Load : load タグ(ロード)に対して適用する
- VisualNotice : v-notice タグ(視覚通知)に対して適用する
- ImageNotice : i-notice タグ(画像通知)に対して適用する
- PositionSync : p-sync タグ(座標トリガ)に対して適用する
- Combatant : combatant タグ(座標定義)に対して適用する
string
既定値を設定する属性を指定する。
<default
target-element="Activity"
target-attr="notice-o"
value="-3" />
アクティビティの規定の通知時刻オフセットを-3秒にする。
object
設定する既定値。キャストできないとエラーになるので注意すること。defaultを使用した場合はロード時にログを確認してエラーがないことを確認するのが望ましい。
bool, 任意項目, 既定値true
このエレメントが有効か無効か。無効な場合はコメントと同じ扱いになる。
Razor 構文を使用できる。詳細は下記のリファレンスを参照のこと。
Razor の構文リファレンス - MSDN
Razor のパーサには、定義ファイルのロード時点の情報をデータモデルとして渡している。データモデルの内容は下記のとおり。
LT : @(data.LT)
ET : @(data.ET)
Zone : @(data.Zone)
ZoneID : @(data.ZoneID)
Locale : @(data.Locale)
Player.Number : @(data.Player.Number)
Player.Name : @(data.Player.Name)
Player.Job : @(data.Player.Job)
Player.Role : @(data.Player.Role)
Party :
Party[0].Number : @(data.Party[0].Number)
Party[0].Name : @(data.Party[0].Name)
Party[0].Job : @(data.Party[0].Job)
Party[0].Role : @(data.Party[0].Role)
Party[1].Number : @(data.Party[1].Number)
Party[1].Name : @(data.Party[1].Name)
Party[1].Job : @(data.Party[1].Job)
Party[1].Role : @(data.Party[1].Role)
Party[2].Number : @(data.Party[2].Number)
Party[2].Name : @(data.Party[2].Name)
Party[2].Job : @(data.Party[2].Job)
Party[2].Role : @(data.Party[2].Role)
Party[3].Number : @(data.Party[3].Number)
Party[3].Name : @(data.Party[3].Name)
Party[3].Job : @(data.Party[3].Job)
Party[3].Role : @(data.Party[3].Role)
Party[4...8] more...
Locale :
FFXIV Game Locale
JA, EN, FR, DE, KO
Job : PLD, WAR, DRK, WHM, SCH, AST...
Role : Tank, Healer, MeleeDPS, RangeDPS, MagicDPS, Crafter, Gatherer
if (Model.Zone == "Sigmascape")
if (Model.ZoneID == 123)
と通常の条件式を使用してもよいが判定用のメソッドも提供されている。
bool Model.InZone(param string[] zones)
現在のゾーンが引数で与えられたゾーンのリストのいずれかに該当するかを返す。大文字/小文字は識別しない。現在のゾーン名に引数のゾーン名が含まれるとき、真を返す。
bool Model.InZone(param int[] zoneIDs)
現在のゾーンが引数で与えられたゾーンIDのリストのいずれかに該当するかを返す。
Zone と同様に専用の判定メソッドが提供されている。
bool Model.Player.InJob(param string[] jobs)
プレイヤーのジョブが引数で与えられたジョブのリストのいずれかに該当するかを返す。大文字/小文字は識別しない。現在のジョブに引数のジョブが含まれるとき、真を返す。
// 使用例
if (Model.Player.InJob("PLD", "WAR", "DRK")) {
do something...
}
Zone と同様に専用の判定メソッドが提供されている。
bool Model.Player.InRole(param string[] jobs)
プレイヤーのロールが引数で与えられたロールのリストのいずれかに該当するかを返す。大文字/小文字は識別しない。現在のロールに引数のロールが含まれるとき、真を返す。
// 使用例
if (Model.Player.InRole("Tank")) {
do something...
}
if (Model.Player.InRole("Healer")) {
do something...
}
if (Model.Player.InRole("DPS")) {
do something...
}
if (Model.Player.InRole("MeleeDPS")) {
do something...
}
dynamic Model.ParseJsonFile(string file)
JSON ファイルを読み込みます。パスは timeline フォルダからの相対パスまたは絶対パスで指定します。
string Model.Include(string file)
指定したファイルを読み込みその内容を返す。パスは timeline フォルダからの相対パスまたは絶対パスで指定します。
model.Var["変数名"]
// 使用例
if (modeel.Var["TANK_ROLE"] == "MT")
{
// Do somthing...
}
VAR['TANK_ROLE']
<a time="10" text="フルイドスイング" notice="VAR['TANK_ROLE']に痛い攻撃" />
/// <summary>
/// 環境変数をセットする
/// </summary>
/// <remarks>
/// 環境変数をセットする。
/// 通常スコープの場合はゾーンチェンジに消去される。
/// グローバルスコープの場合はアプリケーションの実行中、常に保持される。</remarks>
/// <param name="name">変数名</param>
/// <param name="value">値</param>
/// <param name="global">グローバルスコープか?</param>
model.SetVar(string name, object value, bool global = false)
/// <summary>
/// 一時変数をセットする
/// </summary>
/// <remarks>
/// タイムラインのリセット時に消去される一時変数をセットする</remarks>
/// <param name="name">変数名</param>
/// <param name="value">値</param>
model.SetTemp(string name, object value)
- 目次を追加した
- dump タグの説明を追加した
- table タグの説明を追加した
- table タグを追加した
- 変数値による置換の説明を追加した
- trigger に exec に起動にディレイをかける /wait 構文を追加した
- trigger に notice-o 属性を追加した
- v-notice, i-notice に表示を遅延させる delay 属性を追加した
- trigger から REST API を呼び出せるようにした
- 共通属性として他の要素の属性を継承する inherits 属性を追加した
- trigger 再度判定するまでの間隔を指定する属性 sync-interval を追加した
- trigger に外部ツールを起動する属性 exec, args, exec-hidden を追加した
- 環境変数に関する Razor モデルメンバを追加した
- pre, set タグの value の型を object 型に変更した
- import タグを追加した
- Razorモデルに Include メソッドを追加した
-
a タグ, t タグにサウンド通知の音量を個別に指定できる notice-vol 属性を追加した
otice-vol="1.0"
0.0 - 1.0 max, default 1.0 -
a タグ, t タグにサウンドを同期再生する notice-sync 属性を追加した
notice-sync="true"
bool, default false
- 環境変数の説明を追加した
- ユーザの拡大、作者の増加に伴って author タグ, license タグを追加した
- set タグ, pre タグ に数値を扱う count 属性を追加した
set count="+1" で加算, pre count="1" で評価を行う。 - t タグに判定の順序を規定する no属性 を追加した
- set タグにトグル操作を行う toggle 属性を追加した
- t タグの判定を拡張する expressions タグを追加した 判定結果をフラグとして変数に格納し後の判定条件として使用できるようにした。
- v-notice にジョブアイコンを自動的に表示する job-icon 属性を追加した
job-icon="true" で事前の正規表現によるキャプチャーグループ中の最後のキャラのジョブのジョブアイコンを表示する。
- p-sync の combatant の name を単純な完全一致による文字列比較から正規表現に変更した
- t タグの配下に Combatants の座標情報とマッチングする p-sync タグを追加した
- default タグが対象とするエレメントの説明を追加した
- v-notice タグにスタック数(重複ヒット数)を表示する stack-visible 属性を追加した
- v-notice タグに強制的に非表示にする sync-to-hide 属性を追加した
- i-notice タグに強制的に非表示にする sync-to-hide 属性を追加した
- a タグ配下で v-notice を使用できるようにした
- a タグ配下で i-notice を使用できるようにした
- イメージを表示する i-notice タグを t タグの小要素として追加した。
- JSON を読み込むメソッドを追加した
- Include の説明を削除した
従来どおり Include は使用できますが、積極的に使うものではなくなったため説明を削除した。
- 各種判定メソッドを用意した。
InZone, InJob, InRole - Include を Razor ネイティブの方式に変えた
- データモデルへのアクセス例の記述を変えた
キャストしてからアクセスするようにした。以前の書き方でも問題なく動くが dynamic アクセスになるためこちらのほうが早い。
- #define を廃止した
- 代わりに RazorEngine を搭載した
-
<v-notice>
に order 属性を追加した - #define の説明文を修正した
- #defineプリプロセッサの説明を追加した
- {GLOBAL}の説明を追加した
©anoyetta, 2018-2020
記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。
Copyright © 2010 - 2020 SQUARE ENIX CO., LTD. All Rights Reserved.