返信先: ARMA3 ミッションエディットスレ
ホーム › フォーラム › TRI Gaming フォーラム › ARMA3 ミッションエディットスレ › 返信先: ARMA3 ミッションエディットスレ
2014年11月29日 9:52 AM
#29144
参加者
- AIスキル設定
今回はAIのスキル設定の仕方について紹介します。
数値がデフォルトのままだと敵AIは強すぎてバランス崩壊を招く場合があります。
特に命中率関係の設定変更は必須と考えます。
AIskills.sqf
if (!isServer) exitWith {};
{
if (side _x == EAST) then {
_x setskill ["aimingAccuracy",0.2];//命中率(全て0~1の値)
_x setskill ["aimingShake",0.8];//手ぶれ具合
_x setskill ["aimingSpeed",0.5];//照準速度
_x setskill ["commanding",0.95];//指揮力
_x setskill ["courage",0];//度胸
_x setskill ["general",0.8];//戦略
_x setskill ["reloadSpeed",0.4];//再装填速度
_x setskill ["spotDistance",0.5];//補足範囲
_x setskill ["spotTime",0.8];//補足まで至る時間
_x unassignItem "NVGoggles";//NV除去
_x unassignItem "NVGoggles_INDEP";
_x unassignItem "NVGoggles_OPFOR";
_x removeItem "NVGoggles";
_x removeItem "NVGoggles_INDEP";
_x removeItem "NVGoggles_OPFOR";
_x removeItem "NVGoggles";
_x addPrimaryWeaponItem "RH_SFM952V";//シュアファイヤ追加
_x enablegunlights "forceOn";//点灯
_x addEventHandler ["killed", {handle = [_this select 0] execVM "scripts\bury.sqf"}];//死体削除スクリプト
};
} forEach allUnits;//EASTサイドの全てのユニットに対し適用
{
if (side _x == INDEPENDENT) then {
_x setskill ["aimingAccuracy",0.2];//命中率(全て0~1の値)
_x setskill ["aimingShake",0.8];//手ぶれ具合
_x setskill ["aimingSpeed",0.5];//照準速度
_x setskill ["commanding",0.95];//指揮力
_x setskill ["courage",0];//度胸
_x setskill ["general",0.8];//戦略
_x setskill ["reloadSpeed",0.4];//再装填速度
_x setskill ["spotDistance",0.5];//補足範囲
_x setskill ["spotTime",0.8];//補足まで至る時間
_x unassignItem "NVGoggles";//NV除去
_x unassignItem "NVGoggles_INDEP";
_x unassignItem "NVGoggles_OPFOR";
_x removeItem "NVGoggles";
_x removeItem "NVGoggles_INDEP";
_x removeItem "NVGoggles_OPFOR";
_x removeItem "NVGoggles";
_x addPrimaryWeaponItem "RH_SFM952V";//シュアファイヤ追加
_x enablegunlights "forceOn";//点灯
_x addEventHandler ["killed", {handle = [_this select 0] execVM "scripts\bury.sqf"}];//死体削除スクリプト
};
} forEach allUnits;//INDEPENDENTサイドの全てのユニットに対し適用
森林での戦闘はプレイヤー側の不利となりますので、
[“aimingAccuracy”,0.2]を[“aimingAccuracy”,0.15]若しくは[“aimingAccuracy”,0.1]に設定しましょう。
死体削除スクリプト
bury.sqf
// Deletes dead Enemy
_unit = _this select 0;
if (not (_unit isKindOf "Man")) then
{
{_x setpos position _unit} forEach crew _unit;
sleep 30;
deletevehicle _unit;
};
if (_unit isKindOf "Man") then
{
if(not ((vehicle _unit) isKindOf "Man")) then {_unit setpos (position vehicle _unit)} ;
sleep 30;
hideBody _unit;
sleep 4;
deleteVehicle _unit;
};
死後30秒後に削除します。
これの目的はクライアント側の負荷軽減です。
_x addEventHandler ["killed", {handle = [_this select 0] execVM "scripts\bury.sqf"}];
この命令文は_xが殺された場合handle=のスクリプトが_xに対して作動するという事です。
この構文は少し特殊な為追々理解していただければよいです。
そしてinit.sqfに構文を足します。
// SKILLS
if (isServer) then {
execVM "scripts\aiSkill.sqf";
};
戦闘時間を長引かせると同時に、雰囲気をより長く楽しむ為にも是非取り入れてみてください。
敵を勇猛果敢にしたい場合は[“courage”,1]に設定。