スクリプトコマンドのTips
コピペですぐ使えるスクリプトコマンド集です。
Edenエディター(3Dミッションエディタ)の実装により、ArmA3では既に必要ないコマンドもありますが、そのまま掲載します。
Unitのinitialize欄用
建物へのユニット配置
this setpos (nearestBuilding this buildingPos 0);
ユニットを設置した位置に最も近い建物の0番目のポジションにユニットを設置する。
監視塔が沢山ある場合などに重宝する。
buildingPos Xの部分をランダム化するとリプレイ性が高まる。
ユニットの高度を指定して配置
this setpos [ getPos this select 0, getPos this select 1, (getPos this select 2) +5]
setPosの引数は3次元座標の配列。建物内部に配置する時などに使用。
この例ではマップ上でユニットを置いた地点の地面を基準にして、+5m高いところに設置している。
ArmA2では高さを指定するコマンドが幾つかあり、SetPosを使用した場合は地面から(海など水面の場合は海底からの高さ)が基準点(0m)となる。
ユニットの姿勢指定
this setUnitPos "up";
ほぼ姿勢が変わらなくなる。"DOWN","UP","Middle"を指定。
unitNameが所属するグループ全体への姿勢指定
{_x setUnitPos "UP"}forEach units group this;
ユニットが敵を発見したらAIの判断で自由に動くようにする
this setCombatMode "RED";
Waypointのengage at willと同じ。engage at willになっていないとグループリーダまたは単品で置いたユニットは動きにくくなる。
グループリーダ指揮下のユニットはどの道リーダにengage命令を受ける事が多いのであまり意味はないかもしれない。
ウェイポイントを使用したくない場合使用する。
ユニットまたはグループのBehaviour設定
this setBehaviour "COMBAT";
参考 http://community.bistudio.com/wiki/AIBehaviour
ウェイポイントのBehaviourと同じ。ウェイポイントを使用したくない場合使用する。
地点の監視をさせる
this commandWatch 3D座標;
positionはgetPosやgetMarkerPosで座標を取得する事。
地点の監視をさせる(車両用)
gunner this commandWatch 3D座標;
車両の砲塔などが自分の意図していない方向を向いている時などに。
航空機の高度下限設定
this flyInHeight 100;
ただし戦闘開始すると守るとは限らない。Behaviourが"CARELESS"なら守るが夜間だとライトが付きっ放し。
ArmA3では5~30mの指定は無示される模様(2017/01/08現在)
グループ名の変更
group this setGroupId ["Sierra One"];
マルチプレイではAIスロットの無効化でユニットが消えてしまうのでグループ内の全てのユニットに記述する必要がある。
乗り物に入っている武器弾薬を空にする
clearMagazineCargo this; clearWeaponCargo this;
乗車の禁止
[this] allowGetIn false;
機械化歩兵部隊などで歩兵ユニットが車両に乗って移動しようとするのを防ぐ。配列を要求されるので注意。
ウェイポイントのUNLOADで下車させると下車したままになるっぽいのでそれの方が良いかも。
乗り物のカーゴへユニットを移動
this moveInCargo 車両名;
Init欄に書くとミッション開始時にvehicleNameの車両に乗車しているようになる。ほかにもmoveInDriverやmoveInGunnerのコマンドがある。
Gunner席が複数あるユニットの場合はmoveInTurretを使用する。
Gunner席が複数あるユニットへユニットを移動
this moveInTurret [車両名, [0,0]]
[0,0]の配列は1番タレットの1番目の席という意味。
タレットが一つで一つの席しか持っていない場合は[0]になる。
どのタレットが何番かは適当な数字を入れて試す必要がある。
乗り物などの速度上限を指定する
this forceSpeed 10;
数値は秒速であることに注意。コンボイを組むときに役立つ。
ユニットを無敵にする
this allowDamage false;
Arsenalを起動する
["AmmoboxInit",[this,true]] call BIS_fnc_arsenal;
制限なしのArsenalにアクセスできるようになる。
アクセスできる武器等を制限したい場合、3Dエディタでユニットをクリックした時に出てくるObject:Equipment Storageから、Virtualタブを選んで、使いたいアイテムの個数を∞に設定する。
wayPointのOnAct欄用
ウェイポイント間でグループ全体をワープさせる(歩兵のグループ用)
{_x setPos waypointPosition[group this, 2]} forEach units group this;
この場合は一つ目のウェイポイントのOnActに書く。
なおグループに車両が入っていると車両のCrewだけワープしてしまう。
ウェイポイント間でグループ全体をワープさせる(車両を含むグループ用)
{vehicle _x setPos waypointPosition[group this, 2]} forEach units group this;
上記の乗り物を含むグループ版。
注意点としては下車歩兵が同じ地点にワープするので少しでも乗り物が動くと重なっている歩兵が死んでしまう。
まれに起きるので歩兵は出来るならカーゴに入れておいた方が良いかもしれない。
vehicleはもし対象のユニットが乗り物に乗っていればその乗り物の名前を返し、乗っていなければ対象のユニットをそのまま返す便利なコマンド。
なので上記の例は車両を含む場合も歩兵のみの場合も両方で使える。
航空機の高度下限設定
vehicle this flyInHeight 100;
ウェイポイントのOnActでthisは乗員を返すのでvehicleが必要。
車両の燃料復活
vehicle this setFuel 1;
MoveとCycleを組み合わせて周回させる場合に使う事もある。燃料切れが結構ある。
トリガ用条件文
ミッション開始後無条件で実行
true
デフォで記述してあるthisを削除してtrueにする。
特定のプレイヤーのクライアント上なら
player == ユニット名
playerコマンドはサーバ、各クライアント上でそれぞれ結果が違うのでトリガの実行を誰かのPC上だけなど限定するのに使える。
viewDistanceやラジオで起動するトリガの表示、天候を各クライアントでばらばらにしたり等。