【GAME】ARMA3 EXILE MODサーバの旅その66
追記:ミッションファイルのダイエット
うむむ・・色々やってみたが、原因が分からない。
(;´Д`)
これでは全く進展がなさ過ぎるので、適宜、Battleyeフィルターを編集して様子を見ていこう。
前にもやった事はあるので、抵抗は無い・・・。
(;^ω^)
武器を拾うと確実にキックされていたが、確かに出なくなった。こんな感じで、1アクションづつ探しては潰していく作業が必要になるわけです・・。
(;´Д`)
Battleyeフィルタへ追記する方法
1.battleye/scripts.logに吐き出されたログをどこかにコピペします(例:下コードの赤字の部分)
27.10.2018 13:09:09: ***(****:2304) 20c31840bede2635cad1821a7dd7bf3b – #31 “ion) <= _range}) then
{
_players pushBack _x;
};
}
forEach allPlayers;
_players"
2.改行を”\n”に置換して、1行にまとめます。
“ion) <= _range}) then\n{\n_players pushBack _x;\n};\n}\nforEach allPlayers;\n_players"
3.特殊文字をエスケープします。
フィルター文字列は”~"でクオートで囲まれており、そのフィルター文字列内の特殊な文字をエスケープ処理します。
”があったら、頭に \ を書く(見難いので要注意)
\があったら、\\と書く(見難いので要注意)
最初と最後は、通常のクオートになるので、エスケープしないように。
4.そして、頭に"!="を追記。
!="ion) <= _range}) then\n{\n_players pushBack _x;\n};\n}\nforEach allPlayers;\n_players"
5.そして、ログの”#番号”を確認して、script.txtの番号+2行のところに移動します。
既に何かが記述されてるはずです。#31なら、33行目。
33: 7 allPlayers !="[_index,・・・・・・
6.この行の最後に、空白に続けてコピペ追記します。
・・・ClimbingPlayer" !="ion) <= _range}) then\n{\n_pla
これで完了です。サーバの再起動が必要になります。
かなりの量を追加しましたが、一向にキックされますねぇ。。
(;´Д`)しんどい
んで、ここで、今更ながら気付く事があった。
一度、Arma3クライアントを終了しとかないと、ミッションファイルを再ロードしてくれないッ!
m9( ゚д゚)!!おのれキャッシュ
ミッションPBOをイジったら、一度クライアント側も再起動しないといけないようです(大事な事なので2度チェックした)
えぇ・・前もそーだったかな。。
(;´Д`)
Arma3起動スイッチに、キャッシュ無効とか無かったよね・・。
一通り、Battleyeキックが無くなってきたので、次の進む。
initPlayerLocal.spfのトレーダーの書き方は、基本的に1.0.3のまんまだったんですが、これ、ダメみたい・・。
(;´Д`)
ExileClient_object_trader_create(Exile Mod/exile_client/code)を見てみると、引数はこうなってる。
_traderClassName = _this select 0;
_traderType = [_this, 1, _traderClassName] call BIS_fnc_param;
_traderFace = _this select 2;
_animations = _this select 3;
_position = _this select 4;
_direction = _this select 5;
_attachToObject = [_this, 6, objNull] call BIS_fnc_param;
1.0.3の頃の書き方と比べてみると、トレーダーの装備品の引数が無くなってしまってる。また、以前はベクトル指定だった角度も、単純な方向指定になってた。仕様変更してんのね。
戻り値は、createVehicleLocalオブジェクトそのままなので、カスタムしたかったら、自由にイジれます。
書き直しっすねぇ~。
(;´∀`)あはは・・
スタート時に書いてたスクリプトが動いてなかった理由がこれだった。理由が分かれば嬉しい(エラーで止まってた)
EDEN書き出しのリスト状態のトレーダーデータを使うなら、これでイケるはず。装備も角度も、そのまま使える。
{
_trader = [(_x select 0),(_x select 0),(_x select 3),(_x select 1),(_x select 5),0] call ExileClient_object_trader_create;
_trader setUnitLoadOut (_x select 4);
_trader setVectorDirAndUp [_x select 6, _x select 7];
}
forEach _npcs;
ぞんびらいらいさんのライブ配信を見ながらの作業で御座います。
(;^ω^)
黄色のダックちゃん、めっけ。
(;^ω^)
自作アドオン、車両湧き、動作確認。
自作アドオンのクレイトも確認。
スタート時に動作するスクリプトも、久々に稼働した。
まだ、チョコチョコと、Battleyeキックされてるので、その都度フィルターに追記してます。
もう、30個位は追加したかもしれない。
(;^ω^)
追記:
Battleyeキックログは、scripts.logに出力されますが、remoteexec系のキックログは、違うファイルになるようです。
remoteexec.log
追記:ミッションファイルのダイエット
ミッションファイルをダイエットしなきゃ・・なと思いつつ、今のタイミングで、軽量化。
プレーヤーさんやサーバのロード時間の短縮にもなるし。
(;´∀`)
ミッションファイル内で最も大きいのが、config.cppという設定ファイル(総10000行近い巨大なテキストなんですよ)
EXILEのほとんどの設定情報がメタで存在してるので、無駄な空白やコメントが多い。
これらをメンテ可能なレベルのギリギリなところまでダイエットしてみる(空白をタブにしたり・・)
海が無いマップなので、海関連の設定を全削除。
※ついでに、ヘリの値段を3倍にする
一日がかりで、30KBほど削ったんですが、もう・・疲れた・・。せめて、総量1MB以下に抑えたいが難しい。
(´;ω;`)現在1178KB
あとは、オブジェクト配置データのinitServer.sqfも大きい。
これも空白コードを削除すれば、1/3位は削れると見込んでる。EXILEのシステムとは離れてるので、コードは自由にイジれるし・・。
正規表現で一気に置換するのは、とても気持ちいい。
(;´∀`)エラー出たら、ふりだしに戻る訳だが
エディタは、Notepad++というのを好んで使ってますが、もうちょっと痒いところまで設定できるモノの方が良いかもしれない。
今どきだと、VisualStudio Code辺りなのかな。環境変えるのもリスク有るし(sqf対応してたりして、pboパックとか?ま・・まさか・・な)
ミッションファイルは、一度サーバにインすると、(ドキュメント)/AppData/Local/Arma/MPMissionCacheという場所に保存されます。
これをアンパックすると、そのサーバの設定内容が全部モロバレなのです・・。
(;^ω^)暗号化PBOとか考えてよボヘミアさん
このファイルをイジっちゃえば、いくらでもチート出来るんじゃね?・・と思った貴方は賢い、がッ!これを監視してるのがBattleyeなのです。残念ッ!
んで、この前インした、BadAppleさんの現在のミッションファイルサイズが気になったので・・。
2.857MBですか。
あれだけのMODをサポートするとなると、やっぱ大きくなっちゃいますよね。
TKGさんのLythiumサーバだと、7.387MBッ!
ヽ(;゚д゚)ノ でかっ!
おいらのサーバの7倍っすか。
ちなみに、バニラのEXILEミッションだと、Altis 371KB、Tanoa 466KB、Malden 371KBと、とっても小さい。