【GAME】ARMA3 EXILE MODサーバの旅その59
Wineの64ビットはまだ発展途上の段階のようです。
結局振り出し状態です。
。゚(゚´Д`゚)゚。
んで、気分転換に、コメで頂いた他サバ缶様のトラブルのヒントでも探せればと、コードを追っております。
サーバアドオンのAVSというモノで・・・
イマイチ分かってませんけども・・・
(;^ω^)
初期化部分でエラーが謎の動作があるようです(詳しくは前記事のコメント)
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
めっちゃシンプルです。
しかしながら、提示されたログを見る限り、この部分でエラーとなってるようなのです。
ーーここのどこかにーー
“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文の”?”の数)
※公式ドキュメントでは、引数の数が合わないとダメとか書かれてる
なんだか怖い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度実行される不思議な事象があるので、次はここら辺を追います。