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

20190108224334_1

追記:ストーリーとかw

追記:トレーダー位置調整

追記:デバッグ

追記:車両の座席とかの取得

追記:lootbox調整

追記:EDENエディタの隠し機能!?(音楽プレーヤー)

テストプレーし続けます。

OccupationのAI車両パトロールの挙動を遠目に確認。うんうん、こんなもんかな。

20190108224927_1

姿を見せての挙動確認しようとしたところ。。

20190108224953_1

あれ?発砲してないのに、死んでる。。

(;´Д`)

20190108230323_1

ゾンビが先程の死体に向かって、オーバーキルしてる。。

判定がおかしくなってしまったんだろうか。死体なんだけども、当たり判定があるよう。。Arma3のバグ?

偶然、車が止まった場所が悪かったって事かな。。

20190108230155_1

前記事で紹介した新しいアドオンの機能。”ランダムでドアが開いてる”。しっかり動いてるようです。

いまのところ、確率20%にしてますが、ほとんど閉まってる。

20190108230910_1

おおっ、デカすぎるベルゲン発見。

20190108231206_1

振り返ったらゾンビが棒立ちやった。

20190108231528_1

奥の部屋には、LOOTBOXが。。

(;^ω^)

20190108232343_1

このAIには触ってはいけません(アドオンAI)

20190108233937_1

あまりテストしてなかった、ミッションのチェック。固定機関銃の初弾でヘッショされる。。。

(;´Д`)ま、まぁ・・当たる時もあるさ

追記:EDENエディタの隠し機能!?

20190110022905_1

公式を見ていたら偶然見つけました。。ユーティリティ画面。こんなのがあるんですね。

内蔵されてる237曲もの曲が聞けるジュークボックスとか面白そうですよ。

(゚∀゚)ノ

20190110022727_1

EDENエディタのメニューで、「Tools」「Debug Console」を選択します。

20190110022720_1

すると、こんなウィンドウが出ます。定義されたスクリプトを試験したりベンチを取ったりできます。

んで、ここに「utils」を入力して、「LOCAL EXEC」ボタンを押します。

すると、怪しげなメニューが表示されます。

(;^ω^)

4番目のJukeboxを選ぶと、あら不思議?!Arma3が音楽プレーヤーになってしまいます!

好きなだけ、This is Warの全バージョンが聞けちゃうっ!

私は良く知りませんが、ボヘミアの過去作なんかも収録されてるようです。DLCを購入していなくても、DLCキャンペーン曲が聞けるようです。

image

サポーターエディションや、デラックス版を持ってると、Arma3のディレクトリに、「bonus」というディレクトリがあって、そこにMP3ファイルが置かれるそうです。

持ってないよーーという方で、直にファイルで聞きたいというなら、Jukeboxで表示された楽曲のクラス名をメモって・・。

EDENの「Config Viewer」からcfgMusicと辿ります。

すると、登録された全楽曲のリストが表示されるので、そこに、/a3_music_f_・・/とかのパスっぽい文字列を見つけます。

それが、実際のファイルを指してる場所になるので・・。

Arma3のディレクトリの「Addons」又は「・・/Addons」から、目的のPBOファイルを探します。

そして、PBOファイルを解凍(PBO Managerを利用)すると、ogg形式のファイルに辿り着けます。

(;^ω^)えらい面倒

追記:lootbox調整

image

拙作アドオンの調整作業。

適当にランダム任せでやっていた所を中心に、調整作業。

アイアンマンAIという不死のヤツが居るんですが・・w、いつも変なところに湧いていたのが気になってた。

ハズレ要素としての、エロ本湧きとか・・w

設定値の微調整やら。

Marksmen DLCのThis isWarは哀愁があってええです。

追記:車両の座席とかの取得

image

BIS_fnc_vehicleRolesというコマンドで、車両の座席やカーゴ、銃座などの情報を取得できます。

[
     [“Driver”,[]],
     [“Turret”,[0]],
     [“Turret”,[0,0]],
     [“Cargo”,[0]],
     [“Cargo”,[1]],
     (…)
]

内容はこんななようです。1番目は座席クラス名、2番目は何でしょう?

公式に書かれてました。1次元目は、タレット番号(0~)、2次元目はタレット毎の座席のようです(1タレットに複数席ある場合がある?)

機銃席に移動させる場合はこんな。

_unit moveInTurret [_vehicle, ****];

_unit moveInDriver _vehicle;  ドライバ-席へ

_unit moveInCargo _vehicle; カーゴへ

これを使って・・なんかしようとか思ってませんけども。メモです。

追記:デバッグ

image

色々とスクリプトを弄ってしまったので、実際のサーバでのデバッグ作業。

間違い無いように書いてるつもりですが・・

やっぱやってまう。人間だもの・・

(;´∀`)

追記:トレーダー位置調整

20190111011755_1

トレーダーの位置がズレズレだったのを、調整。

細々した作業を一気にやっつける。。。

(;^ω^)

追記:ストーリーとかw

image

サーバ構築しながら、書き留めてたストーリーとかがあるんですが。。。

(;´∀`)ほら・・雰囲気大事

かなり長かったんで、小さくまとめてみた。

****ここから

東アジア全域を巻き込んだ世界三次大戦が終結を迎えたが、その熱波の矛先は人類の次の試練へと形を変えていく。

世界各地の連鎖的な経済破綻により、急増する犯罪、紛争やテロリストの暗躍、新国家の樹立が相次いでいった。
新秩序を保持すべく戦勝国が中心となり、国際連合が再構築された。
増加の一途を辿る犯罪者の収容問題が深刻化、先の大戦によって核で汚染された地域が、その候補として選ばれた。
欧州区はアルティス島、東アジア区はタノア島、中東区はタキスタンと定められた。

ここに送られた者は、どの国や組織にも属さない、法が一切及ばない地域で、生き抜く事が強要される。
「死が定められた追放者・・」、彼らの事を人はExileと呼んだ。

君は、わずか数分足らず裁判で、中東タキスタンに送られる事が決められた。

****ここまで

【温泉】山間の強塩りんご温泉@山形県朝日町

P_20190107_133658

近場を通ったので、行ってみました。りんご温泉

山形県の朝日町、360度山に囲まれた、悪く言えば陸の孤島ともいうべき、主要経済圏から大きく逸れ正直アクセスし難い場所でもあります。

そういう意味では、秘湯と言っても過言じゃありません。

日帰りで300円で入ることができます。お安い

P_20190107_133629

お湯は綺麗に白く濁っていて、硫黄とも若干違った独特な匂いが鼻を刺激します。

これは、同じ山形県の他地域の温泉とは、また違った泉質です。面白い。

泉質は、硫黄系では無く強ナトリウム泉で、他成分も大量に含まれているようでした(カルシウム・炭素等)

また、この温泉施設ならでは、特産品の「りんご」が湯船に10数個浮かんでおります。何の意味も為さないような気がしますが・・、雰囲気でしょう。

行ったのが冬場(1月)だったので、閉鎖中でしたが、別棟で露天風呂もあるようです。

P_20190107_133751

男風呂からは、このような大自然に囲まれた風景を眺める事ができます。

晴れた夏場なら最高の眺めじゃないでしょうか。

休憩室やレストランも完備してます。近くにコンビニ(ファミマ)もあり。

このコンビニを目指してくれば、間違いないです(近場にコンビニや店舗が無いので)

やはり、残念な事に、唯一の交通手段は287号線しかなく(鉄道も無し)、近場に大きな観光地が皆無、どこかに行く道すがら・・という事もありえない場所なんです。

ただ、泉質が素晴らしいので、温泉マスターを目指してる方なら、一度は浸かってきて欲しい。オススメです。

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

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;

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

(;^ω^)

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

nabekのなぬげなblog(゚∀゚)!