Skip to content

SpecialSpellTimer_Examples

anoyetta edited this page Aug 28, 2019 · 11 revisions

ACT.SpecialSpellTimer Examples

バイオ系DoT

種類 spell
概要 バイオ系DoTの例
スペル名 ${effect} ➡, ${victim}
インスタンス化 true
マッチングワード 1A:<id8>:(?<victim>.+?) gains the effect of (?<effect>バイオ|バイオラ|バイオガ) from <mex> for (?<duration>[0-9\.]+)
正規表現 true
リキャスト時間 0
延長1
延長2

レベルによってアクションが置き換わるバイオ系を一括で扱います。

アクション名は バイオ|バイオラ|バイオガ でグループ化しどれでもヒットするようにします。効果時間はグループ名 <duration> を使用してログから動的に拾わせます。ゲーム内で発動したときの効果時間が拾われるためリキャスト時間の設定は関係なくなります。

スペルの表示は正規表現でキャプチャーしたアクション名、対象を表示させます。

例えば、Naoki Yoshida に対してバイオを使用した場合は

バイオ ➡
 Naoki Yoshida

と表示されます。

またインスタンス化にチェックを入れることで名前の異なる対象に対して使用したときにそれらを個別に表示させます。バイオ等はベインで複数対象に拡散するため表示が多すぎてしまう場合があります。その場合はインスタンス化のチェックを外せば最後にかけた対象だけを管理するようになります。

エアロ、サンダー、ミアズマ に対しても同様に設定することが出来ます。例えば

1A:<id8>:(?<victim>.+?) gains the effect of (?<effect>バイオ|バイオラ|バイオガ|エアロ|エアロラ|エアロガ|ミアズマ|ミアズラ|ミアズガ|ゴアブレード|コンパス|コンパラ|サンダー|サンダラ|サンダガ|サンダジャ) from <mex> for (?<duration>[0-9\.]+)

このようにあらゆるDoTを詰め込んでも動作します。スキル名、対象、効果時間は動的に拾われるため問題なく表示されます。ただし、スペルの設定としては1つになるため色やフォントなどはすべて同じ設定が適用されることになります。

HoT

種類 spell
概要 リジェネ, アスペクト・ベネフィクの例
スペル名 ${effect} ➡, ${_TANK}
インスタンス化 true
マッチングワード 1A:<id8>:<TANK> gains the effect of (?<effect>リジェネ|アスペクト・ベネフィク) from <mex> for (?<duration>[0-9\.]+)
正規表現 true
リキャスト時間 0
延長1
延長2

リジェネ、アスペクト・ベネフィクによるHoTを一括して扱います。

基本はDoTと同じですが、対象を <TANK> とすることでタンクにかけたHoTだけが表示対象となります。DPSや自分にかけたHoTは継続的に管理する必要がないため、表示する対象を限定することで管理を容易にします。

単体バリア

種類 spell
概要 単体バリアの設定例
1つ目のスペル名 Nフィールド ➡, ${_TANK1}
1つ目のマッチングワード 1A:<id8>:<TANK1> gains the effect of ノクターナルフィールド from <mex> for (?<duration>[0-9\.]+)
1つ目の延長1 <TANK1> loses the effect of ノクターナルフィールド from <mex>
-60秒延長する
2つ目のスペル名 Nフィールド ➡, ${_TANK2}
2つ目のマッチングワード 1A:<id8>:<TANK2> gains the effect of ノクターナルフィールド from <mex> for (?<duration>[0-9\.]+)
2つ目の延長1 <TANK2> loses the effect of ノクターナルフィールド from <mex>
-60秒延長する
インスタンス化 false
正規表現 true
リキャスト時間 0

TANK1 と TANK2 のバリアを個別に管理します。スペルは2つ設定します。

バリアはキャパシティを超えると効果が失われるため延長するマッチングワードを使用して効果の消失を検知させます。このとき複数人を対象としたグループでマッチングを行うと、TANK2 のバリアが消失したときに TANK1 のバリアも消失したように見えてしまいます。よって TANK1 と TANK2 を個別に設定します。

自分へのシナジー

種類 spell
概要 パーティメンバが自分へかけたシナジー効果の表示
スペル名 ${effect}, ⬅ ${user}
インスタンス化 true
マッチングワード 1A:<id8>:<mex> gains the effect of (?<effect>桃園結義|竜の左眼|バトルボイス|エギの加護|エンボルデン|フェイウィンド|アーゼマの均衡|オシュオンの矢|ハルオーネの槍) from (?<user>.+?) for (?<duration>[0-9\.]+) Seconds
正規表現 true
リキャスト時間 0
延長1
延長2

自分に与えられたシナジー系バフを表示します。

延長などがある場合も更新されます。誰がかけてきたかも分かるので適切にMIPを送りましょう。邪魔ならば使用者の表示は消して使ってください。

吟遊詩人の歌はログの形式が異なるのと意識するほどでもないためオミットしました。また、リキャストについては時間がログから動的に拾えないため個別にスペルを登録する必要があります。数が多いのでここでは取り上げませんので、このスペルの設定を参考に作ってみてください。

敵へのシナジー

種類 spell
概要 敵に作用するパーティメンバへのシナジー効果の表示
スペル名 ${effect}, ➡ ${target}, ⬅ ${user}
インスタンス化 true
マッチングワード 1A:<id8>:(?<target>.+?) gains the effect of (?<effect>斬属性耐性低下|突属性耐性低下|被ダメージ上昇|連環計) from (?<user>.+?) for (?<duration>[0-9\.]+) Seconds
正規表現 true
リキャスト時間 0
延長1
延長2

敵に作用しパーティメンバにシナジーを与えるデバフを表示します。

「どのエフェクトをどの敵に誰が使ったのか」を3行で表示します。情報量が多すぎるようならば削って使ってください。

タレットとだまし討ちは、与えるエフェクトの名前が同じであるため使用者でしか判別できません。不便なようならばジョブ代名詞を使って分離すると良いでしょう。

召喚士のエメラルドの輝きとコンテージョンもこれに含まれるべきですが手元にログがなかったため含まれていません。使用者もあまりいないので問題ないと思いますが気になる場合は自分で追加してください。

リプライザル

種類 spell
概要 ただのリプライザル
スペル名 リプライザル
インスタンス化 false
マッチングワード に「リプライザル」の効果。
正規表現 false
リキャスト時間 5
延長1
延長2

なんの変哲もないリプライザルの設定例。

このように正規表現を使わない場合は正規表現のチェックを外します。正規表現はそれ一つが小規模なプログラムのようなものです。ムダに正規表現を使うとCPU負荷があがります。なるべく正規表現を使わない設定にしましょう。このページでは複雑な正規表現の例を書いていますが、私の設定では複雑なものはごく一部です。正規表現なしのシンプルなパターンのスペル、テロップを専ら使用し、正規表現でないと実現できないものに限ってならべく数を減らして登録しています。

あと 「タンクは必ずこれを設定しておけ」 リプライザルを被って打ち込むムダ打ちマンが多すぎる。

パーティー募集

種類 spell
概要 パーティ募集の検索結果を読み上げさせる
スペル名 パーティ募集
インスタンス化 false
マッチングワード 現在パーティ募集は([0-9]+)件、うち詳細検索の条件に見合った募集が([0-9]+)件あります。
正規表現 true
リキャスト時間 0
延長1
延長2

NoticeタブのTTSに下記のような設定をすることで、パーティ募集の詳細検索でヒットした件数を読み上げさせることができます。

マッチしたときの通知 TTS : パーティーぼしゅう($2)

テロップの設定例

敵の技

種類 ticker
概要 敵の技
メッセージ アク・モーン
マッチングワード starts using アク・モーン
または
は「アク・モーン」の構え
正規表現 false
表示時間 0秒後から 3秒間 表示する
非表示のマッチングワード
継続的にマッチさせる false

単純に敵の詠唱技を表示するためのテロップ。テロップの最もポピュラーが使い方と言える。

引っ掛け方は二種類あります。

"starts using ○○○○" で引っ掛けるパターンは FFXIV_ACT_Plugin が生成するログに対して引っ掛けます。これはメモリ解析またはパケット解析から出力しているため FFXIV本体のログより早い です。しかし、多少不安定な部分がありアクションによっては出力されなかったり、多重に出力されるものもあります。設定してみて引っ掛からなかったり挙動がおかしいようならば後述するプレーンなパターンに変えましょう。私も使い分けています。

"は「○○○○」の構え" で引っ掛けるパターンはFFXIV本体が出力するプレーンなログに対して引っ掛けます。starts using よりは多少遅くなりますがあらゆるシチュエーションで動作します。困ったらこれ。トリガーの基本ですね。

レアケースですが "「○○○○」の構え" と出力されるものと "「○○○○」を唱えた" と出力されるものの二種類があります。完全な詠唱魔法の場合は後者のほうになります。ログを見れば分かりますがヒットしない場合は確認しましょう。

神龍の尻尾

種類 ticker
概要 神龍の尻尾
メッセージ 尻尾 ➡ ${target}
マッチングワード 1B:[0-9A-F]{8}:(?<target>.+?):[0-9A-F]{4}:[0-9A-F]{4}:007E:[0-9A-F]{4}:[0-9A-F]{4}:[0-9A-F]{4}:
正規表現 true
表示時間 0秒後から 3秒間 表示する
非表示のマッチングワード
継続的にマッチさせる false

神龍の尻尾マーカを通知します。マーカの対象者の名前がテロップに表示されます。

複雑な正規表現に見えますが重要なのは冒頭の 1B:、キャラ名、マーカの種類を示すコード 007E の3つの部分です。1B: でログを検索することで神龍の尻尾だけではなく他のマーカも表示させる事ができます。

汎用マーキング

種類 ticker
概要 汎用マーキング
メッセージ マーキング ➡ ${target}
マッチングワード (?<target>.+?)に「マーキング」の効果
正規表現 true
表示時間 0秒後から 3秒間 表示する
非表示のマッチングワード
継続的にマッチさせる true

まず最近のコンテンツではこのタイプのマーカは使われません。参考にしてください。

ログに表示されるマーキングを通知します。継続的にマッチさせるをONにするのがポイントです。継続的にマッチさせることで複数人に設定されたマーカを列挙します。

例えば、Taro Yamada と Jiro Suzuki にマーカが設定された場合

マーキング ➡ Taro Yamada
マーキング ➡ Jiro Suzuki
と表示されます。

複数人にバラ撒かれるようなエフェクトの把握に応用できます。

磁場転換(頭割り)

種類 ticker
概要 磁場転換(頭割り)
メッセージ 頭割り ➡ ${target}
マッチングワード 1B:........:(?<target>.+?):0000:0000:0064
正規表現 true
表示時間 0秒後から 3秒間 表示する
非表示のマッチングワード
継続的にマッチさせる true

オメガ零式3層の頭割りマーカの表示です。頭割りマーカの対象になった人を列挙します。

次のAOEマーカと組合せることで離れるのか集合するのかを判別します。

磁場転換(AOE)

種類 ticker
概要 磁場転換(AOE)
メッセージ AOE ➡ ${target}
マッチングワード 1B:........:(?<target>.+?):0000:0000:0065
正規表現 true
表示時間 0秒後から 3秒間 表示する
非表示のマッチングワード
継続的にマッチさせる true

オメガ零式3層のAOEマーカの表示です。AOEマーカの対象になった人を列挙します。

AOEマーカの一番最初の人が頭割りと繋がった人になります。よって前述の頭割りマーカのテロップと位置をずらしてこのテロップを表示させることで、速やかに散開と集合を判別することが出来ます。位置を調整すると

頭割り ➡ Taro Yamada
AOE ➡ Jiro Suzuki AOE ➡ Saburo Matsuda AOE ➡ Shiro Yamaoka
と表示されます。このときAOEの1番目である Jiro Suzuki が頭割りと接続された人ということになります。

ラバナスタの真偽判定

種類 ticker
概要 ラバナスタの真偽判定
メッセージ ${bool}
マッチングワード 冷血剣アルガス:(261A|2619):(?<bool>真実|虚構)の仮面
正規表現 true
表示時間 0秒後から 8秒間 表示する
非表示のマッチングワード
継続的にマッチさせる false

なくても全く問題ありませんがラバナスタの真偽の表示です。前述の磁場転換の例や下記のカウンタ表示及び複数テロップを組合せて使う例として挙げています。

ラバナスタの啓示カウンタ

種類 ticker
概要 ラバナスタの啓示カウンタ
メッセージ {COUNT0} ${order}
マッチングワード <mex>に「神の啓示:(?<order>見るなかれ|行動し続けよ)」の効果。
正規表現 true
表示時間 0秒後から 5秒間 表示する
非表示のマッチングワード
継続的にマッチさせる false

カウンタを表示する例です。啓示は5秒後に判定なのでテロップを表示時間を5秒に設定しつつメッセージにカウンタを表示します。また前述の真偽表示と組合せることでミスがなくなります。

カウンタは禍泡のような動いてはいけない系に応用できます。

サンダーウィング

種類 ticker
概要 サンダーウィング
メッセージ サンダーウィング ➡ ${target}
マッチングワード (?<target>.+?)に「サンダーウィング」の効果
正規表現 true
表示時間 0秒後から 3秒間 表示する
非表示のマッチングワード
継続的にマッチさせる true

何の変哲もないサンダーウィングのテロップ。かつて侵攻編4層で活躍したテロップ。他人のサンダーも確実に分かるため自分だけテロから逃れられます。他が死ぬのでほとんど意味ないですが。

継続的にマッチさせるようにしておけば複数人への付与も表示できます。

もはや書く必要もないでしょうが

サンダーウィング ➡ Taro Yamada
サンダーウィング ➡ Jiro Suzuki
と表示されます。

さらに応用を効かせて

(?<target><nex>)に「サンダーウィング」の効果
(?<target><mex>)に「サンダーウィング」の効果
と自分以外と自分を分けて2つのテロップを定義することで、アラートを分けたり表示方法を分けることが出来ます。


マッチングの注意

パフォーマンスを少しでも上げるために FFXIV_ACT_Plugin から取得するログの不要な部分はカットしてマッチングを行っています。したがってカットされている部分をパターンに含めるとマッチしませんのでご注意ください。

カットしているのはログの冒頭のタイムスタンプの部分です。

FFXIV_ACT_Plugin が出力する生のログの例

[23:59:56.364] 1E:Naoki Yoshida loses the effect of インドゥルゲンティア from Himechan White.

スペスペでマッチングするときのログの例

1E:Naoki Yoshida loses the effect of インドゥルゲンティア from Himechan White.

このようにカットされます。

過去に挙げていた設定例ではタイムスタンプ部分をパターンに含めていたものもあります。したがってそれらはマッチしなくなっていますのでご確認ください。



ログの収集

スペルやテロップを作るときはまずはログの収集から始めます。ログの収集方法は下記の通りです。

  1. スペスペの [Options] タブを開く
  2. [ログ] を開く
  3. [ログを保存する] をチェックする
  4. [ログの保存先フォルダ] に出力先フォルダを設定する

これで指定した場所に FFXIV_ACT_Plugin のパース後のログが保存されます。

参考までに極蛮神やレイドなどの新しいコンテンツが実装されたときは下記の手順で攻略しています。

  1. ログ収集をONにして偵察に行く
  2. 収集したログでスペル・テロップを作る
  3. スペル・テロップで武装して殺す

基本的に一度見た技を食らうことはありません(ミスることはありません)。



ゾーンフィルタ・ジョブフィルタについて

ゾーンフィルタ・ジョブフィルタはなるべく設定し、アクティブに展開されるスペル・テロップが最小限となるようにしましょう。

アクティブに展開されているスペル・テロップは膨大に発生するすべてのログに対してマッチングを行います。またマッチする条件よりもマッチしない条件のほうがマッチングの負荷は大きくなります。したがって現在のジョブでは絶対にマッチしないサブジョブのスペル・テロップなどが展開されているとマッチングに大きなムダが発生してしまいます。

通知のレスポンスを極力早めるために各種フィルタを設定したり、まとめられるものはなるべくまとめてアクティブに展開されるスペル・テロップを減らしましょう。



開始条件による複雑なパターン

特定のタイマーが「稼働」している、または「停止」している時のみ、そのタイマーの開始用マッチングワードをチェックさせることができます。(非表示や延長のマッチングワードは、条件の影響を受けず常にチェックされます)

また表示内容に、条件指定したタイマーの正規表現がキャプチャした内容を追加できるようにしました。表示メッセージ(スペルの名前)で下記の形式を指定することで、キャプチャされた内容に置き換わります。

$C[条件番号]-[グループ番号]

例:左上から数えて2番目のタイマーのマッチングワードで、3番目に出現する ( ) に一致した内容

$C2-3 

これらの機能を使うことで、次のようなことが実現できます。

占星術のカード効果時間

ロイヤルロード:効果時間増加の有無により、異なる(リキャスト時間の)タイマーを動作させる。

名称 マッチングワード 時間 条件
効果時間増加 loses the effect of ロイヤルロード:効果時間増加 2 なし
アーゼマ30 <me>の「アーゼマの均衡」 30 停止中:効果時間増加
アーゼマ60 <me>の「アーゼマの均衡」 60 稼働中:効果時間増加

カードの効果はロイヤルロードが消えてから発動するため、ロイヤルロードが消えてから2秒間だけ「効果時間延長」が稼働するようにしています。

アレキサンダー3層のマグネット表示

マグネットで自身とつながった相手の名前と、それぞれの+ーの種類をテロップで表示させる。

名称 種別 マッチングワード 時間 条件 メッセージ
磁力1 ログ (<2>|<3>|<4>|<5>|<6>|<7>|<8>)に「磁力【(.)】」の効果 1 停止中:磁力1 なし
非表示 (<2>|<3>|<4>|<5>|<6>|<7>|<8>)に「磁力【(.)】」の効果
磁力2(奇数) ログ (<2>|<3>|<4>|<5>|<6>|<7>|<8>)に「磁力【(.)】」の効果 6 稼働中:磁力3 $2 $C1-1 => $1
磁力3 ログ <me>に「磁力【(.)】」の効果 1 停止中:磁力1 なし
非表示 (<2>|<3>|<4>|<5>|<6>|<7>|<8>)に「磁力【(.)】」の効果
磁力4(偶数) ログ <me>に「磁力【(.)】」の効果 6 稼働中:磁力1 $C1-2 $1 => $C1-1

これらの設定をすることで、[相手の+ー] [自分の+ー] => [相手の名前] のようにテロップを表示することができます。

磁力は、自身が奇数番目・偶数番目それぞれで、一つ前の人・一つ後の人とペアが異なるため、それぞれの場合を指定しています。

テロップでは、「ログに対するマッチングワード」に一致した場合、その行は「非表示にするマッチングワード」のチェックが行われないため、磁力1は1行ごとにON/OFFを繰り返します。そのため、磁力1を条件とすることで、結果的に奇数番目・偶数番目を条件とすることができています。



お問合わせ

「こんなスキルを引っ掛けたい」「敵の~というアクションを表示させたい」

こういった要件については Twitter か Discord で尋ねて頂ければお教えします。

ただし、必ずログを採取してログを添えて質問してください。私はあらゆるコンテンツのあらゆるジョブのログを持っているわけではありません。「アイアンジョーで動かないのでどうしたらいいですか?」と聞かれてもログがなければ「私は吟遊詩人をやっていないので分からない」という回答になります。





テンプレート置き場

テンプレート(スペル)

種類 spell
概要 テンプレートスペル
スペル名
インスタンス化 true
マッチングワード
正規表現 true
リキャスト時間 0
延長1
延長2

解説文

テンプレート(テロップ)

種類 ticker
概要 テンプレートテロップ
メッセージ
マッチングワード
正規表現 true
表示時間 n秒後から m秒間 表示する
非表示のマッチングワード
継続的にマッチさせる false

解説文