思いついたり動作に不具合が出たものを忘れないように書き溜めておこうと思います。
どしどし追加お待ちしています。
名前やフラグ番号などは例なのでミッションに組み込むときに同じにする必要はありません。
また記載が無ければRedが自軍、Blueが敵軍とします。
車両を停止させておく方法
移動を制限したいだけならHOLDがオススメ。
12時15分に移動再開する設定例
CONDITIONはそのアクションが実行される条件。STOP CONDITIONはそのアクションが停止する条件。
HOLDアクションをSTOPする条件なので結果的に移動(行動)再開となる。
TIME: ミッション内の時刻。
IS USER FLAG: 指定したフラグ番号がON(またはOFF)。
PROBABILITY: 確率。
CONDITION (LUA EXPRESSION): LUAスクリプトを直接記入する。
DURATION: 継続時間。1.2.1から追加された項目?アクション開始後からの経過時間で条件を満たす。STOP CONDIRIONのみ?
IS USER FLAGの数値が100までしか設定できない(1.2.2)。バグなのか仕様なのか不明。フラグ番号に注意。
なんでここの文字って昔から途中で切れているのだろうか・・・?
設定例
WP2まで移動しエリア(AREA1)に敵部隊が残っていれば停止。エリア(AREA1)に敵部隊が存在しない場合には移動。
任意のポイントにAREA1を作成。
車両側設定:WP1>>WP2>>WP3
トリガー設定
迫撃砲による攻撃および停止
検証中です。 原因判明
Fire at Pointを動作させるには、ユニットのTRIGGERED ACTIONSで設定しないとダメ。
これを任意のタイミングで呼び出せば実行されました。
敵車両がトリガーゾーンに進入するとそのポイントに砲撃する例
NAME
TYPE
ArtyON
ONCE
CONDITIONS
PART OF COALITION IN ZONE(Blue,TriggerZone)
ACTIONS
AI TASK(Arty1 / 1.Fire at Point)
トリガーからAI TASKを直接停止させることが出来ないため、ユニットのTRIGGERED ACTIONSに停止する条件を加える必要あり。
ADVANCED(WAYPOINT ACTIONS)はウェイポイントに到達した時点で一度だけ実行されるユニットトリガー。
任意のタイミングで実行したい場合は、TRIGGERED ACTIONSに記述する。
なるほど、こういうことか~
古いやり方
迫撃砲は、Fire at Pointのオンオフが動作しない模様? 動作しました。
ADVANCED(WAYPOINT ACTIONS)のCONDITIONとSTOP CONDITIONに入力しても攻撃に移りません。
そのため開始・停止はAI ON,OFFにて動作させるしかなさそう。
以下動作した例
あるエリアに敵が進入したらそのエリアを迫撃砲が攻撃するようにする。
判定用ゾーン(ArtyZone)を任意の位置に設置する。
オンオフトリガーを作成
迫撃砲側の設定
Fire at Pointにて攻撃範囲を設定する。
注:CONDITIONとSTOP CONDITIONは設定しない。
ArtyOFFにTIME MOREを追加しておくと砲身が構えた状態で止まってくれる。
ただしこの状態でAI ONに切り替えても砲弾発射まで1分強のラグが発生するため、検知範囲と攻撃箇所の調整が必要。
それとAI OFFでは迫撃砲自身に攻撃を受けた場合に逃げも反撃もしなくなるのが悩みどころ。
JTACの透明設定
通常ユニットを配置しただけではAIに数キロ先から撃たれてしまい、なかなかJTACとしての仕事をさせてもらえないw
そのため難易度をやや簡単にするためInvisible(透明)設定を行う。
これだけでは面白くないので1500mまで近づくとInvisible設定を解除される設定にする。
迫撃砲と同じくTRIGGERED ACTIONSに設定すること。
トリガーゾーンを設定。今回は名前をJTAC Trigger Zoneとし半径を1500mに設定した。
トリガー設定例
敵ユニットにトリガーゾーンを付けてその半径にJTAC車両が進入すると、Invisibleが解除されるトリガー。
NAME
TYPE
InvisibleOFF
ONCE
CONDITIONS
UNIT INSIDE MOVING ZONE(RED Unit1,JTAC Trigger Zone,JTAC)
ACTIONS
AI TASK(JTAC / 1.Invisible(nil)
UNIT INSIDE MOVING ZONEを使えばトリガーゾーンがユニットと一緒に移動するため、今回のようなトリガーを組むときに使いやすい。
ただし1ユニットずつ設定する必要があるため、敵の数が多いと作成時はかなり大変。
一つのトリガーゾーンを複数のユニットに接続することも出来る。
NAME
TYPE
InvisibleOFF
ONCE
CONDITIONS
UNIT INSIDE MOVING ZONE(RED Unit1,JTAC Trigger Zone,JTAC)
OR
UNIT INSIDE MOVING ZONE(RED Unit2,JTAC Trigger Zone,JTAC)
OR
UNIT INSIDE MOVING ZONE(RED Unit3,JTAC Trigger Zone,JTAC)
ACTIONS
AI TASK(JTAC / 1.Invisible(nil)
全ユニットに接続するのは大変なので、主要なユニットに限定して作るのが現実的か?
勢力減少によりフラグを立てる
例えばある程度損害を与えると撤退する部隊を作る。
敵のMBTが5部隊、IFVが10部隊とする。
MBT部隊破壊で4ポイント減少、IFV部隊破壊で3ポイント減少とする。
判定用フラグを作る
ここではFlag1を目標、Flag2を現状に設定。
Flag1をランダムバリューにしているのは、スタートごとに撤退タイミングに変化をもたせるため。
もちろんFLAG SET RANDOM VALUE(1,20,20)など固定でもOK。今回は0~30としてみた。
Flag2はバリュー値を50固定に。理由は後述。
バリュー値減少フラグの作成
ユニット破壊ごとにFlag2のバリュー値が減少する。
最後に判定トリガーを作成
NAME
TYPE
FlagComp
ONCE
CONDITIONS
FLAG IS LESS THAN FLAG(2,1)
ACTIONS
Flag ON(3)
Flag1よりFlag2のバリュー値が小さくなればFlag3が立つトリガー。
Flag1のバリュー値が20であれば、戦車5部隊とIFV4部隊以上などでフラグが立つようになる。
ランダムではFlag1のバリュー値が0の場合もあるため、すべての敵部隊を破壊するまで撤退しないという状況も出てくる。
Flag3が立つことでユニットのHoldを解除し撤退する動きを作れば完成。(そのトリガーは別記)
最初にFlag2のバリュー値を設定したのは、比較判定に○以上だと真というのが無い。
いや・・・あるにはあるのだけど、それはバリュー値が固定にしか出来ないので変化をもたせたい時には使えない。
そのためバリュー値を減らしていかないとダメなので、Flag2をあのように設定する必要がある。
バリュー値を設定しないと0スタート?になるようなので、必ずミッションスタート時に設定しておくこと。
○以上だと真という判定が追加されれば、これは必要なくなるのにな~。
数パターンからランダムに選択する
ミッションスタートごとに目標の出現位置や行動を数パターンのうちの一つにするなど。
判定用フラグ作成
NAME
TYPE
Flag1
MISSION START
CONDITIONS
ACTIONS
FLAG SET RANDOM VALUE(1,1,30)
バリュー値1~30のフラグ作成。
判定トリガーを作成
これでバリュー値が1~10でフラグ2、11~20でフラグ3、21~30でフラグ4が立つ。
トリガーでユニットを出現させるには
トリガーでユニットを出現させる場合は、ユニットのスタート日時(/* 部分)を+1以上にしてスタート時に出現させないようにすること。
WORLD以降は、LATE ACTIVATIONにチェックを入れても可。
任意のタイミングでトリガーの"GROUP ACTIVATE"を使うことにより出現させることが出来る。
ミッション開始後にユニットをランダムで出現させる
ONCEは判定でTrueが返って来るとトリガーから消える。
RANDOMは毎秒判定を返してる模様。
そのため、例えばLATE ACTIVATIONにチェックを入れた4つのユニットを10秒後にランダムで出現したい場合、以下のトリガーではうまく行かない。
このトリガーだと10秒経過した時点で10%の確率でどれかが現れる。しかし11秒でも10%、12秒でも・・・となり確率的に20秒経過する頃にはほとんどのユニットが出現してしまう。
そのため以下のように変更する。
こうすることで11秒以降はTrue判定が返ってこないため1回(1秒)だけ10%となる。
もしくは
トリガーは上から順に実行されるためこれでもいける。
ONCE判定を勘違いしてた~orz
航空機をエンジン停止のまま待機させる方法
1.UNCONTROLLEDにチェックを入れ
2.ユニットのトリガーアクションにSTARTコマンド追加。
3.AI TASKにSTARTトリガーが追加されているので、それを任意のタイミングで実行すると航空機が始動する。
画像はミッションスタート後、600秒で起動させるトリガー。
ヘリに歩兵を乗り込ませるような演出を作ったり、フラグが立つまで空港でスクランブル待機する戦闘機など用途はいろいろ。
AI同士の空中給油
AI機同士で空中給油を行うと、衝突したり突然脱出したりでうまくいかない。(World 1.2.0)
ミッションにタンカーがいる場合は注意。ユニットのアドバンスドアクションでSet Option > RTB at Bingoをfalseにしておくと(ENABLEチェックを外す)自動的に給油に行かなくなり気づいたらAI機がいなくなるという事態が回避できる。
スイッチウェイポイントで着陸させる場合
航空機のスイッチウェイポイントで着陸させたい場合、手前に一つクッションを置かないとうまく作動しない場合がある。(World 1.2.0)
WP2 > WP3(スイッチ5) > WP4 > WP5(着陸) ・・・×
WP2 > WP3(スイッチ5) > WP4 > WP5(クッション) > WP6(着陸) ・・・○
クッション用のウェイポイントは空港の近くに作れば良い。
ユニットの判定について
まだ不明瞭な部分が多いため確定情報ではありません
出現していないユニットはマップ外に存在するような動作のため、OUT OF ZONE判定を使うときは注意。
クライアントにした航空機はプレイヤーが入っていないと死亡判定が出る模様。
地上ユニットはアクティブになっていない(出現していない)状態でも死亡判定は出ない。
GROUP ALIVEトリガーはユニットが燃えた瞬間に判定が消える。
GROUP DEADトリガーはユニットが爆発した瞬間に判定が入る。
ALIVEとDEADに若干時間差があるので注意。
LATE ACTIVATIONで出現していないユニットは、表示されて無いだけでその場にいる。
そのためユニットを爆発させるようなトリガーを組んでいる場合、アクティブになってない状態でも出現場所で爆発する。
出現していなければそのユニットにダメージは入らない。
スタティックオブジェクトのDEAD判定
GROUP DEADでスタティックオブジェクトを指定すると、常にDEAD判定になる模様。
個別のスタティックオブジェクトの判定をしたい場合、UNIT DEADを使用すること。
スタティック全体?がグループになっているのか?DCSには謎な仕様が多いですがこれもその一つ?
RADIO TRANSMISSION について
このトリガをマルチプレイミッションで使う場合、トリガの実行された時点でサーバにJoinしているプレイヤにのみ有効。
FOLLOW、ESCORT
対象機を決めて護衛(追跡)する命令。ESCORTは半径を決めて迎撃可能。
FOLLOWは追跡するだけ。
GROUP: 護衛対象機
POSITION: 編隊位置。詳しくは下図参照。
LAST WPT: どのウェイポイントまで護衛するか。これは対象機のウェイポイントで護衛が終了すると、自分のウェイポイントに戻る。
ENGAGE DIST: 迎撃半径とどのタイプを迎撃するか(ESCORTのみ)。
ポジション設定
注意: 護衛対象機が真上(+X方向)を向いている場合
X軸が縦、Z軸が横、Y軸が高さ方向になっているもよう。
LAND
ヘリがFARPや空港以外に着陸できる。
LAND DURATION:継続時間。例えば5分と入力すると、着陸状態を5分間継続する。
1.2.2から ON LAND という表記に変わった模様。
Transmit Message
動作不明、情報求む
FILE: 音声ファイル(WAV,OGG)が選択できる。
SUBTITLE: テキストが入力できる。
LOOP: 繰り返し?
DUR: 繰り返す回数?または継続時間?
Fire-Engine Ural(消防車)
ロシアの非武装車両に消防車が追加。
使いどころは?だけどw
迫撃砲のFire at Pointの半径
半径が250mまでに制限された模様。
演出で使ってるから2000mくらいまでは欲しかったなあ。
1.2.2で直った模様。バグでしたかそうでしたか(-_-;)
これのせいでどれだけミッションの修正に時間かかったと思ってんだ・・・