返信先: Arma3 スクリプト公開スレ
ホーム › フォーラム › TRI Gaming フォーラム › Arma3 スクリプト公開スレ › 返信先: Arma3 スクリプト公開スレ
移動中の車輌に制圧射撃をさせられるRun-and-Gunスクリプト
依頼品。防衛ミッションや敵の増援が来るようなシチュエーションにおいて、遠方から接近中に制圧射撃をしてくるようになります。
ガンナー席のある車輌にのみ対応しています。
テクニカルに乗った陽気な人達による賑やかし、軍の容赦ない弾幕などの表現にお使いください。
SP/MP対応。だいぶ派手目なサンプル付き。
動画:
ArmA3 script – Run and Gun script
つかいかた:
・適用したい車輌のinitに↓のコマンドを貼り付けます。
_nul = [this,制圧射撃をやめる距離n(m)] execvm "scripts\run_and_gun.sqf"
制圧射撃をやめる距離n(m)はトリガの中心範囲からの直径です。
例:_nul = [this,200] execvm "scripts\run_and_gun.sqf"
(湧かせた車輌にも適用できます。thisにあたる変数の変更はご自分で。)
・トリガsuppress_pointを範囲を決めて配置します。
このトリガの範囲内に入ると車輌は制圧射撃を始めます。
入ると無条件で発砲を始める為、車輌の目標から目視できる範囲に置くといい感じです。
動作について:
・より効果的な制圧射撃を行うため、車輌は通常交戦距離に入るまで視認距離・視認精度が大幅に向上しますが、射撃精度は落ちます。
・制圧射撃はガンナー席の各武器をランダムに選択して発砲します。また、制圧中に使用した武装は一定間隔ごとに自動で補充されます。
・suppress_point から制圧射撃をやめるまでの距離n(m)以内(通常交戦距離)に入ると制圧射撃・自動補充は停止し、デフォルトの挙動に戻り、調整されたスキルも元に戻ります。
・直近に目標が見つかるまでは suppress_point に向けて制圧射撃をします。
・とりあえず動くようにしたのでフィードバックや要望ください
なかみ:
if (!isserver) exitwith {};
sleep ((random 3)+3);
private ["_veh", "_wep", "_mag", "_skill", "_rearm","_stop_range","_cur_mag","_cur_mag_ammo_cnt"];
_veh = _this select 0;
_stop_range = _this select 1;
_wep = count (_veh weaponsturret [0]);
_mag = _veh magazinesturret [0];
_skill = skill _veh;
_rearm = 0;
gunner _veh dowatch suppress_point;
gunner _veh dotarget suppress_point;
_veh setskill ["spotDistance", 1];
_veh setskill ["spotTime", 1];
_veh setskill ["aimingShake", .75];
_veh setskill ["aimingAccuracy", .35];
waituntil {_veh inarea suppress_point};
while {_veh distance suppress_point > _stop_range} do {
if (!alive gunner _veh) exitwith {};
if (isnull (_veh findnearestenemy _veh)) then {gunner _veh dowatch suppress_point; gunner _veh dotarget suppress_point;};
_rearm = _rearm +1;
_rnd_wep = floor (random _wep);
for "_i" from 0 to ((floor(random 20))+25) do {
_veh action ["useweapon",_veh,_veh turretUnit [0], _rnd_wep];
sleep .02;
};
sleep random 3;
if (_rearm > 20) then
{
//武装の自動補充
for "_i" from 0 to count _mag -1 do
{
_cur_mag = _mag select _i;
_cur_mag_ammo_cnt = (getNumber(configfile >> "CfgMagazines" >> _cur_mag >> "count"));
_veh addmagazineturret[_cur_mag,[0],_cur_mag_ammo_cnt];
sleep .2;
_rearm = 0;
//hint format ["-REARMING- current magazine:%1 ammo count:%2",_cur_mag, _cur_mag_ammo_cnt];
};
};
};
_veh setskill _skill;