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

sc20171227114217追記:最終調整

設定を変更してたチェックの繰り返し。

ずーとログを眺めております。。

(;´Д`)

よって、ブログ記事になるような事柄は起きずw

sc20171227114415お、そうだ。

こういった設定の繰り返しなので、“,”抜け”[]”対応抜けコメント抜けが、よくあります。

ログにはエラーが出ますが、示されてる行には、どう見ても間違いはありません。

こういった時に、便利なのが、コードの色分けです(Notepad++なら「言語」「C++」とかにする)

基本的文法がオカシイと、変な色になるのでヒントになります。

あと、スクリプトをイジってる時は、if文の”then”忘れ、構文最後の”;”忘れ(if終わりも書く)なんかが良くあります。

独特な文法なので、寝ぼけながらだと確実に間違います。

20171227121845_1(前記事の修正)

missionのconfig.cpp内で、水やガソリンのソース元オブジェクトを設定できますが。。。

この変更ができへんのや!!と前記事で狼狽しておりましたが、出来ました。。。

(;^ω^)

クラス名とばかり思っていたんですが、モデル名(p3dファイル)で指定するようでした。

よって、CUP Terrains井戸での水汲みなら、以下のようになります。

class CleanWaterSource{
    name=”Water cooler”;
    models[]={“watercooler”,”misc_well_l_ep1.p3d”,”misc_well_c_ep1.p3d”};
};

20171227125307_1うむむ・・。

AIにSMGを持たせると、撃ってこないんですよね。。

射撃距離を忠実に守ってくれてるのは分かるんだけども。

威嚇位はやって欲しい。

しょうが無い・・AIみんな、アサルト持たすか・・

(;´Д`)難易度が。。

sc20171228120148ちょっと脱線。

(;^ω^)

Arma3で利用可能なイベントの一覧です。

Event Handlers

別にこれで何かやろうとする訳でもありませんが・・。

プレーヤー等に起こった事象に引っ掛けて、スクリプト等を動かせます。

P_20171228_145354朝起きたら、1m近く積もってた。

おとろしい、自然の脅威。

雪下ろしで、2日ほど作業できへんかった・・。

(´;ω;`)

追記:

Arma3スクリプト備忘メモ

引数受取

[1, 2, 3] call {
_one = _this select 0;
_two = _this select 1;
_three = _this select 2;
};

よく見る引数の受取を。。

params [“_one”, “_two”, “_three”];

これで一発で済んじゃう。

テスクチャーのセット方法

object setObjectTexture [selectionNumber,texture]

object setObjectTextureGlobal [selection, texture]

オブジェクトによっては、先にモデル(Material)等が設定されてる状態でないと適用されない。Globalの方は、ネットワーク間で同期を取ってくれるようだ。

オブジェクトのモデル情報の取得

getModelInfo object

[modelName, modelPath, hasSkeleton]で帰る。modelPathが必要な機会があるかも、ないかもしれない。

NULLチェック

if (isNil “_texCustom”) exitWith {};

※exitWithはスコープ抜け(if込みで書く必要ある)

色・テクスチャー指定

#(rgb,8,8,3)color(1,0,0,1) ←青色8×8テクスチャ非透過

こんなのをたまに見るが、このようになってる。とっても多機能です。テクスチャ

#(format,width,height,number of mipmaps)color(r,g,b,a,texture type)

※”type”はよく分かんない。オプショナルです

※”color”に、”r2t”や”perlinNoise”と書く事もできるよう。未調査

フォグ(天候)

色々できるようで詳しくはここ。多くの設定があります。Takistanで、砂嵐を実現したかったのですが、色指定がありませんでしたのでダメでした(それ専用のスクリプトはネットにありましたが・・)

fogBaseでは、標高、どこまでフォグが掛かってるか。Tanoaマップとかで、港街だけが霧がかってる場合がそれ。

fogDecayは、減衰値のようです。

forecastうんぬんは、雲の指定です。

windは風、waveは水面の波、tideは海などの潮高さ関連です。

他にも沢山ありますね。。すげーなArma。

(;^ω^)

12月29日だっつーのに、何やってんだ俺w?

20171231164059_1最終調整の真っ只中です。

町に街灯置いたり、雰囲気作りのため、ちょっとばかり整理中。

見ると際限なく凝ってしまいそうになるので、引き際が大事です。

(;^ω^)

20171231164426_1あるトレーダーのお写真。

これでも、引き際を察したんですけども、こうして見ると、ゴミ屋敷にしか見えません。

(;´∀`)

Takistan Mapだけの問題かもしれませんが、ある建物にアイテムを湧かせると”建物が”宙に浮いてしまう・・w

どういうこっちゃ(;・∀・)

こういうの他にもありそうだなぁ・・。

追記:

sc20180102164613今日(1/2)は、一日中テストしておりました。うむむ・・バグだらけやん。。

(;´Д`)

テストプレーする度に必ず見つかる。。

もうちょいや・・もうちょい。。

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

sc20171223172550追記:街パトロール改造、細かいのイッパイ。丁度ええ難易度

うむむ・・。

公式フォーラムはちゃんと見てないとダメくさい。

英語は弱いので、一見スルーしちゃうんです。

(;^ω^)

既知のバグというやつ。

確かに、前々から気になっていた、ログ上のエラーが、これっぽい(放置してるとMPKilledなんちゃら、てのが沢山出る)

EXILE MOD Server側のバグ問題、ここではそのほとんどがタイポ(入力ミス・スペルミス)のようです。

ExileServer_system_garbageCollector_deleteObject、ExileServer_object_construction_network_upgradeConstructionRequest、ExileServer_system_event_ambientFlyOver_startの3ファイル

立ち上げ1時間辺りから、徐々に負荷がデカくなっていく理由が、これだったら良いんだけども。

MPKilledの所は、イベントオブジェクト削除しなきゃならないのに、出来てないって事はその分リソースを消費したままになってる?とか。

とりあえず、今、放置して様子を見ている。

sc20171223181109出なくなった・・みたい。

(負荷)重くなっていくかは、まだ調べてませんけど。
sc20171223181324ログがスッキリして気持ち良くなりましたが。

今度は、こいつが気になる。

cargo_house_v2_f.p3d (from) not found in the operative map

これが出まくる。

どこのスクリプトで出てるのか調べたんだけども、Addon上ではないよう。

それーとなく調べてみたら、mission.sqfの例のやつっぽい(addOns=[])何かを追加すれば良いようです。

まだ推測の範疇を超えてませんが。addOnsに記述する文字は、以下のオブジェクトのファイル場所っぽくて。

https://community.bistudio.com/wiki/createSimpleObject/objects

よく利用するボヘミア公式のオブジェクトリストの中に「Addons」という欄があるじゃないですか。

https://community.bistudio.com/wiki/Arma_3_CfgVehicles_EMPTY

つまりは。

a3\structures_f\mil\cargo\Cargo_House_V2_F.p3d

なら(ファイルデミリタを”_”に変えて)

a3_structures_f_mil_cargo

のように書くと良い・・・・とか(まだ推測です)

https://community.bistudio.com/wiki/Arma_3_CfgPatches_CfgVehicles

このページには、”Class”という名ですが、一致してる。

多分、これで良いっぽい。

sc20171223182723しかし・・、このCargo_House_V2_Fなんてオブジェクトは、俺のMAP内に無いっぽいんだけども・・。

(;^ω^)

あ、DMSイベントで置かれたって事かな。

放置して、確認しよう。

ついでに、CUP MOD入れてるので、”cup_core”を追記しておいた。

追記:

上記の結果ですが、うん、サーバー負荷が無くなりました。やっておいて良かった。

稼働させておくと、徐々に重くなっていっていたので、リスタート1時間毎にするか?とか思ってたので、非常にえがった。

sc20171224155506今度は、ログ上にこんなメッセージが大量に吐き出されるようになった。

Server: Object 2:2112 not found (message Type_121)

調べてみると、EXILE MODというよりも、Server側のメッセージぽくて、操作対象のAIが存在しないというものらしい。

どういう事なんでしょ。無視してもええんかな。

sc20171224154743追記:

テストプレーする度に、色々なモノが気になっていく・・。

(;´Д`)

これまで一度も、パトロール車両と出会わなかったので、気になっていたが。。

なるほど、スポーン地で爆散してたり、そもそも道路を走ってくれてなかった

(;^ω^)

コードを追ってみて、何か分かるかもしれない。

sc20171224173054この設定を忘れてた。

OccupationのBlacklistエリア登録です。

これを設定しておかないと、バンディットAIが必死にトレーダーを攻撃してしまうんです(死なないけども)

MAPマークから自動で認識してくれたら便利なんだけども。

親切なサーバーなら、プレーヤースポーン地も入れちゃうんでしょうけども、私の所はトレーダーのみとなりますw

補足:

AIスポーン前に必ず、occupation/scripts/fnc_isSafePos.sqfで、このブラックリスト&拠点&トレーダーとの距離チェックが入るようになってます。

追記:AI難易度

20171225130258_1AIさん達に、幾度となく殺されました。

私的には殺人的難易度なのですが・・

多分、コレくらいで、皆様に丁度ええのでは無いかと・・。

(;^ω^)

「初見ヘッショありますけども」

20171225130327_1おっ、やはり道路を走らないパトロールですな。

(;^ω^)
20171225130412_1AdminToolKitで偶然見つけたコレ!

やっと見つけたぞ!!

m9( ゚д゚)!!

苦節数年、いくら検索しても見つけられなかった、オブジェクト

(Kongariサーバではレア湧きアイテムとして有名なようです)

sc20171225131443ゲーム中に所持して、ログアウトして、データベースでクラス名を確認。。

Exile_Item_RubberDuck

よーやく、クラス名が判明しました。

EXILE MODのオブジェクトだったんですね。ほら、RubberやDuckで検索しても、ゴムボートの方が出てきてしまってた。

湧きアイテムとして、追加ッ!

追記:このアヒルちゃんで、かつて無い素晴らしい機能を追加しました!!これは凄いw

sc20171225145444あと、ゴミアイテムのExile_Item_BurlapSackで、アウトドアバックパックをクラフトできるようにしてたんですが・・

ダメなようでした。残念

(;´Д`)Dayz SAを参考にしたんですよ。

sc20171225131624missionのconfig.cpp内で、水やガソリンのソース元オブジェクトを設定できますが。。。

なんでか、キレイな水の方(CleanWaterSource)の設定が反映されません。

”watercooler”しか許されてないようです。

私のサーバには、watercoolerなんてモノは存在しませんので・・別のもので代用する予定でした。

サーバのコードを追って調べてみよう。

FuelSource(ガソリンのソース元)の方は、ちゃんと動作しました。

CUP MODなら以下を追加すると、ガススタンドで給油できます(ジェリ缶)

“fuelstation_feed”,”fuelstation_feed_ep1″,”fuelstation_feed_pmc”

sc20171225151002調査結果。

なるほろ・・コードを追ってみました。

(;´Д`)

mission/config.cpp(class CfgInteractionModels)から、exile_client/code/ExileClient_object_item_craft.sqf(60行)から、exileClient_util_model_isNearby.sqf(19行)ときて、周辺オブジェクトを調べてます(10m範囲)

結構シンプルで、WaterSourceだからと特別なコードはありませんでした。WorkBenchだろうと、WoodSourceだろうと、FuelSourceも同じコードを走ってます。

CfgInteractionModelsに定義されたClass内のmodels[]があるか調べてるだけです。

確か、オブジェクトには計算無しStaticタイプ(一番低負荷)があって、それで置かれると検知不能だった気がします。

た・ぶ・ん・・、それが原因かな。と

WaterSourceとして、MAP内の「井戸オブジェクト」を指定してたんですが、ダメとなりました。

(;´∀`)

んじゃ、どーしようか。自分で配置すりゃええんですけども。

補足:ウソでした。ちゃんと設定できました(次記事にて)

追記:記述忘れラッシュ

sc20171225164537

設定見る度に「あれ?」という事になり、設定忘れで有ることに気付かされる。

価格設定が終わったと思ってたら、「DLC APEX」用アイテムの事をすっかり忘れてたり・・。

クラフトに必要な、アイテム(EXILE_ITEM_****)の湧きがそもそも存在して無かったり・・(かなり有った)

Exile_Magazine_8Rnd_74Pelletsと、Exile_Magazine_8Rnd_74Slugを、今更勘違いしてたし・・。

追記:MAP外に行ったら?

sc20171225165229あ・・これも必要です。

MAP外に出た時の対応です。

こちらのスクリプトを使うと、MAP外は放射能エリアとなるようです。

ガスマスクしててもダメージにする事も可能なようです。

追記:Occupation Placeの改造

20171225122844_1街パトロールAIのコードについて改造してみようと思います。

そのキッカケはこれ。

MAPに登録された場所と、実際の街の場所が全然違う場合が結構あります。

TakistanのJazaという街は、こんな感じで2箇所に別れてますが、MAP上の地点はその真中です。

OccupationPlaceでは、この真中に沸くようになってるんです。

これではパトロールではありません。。

(;´Д`)

occupationPlaces.sqf(56行)

{
    exitWith{_pos = getPos _x};
}nearestObjects [_pos, [“house”], 300];
(下記、動作版)

この3行を追加するといいかもです(←まだ動作確認してない)

300mの範囲にある建物に、その地点を移動してるだけです。これで、もれなく街の中をパトロールしてくれるでしょう。

[“house”]を、店舗や街のランドマークなんかに書き換えても良いでしょうね(そのつもりだけど)

リストで帰ってくるので、建物をランダムで選んでもいいかもです。

建物が無かった場合でも、_posの上書き無しなだけ、なので、問題無いはず。

スポーン直前に、findEmptyPositionで安全な湧き場所を調べてるようなので、大丈夫っぽい(50m範囲)

追記:

sc20171226115402OccupationPlaces(街パトロールAI)の改造コードの続きです。

案の定、上のコードは動きませんでした。

もっと、ちゃんとした書き方にしました・・。

(;´∀`)

完全動作版がこれ。ちゃんとログ出しもしてますよ(不要なら削除して下さい)

MAP登録されてる街地点から、半径500m内の建物から、ランダムで1個選んで、そこをPlacesスポーン地点に変更します。

occupationPlaces.sqf(56行付近に追加)

    _houses=nearestTerrainObjects[_pos,[“BUILDING”,”HOUSE”],500,false];
    _logDetail = format [“[OCCUPATION:Places]::  name: %1 count %2”,_locationName,count(_houses)];
    [_logDetail] call SC_fnc_log;
    if(count(_houses) > 0) then
    {
        _pos=getPos selectRandom _houses;
        _logDetail = format [“[OCCUPATION:Places]:: change position name: %1 position: %2”,_locationName,_pos];
        [_logDetail] call SC_fnc_log;
    };

nearestTerrainObjectsの方がベストっぽかったので、こちらにしました。これなら、全てのMAPで動作するでしょう。

半径500mだと、結構な数の建物が対象になりますので、ランダム性が増します。街の建物が密集気味のMAPなら、範囲を小さくした方が良いでしょうね。

nearestTerrainObjectsでは、[“BUILDING”,”HOUSE”]を指定してますが、他にも種類がありますので、必要に応じて編集してください。

MapマークをONにしてる場合は、その場所にマークが付きますので、以下を編集すれば、前の場所にマークが付きます。

(340行付近)

_marker = createMarker [format [“%1”, _locationName],_spawnPosition];

この_spawnPositionを、_tempposに変えれば、もともとのMAP登録地点になるかと思います。

追記:CUPアイテムのリスト&価格

sc20171226190832忘れる前に忘備録。

CUPのアイテムを利用する場合の、設定テンプレートがこれ。

Weapons/Units/Vehicles MOD利用時は便利かと思います。

CUP Weapons/CUP Units/CUP Vehicles Class Names And Trader Prices!

【game】STEAMウィンターセール開始ッ!

sc20171222181534今年はセールが多いぞ。

Steamにて、1/5までウィンターセールが開催されます。

ざっと見たところ、(タイトルによって)オータムセールの方が値引率が高かった?というのが散見されますが・・。

(;´∀`)円高かな?いや、違うような気がする。

年末年始にかけて、まったりとゲーム三昧できます。

sc20171222181829製品版が出たPUBGは、今回も強気の値引き無しのようです。

いずれにせよ、買わないけどw

PUBGは所詮パクリ、本家バトロワのH1Z1」は、なんと、75%引きの495円ですよッ!

こんな値引きは初めて見ました。一時期問題になったチート対策はされたんでしょうか。

sc20171222182006珍しく、日本勢のタイトルも対象が多いようです。

ダクソや鉄拳とか。
sc20171222182224真冬の今だからこそ、製品版となった「LONG DARK」なんてのもヨサゲです。レビューも高評価。

余計寒くなる。

75%引きで、870円と凄い値引き。

これは、買ってしまうかも。

sc20171222182521もちろんの事、「ARMA3」もセール対象です。

今年度末はずーと値引きしてますなw

(;´∀`)

キャンペーンは一切プレーしてないが・・w、DLCを揃えておかねば・・。