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

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

マップ上に特定の建物の位置を記録するスクリプト

例えばアルティスにある教会の位置を探したい時はEDENエディターなどからマップを開いて探し出すことになる。
教会やガソリンスタンドならアイコンを探せば良いが軍貨物塔のようなアイコンが無い建物は探すことがとても困難になる。
そこでマップ上に自動で建物の位置を名前付きで記録するようなスクリプトを組んだ。

f:id:question_and_life:20200327073013j:plain

f:id:question_and_life:20200327073022j:plain

//_FindPosはなるべくマップの中心座標にする。このスクリプトではアルティスを基準にマップの中心座標にしている。
//nearestObjectsの探知半径はマップの最大幅の半分以上にすること。(このスクリプトの場合15360)
//_FindPosはプレイヤーの位置でも良いが、その場合には探知半径はプレイヤーの位置からマップの端までの距離以上にすること
//探したい建物はエディッタなどからクラス名を探してきてケースに追加する。
//例えば礼拝堂を探したい場合は次のようにする。
//case ("Land_Chapel_V1_F") :
//{_Name setMarkerText ("礼拝堂(大,新)")};

_Null = []spawn 
{

	_FindPos = [15360,15360,0];

		{	_CargoPostArray = nearestObjects [_FindPos, _x,15360];

			for "_i" from 0 to (count _CargoPostArray) - 1 do
			{	_Post 	  = _CargoPostArray select _i;
				_PostPos  = getPosATL _Post;

				_Name = "No." + str _i;
				_marker1 = createMarker [_Name, _PostPos];
				_Name setMarkerType "hd_dot";

				switch (typeOf _Post) do
				{
					case ("Land_Cargo_Patrol_V1_F"):
					{_Name setMarkerText ("ポスト(緑)")};
					case ("Land_Cargo_Patrol_V2_F"):
					{_Name setMarkerText ("ポスト(錆)")};
					case ("Land_Cargo_Patrol_V3_F"):
					{_Name setMarkerText ("ポスト(茶)")};
					case ("Land_Cargo_Patrol_V4_F"):
					{_Name setMarkerText ("ポスト(深緑)")};

					case ("Land_Cargo_HQ_V1_F"):
					{_Name setMarkerText ("本部(緑)")};
					case ("Land_Cargo_HQ_V2_F"):
					{_Name setMarkerText ("本部(錆)")};
					case ("Land_Cargo_HQ_V3_F"):
					{_Name setMarkerText ("本部(茶)")};
					case ("Land_Cargo_HQ_V4_F"):
					{_Name setMarkerText ("本部(深緑)")};

					case ("Land_Cargo_Tower_V1_F"):
					{_Name setMarkerText ("タワー(緑)")};
					case ("Land_Cargo_Tower_V2_F"):
					{_Name setMarkerText ("タワー(錆)")};
					case ("Land_Cargo_Tower_V3_F"):
					{_Name setMarkerText ("タワー(茶)")};
					case ("Land_Cargo_Tower_V4_F"):
					{_Name setMarkerText ("タワー(深緑)")};

					case ("Land_Chapel_V2_F") :
					{_Name setMarkerText ("礼拝堂(大,古)")};
					case ("Land_Chapel_V1_F") :
					{_Name setMarkerText ("礼拝堂(大,新)")};
					case ("Land_Chapel_Small_V2_F") :
					{_Name setMarkerText ("礼拝堂(小,古)")};
					case ("Land_Chapel_Small_V1_F") :
					{_Name setMarkerText ("礼拝堂(小,新)")};
					case ("Land_Church_01_V1_F"):
					{_Name setMarkerText ("教会(白)")};

					case ("Land_Communication_F") :
					{_Name setMarkerText ("電波塔")};
					case ("Land_TTowerBig_2_F") :
					{_Name setMarkerText ("送信塔(高)")};
					case ("Land_TTowerBig_1_F") :
					{_Name setMarkerText ("送信塔")};

					case ("Land_Radar_Small_F") :
					{_Name setMarkerText ("レーダー(小)")};
					case ("Land_Radar_F") :
					{_Name setMarkerText ("レーダー")};

					case ("Land_HelipadSquare_F") :
					{_Name setMarkerText ("ヘリパッド(四角)")};
					case ("Land_HelipadCircle_F") :
					{_Name setMarkerText ("ヘリパッド(円)")};
					case ("Land_HelipadCivil_F") :
					{_Name setMarkerText ("ヘリパッド(民間)")};
					case ("Land_HelipadRescue_F") :
					{_Name setMarkerText ("ヘリパッド(レスキュー)")};
					case ("Land_HelipadEmpty_F") :
					{_Name setMarkerText ("ヘリパッド(ステルス)")};
					case ("Land_JumpTarget_F") :
					{_Name setMarkerText ("パラシュートジャンプ目標")};
				};

				switch (true) do
				{
					case((typeOf _Post) in [
					"Land_Cargo_Patrol_V1_F","Land_Cargo_Patrol_V2_F",					
					"Land_Cargo_Patrol_V3_F","Land_Cargo_Patrol_V4_F"]):
					{_Name setMarkerColor "ColorGreen"};

					case((typeOf _Post) in [
					"Land_Cargo_HQ_V1_F","Land_Cargo_HQ_V2_F",
					"Land_Cargo_HQ_V3_F","Land_Cargo_HQ_V4_F"]):
					{_Name setMarkerColor "ColorGreen"};

					case((typeOf _Post) in [
					"Land_Cargo_Tower_V1_F","Land_Cargo_Tower_V2_F",
					"Land_Cargo_Tower_V3_F","Land_Cargo_Tower_V4_F"]):
					{_Name setMarkerColor "ColorGreen"};

					case((typeOf _Post) in [
					"Land_Chapel_V2_F","Land_Chapel_V1_F",
					"Land_Chapel_Small_V2_F","Land_Chapel_Small_V1_F"]):
					{_Name setMarkerColor "ColorYellow"};

					case((typeOf _Post) in [
					"Land_Church_01_V1_F"]):
					{_Name setMarkerColor "ColorPink"};

					case((typeOf _Post) in [
					"Land_Communication_F","Land_TTowerBig_2_F","Land_TTowerBig_1_F"]):
					{_Name setMarkerColor "ColorBlue"};

					case((typeOf _Post) in [
					"Land_Radar_Small_F","Land_Radar_F"]):
					{_Name setMarkerColor "ColorBlue"};

					case((typeOf _Post) in [
					"Land_HelipadSquare_F","Land_HelipadCircle_F",
					"Land_HelipadCivil_F","Land_HelipadRescue_F",
					"Land_HelipadEmpty_F","Land_JumpTarget_F"]):
					{_Name setMarkerColor "ColorOrange"};
				};


			};
		}forEach [[
		"Land_Cargo_Patrol_V1_F","Land_Cargo_Patrol_V2_F","Land_Cargo_Patrol_V3_F","Land_Cargo_Patrol_V4_F",
		"Land_Cargo_HQ_V1_F","Land_Cargo_HQ_V2_F","Land_Cargo_HQ_V3_F","Land_Cargo_HQ_V4_F",
		"Land_Cargo_Tower_V1_F","Land_Cargo_Tower_V2_F","Land_Cargo_Tower_V3_F","Land_Cargo_Tower_V4_F",
		"Land_Chapel_V2_F","Land_Chapel_V1_F","Land_Chapel_Small_V2_F","Land_Chapel_Small_V1_F",
		"Land_Church_01_V1_F",
		"Land_Communication_F","Land_TTowerBig_2_F","Land_TTowerBig_1_F",
		"Land_Radar_Small_F","Land_Radar_F",
		"Land_HelipadSquare_F","Land_HelipadCircle_F",
		"Land_HelipadCivil_F","Land_HelipadRescue_F",
		"Land_HelipadEmpty_F","Land_JumpTarget_F"]];
};