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

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

#28917
Line
参加者
    ミッション製作編

実際に画像込みで説明したいと思いますので、これはまた後日に。

    外部スクリプトの注意点

Armaholic等で有志の方が製作した外部スクリプトが種類豊富にありますが、何も手を付け加えず導入できるのは限られています。
また、それらは大変便利な物もありますがよく見ればデメリットもあります。

例としていくつか紹介したいと思います。

Urban Patrol Script 通称:UPS
これはマーカーやオブジェクトの範囲内を指定し、AIをパトロールさせるというスクリプトです。
マーカーだけ置いて、ユニットのイニシャライズに1行構文を入れるだけで勝手に徘徊を始めます。
これだけ聞くと便利なもので導入もさほど難しくはないです。

デメリット

数秒間の間に、存在している配下ユニットに対してdoMove指示を出し続けています。
即ちそれが何グループにも及ぶとサーバー側に負荷がかかります。

それでも使いたいという方は10人くらいの少人数ミッション向けに使用された方が良いと考えます。

Arsenal
みんな大好きお化粧道具箱です。
説明するまでもないでしょう。便利なものです。

デメリット
アーセナルに追加した種類が多ければ多い程、参加した人数が多ければ多いほどサーバー側ではなくクライアント側に対しての負荷が高まります。
何故かというと、十人十色、引き出すものが各々違うのでそれを表示させるグラフィックの量が多くなるからです。

対応策
大人数ミッションの時はできる限り必要最低限の物で収める事です。

createVehicle Scriptの使用
いくつものスクリプトを多重で走らせるとサーバー側に負荷がかかるのと、createVehicleを使用しての多重沸きはクライアント側に対しても相当な負荷となります。
現に私がそれをやって学びました。

例として私が書いた構文を記載します。

Create_GUER.sqf

if (!isServer) exitWith {};

_starts = ["inf_spw1","inf_spw2","inf_spw3","inf_spw4","inf_spw5","inf_spw6","inf_spw7","inf_spw8"];
_createpos = getmarkerpos (_starts select (floor random 8));

_squadgroup = creategroup (EAST);
_squadgroup = [_createpos, (EAST), ["CAF_AG_EEUR_R_AK47","CAF_AG_EEUR_R_RPK74","CAF_AG_EEUR_R_PKM","CAF_AG_EEUR_R_AK47"]] call BIS_fnc_spawnGroup;

sleep 0.1;
_leader = leader _squadGroup;

if (debug == 1) then {
_sumark = [_leader] execVM "scripts\markers\marker_enemy_Inf.sqf";
	};
{_x addEventHandler ["killed", {handle = [_this select 0] execVM "scripts\bury.sqf"}]} forEach (units _squadgroup);

//Skills
{
_x setskill ["aimingAccuracy",0.2];
_x setskill ["spotDistance",0.5];
_x setskill ["spotTime",0.8];
_x setskill ["courage",0];
_x setskill ["commanding",0.95];
_x setskill ["aimingShake",0.8];
_x setskill ["aimingSpeed",1];
		//_x addPrimaryWeaponItem "acc_flashlight";
		//_x enablegunlights "forceOn";

}foreach (units _squadgroup);

_squadgroup setSpeedMode "NORMAL";
_squadgroup setCombatMode "RED";
_squadgroup AllowFleeing 0;
_squadgroup setBehaviour "AWARE";
_squadgroup setFormation "LINE";

while {alive _leader} do {

_waypoints3 = ["WP1","WP2","WP3"];
_wpselect3 = getmarkerpos (_waypoints3 select (floor random 3));
_wp3 setWaypointType "SAD";
_wp3 = _squadgroup addwaypoint [_wpselect3,0];

sleep 300;};

waitUntil{!alive _leader};
execVM "scripts\createvehicle\createinf_guer.sqf";

これの概要を説明すると
まずゲリラ兵を8か所あるうちのマーカーのいずれか1つのマーカーから出現させ、3つあるうちの1つのマーカーに警戒しながら移動させる。
そして5分間経つとまた3つあるうちの1つを選択しそこに移動をはじめ、リーダーが死亡するとまたこのスクリプトが初めからループするというスクリプトです。
要するに無限沸きということです。

これが2~3パーティーならまだ許容範囲なのですが、実際のミッションはこれだけではなく他にも色々なスクリプトを同時に走らせる事もあるので使用の際には注意が必要です。

結論
外部スクリプトの使用にあっては、ただミッションに放り込むだけではなく、テキストで開いてみて内容をある程度把握することが大切です。
また実際に眺めてみると勉強になりますし、自分のやりたかった事のヒントもでてくるでしょう。