arma3でチキンクリスプ食べながらスクリプト

arma3のエディッタ向けスクリプトを自分用に投稿

Arma3で航空機を誘導したりするマーシャラー用スクリプト(離陸用スクリプトVer0.4編)

とりあえず動くところまで確認できたので公開

  _Marshaller = Marshaller; //まだver0.4なので甲板作業員にグローバル変数でMarshallerと名付けて使っている

	if(vehicle player isKindOf "Helicopter")then /*プレイヤーの車両の種類を判別*/
	{
		/*	ヘリのエンジンがオフなら真、オンなら偽
			ヘリとマーシャラーの高低差が1.5m以内にあるなら真、1.5mを超えると偽
			条件:偽なら最初のループへ戻る
			艦船の上だと機能しない可能性があるので、後日さらに等で速度検知などで対応したい */

		_heli = vehicle Player;
		_MaHeigh = (getPosATL _Marshaller)select 2;
		_HeHeigh = (getPosATL _heli)select 2;
		if(1.5 >= (_MaHeigh - _HeHeigh) && (_MaHeigh - _HeHeigh) >= -1.5)then
		{
			[_Heli,_Marshaller] spawn
			{
				_Heli		 = _this select 0;
				_Marshaller  = _this select 1;

				if(!(isEngineOn _heli))then
				{
					/*	コールドスタート時の処理
						スリープを挟んだりするためにspawnを使う
						2秒スリープはヘリに乗り込んで座席に座るまでの時間
						20秒スリープはエンジンの出力が離陸可能になるまでの平均時間
						5秒スリープは合図終了するまでの時間
						10秒スリープはクリアサインを開始から終了までの時間*/

					sleep 2; 
						/*エンジンのダメージを参照し、オレンジなら緊急停止のサインを出す*/
					if( 0.33 > (_Heli getHitPointDamage "hitEngine") )
					then
					{
						_Marshaller Switchmove	"Acts_JetsMarshallingEnginesOn_in";
						_Marshaller playMove	"Acts_JetsMarshallingEnginesOn_loop";
						sleep 20;

						_Marshaller playMove 	"Acts_JetsMarshallingEnginesOn_Out";
						sleep 5;

						_Marshaller Switchmove	"Acts_JetsMarshallingClear_in";
						_Marshaller playMove	"Acts_JetsMarshallingClear_loop";
						_Marshaller playMove	"Acts_JetsMarshallingClear_Out";
						sleep 8;

						_Marshaller Switchmove	"Acts_JetsMarshallingStraight_in";
						_Marshaller playMove 	"Acts_JetsMarshallingStraight_loop";
						WaitUntil {((getPosATL _Heli)select 2) > 10};
						_Marshaller playMove	"Acts_JetsMarshallingStraight_out";
					}
					else
					{
						_Marshaller Switchmove	"Acts_JetsMarshallingEnginesOn_in";
						_Marshaller playMove	"Acts_JetsMarshallingEnginesOn_loop";
						sleep 6;
						_Marshaller Switchmove	"Acts_JetsMarshallingEmergencyStop_in";
						_Marshaller playMove	"Acts_JetsMarshallingEmergencyStop_loop";
						sleep 10;
						_Marshaller playMove	"Acts_JetsMarshallingEmergencyStop_Out";
					};
				}else
				{
					/*エンジンがある程度動いている状態からの誘導
					 エンジンスタートの合図は省略している
					 エンジンのダメージ処理は同じ*/
					if( 0.33 > (_Heli getHitPointDamage "hitEngine") )
					then
					{
						_Marshaller Switchmove	"Acts_JetsMarshallingClear_in";
						_Marshaller playMove	"Acts_JetsMarshallingClear_loop";
						_Marshaller playMove	"Acts_JetsMarshallingClear_Out";
						sleep 8;

						_Marshaller Switchmove	"Acts_JetsMarshallingStraight_in";
						_Marshaller playMove 	"Acts_JetsMarshallingStraight_loop";
						WaitUntil {((getPosATL _Heli)select 2) > 10};
						_Marshaller playMove	"Acts_JetsMarshallingStraight_out";
					}
					else
					{
						_Marshaller Switchmove	"Acts_JetsMarshallingEmergencyStop_in";
						_Marshaller playMove	"Acts_JetsMarshallingEmergencyStop_loop";
						sleep 10;
						_Marshaller playMove	"Acts_JetsMarshallingEmergencyStop_Out";
					};
				};
			};
		};//If End
	};