「mod」タグアーカイブ

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

20181103160405_1

追記:BattleyeのRemoteexecキック

追記:Battleyeフィルターラッシュ

追記:ステータス表示を消す

細かすぎて伝わらない微調整を、思いつく限り実施しております。

この看板も、その一つ・・。

(;^ω^)

20181103155324_1

前回の、ゾンビExileZの改造の動作確認も実施。

ゾンビからの鹵獲も重要なアイテム入手手段です。

20181103214544_1

前記事で改造した、ゾンビの爆発改造で、スモークが炊かれてます。

「チンッ」の音がしたら注意です。

しかし、この後に及んでも、BattleyeキックがZonbie系で再発してる(武器毎に出るんか?調査中)

20181103215406_1

何度も初期スポーンで、テストプレーを重ねる。

う~ん、このサーバ、過酷・・・・。

(;^ω^)

ゾンビの装備アップ

20181103225848_1

ExileZゾンビに、帽子&バックパックを装備させたりする(初期プレーヤーさんへのプレゼント的な・・)

exilez_mod/scripts/SpawnZombie.sqfの144行辺り(ベストに追加の下)にこれを追加する。

if(random 1 < 0.5)then{
     _zombie addHeadgear selectRandom [         “Exile_Headgear_SafetyHelmet”,”Exile_Headgear_SantaHat”,”Exile_Headgear_GasMask”,         “H_Booniehat_khk”,”H_Hat_checker”,”H_Shemag_khk”,”H_Shemag_olive”,”H_Shemag_tan”,”H_ShemagOpen_khk”,”H_TurbanO_blk”
         ];
     _zombie addBackpack selectRandom [         “B_OutdoorPack_blk”,”B_OutdoorPack_blu”,”B_OutdoorPack_tan”,         “B_AssaultPack_blk”,”B_AssaultPack_cbr”,”B_AssaultPack_dgtl”,”B_AssaultPack_khk”,”B_AssaultPack_mcamo”,”B_AssaultPack_rgr”,”B_AssaultPack_sgg”
         ];
};

0.5の所が確立になるので、実際は3%辺りがいいかも(=0.03)

※addBackpackの部分を別確率にしてもええね

Takistanマップなので、ShemagやTurban入れてるので他マップでは削除した方がいいかも。

バックパックはOutdoorPackとAssultPackの全種類入れてます。

20181103225829_1

こんな感じの鹵獲イメージです。

追記:BattleyeのRemoteexecキック

鯖缶の管理ツールのひとつ、新しいAdmintoolkitを導入しようとしたんですが、なんでかBattleyeでキックされる。

しかも、これまでの感じじゃない。#0 remoteexecうんちゃら・・とか出てる。

#0 “admintoolkit_network_receiverequest [R Alpha 1-2:1 (nabe) REMOTE,”login”,”someRandomStuff1231″]”

※someRandomStuff1231とはなんじゃらほい?

script.txtにフィルター書いてもダメだった。

remoteExec 公式

ここを見ると、remoteexec.txtに書けと書かれてる。

20181104221014_1

追記:Battleyeフィルターラッシュ

しかし、色々なアクションを試してみると、Battleyeでキックされてしまう。

しかも同じようなコードばかりがログに残ってるんですよねぇ・・。なんか、気になる・・。

他に手段が無い以上、フィルター編集で回避してますが・・。う~ん

追記:ステータス表示を消す

image

めちゃめちゃソースコードを見てます。。

(;^ω^)

以前からやりたかった、デフォのステータス表示を消す方法(空腹・水/温度・気温とか)

現在は無理矢理、GUIオブジェクトを画面外に出してるだけで実現してるw

でも、Vehicleトレーダー抜けると画面初期化されちゃう・・

(;´∀`)

まだ、試してないけど、多分、ここだっ!!

ExileClient_gui_hud_toggle.sqf

これをオーバーロードして、トグルできないようにしてやれば出来る・・かもです。余計な事をすると、他の部分にも影響がありそうなので、これなら安心でしょう。

20181109120329_1

初期スポーンからの調整。

バランスだけでなく。

この過酷な砂漠でプレーヤーは何を思うだろう。とか、中二病満載で、テストプレーを。

20181109121630_1

そして、無残な死に様を見つつ、ニヤける・・という、なんとも言えがたい作業が続きます。

(;´Д`)

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

20181029181843_1

追記:続き再開

追記:ゾンビアイテム格納場所:追記

追記:ゾンビその他改造

追記:看板とか・・

追記:ゾンビ爆発ランダム遅延

細かい調整に入っております。

ソロプレー志向なので、アイテム要素を多分に弄っております。

image

ゾンビが出るサーバなので、サーバMODであるExileZの改造に入ります(ゾンビスポーン用アドオン)

うちのゾンビは、ちょっと違うぞ。

(;^ω^)

ですが、動作のほとんどはRyanZombie MODで実現されているので、肝心なところは改造できないんですけどもね。

ゾンビ所持アイテム

ゾンビが生成される部分はここ。

ExileZ/scripts/SpawnZombie.sqf

所持アイテムがベストに1個だけという形になってるので、これを複数個ランダムにしようと思います。

_zombie addItemToVest call _lootGroup;

の部分を。

for “_i” from 0 to round(random 4) do {
     _zombie addItemToVest call _lootGroup;
}

とします。これで、0~3個ランダムとなります。

追記:格納場所(追記:服は無しだった)

そういえば、裸のゾンビは居ないので、ベストだけじゃなくて、服にもランダムで格納しちゃいましょう。上記を、これに変更するだけです。

if(random 1 >0.5)then{
     _zombie addItemToVest call _lootGroup;
}else{
     _zombie addItemToUniform call _lootGroup;
};

追記:ゾンビは服を着ていない事になってた。よって、このコードは意味無しッ!

爆発物をイジる

ゾンビを倒すと確率でグレネードが起爆するトラップがありますが・・。

これを、スモークグレネードだったりする、プチどっきりを入れ込みます。

ExileZ/scripts/MPKilled.sqf

コードの最後の方。

EZM_ExplosiveType createvehicle position _unit;

これを。

(selectRandom EZM_ExplosiveType) createvehicle position _unit;

とします。

EZM_ExplosiveTypeの設定項目は配列にする必要があります。こんな感じになります。

EZM_ExplosiveType=[“mini_Grenade”,”SmokeShell”,”SmokeShellRed”,”SmokeShellYellow”];

キル時の表示を無効にする

ゾンビを倒した時に表示されるスコア、設定で無効にできないのがこれ。

ExileZ/scripts/MPKilled.sqf

の、124行辺り。

[_playerObj, “showFragRequest”, [_killerRespectPoints]] call ExileServer_system_network_send_to;

これが表示のところですので、これをコメントアウトします。

建物の中からスポーンする

屋外でのみ湧いてるようなので、建物の中でも沸かせたい。

ExileZ/scripts/GetRandomLocation.sqf

ここで、スポーン場所を決めてるようです。

ExileZ/scripts/VerifyLocation.sqf

その後、ここで、スポーン場所のチェックを行ってる(トレーダー付近とか、ブラックリストとか)

追記:続き再開

プライベートで用事が出来たので、作業ができなかった。んで、続き。

GetRandomLocation内で、ランダムで場所が決められます(湧き範囲考慮)

ここに、近くに建物があった場合に、建物圏内から湧くようにします。

最後の方のここを改造。

    _position = _position findEmptyPosition [0,10,”Man”];

これを。

private [“_list”,”_pos”,”_cnt”];
_list = _position nearObjects [“House”,10];
_cnt = count _list;
if(_cnt > 0)then{
     _pos = (_list select (floor(random _cnt))) buildingPos 0;
     if((_pos select 0) > 0)then{
         _position = ASLToATL(AGLToASL(_pos));
     };
}else{
     // clear walls and floors
     _position = _position findEmptyPosition [0,10,”Man”];
};

に変更(追記:ちょっと修正)

※まだテストしてません(追記:エラー無し確認)

ランダム地点から10m範囲に建物があったら、ランダムで建物が選ばれて、そこから湧きます。建物内番号は0に固定しました(入り口付近になるかと・・)

プレーヤー認識距離設定外だった場合に、建物内に棒立ち状態のはずです。つまり・・、ドアを開けた途端にゾンビに遭遇・・とかw

(;^ω^)

追記:ゾンビ爆発ランダム遅延

爆発する際に、秒数を設定できますが、これをランダムにしてしまうのも、アリ・・かと。

ExileZ/scripts/MPKilled.sqf

最後の方のこれを・・。

sleep EZM_ExplosionDelay;

これに変更します。設定秒が最大秒となって、ランダムとなります。最小値は+1の部分を弄ってください。

sleep floor((random EZM_ExplosionDelay)+1);

追記:ゾンビその他改造

image

ゾンビ毎にライフやアタック速度が違っていたら・・と調べていたら、これは出来ないらしい。

Ryanzombieshealth/Ryanzombiesattackspeed/Ryanzombiesattackdistance/Ryanzombiesattackstrenthなどなど

グローバル変数に格納する形で、値を渡してるので、全体の設定となってしまう。

追記:看板とか・・

image

これ、ミッションファイルの中身なんですけども・・。

(;´∀`)

こんな事やってるから、ミッションファイルがダイエットできへんねん。

b26

分かる人には分かる、このロゴマークッ!(北日本限定)

もっと凝るつもりだったが、この辺で勘弁願いたい。いやいや、凝るとこ間違ってる。

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

20181027133752_1

追記:ミッションファイルのダイエット

うむむ・・色々やってみたが、原因が分からない。

(;´Д`)

これでは全く進展がなさ過ぎるので、適宜、Battleyeフィルターを編集して様子を見ていこう。

前にもやった事はあるので、抵抗は無い・・・。

(;^ω^)

20181027131422_1

武器を拾うと確実にキックされていたが、確かに出なくなった。こんな感じで、1アクションづつ探しては潰していく作業が必要になるわけです・・。

(;´Д`)

Battleyeフィルタへ追記する方法

image

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

これで完了です。サーバの再起動が必要になります。

image

かなりの量を追加しましたが、一向にキックされますねぇ。。

(;´Д`)しんどい

んで、ここで、今更ながら気付く事があった。

一度、Arma3クライアントを終了しとかないと、ミッションファイルを再ロードしてくれないッ!

m9( ゚д゚)!!おのれキャッシュ

ミッションPBOをイジったら、一度クライアント側も再起動しないといけないようです(大事な事なので2度チェックした)

えぇ・・前もそーだったかな。。

(;´Д`)

Arma3起動スイッチに、キャッシュ無効とか無かったよね・・。

image

一通り、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;

image

ぞんびらいらいさんのライブ配信を見ながらの作業で御座います。

(;^ω^)

20181027161249_1

黄色のダックちゃん、めっけ。

(;^ω^)

20181027161418_1

自作アドオン、車両湧き、動作確認。

20181027161514_1

自作アドオンのクレイトも確認。

20181027204354_1

スタート時に動作するスクリプトも、久々に稼働した。

まだ、チョコチョコと、Battleyeキックされてるので、その都度フィルターに追記してます。

もう、30個位は追加したかもしれない。

(;^ω^)

追記:

Battleyeキックログは、scripts.logに出力されますが、remoteexec系のキックログは、違うファイルになるようです。

remoteexec.log

追記:ミッションファイルのダイエット

image

ミッションファイルをダイエットしなきゃ・・なと思いつつ、今のタイミングで、軽量化。

プレーヤーさんやサーバのロード時間の短縮にもなるし。

(;´∀`)

ミッションファイル内で最も大きいのが、config.cppという設定ファイル(総10000行近い巨大なテキストなんですよ)

EXILEのほとんどの設定情報がメタで存在してるので、無駄な空白やコメントが多い。

これらをメンテ可能なレベルのギリギリなところまでダイエットしてみる(空白をタブにしたり・・)

海が無いマップなので、海関連の設定を全削除。

※ついでに、ヘリの値段を3倍にする

一日がかりで、30KBほど削ったんですが、もう・・疲れた・・。せめて、総量1MB以下に抑えたいが難しい。

(´;ω;`)現在1178KB

あとは、オブジェクト配置データのinitServer.sqfも大きい。

これも空白コードを削除すれば、1/3位は削れると見込んでる。EXILEのシステムとは離れてるので、コードは自由にイジれるし・・。

正規表現で一気に置換するのは、とても気持ちいい。

(;´∀`)エラー出たら、ふりだしに戻る訳だが

エディタは、Notepad++というのを好んで使ってますが、もうちょっと痒いところまで設定できるモノの方が良いかもしれない。

今どきだと、VisualStudio Code辺りなのかな。環境変えるのもリスク有るし(sqf対応してたりして、pboパックとか?ま・・まさか・・な)

image

ミッションファイルは、一度サーバにインすると、(ドキュメント)/AppData/Local/Arma/MPMissionCacheという場所に保存されます。

これをアンパックすると、そのサーバの設定内容が全部モロバレなのです・・。

(;^ω^)暗号化PBOとか考えてよボヘミアさん

このファイルをイジっちゃえば、いくらでもチート出来るんじゃね?・・と思った貴方は賢い、がッ!これを監視してるのがBattleyeなのです。残念ッ!

んで、この前インした、BadAppleさんの現在のミッションファイルサイズが気になったので・・。

2.857MBですか。

あれだけのMODをサポートするとなると、やっぱ大きくなっちゃいますよね。

TKGさんのLythiumサーバだと、7.387MBッ!

ヽ(;゚д゚)ノ でかっ!

おいらのサーバの7倍っすか。

ちなみに、バニラのEXILEミッションだと、Altis 371KB、Tanoa 466KB、Malden 371KBと、とっても小さい。