「extdb3」タグアーカイブ

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

sc20180626161259うむむ、想定していたよりも、Wineの壁はデカかった。

Wineの64ビットはまだ発展途上の段階のようです。

結局振り出し状態です。

。゚(゚´Д`゚)゚。

んで、気分転換に、コメで頂いた他サバ缶様のトラブルのヒントでも探せればと、コードを追っております。

サーバアドオンのAVSというモノで・・・

イマイチ分かってませんけども・・・

(;^ω^)

初期化部分でエラーが謎の動作があるようです(詳しくは前記事のコメント)

sc20180626161717エラーメッセージからサーバ側コード部分にたどり着きました。

AVS_system_database_connect.sqf(41行辺り)

ログで出されたエラーは、ここです。

最初に、データベースに接続テストを行って問題無いようです。

_result = parseSimpleArray (“extDB3” callExtension “9:ADD_DATABASE:exile”);

次に、SQL文を登録する部分です(ハックされないよう事前に文を登録しておくらしい)

_result = parseSimpleArray (“extDB3” callExtension “9:ADD_DATABASE_PROTOCOL:exile:SQL_CUSTOM:AVSDB:avs.ini”);

extDB3仕様

https://bitbucket.org/torndeco/extdb3/wiki/extDB3%20-%20System

sc20180626162055登録するSQL文はこの2つだけ(avs.ini)

めっちゃシンプルです。

しかしながら、提示されたログを見る限り、この部分でエラーとなってるようなのです。

ーーここのどこかにーー

    “Connected to database!” call ExileServer_util_log;
  diag_log “AVS – Connected to database!“;
    ExileServerDatabaseSessionId = “SQL”; //str(round(random(999999)));
    _result = parseSimpleArray (“extDB3” callExtension “9:ADD_DATABASE_PROTOCOL:exile:SQL_CUSTOM:SQL:exile.ini”);
      _result = parseSimpleArray (“extDB3” callExtension “9:ADD_DATABASE_PROTOCOL:exile:SQL_CUSTOM:AVSDB:avs.ini”);
    if ((_result select 0) isEqualTo 0) then
    {
        throw format [“Failed to initialize database protocol: %1”, _result];
    };
   ExileServerStartTime = (parseSimpleArray (“extDB3” callExtension “9:LOCAL_TIME”)) select 1;
    “Database protocol initialized!” call ExileServer_util_log;
    “extDB3” callExtension “9:ADD_PROTOCOL:LOG:TRADING:Exile_TradingLog”;
    “extDB3” callExtension “9:ADD_PROTOCOL:LOG:DEATH:Exile_DeathLog”;
    “extDB3” callExtension “9:ADD_PROTOCOL:LOG:TERRITORY:Exile_TerritoryLog”;
    “extDB3” callExtension “9:LOCK”;

    _isConnected = true;

ーーどこやーー

青字のログが出てないようなので、それ以前での例外エラーです。怪しいのは2つのADD_DATABASE_PROTOCOLでしょうか。

ん?何気なくコードを見ると、何か気になる部分が(濃い赤字

44行:_result = parseSimpleArray (“extDB3” callExtension “9:ADD_DATABASE_PROTOCOL:exile:SQL_CUSTOM:SQL:exile.ini”);

これはExileサーバ側のSQL登録ですけど、なぜここにあるんだ?(exile.ini)

コードを見ると、extDB3のオーバーライド用コードと類似してる部分が多々あるようです(mpmission/Exile_Server_Overrides/ExileServer_system_database_connect.sqf)

※そのまんまコピペした感じです

この重複した部分が悪さをしてる・・とか。。(あくまで推測です)

今日のところはここまで。。٩(′д‵)۶

追記:

完全にフックしてるようでした、多分、これは問題無いはず。

どうでしょ?

どこでエラーになってるのか、対象部分の各行に、diag_log”**** HELLO!! ****”; とか書きたいなぁ・・・・。

(;^ω^)

戯言:

実際にSQL文が書かれている(avs.ini)に、これも書くと丁寧になるかもしれない。

Number of Inputs = 1 (引数の入力数、要はSQL文の”?”の数)

※公式ドキュメントでは、引数の数が合わないとダメとか書かれてる

sc20180626171053readme(導入手順)を読んでみると、vehicleテーブルに項目を追加するんですね。

なんだか怖いw

(;^ω^)

vehicleテーブルに「ammo」を追加して、AVSアドオンでは、この項目だけを読み書きしてるようです。

1.0.3と1.0.4でのDB相違に関係あるかな・・と思って調べたけど、多分無いですね。

(;^ω^)

追記:

フックしてるのは以下の10ファイル。

ExileServer_object_player_createBambi
ExileServer_object_player_database_load
ExileServer_object_vehicle_createNonPersistentVehicle
ExileServer_object_vehicle_createPersistentVehicle
ExileServer_object_vehicle_database_insert
ExileServer_object_vehicle_database_update
ExileServer_object_vehicle_database_load
ExileServer_system_database_connect
ExileServer_world_initialize
ExileServer_object_vehicle_carefulCreateVehicle

怪しいのは、やっぱこのファイル。

#kickが2度実行される不思議な事象があるので、次はここら辺を追います。