「arma3」タグアーカイブ

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

sc20180109110131追記:光回線1Mbpsってなんぞ

追記:EXILE1.0.4とか

追記:ゲーム内監理コマンド

追記:Battleyeって変更あったっけ?

追記:extDB3バージョン落とす

本番Linuxサーバを整理整頓しております。

・・が、色々と忘れてる。

ぱ、ぱすわーど、なんだっけ?

(;´Д`)

今後の運用監理のために、マニュアルを作っておかないとダメっすね。

放ったらかしサーバにならんためには、このタイミングを逃すとアウトです。

  • Arma3本体のバージョンアップ
    結構頻繁にある1-2ヶ月毎?
  • EXILE MODのバージョンアップ
    一番の恐怖、今年中?来年?
  • 他MODバージョンアップ
    危険、見逃しそうな所(CUPだけ)
  • Linux OSの定期メンテ
    ログ整理、更新、セキュリティ、状態監視、データベース

    sc20180109112831温度やファン監視のために、lm-sensorsを導入。

    BIOSレベルでは、80℃で停止するようにして、定期的にlm-sensorsで、温度をチェックしてロギングしておこう。

    temp3が127℃とか恐ろしい数字が出てて焦ったんですが、こういうものらしい(数字がここから動かない)ストレージは、SSDなので温度監視しない。

    追記:Linux-extDB3エラー

    イザ、本番Linux機で動かしてみようか、という所で、謎の”extDB3”エラーで動かず・・。

    なるだけWindowsと同じ構成にしてるので、OS依存の何かしらが問題のはず。。しかし、まったく原因が分からない。

    MODシグネチャは通ってるが、初期化段階で既にエラーになってるので、extDB3ログすら出てない様子。

    動いてた時のバージョンに落としちゃおうか。。

    これは困った。。(;´Д`)

    追記:extDB3バージョン落とす

    sc20180110144343ものは試しと、バージョンを落としてみよう。

    正直な所、これで動いたら気持ち悪い事この上無い・・・。

    (;´Д`)

    ・・・つっか、動くでやんの

    えぇ・・・(;´Д`)

    ※extDB3.soとPBOファイルだけ上書き

    sc20180110144550extDB3

    Google先生に聞いても、特に引っかからないんですよね。

    Arma3サーバで、Linuxを利用してる人は少数派なんでしょうか。。

    最新版には「nolinux」って書いてんだもん。

    ちなみに自分が試したのは以下のバージョン。

    extDB3-1031.7z(2017/8)ダメ

    extDB3-1028.7z(2017/3)ダメ

    extDB3-1023+Linux.7z(2016/11)動いた。過去利用してたバージョン

    時間があれば、ギリギリ動く最新版の所を見定めたい・・。

    (;´Д`)

    sc20180110153814精神的に助かった・・

    (;´∀`)

    1時間程放置して、負荷チェック。

    CPU温度は+14℃、CPU負荷は35%辺りで落ち着いてる。

    いやぁ・・今回はドイツ語のページがヒットしまくりで、Google翻訳サマサマです。

    ドイツ語は英語よりも日本訳が難しいようですね。

    追記:容赦無いクリエーター

    sc20180109180331今、ふっとSteamを見てたらこんなモノが。

    普段は実績とかまったく興味無いんですが、これは何ぞ?

    と見たら。

    エディタを100時間使用した」という実績らしいw

    EDEN起動してたの100時間どころじゃないと思うんですが・・、気付かなかったんかな。。

    (;^ω^)

    ちなみに、Arma3は既にプレー1100時間超えてますが・・

    いまだ、”EXILE”しかプレーしてませんw

    (;´∀`)ほら、実績9%ってw

    追記:エラーで動かない対処方法

    sc20180110145202テストプレーする度に、ちょこちょこっと気になる部分を、変更したりします(値段とかアイテム関連)

    その時の”記述ミス”で、動かなくなる事が多いので、結構慎重を期しますが。。

    その90%が・・・・。

    ”,” ←こいつですッ!!!!

    特に、mpmissions内(PBO)のconfig.cppや、description.extなどの基本ファイルの記述ミスが致命的で、サーバは通常そのまま走ってしまいます。

    基本ファイルのエラーなので、(エラーなので)各所の初期化部分をすっ飛ばし、エラーが大量に出まくり、根本的なエラー箇所を探せなくなります。

    しかも、ログで指摘される”行”は、まったく意味不明なのです(Because Arma)

    動く正常PBOバックアップを忘れず、エラー発生時は、DIFFツールを使って比較するとすぐ見つかります。

    昨日から悩んでたモノがこれ(参考)※上記Linuxサーバの件とは違います

    sc20180110150451extDB3のロードが完了してるのが分かります。

    しかし、ちょっと下を見ると。。

    CallExtension ‘extDB2’ could not be found

    “ExileServer – MySQL connection error!”

    はっ?( ゚Д゚)

    なんで、extDB2が見つからねぇとか言い出すんだ?そんな物使った覚えないぞ。extDB3を認識してんじゃねーか。

    (ここで変更した覚えが無いがサーバ設定見直し:半日)

    そのログの10数行上に、こんな一文だけが書かれてるのを見つける。

    14:00:42 Warning Message: File mpmissions\__cur_mp.Takistan\config.cpp, line 4360: Config: ‘”‘ encountered instead of ‘,’

    ミッションファイルのエラーだ。

    ゴミ経験値が十分溜まってきてる私には、もう、こいつが原因であるのを確信したんです(もう何度目ですか?俺)

    案の定、“,”忘れでした(;´Д`)

    しかも、4360行なんて意味無し。

    無駄な時間を潰さないよう、これからArma3サーバを運用する方はお気をつけください。

    追記:Battleyeって変更あったっけ?

    sc20180110163403いざ、Linux本番機にインしてみようとしたら入れない・・。

    。゚(゚´Д`゚)゚。

    「次は何なんスカぁ・・うぇ~ん」

    ログを見たら、Battleye関連でキックされてるようです。

    16:11:35 BEServer: cannot find channel #898317482, users.card=0
    16:11:40 BEServer: cannot find channel #898317482, users.card=0
    16:11:43 BEServer::finishDestroyPlayer(898317482): users.get failed

    そういえば、つい最近Battleyeで変更があったとか、なかったとか見たことがあるぞ・・(薄っすら記憶)

    どこで見たんだっけなぁ・・(´;ω;`)

    追記:続き

    sc20180110185008海外のサイトをそれっぽいワードで散策していたら、めっちゃヒットしまくる。

    あれ?今ってEXILEサーバ全滅状態なんです?

    ボヘミアの修正待ちだ、なんて言葉が目につきます。

    追記:続き

    まだ解決してないんですが、まとめた所を。

    Arma3が利用するポート

    デフォルトは、2302。変更する場合は、起動パラメータに「-port=2302」な感じで指定。

    参考:DedicatedServer(Port Forwarding欄)

    このポートを起点に5つ、他4ポートで9ポート分利用されます(デフォなら2302-2306まで)※9つですが、10個開けろと公式では言ってます(実質的にRCON用でしょうけど)

  • 2344(TCP+UDP:81.0.236.111宛) Battleye用
  • 2345(TCP:81.0.236.111宛) Battleye用
  • 2302-2306(UDP) サーバ・クライアント間
    ※変更可能(-port=xxxx)
    ※2302:ゲーム用、ボイスチャット用
    ※2303:Steam用
    ※2304:Steam用
    ※2305:ボイスチャット用
    ※2306:Battleye用(新しく追加された)
  • 2303(UDP) サーバ・Steam間
  • 2304(UDP) サーバ・Steam間

    RCON(遠隔監理)など利用する場合は、さらに他ポートを利用する事になります。

    ルータやファイヤウォール等でのポート開けは、この分だけ必要となります。

    上記事で「Battleyeが変更された?」と言っていた部分は、上リストの”赤字”の部分でした(以前は2302-2305)

    んで、海外サイトで見た「ボヘミアの修正待ちだ」については、今回追加された”2306ポート”が固定で動かないというバグについてでした。

    つまり、仮想環境等で複数Arma3サーバを動かしてた場合に問題になります。

    んで、これが分かったんで、2306ポートを開けたんですが、以前変わらず・・。もうちょい調べないと・・。

    (;´Д`)

    追記:ゲーム内監理コマンド

    sc20180111111507こんなモノを見つけたのでメモ。

    Multiplayer Server Commands

    利用を許可してれば、ゲーム内のチャットでコマンドが打てます。

    通常はサーバ管理者はRCONで監理するので使用する場面はなかなか無いと思いますけども。

    チャットから入力して、再起動やバン・キックなどが行なえます。

    server.cfg内に、管理者UID・パスワードなど設定。

    たまに、「夜を昼に変える?」なんて投票機能があったりしますが、この機能を利用してるんでしょう。

    任意のスクリプト実行できるって事ですね。

    おっ、なかなかオモロそうやな・・

    (;´∀`)

    追記:EXILE1.0.4とか

    sc20180113180619毎日EXILEフォーラムは覗いてるんですが、まったくもってスルーしてた・・。

    新しいEXILE1.0.4(Pineapple)のスレが御座いました。。

    (;´∀`)

    変更点は、こちらになります。

    1項目づつ翻訳を掛けて見たところ(一部分かんないのもあるが)、大きな変更点は無く、バグフィックスが主立ってるようでした。

    いや、大きい変更といえば”EXILE ESCAPEモード”が追加された事ですね。実際どんなもんか知りませんけど。バトロワみたいな?

    (;^ω^)

    アイテムとしては、回復系の省サイズ化、コンテナ・建築系が追加、武器関連のバグ修正、クラフト時収容できなかったら地面に落とす、とか。

    地雷などの湧きアイテムを、誤って起動させちゃったりしましたが、これも修正されたようです。

    内部機能のExileClient_util_world_****のパフォーマンスが改善されたようです。

    MODやADDONに影響ありそうなものも散見されます。

    これからも、ドゥンドゥン変更されるかもしれません。

    追記:光回線1Mbpsってなんぞ

    sc20180114103449昨夜から断続的に回線が恐ろしく遅い。。

    昨夜は1Mbpsで、普通のネット閲覧でも厳しかった。。

    かつてのADSLよりも遅いときたもんだ。画像が、アナログISDN並みにゆっくり表示されてましたよ。

    (;´Д`)ピーギャラギャラ~ピー

    今でも、3Mbpsという数字。。

    以前はこんな事無かった。遅くても20~30Mbpsは出てたんですよ。。

    固定IPを貰ってて、自宅サーバで運用を考えてたので、これではかなり厳しい(Arma3ゲームサーバは、IPv4限定)

    もちろん、他ネットベンチでは(現在)10-30出てるので、BNRスピードテストだけでの話なんですが。

    測定先によって、”極端”に数字が変わるんですよね。

    問題が、NTT地域IP網臭い気がしてなりません。地方に住んでる以上、この呪縛から逃れられませんが。。NTTさん、この古臭いインフラどうにかならんの?

    200Mbpsと書いておいて1Mbpsは、詐欺としか思えません。200分の1ですよ。
    景品表示法違反じゃねーの?m9( ゚д゚)

    選択肢が他にも有る関東圏の人が羨ましい。。

    (;´Д`)

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

    sc20180106124919追記:Meltdown&Spectre兄弟

    前サーバ構築の際にやりたかった事を、しております。

    Arma3を必要としない、見ての通り素材作成です。。

    (;´∀`)

    普段はあまり画像や音源編集なんてしないので、なんだか新鮮です。

    画像は、Billboardオブジェクトへのテスクチャーやローディングロゴなど、ほぼ完了。

    今は、音源編集してます。

    さすがArmaです。MODだけで無く音源もネット上に結構あります。Regional Ambient Sounds Packを使わせて頂いてます。そのままではファイルサイズがデカいんで編集してます。

    以前、動画編集用に買ったVegasProに付いてきた、SoundForgeとやらで編集してたんですが、後々に高音質データしか作れない事に気付き、フリーで有名なAudacityに切り替えました。

    8Khzな低音質データで十分なのです。

    (;´∀`)

    これで、音声1ファイル80Kb程度に収める事ができた。どちらも、Ogg形式は対応してる。

    sc20180106162645ちなみに、画像編集は、当初GIMPを使ってたんですが、どうにも慣れなくて、普段使いのExpressionDesignでやった。

    ※どちらもフリー
    sc20180106181242サーバ負荷テスト

    (アドオン分全て稼働させるため)しばらく放置していて、確認(プレーヤーゼロ状態)

    Core i5 4670Kですが、1.5Ghz近辺で、15%が最大のようでした。メモリは、2.2GB付近。

    タスクスケジューラでGPU値が見れるようになりましたが、この「Compute」って、PhysXを含んでたりしないのかな。とはいえ、こちらも3%程度。

    これなら、本番環境のA6-3650(OC3.5Ghz)でも耐えられるでしょう。Linuxだし。

    追記:OccupationPlacesの改造補足

    sc20180106181925前に、町パトロールAIが、パトロールっぽく無い場所に沸く点で、改造しましたが。。

    さらに改良しました。

    MAPに記録されたランドマークポイントで沸く(デフォルト)所を、近くの建物を探して、そこで沸くようにしましたが。

    稀に、Waypointの失敗をするらしく、棒立ちになってしまうようでした。

    そこで、建物の近くの道路上で湧くようにしました。

    これで、ほとんどの場合、町並びの所でパトロールしてくれるはずです。

    今回、青字の部分を新しく追加しました。ログ出しはコメントになってます。建物・道路が見つからなければ、スルーするだけです。

    occupationPlaces.sqf(56行付近)追加する全コード

        _houses=nearestTerrainObjects[_pos,[“BUILDING”,”HOUSE”],400,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;
            _road=_pos nearRoads 100; ←100m圏内の道路を探す
            if(count(_road) > 0) then
            {
                _pos = getPos selectRandom _road; ←ランダムで選ぶ
            };

            //_logDetail = format [“[OCCUPATION:Places]:: change name: %1 position: %2”,_locationName,_pos];
            //[_logDetail] call SC_fnc_log;
        };

    ※ブラウザからコピーすると、” とか ’ とか化けるので注意

    ※nearRoadやnearestTerrainObjectsは、エラー時はNULL(nil)を返すのですが、count()に渡しても例外発生は無く、問題無いようです。nilチェックするとコードが数行増えてしまうし、削除しました。

    追記:看板とかの結果チェック

    20180106193922_1・・・・・・。

    (;´∀`)

    Armaの世界で、ゆっくりに出会えるとは思ってもみませんでした。

    256*256で作ってしまったので、横長になってもうた。

    追記:調整テストプレー

    20180107180438_1ほぼ、設定系の作業は終わってる。

    バグとか無いか、最終的な調整に入っております。

    画面右上のロゴが、これで良いのか、未だ悩んでる。

    追記:幻のアイテムと遭遇

    20180107175920_1ぴ・・ピヨコちゃんじゃまいか。

    ヽ(;゚д゚)ノ!

    激レアにしたので、設定した俺ですら驚いてしまったのだw

    黄色なんで遠くからでも目立っちゃうんですけども。

    20180107180841_1ちゃっかり、画像のスペクト比を直しました。

    うん、OK。
    20180107181244_1アイテム湧きも入念にチェック。

    他サーバに比べれば、結構湧きます。

    ただ・・、写真のように、背景に溶け込むように設定してます(何度も微調整しまくった・・)

    。゚(゚´Д`゚)゚。

    町漁りでも楽しめるようにの配慮です。私は、EXILE初見の頃は、アイテム漁りだけで十分おもろかったんですw

    20180107181311_1うむ・・、当初の予定通りに、沸いてるようです。

    サバイバル押しの調整になっております。

    これでも、十分甘くしましたけども・・。

    追記:看板スクリプトの最終盤

    大きな看板(Land_Billboard_F)に、順番に画像を貼り付けます。ランダムにしたければ、「selectRandom _bills」と書けばOK(※1の部分)

    古いラジオ(Radio_Old)に、3Dサウンドを割り当てます。サウンドの詳細は、description.extに記述します。複数登録してランダム再生も可能。

    青字の部分は、あるオブジェクト周辺の看板は、画像固定したい場合などに利用できます。不要なら削除してください。

    //*****************************add initServer.sqfからコピーする部分
    private _vehicles = [
    [“Land_Billboard_F”, [5818.69, 5904.45, 253.427], [0.611226, -0.791456, 0], [0, 0, 1], true],
    [“Land_Billboard_F”, [6205.13, 5912.37, 308.629], [0.243536, -0.969892, 0], [0, 0, 1], true],
    [“Radio_Old”, [6076.05, 5625.22, 304.328], [-0.440405, -0.897781, -0.00575302], [0.00962416, -0.0111285, 0.999892], true],

    ・・・・・・

    下:追記する部分

    private _bills=[ ←画像の一覧
                “bill0.jpg”,”bill1.jpg”,”bill2.jpg”,”bill3.jpg”,”bill4.jpg”
                ];
    private _cnt=0;
    {
        private _vehicle = (_x select 0) createVehicleLocal [0,0,0];
        _vehicle allowDamage false;
        _vehicle setPosWorld (_x select 1);
        _vehicle setVectorDirAndUp [_x select 2, _x select 3];
        //_vehicle enableSimulationGlobal (_x select 4);
        //_vehicle setVariable [“ExileIsLocked”, -1, true];
       
        if (_vehicle isKindOf “Land_Billboard_F“) then ←看板
        {
            if(count(nearestObjects [_vehicle, [“Land_Kiosk_redburger_F”], 100]) > 0)then{ ←100m以内の看板は画像固定
                _vehicle setObjectTexture [0,”bill14.jpg”];
            }else{
                _vehicle setObjectTexture [0,_bills select _cnt]; ←※1
                _cnt=_cnt+1;if(_cnt >= count(_bills)) then{_cnt=0};
            };
        };
        if (_vehicle isKindOf “Radio_Old“) then ←3Dサウンドの登録
        {
            private _trg = createTrigger [“EmptyDetector”, _x select 1];//,false];
            //_trg setTriggerActivation [“NONE”,”NOT PRESENT”,false];
            _trg setTriggerStatements [“true”,””,””];
            _trg setSoundEffect [“$NONE$”,””,””,”Radio“]; ←サウンド指定
        };
    }
    forEach _vehicles;

    用意する画像は、2:1で良いようです。綺麗にしたいなら、512x256(JPEGで約50KB)で、多少汚くても良ければ256x128(JPEGで約20KB)で十分です。PAAかJPEGで。

    追記:AI動作Behaviorについて

    sc20180108112636町パトロールにバリエーションを持たせるために、AI動作(Behavior)をランダム設定していましたが、いっこマズイやつがあった。

    Stealth/Combat/Aware/Safe/Careless

    5種類選べるんだけども、Safe/Carelessは、本気の”平和ボケ状態”です。危険があっても、戦おうとしません。これはマズイ。パトロールAIを設置する際は、SafeとCarelessは避けたほうがいい。

    公式ページ解説

    DMSやOccuなどではAwareが使われてます。危険があっても、隊列を乱さず動作してるのはそのためです。

    Stealth/Combatは、設定Waypointをキャンセルしちゃう。Stealthともなると、匍匐、ライトOFF、勝手に行動し始めたりします。

    追記:3Dサウンド設定

    sc20180108115157勘違いしてました。やっぱちゃんと調べた方がええです・・。

    (;^ω^)

    description.extにこんな感じで登録しておくんですが。

    引数がイッパイあって、ロクに調べもしてませんでした。

    左から、「ファイル名・音量・ピッチ・聞こえる距離・切り替り頻度・切り替り設定3つ(min/mid/max)」となってます。

    class CfgSFX{
        sounds[]={Radio};
        class Radio{
            name=””;
            sound1[]={“radio1.ogg”,db-10,1.0,500,0,0,20,52.6};
            sound2[]={“radio2.ogg”,db-10,1.0,500,0.2,0,20,42.3};
            sound3[]={“radio3.ogg”,db-10,1.0,500,0.2,0,20,53.1};
            sound4[]={“radio4.ogg”,db-10,1.0,500,0,0,20,39.8};
            sounds[]={“sound1″,”sound2″,”sound3″,”sound4”};
            empty[]={“”,0,0,0,0,0,0,0};
        }
    };

    使う時は、”Radio”とすれば、登録されてる4種類の中からランダムで選ばれて再生されます(sounds[]の中身)リピート再生時は、最後から4つの設定で、勝手に切り替わるようです。

    ここでは距離500mとしてますが、本当に500m辺りから聞こえ初めます。1Kmと設定しても同様です。なので、実際にプレーしてみて、リアリティがあるかどうか確認が必要です。

    自分ではラジオが鳴ってる様子を出したかったので、丁度良かったです。

    (;´∀`)

    追記:PAAファイル化

    sc20180108173330使用する画像は意味なくJPEGにしてたんですが、試しにPAAで変換してみたら・・

    何気に圧縮が効いてるようです。

    PNG(23.8KB)が、17.8KBまで小さくなってます。

    う・・ん、JPEG得意の画像もあるし、一概になんとも言えませんが。

    透明を利用するならPAAしかないですけども。

    いやいや、JPEGの高圧縮に勝るものは無いようでした(近くで見ると汚いけども)モデルテクスチャーなどの利用以外はJPEGの方がさらに50%位小さいです。

    別途インストール必要な「Arma3 Tools(無料)」内の「TexView2」で変換できます。変換する画像は、2^xサイズでないとダメです。

    追記:MAP外放射能エリア

    sc20180108182319こちらのスクリプトを利用させて頂いて、MAP外は放射能エリアとなりました。

    動作も確認。

    ファイル1個だけでシンプルでした。
    追記:Meltdown&Spectre兄弟

    sc20180109094645今世間を騒がしてる、Intel CPUにおける脆弱性問題。

    いわゆるMeltdownとSpectre問題。

    そのまま、CPUコードに依存する設計上の問題なので、何気に”大問題”なんです。

    ソフト側(OSも含む)で根本的に対応できないんです。ハードウェア(CPU)交換でしか対応できない。

    (高速化のために)予め予測実行した後に、エラーを発生させると、予測実行していた部分が、そのままクリアされず残ってるというもの。

    この予測実行部分に、メモリを読み取るコードを忍ばせておくと、いくらでも盗めるんだそうです。

    ※簡単なCPUコードで、プログラマなら誰でも理解できる

    これは、絶対、裁判沙汰になります。インテルさんガクブル状態でしょう。独自ソフトを使ってる産業業界での、対策コストは相当な額ですよ・・・。

    インテルの現行製品のほとんどが該当、AMDも古めの製品に該当してるそうです(10年以上前、Athlon64 X2とか)

    あるCPU生コードを実行しなきゃいい訳で、インターネットで感染するという類のものではありません。

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

    20180102191816_1追記:MAPオブジェ最終

    。゚(゚´Д`゚)゚。

    もう、牛歩状態ですわ。

    着実に進んでる事は確かですけんども。

    ここで、新たな新事実に触れてしまいます。

    サーバ起動直後にインした時の様子です。

    道路に面して設置したはずの看板が、明後日の方向を向いてます。

    ですが、待ってると数秒後に、設置した方向に向くではないですか。

    sc20180102192411これは、initServer.sqfにエクスポートした、1000を超える全てのオブジェクトがそんな風に挙動してるんです。

    スクリプト上では、createVehicle後すぐに、方向を設定してるはずなのですが、こんなにも遅延するんです。

    何を”新事実”と言ってるかというとですね。

    設置したオブジェクト同士の衝突判定”の事です。

    インした時に、不可思議な場所に移動してたり、どっかに飛んでいたりするじゃないですか。これですよ。サーバ起動直後(initServer.sqf実行後)は、オブジェクト同士が重なってる可能性が大な訳です。

    まだ、テストしてませんが、exile_3den.pboの吐き出したコードに、”sleep”を入れてこの遅延を吸収したら・・と思ってます。

    但し、数千オブジェクトを1個づつウェイトを入れる訳ですから、initServer.sqfが終わるまで相当の時間が掛かります。

    正しくは、スクリプト実行は終わってるが、画面に反映されるまで時間が掛かる。しかも、プレーヤーはその未反映状態でもインできる

    20180102191920_1看板(Land_billboard_F)を使って、画像を入れ込んでみました。

    色々とできそうです。

    なんで、マリオなのって?

    別に意味ありません。

    (;´∀`)

    看板などにテクスチャーを割り当てるのはネット上にコードは沢山ありますが、私が欲しかったのは、簡単設置の方法なのです。そのままEDENで設置したいのです。

    簡単にカスタム看板を設置する方法+1

    普段通りにEDENで看板を設置します。exile_3den.pboで吐き出したinitServer.sqfのリストから、看板部分のリストとコードをコピペして、initPlayerLocal.sqfにコピーします。

    して、コード内を以下のように少しばかり弄ります。赤字の部分に画像を書けばOKです。テスクチャなので、2のべき乗サイズでないとダメなようです(jpegかpaa)

    ついでに、もう一個おまけで、3Dサウンド(SFX)の入れ方。配置したオブジェクトから音を鳴らしたい時とか(ここではラジオのオブジェクト)

    private _vehicles = [
    [“Land_Billboard_F”, [6083.9, 5575.39, 306.37], [-0.953857, 0.300263, 0], [0, 0, 1], true],
    [“Radio_Old”, [6075.83, 5625.32, 304.345], [-0.329086, -0.944272, -0.00734195], [0.00962411, -0.0111285, 0.999892], true]
    ];
    {
        private _vehicle = (_x select 0) createVehicleLocal [0,0,0];
        _vehicle allowDamage false;
        _vehicle setPosWorld (_x select 1);
        _vehicle setVectorDirAndUp [_x select 2, _x select 3];
        //_vehicle enableSimulationGlobal (_x select 4);
        //_vehicle setVariable [“ExileIsLocked”, -1, true];

    //ここからオブジェを判断して処理
       
        if (_vehicle isKindOf “Land_Billboard_F“) then
        {
            _vehicle setObjectTexture [0,”media\mario.jpg“];
        };
        if (_vehicle isKindOf “Radio_Old“) then
        {
            private _trg = createTrigger [“EmptyDetector”, _x select 1];//,false];
            //_trg setTriggerActivation [“NONE”,”NOT PRESENT”,false];
            _trg setTriggerStatements [“true”,””,””];
            _trg setSoundEffect [“$NONE$”,””,””,”Radio“];
        };
    }
    forEach _vehicles;

    リスト内の、Radio_Oldという部分です。

    トリガーを作って、それにSFXサウンドを割り当てます。”Radio”という部分。

    音声ファイルは、description.extで定義する必要があります。

    class CfgSFX{
        sounds[]={Radio};
        class Radio{
            sound0[]={“radio01.ogg”,db-10, 1.0, 1000, 0.2, 0, 15, 30};
            sounds[]={“sound0”};
            empty[] = {“”, 0, 0, 0, 0, 0, 0, 0};
        }
    };

    シンプルな様で、決まり事が沢山あります。1ファイルだけでも、ここまで書かないとダメなようです。

    太字の部分が、ファイルと、3Dサウンドのための設定です(音量・距離2つ・ピッチ・減衰値など)

    initServer.spfの方は、ループ部分に以下を追加しておけば、重複オブジェクト置きも回避できます(赤字が追記部分)

    {
        //**add
        switch (_x select 0) do{
        case “Land_Billboard_F”;
        case “Radio_Old”:{}; ←最後はこんな書き方
        default{

            private _vehicle = (_x select 0) createVehicle (_x select 1);
            _vehicle allowDamage false;
            _vehicle setPosWorld (_x select 1);
            _vehicle setVectorDirAndUp [_x select 2, _x select 3];
            _vehicle enableSimulationGlobal (_x select 4);
            _vehicle setVariable [“ExileIsLocked”, -1, true];
           
            if (_vehicle isKindOf “Exile_RussianRouletteChair”) then
            {
                ExileRouletteChairs pushBack _vehicle;
                ExileRouletteChairPositions pushBack [_x select 1, getDir _vehicle];
            };

        };
        };

    }
    forEach _vehicles;

    EDENで設定すると簡単だけども、スクリプトから書くと、とってもメンドイ。

    ちなみに、initPlayerLocal.sqfは、速攻で実行解釈されるようで、initServer.sqfよりも、まるで速い(各プレーヤーローカルで実行されるので、マルチの際は実行結果が異なる場合があるので注意)

    20180103111932_1オブジェクトぶっ飛びについて、コメントにて、ゆきひとさんからヒントを頂きました。

    EDEN上で、属性を開くと「シミュレーションを有効」(日本語UIの場合)がありますが、これが、エクスポート対象項目となってます。

    スクリプトでは、enableSimulationGlobalに渡されるBool値です。

    確かこの項目は、オブジェクト衝突判定処理を行うかどうかだったような気がします。OFFにすると、(当然ですが)PCへの負荷が激減すると公式には書かれてます。

    これをOFFにすると、物体は見えるが触れない幽霊のようなシロモノになってしまいます。

    20180103112353_1なので、こんな、オブジェクトの上に置きたいオブジェクトなどに、これを適用するとベストです。

    ちなみに、このPopTabsは、吹っ飛んでました。

    (;´∀`)

    20180103113343_1備忘録。

    トレーダーのアニメーションですが、EXILEフォーラム上に一覧があったのでご紹介。

    Vehicle Trader Animation

    ドイツ語で、Google翻訳もあまり頼りになりませんが・・。使えそうなアニメーションが一覧で並んでるので便利です。

    アニメーションは複数登録可能です(連続再生)

    追記:細かく大量作業

    sc20180103144413トレーダーの場所を細かく変更してしまったので、関連する設定を更新します。

    mission.sqmだけでなく、Occupation側のBlacklistも更新しとかないといけません。

    (DMSはMAPマークから読み取ってくれる)

    300m以内には近づかないようにしてますが、持ってる銃器によっては撃ってきそうな距離かも・・しれない。

    (;^ω^)

    追記:何度かテストプレー

    20180103164310_1うんやー高みから見下ろす、この感じ、様になりますねぇ。

    (;^ω^)


    20180103173009_1まぁ・・こうなりますけども。

    (;´Д`)

    AI強すぎねーか?

    俺が下手すぎなのか?

    20180103163459_1実をいうと、セスナ機を湧かせておりましたッ!?

    しかしながら、ほとんどの場合、物理演算が処理を終わらせようとしてなくて、確実にサーバ負荷の要因となっておりました。

    おもろい仕込みとして考えてただけに、残念・・w

    (;´∀`)

    sc20180103184507バニラでは結構コメントになってるアイテムが結構あります。

    この辺はそのまんまだったので、ちょいと調べる。

    H_HelmetO_ViperSP_hex_F

    とか、これ凄そう。

    メタルギアとかに出てきそうな風貌です。

    (;・∀・)

    追記:xm8_server_info.html備忘

    sc20180103194018タブレットのメニューにある、サーバ説明画面。

    ここでは、HTMLで書ける印象ですが、俗に言うHTMLタグのほとんどが利用できません。

    <H1-4><P><HR><BR><IMG><B>位のようです。

    公式サイト解説

    追記:細かいMAP修正

    20180104171250_1面倒臭いSimpleObject周辺をやっつけます。

    MAPオブジェクトとしての武器や装備品系は、そのまま配置できず、「Because Arma缶」に変換してから微調整しなければなりません。

    しかも、移動する度に角度はリセットされ、オブジェクトによって位置がさまざま、結果は画面上にはリアル表示されないので、”想像しながら”の連続微調整となります。

    これが、面倒くさく億劫になってしまう。

    (;´Д`)

    初めて作業される方へ

    メニューのEXILEから「Run Sanity Check」を行い(exile_3den.pboによる機能メニュー)

    上記に該当されるオブジェクトが存在するかをチェックします(オブジェクトクラス名のみが表示されるので、分からなくなったら武器・装備系を探す)

    オブジェクトを選択して、「Convert into Simple Object」をクリックして、BecauseArma缶に変換します(オブジェクトに缶詰が追加されます)

    ※オブジェクトは、ただ見えてるだけで触れません。実態は缶詰の方です。変換の際、画面上から消える場合があります。一度保存して、エディタを終了して起動すると、表示されてる場合があります

    位置・高さを変更するとリセットされてしまうため、先に位置・高さを合わせます。法面スナップ機能がONだと微調整できないため、編集メニューから、”画面位置合わせの切替”をOFFにする事をおすすめします。

    その都度、テンキーの”0”を押して、プレビュー表示を確認します(「Exile」>「Synchronize Simple Object」)

    20180104171841_1”高さ”と”場所”を決めたら、回転機能で、希望の”角度”を調整します。

    プレビュー表示を繰り返して、適切な調整値を見つけます。

    この時点で、位置や高さを変更したい場合は、また上手順に戻っての繰り返しです(回転値がリセットされるため)

    武器系はやりやすいですが、ヘルメットやバックパックなどは、形状的に難しいです。

    追記:MAPオブジェ最終

    20180104201124_1つ・・疲れた・・。

    こちらのWASTE DUMPトレーダーさんで、作業予定としてリストアップしてたMAP系作業が完了しました。

    リスクの無い(バグ出ない)作業となると、ついつい凝ってしまうもんです。

    MAPオブジェの配置のこだわり・・w、トレーダーの顔や色、服装までも吟味しながら、アニメも選択します。

    WASTE DUMPっぽいんじゃないでしょうか。。

    (;´∀`)