【GAME】ARMA3 EXILE MODサーバの旅その74

2019年1月5日プライベートarma3,dayz,exile,mod,server

20190104234232_1

追記:AIパトロールの移動先(修正)

追記:ドアが開いてる(アイデア)

追記:Exile隠れアイテム

追記:loot_boxソースを綺麗にする

追記:poptab湧き

追記:アイテム湧きのふたたび調整

初期バランス調整のため、通常プレーを何度もやってます。

地平線が見えそうな、何もない荒野。

20190104233829_1

あれ?マップの変更があったのかな?若干違う気がする。

20190104233608_1

タキスタンには水溜りが数箇所ありますが、色バグは修正されたようです。以前は、中国の工場排水なドギツイ色でした。

(;^ω^)

ですが、水中には入れないようで・・・、水の上を歩いてしまってますが。。

20190104233429_1

ぬわっヽ(;゚д゚)ノ

出来るだけ、とんでもない所に配置するようにした、拙作アドオンのAIに殺られる。

なので、ちょっと嬉しいw

image

せっかく改造してるので、建物アイテム湧きを他サーバとは違う感じにする。

建物内2箇所とか湧くのが普通ですけど、これもランダム要素にしました。

湧き場所はこんな感じになってます。

_numberOfPositionsToUse = 1 max (((count _localPositions) * _maximumPositionCoverage / 100) min _maximumNumberOfLootPositions);

これをおもむろにコメントアウトにして、

_numberOfPositionsToUse = floor(random (_maximumNumberOfLootPositions+1));

で。0も考慮に入ってます。

image

てっきり忘れてた、ゾンビ湧きのプチ改造

近場に建物があれば屋内で沸くようになります。

正常に動作してました。

@exile_z/scripts/GetRandomLocation.sqf(最後の方)

private [“_list","_pos","_cnt"];
_list = _position nearObjects [“House",20];
_cnt = count _list;
if(_cnt > 0)then{
     _pos = (_list select (floor(random _cnt))) buildingPos 0;
     if((_pos select 0) > 0)then{
         _position = ASLToATL(AGLToASL(_pos));
     };
}else{
     // clear walls and floors
     _position = _position findEmptyPosition [0,10,"Man"];
};
// return
_position;

追記:アイテム湧きのふたたび調整

20190105155613_1

そうそう、何が問題なのかわかっていなかった。

湧きポイントが少ない建物”で、違和感があったんだった。

ExileServer_system_lootManager_spawnLootInBuilding.sqf内

_localPositionsに設定リストが入ってるので、5箇所以上あるなら、と条件を加えてみる。

んで、ご覧の通り、このサーバでは”ナイフ”が湧きます。

(;^ω^)

20190105163037_1

快適なドライビング中で御座います。

image

以前、サーバで一緒になったニタロウさんの動画配信を見ながらの作業・・。

(;´∀`)DayZだけどもね

image

さらに、アイテム湧き調整。

空中に湧くときがあるので、これの対策もしておくが、完全じゃない。複数湧かすと、広がるため。

if ((_numberOfItemsToSpawn > 0) and (_lootPosition select 2 > 0.5)) then
{
     _numberOfItemsToSpawn = 1; // not ground
};

こんなので、ごまかしておく。

image

ガソリンスタンドで、無限に給油できるんですが、これをやめたい。・・が、どうにも仕組みが分からない。

ExileClient_util_fuel_getRealFuel

で、スタンドの給油量を、強制的に0にしたんだけど、駄目やった(CfgExileCustomCodeにてOverload)

追記:poptab湧き

image

Exile_PopTabsを登録しても、画面上に表示されないようで、通常のアイテムとしては使えないみたい。

こんな所に時間を掛ける訳にもいかないので、画面には表示されてないが、数Poptabをアイテムに添えておく事にする。

追記:loot_boxソースを綺麗にする

image

拙作loot_boxアドオンのソースが汚すぎる事に気づき、なるだけ綺麗に書き直す。

(;^ω^)private入れてへんかったw

可能であれば高速化する。

追記:Exile隠れアイテム

image

Exileのデフォルト設定ではコメントになってて、出現しない隠れアイテムやArma3側アイテムが結構あります。

せっかくなので、全開放してみようと決断。ちょいちょいやってたけど。

H_HelmetO_ViperSP_hex_F

とかいうヘルメット。最上級のようです。なんてったってサーマル機能付き。

optic_tws

というアイテムもデフォでは無効になってました。サーマル機能付きスコープ。

夜間でもプレーしやすくなりますよね。一応テストプレーしてみて、チート級アイテムだったら、無効にしますけど。

スプレイ缶/Exile_Item_SprayCan_Blackとか、消火器/Exile_Item_FireExtinguisherとか。

使いみちがないので、ゴミアイテム認定になってしまうけども・・。クラフトで使えるとか、あるかもしれない。

(;^ω^)ようはサバ缶次第

追記:ドアが開いてる(アイデア)

image

初期状態では、マップ上全ての建物のドアは、ご丁寧に閉まってます。

これをランダムにしたらどーかと・・。

(;^ω^)雰囲気出るねぇ~

プレーヤーが居た形跡として、このドアの状態を確認したりしますが、これを、無効化する訳です。。。

image

ドアの開け閉めには、BIS_fnc_doorコマンドを利用します。公式

残念ながら、公式を見ても、な~んにも書いてない・・という。

[_Buildding,ドア番号,0 or 1] call BIS_fnc_Door;

が仕様のようですが、ググッてみると、何か動作が怪しいようです。

コマンドにバグ(参考)が入ってるようで、一度”this”という変数にも、オブジェクト値を入れておけば大丈夫だそうです。

(;^ω^)

んで、この機能もloot_boxアドオンに入れ込む予定です。

ただ、クライアント側で実行しなきゃならんかったら、駄目やけど。

追記:AIパトロールの移動先

image

OccupationアドオンのAIパトロールが、結構適当なので、ちゃんとパトロールさせておきたい。

@a3_exile_occupation/scripts/occupationVehicle.sqf(304行付近)

                [_group, _spawnLocation, 2000] call bis_fnc_taskPatrol;

と書かれてる部分が、パトロール先を指定してる部分。つまり、完全にランダムです。

MAP上の意味の無い場所をパトロールしてても、せっかくの効果が無いわけです。

んで、これを、以下のコードに変更します(まだテストしてません)※修正

private [“_wp","_wppos"];
private _locations = (nearestLocations[_spawnLocation,[“NameCity","NameCityCapital","Airport","NameLocal"],3000]);
{
     _wppos = position _x;
     private _locationName = text _x;
     private _locationType = type _x;
     private _ok = true;
    
     if(_locationType isEqualTo “NameLocal")then{
         private _name=toLower _locationName;
         if !((_name find “airport")>-1 or(_name find “airfield")>-1 or(_name find “military")>-1)then{
             _ok = false;    // non military area
         };
     };
     if(_ok)then{
         _wp = _group addWaypoint [_wppos,300];
         _wp setWaypointBehaviour selectRandom[“SAFE","AWARE","COMBAT"];//,"STEALTH"
         _wp setWaypointCombatMode “RED";
         _wp setWaypointCompletionRadius 100;
         _wp setWaypointType “MOVE";
         _wp setWaypointSpeed “FULL";
     };
}forEach _locations;
_wp = _group addWaypoint [_spawnLocation,300];
_wp setWaypointBehaviour selectRandom[“SAFE","AWARE","COMBAT"];//,"STEALTH"
_wp setWaypointCombatMode “RED";
_wp setWaypointCompletionRadius 100;
_wp setWaypointType “CYCLE";
_wp setWaypointSpeed “FULL";

こうすると、スポーン位置から3Km内の大きな町や空港を、移動先として巡回します(小さな集落は無視)

修正しました。ミリタリーの判断を正確に行うようにしました(でも、マップの定義次第によるところがある)

ビヘイビアを、SAFEとかCARELESSとかにすると、ちゃんと道路を走るようになるようです。

addWaypointの300を、大きくすれば、よりランダムな位置になります。ここでは、300mの範囲でランダムとなります。

image

これだと、サーバ起動時に決まった順路になってしまいそうなので、順路をランダムにするのも手ですね。

private _locations行のすぐ下に、Exileのユーティリリティを使いましょう。

_locations = _locations call ExileClient_util_array_shuffle;

ウェイポイントの順序をシャッフルしちゃいます。

(;^ω^)

長くなってしまったので、結果は次の記事で。

2019年1月5日プライベートarma3,dayz,exile,mod,server

Posted by nabe