メインコンテンツまでスキップ

トリガ

シナリオの有効なトリガの種類及びその引数について説明しています。


ヒント

シナリオやシナリオファイルの概念が初めての方は, 先にこちらを参照して理解しておくことを推奨します。

概要

トリガとは, シナリオテストを開始するための開始条件のことです。
例えば, 「プラグインがロードされたとき」や, 「コマンドが実行されたとき」などがトリガになります。

いかなるシナリオも一つ以上のトリガが必要です。

ヒント

トリガは, 一つのシナリオ に対して複数個設定できます。
この場合は, そのうちどれか一つが発火したときにシナリオが実行されます。

同じトリガの実行タイミングについて

2つ以上のシナリオが同じトリガを持つ場合, それらシナリオは実行待ちのキューに同時に追加されます。 シナリオの実行自体は同時には行われず, キューが管理を行う順番で実行されます。

実行順の詳細とその制御方法についてはこちらを参照してください。

トリガの種類

以下に, 有効なトリガの種類を示します。

トリガ説明
アクション実行 (on_action)任意のアクションが実行されたときにシナリオを実行します。
プラグインのロード (on_load)プラグインがロードされたときにシナリオを実行します。
手動実行 (manual_dispatch)手動でシナリオを実行します。

アクション実行 (on_action) トリガ

引数に指定されたアクション実行期待シナリオが, 実行されたときにシナリオを実行します。

引数はそのアクションに必要なものを指定します。構文に関してはこちらを参照してください。

ヒント

アクションに必要なパラメータについては, 各アクションのドキュメントを参照してください。

# ...
on:
- type: on_action
action: "player_death"
with:
target: "Actor1"

プラグインのロード (on_load) トリガ

プラグインがロードされたときに自動的にシナリオを実行します。
これには, サーバのリロードや再起動も含みます。

引数はありません。

# ...
on:
- type: on_load

手動実行 (manual_dispatch) トリガ

Scenamatica のコマンドを用いて, 手動でシナリオを実行します。

引数は有りません。

詳しくは以下のドキュメントを参照してください:

# ...
on:
- type: manual_dispatch

事前・事後シナリオ機能

メインシナリオの実行前後に実行されるシナリオを, トリガごとに設定できます。
事前シナリオ -> メインシナリオ -> 事後シナリオ の順番で同期的に実行されます。

【使用例】

プレイヤが死亡したときに, プレイヤにメッセージを送信するシナリオについて考えます。
このシナリオは自動実行に加えて, 手動実行できる必要があり, その場合はプレイヤをメイン・シナリオの実行前にキルする必要があるとします。 自動実行はトリガ:アクション実行アクション:プレイヤの死亡に対して使用し, 手動実行はトリガ:手動実行を使用します。

このとき, 自動実行の場合はプレイヤがキルされたことが契機になっているので, 事前シナリオは不要です。
しかしながら, 手動実行の場合は対象プレイヤをキルする必要があるので, 事前シナリオを設定します。

このように, 事前・事後シナリオ機能を利用すると, トリガごとに追加または除外されるシナリオを設定できます。

# ...
on:
- type: on_action
action: player_death
with:
target: Actor001
- type: manual_dispatch
before:
# 手動実行の場合は, 事前にプレイヤをキルする
- type: execute
action: player_death
with:
target: Actor001

scenario:
- type: execute
action: send_message
with:
target: Actor001
message: "You died!"

条件付きトリガ機能

トリガの発火条件に, 追加で条件を指定できます。
これは, シナリオの実行条件機能と同じですが, トリガごとに設定できるという点で異なります。

これを用いることで, 例えば「プレイヤが死亡したときかつ マイルストーン "hoge" が達成されているときにシナリオを実行する」といったことが可能になります。

上記の例を実装すると, 以下のようになります。

# ...
on:
- type: on_action
action: player_death
with:
target: Actor001
# マイルストーン "hoge" が達成されているときにシナリオを実行
runif:
action: milestone
with:
name: Hoge
#...