返信先: ARMA3 ミッションエディットスレ

ホーム フォーラム TRI Gaming フォーラム ARMA3 ミッションエディットスレ 返信先: ARMA3 ミッションエディットスレ

#275796
アバター画像Schalldampfer
参加者

~兵科に合わせたArsenalの設定~
よくある
「45連マガジンはAutoriflemanだけが使ってください!」
「特殊装備は失くすとアーセナルから出せません!」
を改善するために、兵科(というかプレイヤーUnitのClassname)によってArsenalのリストを変える方法を、今分かる範囲でまとめました。

普通の[JP]_co10_simple_1みたいなアーセナル設定がされている前提です。

1.兵科に合わせたArsenalのデータを準備
arsenal.sqfに兵科ごとのデータ(全アイテムでも追加分だけでもOK)を準備
例)

	//SLのVector21とDAGR
	_slItems = [
		"ACE_Vector",
		"ACE_DAGR"
	];
	//Autorifelmanのみ45連マガジン許可
	_arMags = [
		"CUP_45Rnd_TE4_LRT4_Green_Tracer_545x39_RPK_M"
	];

2.プレイヤーユニットの種類(typeOf player)から兵科を判定し、どのデータを使うか決定
以下のようなコードを、arsenal.sqfの[_box,_aWeapons,true] call BIS_fnc_addVirtualWeaponCargo;以前に書き込んでください。

	//プレイヤーのClassnameを取得
	_class = typeOf player;
	//SquadLeader
	if (_class find "_SL_" > -1) then { //Classnameに_SL_が入っている場合、SquadLeaderだと判定
		_aItems append _slItems; //共通アイテムと追加アイテムを双方許可したい場合はこちら
		//_aItems append _slItems; //指定したアイテム「のみ」を許可したい場合はこちら
	};
	//Autorifleman
	if (_class find "_AR_" > -1) then { //Classnameに_AR_が入っている場合、Autoriflemanだと判定
		_aMags append _arMags; //マガジンのリストに45連マガジンを追加
	};

※使っているユニットによって判定条件が変わります。

3.プレイヤーごとに異なるArsenalを適用
3-1. 3den Editorにて、以下の作業を実施
・各Arsenal箱のinitから、execVM "scripts\arsenal.sqf";を削除
・各Arsenal箱のVariable Nameを適当に設定

3-2. arsenal.sqfの最後の方を以下の通りに変更(各配列の3つ目の要素をfalseにする)

		[_box,_aWeapons,false] call BIS_fnc_addVirtualWeaponCargo;
		[_box,_aMags,false] call BIS_fnc_addVirtualMagazineCargo;
		[_box,(_aItems + _aClothes),false] call BIS_fnc_addVirtualItemCargo;
		[_box,_aBacks,false] call BIS_fnc_addVirtualBackpackCargo;
		["AmmoboxInit",_box] call BIS_FNC_Arsenal;
		_box setVariable ["bis_fnc_arsenal_condition",{true},false];

3-3. arsenal.sqfの最初の方から以下の行を削除
if (!isServer) exitWith {};
3-4. init.sqfに以下の記述を追加
{[_x] execVM "scripts/arsenal.sqf"} forEach [箱1,箱2,...];

※[箱1,箱2,…]は、[]内に各Arsenal箱に設定したVariable Nameをカンマ区切りで入力する。