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

2018年3月7日プライベートarma3,dayz,exile,mod,server

追記:やっと建物内に湧かせる

追記:座標がわかめ

前々からやってみたかった事があってですね。。

ExileServerのアドオンの開発をしております。。

(;^ω^)

まだ、簡単なスクリプトしか書けませんが、公式や他スクリプトのコードを参考にしながら、一応、基本的な部分まで動作するようになりました。

んで、どんなアドオンかと言うと、町中のどこかにクレイトBOXがランダムで湧きます。

通常のアイテム湧きとは違い、レア・宝箱的な感じで、より一層、町でのアイテム漁りが楽しくなるかなぁ・・と思ってます。

うまくすれば、軍事施設に行かなくても、武器一式が揃うかもぉ・・しれません。・・という感じです。

サーバ起動時に、全ての動作が終了するので、負荷はほぼありません。

ログには、一応、沸いた場所が記録されます。

MAP上にも印を付ける事が出来ます(Debugモード)

アイテムのグループ種類を定義して、ロケーション地(NameVillage/NameCity/NameCityCapital毎)に、それらを登録する感じになる予定。

いまんとこの動作確認。

こんな感じに湧いてます(今はテストで10箇所づつ)

もうちょい調整が必要のようです。

EXILE MODのクレイトBOXだと、目立たないので、実際に町を徘徊しないと見つけ難いです。


これとか。

これから、建物の中に沸かせられるか、試すところです。

CUP Terrain MODのMAPが、あのデータを持ってるかどうかです(Arma3に建物内ポジションを取得するモノがあるんです)

まぁ・・中身はまだ適当ですけども・・。

(;´∀`)

ハズレッ!なんてのもアリでしょうねw

BOXの周囲に、ワイヤートラップを仕掛けるアイデアもありましたが、流石に鬼畜すぎるので、却下でしたけども・・・w

一応、ちゃんと公にリリースできるように、設定ファイルをちゃーんと書いてます。。

(;^ω^)

英語が苦手なので、翻訳しながらコメントを置いてますが、変な英語なんだろう。。

追記:座標がわかめ

Arma3内部では沢山の座標系が存在してる・・のは分かってましたが。。

触れずに、そっ閉じしておりました。

座標系(Position)

上記の建物内で湧かせるには、これをスルーする訳にもいかなくなったようです。

(;´Д`)

   _lootPosition = ASLToATL (AGLToASL (_building modelToWorld _x));

これは、ExileServerのアイテム湧き部分の座標変換のところ(ExileServer_system_lootManager_spawnLootInBuilding.sqf)

ほらね、訳ワカメでしょ。そっ閉じ推奨ですよ。

(;^ω^)

Z軸が水面(ASL・ASLW≒波)なのか地表(ATL)なのかで、大きく違ってて、ほとんどのコマンドは、AGL座標が利用される(AGLSなんてのもあるが。。)

※地表では、ATL≒AGL

なので、Serverアイテム湧き部分では・・

LootPosition座標(モデル座標)

から、AGL座標に変換して。

それを、なぜか、一旦、ASL座標に変換してます。

そして、また、ATL座標に変換してます(その後、オブジェクト作成のCreateVehicleがATLを受け取る)

もうちょい調査が必要です。

コマンドによって、受け取る座標系が違っていたりするんです。

他スクリプトのコード内で、わざわざ、[(_x select 0),(_x select 1)]なんて書き方して、座標を扱っていた理由が分かった気がします。

しかも・・ですね、

BIS_fnc_buildingPositionsのように、(昔からある?)BIS_から始まるコマンドは、座標系に言及してないんです。

現在でも、色々なスクリプトで使われてるので、削除する訳にもいかないんでしょうね。

備忘録メモ

building buildingPos index AGL

createVehicle [type, position, markers, placement, special] ATL

model modelToWorld position AGL

ATL

getPosATL, setPosATL, getPosATLVisual, ASLToATL, ATLToASL

AGL

modelToWorld, worldToModel, modelToWorldVisual, worldToModelVisual, positionCameraToWorld, intersect, terrainIntersect, isOnRoad, drawIcon3D, drawLine3D, distance, moveTo, doMove, move, setDestination, buildingPos, screenToWorld, worldToScreen, AGLToASL, ASLToAGL, unitAimPosition, unitAimPositionVisual

ASL

getPosASL, setPosASL, getPosASLVisual, visiblePositionASL, ASLToATL, ATLToASL, AGLToASL, ASLToAGL, eyePos, aimPos, getTerrainHeightASL, lineIntersects, lineIntersectsWith, lineIntersectsObjs, lineIntersectsSurfaces, terrainIntersectASL, playSound3D, setDefaultCamera

参考:

diag_log getPos ship; // [2412.01, 6036.33, -0.839965]
diag_log getPosATL ship; // [2412.01, 6036.33, 19.4266]
diag_log getPosASL ship; // [2412.01, 6036.33, -0.920066]
diag_log getPosASLW ship; // [2412.01, 6036.33, -0.865981]
diag_log visiblePosition ship; // [2412.02, 6036.33, -0.837952]
diag_log visiblePositionASL ship; // [2412.02, 6036.33, -0.91798]
diag_log position ship; // [2412.01, 6036.33, -0.839965]

diag_log getPos car; // [2508.64, 5681.47, 0.0609589]
diag_log getPosATL car; // [2508.64, 5681.47, 0.0356369]
diag_log getPosASL car; // [2508.64, 5681.47, 71.718]
diag_log getPosASLW car; // [2508.64, 5681.47, 71.718]
diag_log visiblePosition car; // [2508.64, 5681.47, 0.0609512]
diag_log visiblePositionASL car; // [2508.64, 5681.47, 71.718]
diag_log position car; // [2508.64, 5681.47, 0.0609589]

追記:やっと建物に湧かせる

。゚(゚´Д`゚)゚。

湧いたよぉ。。。

やっと、建物内も湧きの対象にする事ができました。

CUP MAPでも、buildingPosのデータをちゃんと持ってるようです。

ある建物の2階です。

ちゃんとZ軸も作用してるようです。
CUP MAPのデータで持ってるとはいえ、元々、AIとかを立たせる目的の場所なので。。。

場所によっては、完全に道を塞いでしまいます。。

(;^ω^)

まぁ・・このEXILE MODオブジェクトのクレイトは、Packで分解できるし、マタギで抜ける事もできたので安心です。

BlackListが機能してないんだろうか。。

同じ建物に2個湧きだ。。
監視塔にも、湧いちゃうw

(;´Д`)


こんなところにも。。

(;´Д`)
もうちょい調整が必要ですが。

町でのアイテム漁りが楽しくなるでしょう。

テスト時に気付いたんだが、そういえば、武器とマガジンを別湧きにしたんだった。。

恐ろしや。。

(;^ω^)

ログには、こんな感じで、場所と外・建物内湧きかも、分かるようになってます。

こんなでいいかな。。

2018年3月7日プライベートarma3,dayz,exile,mod,server

Posted by nabe