はじめてのミッションエディット トリガーのスクリプト編 -ArmA訓練所-

ArmA訓練所
2007/10/08

目次


トリガーを使ってスクリプトコマンドを使ってみよう

ArmAではスクリプトコマンドを使ってエディターでは出来ないような様々なことが実現可能です。
これまでに勉強した内容で実際にスクリプトコマンドを使ってみましょう。
ここではスクリプトコマンドと組み合わせるトリガーの基本的な使い方を説明したいと思います。

はじめはトリガーを使いこなそう

トリガーってなんだろう?とはじめは思うかもしれません。
トリガーはある条件を満たしたときに何らかの処理をするために使います。
例えばユニットの死亡を条件にミッションを終了させるといったことが可能です。
トリガーにはトリガーだけが持つ機能と、スクリプトコマンドを実行させる機能があります。
ここではスクリプトコマンドを実行する機能を中心に基本的な使い方を見ていきます。
トリガーの持つ機能の詳細はミッションエディターの使い方トリガーモード編を参照してください。

トリガーの範囲に入ることを条件に処理を行う

はじめに覚えるのはトリガーの範囲に入ったときにスクリプトコマンドを実行することです。
これは特定の地点にたどり着いたことや、何かしらの領域に侵入したことを条件にスクリプトコマンドを実行します。
エディターで実際に試しながら覚えていきましょう。
エディターでSahrani島を選び、空港付近で練習してみましょう。
ArmA Edit Sahraniの空港付近
まずプレイヤーユニットを配置します。
ArmA Edit プレイヤーの配置
ArmA Edit プレイヤーの配置後
プレイヤーユニットを配置したら、プレイヤーの側にトリガーを配置します。
ArmA Edit トリガーを配置する
ここではプレイヤーがBLUFORの兵士なので、BLUFORの兵士に反応させるためにActivationをBLUFORに書き換えておきます。
ArmA Edit 一覧からBLUFORを選択する
ArmA Edit 一覧からBLUFORを選択
ここでOKを押すと次のような円で囲まれた旗のマークが表示されます。
ArmA Edit 円形のトリガーが配置される
この旗のマークがトリガーで、周りの青い色をした円がトリガーの範囲です。
初期状態では直径50mの正円となっています。
漠然とした範囲であれば円が適していますが、マラソンのスタートラインやゴールラインが曲線では困りますよね。
直線的な範囲を指定するときはトリガーの範囲を方形にします。
円形か方形かを変更するには、上部にあるEllipse(円形)からRectangle(方形)に変更します。
ArmA Edit Rectangleを選択
すると次のように50m四方のトリガーになります。
ArmA Edit 方形のトリガーが配置される
このままでは広すぎるので、Axisでトリガーの範囲を調整します。
ArmA Edit トリガーの範囲を調節
ArmA Edit 小さなトリガーにする
衛星写真で見るとこんな感じになります。
ArmA Edit トリガーとの位置関係
ここでOn Act欄に「hint "enter the trigger"」と入力してみましょう。
hintコマンドが画面左上にメッセージを表示するコマンドで、トリガーやスクリプトコマンドの確認に便利です。
ArmA Edit On Act欄にhintコマンドを入力
Previewで実際に滑走路上を歩いてみて、hintメッセージが表示されれば動作確認はOKです。
ArmA Edit トリガーに入るとメッセージが表示される
無事にトリガーが動作しました。
このhintコマンドを目的のコマンドに置き換えるだけで、ある範囲に入ったら処理をするということが可能になります。
敵の陣地に侵入したら目標の一つを達成するとか、敵の倉庫にはいると敵の極秘情報を入手したという設定に応用できると思います。

トリガーの範囲から出ることを条件に処理を行う

こんどは逆の条件を考えてみましょう。
ある範囲に入ることもあれば、ある範囲から出ることで処理を実行したい場面もあります。
その場合には次のようにプレイヤーを囲むように範囲を設定し、PresentをNot presentに変更します。
On Act欄に「hint "get out the trigger"」と書いておきます。
ArmA Edit Not presentを選んでおく
地図上ではこのような配置にしておきます。
ArmA Edit トリガーの中にいるように配置する
トリガーの範囲から出るとメッセージが表示されると思います。
ArmA Edit トリガーから出るとメッセージが表示される
この処理はミッションの活動範囲を限定する場合や、人質の脱走禁止エリアの設定などによく使われます。

トリガーを繰り返し使う場合

これまでのトリガーは範囲から出たり入ったりしたときに一度しか実行されませんでした。
ここでは出たり入ったりする度に何度でも動作する方法を紹介します。
まず、次のように範囲を適当に設定し、OnceをRepeatedlyに変更し、Presentを選んでおきます。
Activationはトリガーに出入りするユニットがBLUFORならそれを選択します。
On Act欄とOn Dea欄にhintコマンドを書いておきます。
Presentのトリガーであれば、On Act欄はトリガーに入ったとき、On Dea欄は出たときの処理になります。
ArmA Edit Repeatedlyを選択しておく
地図上では次のような配置にしてみます。
ArmA Edit トリガーの中から開始
トリガーに入った状態ではOn Act欄で設定した処理がなされます。
ArmA Edit トリガーの中のメッセージが表示される
トリガーから出るとOn Dea欄で設定した処理がなされます。
ArmA Edit トリガーの外のメッセージが表示される
これから再びトリガーに入ったり出たりを繰り返しても同様に何度も処理が行われます。
繰り返し処理するときはRepeatedlyにしておくことが重要です。
On Act欄だけを設定し、On Dea欄を設定しなくてもかまいません。
繰り返し処理はある地点にいると武器や燃料を自動補給する処理などに使われます。

トリガーの範囲に依らない処理

上で述べたのはトリガーの範囲を利用し、出たり入ったりした場合でした。
今度はトリガーの範囲とは関係なく、特定の条件でトリガーに書いたスクリプトコマンドを実行する方法を紹介します。
まず、プレイヤーユニットを配置します。ここではBLUFORの兵士にします。
ArmA Edit ユニットを配置
次にtarouと名前を付けた市民を用意します。
名前を付けるにはName欄に名前を書き込むだけです。
ArmA Edit 名前を付けた市民を配置
ArmA Edit 市民の位置
次に、Emptyの戦車を一台用意します。
こちらにもtankという名前を付けておきます。
ArmA Edit 名前を付けた戦車を配置
ArmA Edit 市民と戦車の位置
トリガーを用意します。
今回のトリガーは範囲が必要ないのでAxisをそれぞれ0にします。(0にしなくても問題はありませんが、エディターの周りが見づらくなります)
また、Activation欄も今回は必要ないのでNoneにしておきます。
Condition欄を「this」から「not alive tarou」に書き換えます。
On Act欄に「tank setDamage 1」と書いておきます。
ArmA Edit 条件をthisからaliveコマンドを使って書き換える
地図上では次のように配置しました。
ArmA Edit トリガーとそれぞれのユニットの位置
ArmA Edit 衛星写真でみる配置
市民(tarou)と戦車(tank)が置いてあります。
ここで市民を撃ってみるとどうなるでしょうか。
ArmA Edit 市民と戦車は通常の状態
次のように戦車が爆発します。
ArmA Edit 市民を撃つと戦車も壊れる
このように、トリガーの範囲ではなく、スクリプトコマンドを使った条件を指定することも可能です。
今回のようにユニットの死亡を条件にしたり、武器を持っていないことを条件にしたりと様々なことが出来ます。
条件とその処理を組み合わせることで様々な処理に応用が出来ます。


Homeへ