返信先: ARMA3 ミッションエディットスレ
ホーム › フォーラム › TRI Gaming フォーラム › ARMA3 ミッションエディットスレ › 返信先: ARMA3 ミッションエディットスレ
~兵科に合わせた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をカンマ区切りで入力する。