【GAME】ARMA3 EXILE MODサーバの旅その74
追記:AIパトロールの移動先(修正)
追記:ドアが開いてる(アイデア)
追記:Exile隠れアイテム
追記:loot_boxソースを綺麗にする
追記:poptab湧き
追記:アイテム湧きのふたたび調整
初期バランス調整のため、通常プレーを何度もやってます。
地平線が見えそうな、何もない荒野。
あれ?マップの変更があったのかな?若干違う気がする。
タキスタンには水溜りが数箇所ありますが、色バグは修正されたようです。以前は、中国の工場排水なドギツイ色でした。
(;^ω^)
ですが、水中には入れないようで・・・、水の上を歩いてしまってますが。。
ぬわっヽ(;゚д゚)ノ
出来るだけ、とんでもない所に配置するようにした、拙作アドオンのAIに殺られる。
なので、ちょっと嬉しいw
せっかく改造してるので、建物アイテム湧きを他サーバとは違う感じにする。
建物内2箇所とか湧くのが普通ですけど、これもランダム要素にしました。
湧き場所はこんな感じになってます。
_numberOfPositionsToUse = 1 max (((count _localPositions) * _maximumPositionCoverage / 100) min _maximumNumberOfLootPositions);
これをおもむろにコメントアウトにして、
_numberOfPositionsToUse = floor(random (_maximumNumberOfLootPositions+1));
で。0も考慮に入ってます。
てっきり忘れてた、ゾンビ湧きのプチ改造。
近場に建物があれば屋内で沸くようになります。
正常に動作してました。
@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;
追記:アイテム湧きのふたたび調整
そうそう、何が問題なのかわかっていなかった。
”湧きポイントが少ない建物”で、違和感があったんだった。
ExileServer_system_lootManager_spawnLootInBuilding.sqf内
_localPositionsに設定リストが入ってるので、5箇所以上あるなら、と条件を加えてみる。
んで、ご覧の通り、このサーバでは”ナイフ”が湧きます。
(;^ω^)
快適なドライビング中で御座います。
以前、サーバで一緒になったニタロウさんの動画配信を見ながらの作業・・。
(;´∀`)DayZだけどもね
さらに、アイテム湧き調整。
空中に湧くときがあるので、これの対策もしておくが、完全じゃない。複数湧かすと、広がるため。
if ((_numberOfItemsToSpawn > 0) and (_lootPosition select 2 > 0.5)) then
{
_numberOfItemsToSpawn = 1; // not ground
};
こんなので、ごまかしておく。
ガソリンスタンドで、無限に給油できるんですが、これをやめたい。・・が、どうにも仕組みが分からない。
ExileClient_util_fuel_getRealFuel
で、スタンドの給油量を、強制的に0にしたんだけど、駄目やった(CfgExileCustomCodeにてOverload)
追記:poptab湧き
Exile_PopTabsを登録しても、画面上に表示されないようで、通常のアイテムとしては使えないみたい。
こんな所に時間を掛ける訳にもいかないので、画面には表示されてないが、数Poptabをアイテムに添えておく事にする。
追記:loot_boxソースを綺麗にする
拙作loot_boxアドオンのソースが汚すぎる事に気づき、なるだけ綺麗に書き直す。
(;^ω^)private入れてへんかったw
可能であれば高速化する。
追記:Exile隠れアイテム
Exileのデフォルト設定ではコメントになってて、出現しない隠れアイテムやArma3側アイテムが結構あります。
せっかくなので、全開放してみようと決断。ちょいちょいやってたけど。
H_HelmetO_ViperSP_hex_F
とかいうヘルメット。最上級のようです。なんてったってサーマル機能付き。
optic_tws
というアイテムもデフォでは無効になってました。サーマル機能付きスコープ。
夜間でもプレーしやすくなりますよね。一応テストプレーしてみて、チート級アイテムだったら、無効にしますけど。
スプレイ缶/Exile_Item_SprayCan_Blackとか、消火器/Exile_Item_FireExtinguisherとか。
使いみちがないので、ゴミアイテム認定になってしまうけども・・。クラフトで使えるとか、あるかもしれない。
(;^ω^)ようはサバ缶次第
追記:ドアが開いてる(アイデア)
初期状態では、マップ上全ての建物のドアは、ご丁寧に閉まってます。
これをランダムにしたらどーかと・・。
(;^ω^)雰囲気出るねぇ~
プレーヤーが居た形跡として、このドアの状態を確認したりしますが、これを、無効化する訳です。。。
ドアの開け閉めには、BIS_fnc_doorコマンドを利用します。公式
残念ながら、公式を見ても、な~んにも書いてない・・という。
[_Buildding,ドア番号,0 or 1] call BIS_fnc_Door;
が仕様のようですが、ググッてみると、何か動作が怪しいようです。
コマンドにバグ(参考)が入ってるようで、一度”this”という変数にも、オブジェクト値を入れておけば大丈夫だそうです。
(;^ω^)
んで、この機能もloot_boxアドオンに入れ込む予定です。
ただ、クライアント側で実行しなきゃならんかったら、駄目やけど。
追記:AIパトロールの移動先
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の範囲でランダムとなります。
これだと、サーバ起動時に決まった順路になってしまいそうなので、順路をランダムにするのも手ですね。
private _locations行のすぐ下に、Exileのユーティリリティを使いましょう。
_locations = _locations call ExileClient_util_array_shuffle;
ウェイポイントの順序をシャッフルしちゃいます。
(;^ω^)
長くなってしまったので、結果は次の記事で。