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

2018年7月28日プライベートarma3,dayz,exile,mod,server

P_20180728_144402追記:Battleyeヽ(゚∀。)ノウェ

追記:Battleyeのscript.txtの書き方

追記:だめだ

追記:bisign生成方法

追記:1.0.4のinitPlayerLocal.sqf

暑中見舞い申し上げます。

(;´∀`)あつい

モニターに向かい合ってる最中に、ぬこバンディットに狙われそうになった所です。

入力中のテキストを破壊されてしまいます。

昨夜、メインPC(自作)が使用中に謎の電源OFFに・・、遂に壊れたか?!と焦りまくり、オーバークロックしてたので、定格に戻して様子を見てる所。

定格運用は、温度が上がらないのを、改めて知るw

sc20180728145245Battleyeのエラーがどーしても取れなくて、もう、考えつく限り手を尽くしたんですが、まったくしっぽを掴めない。

諦めかけたその時・・。

ふっ、と思い出しました。

initPlayerLocal.sqf(主にトレーダー配置のスクリプト)

これ、1.0.3から1.0.4で書き方が変更されたファイルです。

移行時に、気にはなったけど、同じスクリプトコードだし(やってる事一緒やし)、問題無いだろうと、そのまんまスルーしてました・・。

問題はこいつでした・・。

(;´Д`)Linux環境だからとか関係なかったんや・・

全部コメントアウトして、起動してみたら、動くでやんの・・。

(´;ω;`)ブワッ

超巨大な遠回りをしてしまったようです。

sc20180728150236新しい書き方は、createVehicleうんぬんと、泥臭い書き方では無く、Exileコードを呼び出しで書かれてるようです。

うん・・

全部書き直しですね。

これらコードの出力ツールのEden.pboの更新はされて無いようなので、このファイルは手書きしかなくなってしまったようですね。

追記:1.0.4のinitPlayerLocal.sqf

sc201807281717031.0.4のinitPlayerLocal.sqfはロクに見たことなかったので、何をやってるのかコードを見る。

どーって事無くて、トレーダー毎に、ExileClient_object_trader_createを呼び出してるに過ぎなかった。

んで、バニラでは、トレーダーにくっ付けるオブジェクトなんかをアタッチしてるだけでした(複数ある場合は、別個生成してからアタッチ)

sc20180728171924んで、こちらがEden.pboが出力した以前からのコード部分。

これを単純に、ExileClient_object_trader_createに流してやればええだけのように思えます(アタッチは考慮されてないけど)

0:クラス名
1:アニメーション
2:トレーダー名
3:顔
4:所持品
5:ポジション
6-7:方向(行列データ)

・・とリスト出力されてます。

ExileClient_object_trader_createの引数は。

0:クラス名
1:トレーダー名
2:顔
3:アニメーション
4:ポジション
5:方向(度データ)
6:アタッチオブジェクト

・・となってます。

方向の値だけ行列から、0-359度数に変換できれば、そのまま流せそうです。

VectorDirからDegree(度)に変換してくれる関数があるんじゃなかろうかと思っていたが、無いようだった・・。

※Arma3では、北から東、南、西に0~359度になっていて、VectorDirでは[0,1,0]が北、[0,-1,0]が南、[1,0,0]が東、[-1,0,0]が西になってる

うむむ・・。

Exileフォーラムを眺めてみても、ツール類も無いようだったし、みんなはどーやってんの?

(;´Д`)

※多くはM3Editorでのコード出力を勧めてるようでした

ま、トレーダーって数える程度だし、手作業で書いても大した事ないけどもね。ん・・Eden.pboを書き換えてみようか。

(;^ω^)まだ、マップいじるかもしれないし・・w

追記:bisign生成方法

sc20180729114626余談ですが、メモです。

PBO署名ファイルの生成の仕方です(biKey、bisign)

公式

Arma3Toolsがインストールされたディレクトリ内の、DSSignFile内にコマンドが入ってます。

DSCreateKey.exeで鍵を作って、DSSignFile.exeで生成できるようです。

GUIツールからは出来ないっぽい?

追記:だめだ

またBattleyeエラーが出始めた・・。

(;´Д`)

すっかり心が折れたぞw

最後の手段として残しておいた、これをやるしかありません。

完全無欠にまったくのゼロからの構築ぇ・・

このまま続けてもラチがあきません。この方が早い。

追記:Battleyeのscript.txtの書き方

sc20180801172553あ・・気になってしゃーない。

やっと、Battleyeのscript.txtの書き方のページを見つけました。

A Guide to BattlEye Filters

頭の数字は、キックするか?ログ出しするかという意味らしく、7だと全部ってことのようです。

続けて、キーワード名と、”=!”や”!”で、条件の指定(含まれているかどうか)、そして、対象テキスト文字となってます。

Battleyeでの定義

5 “HMMWV_" !"HMMWV_Ambulance

と書いた場合は、もし、スクリプト中に含まれていた場合はエラーになります。以下、例

スクリプト内

createVehicle [“HMMWV_Ambulance_DES_EP1″,getPosATL player,[],10,"NONE"];

Battleyeは単純な文字列比較で構成されてるようです。

ただ、これらの比較チェックは、サーバ側で行われてるんでしょうし、(チート対策とはいえ)なんだか裏方は忙しそうです。

(;´∀`)

しかしながら、Exile MODでのバニラの定義を覗くと、解析しようにも、恐ろしい長さがあるんです・・。無理っすわ

4万桁とか・・・w

多分、Exile Clientの一部コードが丸っと圧縮されてる雰囲気です。

追記:Battleyeヽ(゚∀。)ノウェ

sc20180803152953ほぼバニラ状態なのに、Battleyeスクリプトで蹴られるのが、どうにも気になって仕方が無い。

継続してネットから情報を探してます(多種多様な言語のページから・・)

(;´Д`)

前に書いたモノでの認識で間違い無いようで、Battleyeエラーが出たなら、スクリプトを確認して、(必要なら)原因のコードをログから拾い上げて、”そのまま”追加すれば良いようです。

BattleyeのKick条件は、ホワイトリストなので、許可すべきアイテムやアクション等は全て、書かなきゃいけないようです(ワイルドカードが利用できるので、多くは、”l_”とか”misc_”等の様に書ける)

追加の方法は、

ログにこんなエラーが出たら「Script restriction #40

scripts.txtの40+2行の所を見て一応確認します。

battleyeディレクトリ内に、.logファイルがあるはずなので、それを開きます。

蹴られたコード(場合によっては複数行)が表示されてます。

それを、”(クオート)と改行を、”¥n”でエスケープシーケンスして、1行にまとめ上げて、!=”・・・”として、最後の行に追加します。

これで終わりですが。

Battleyeの更新のために、サーバ再起動は不要だそうです。ただ、Rconツールなどから、リフレッシュ操作が必要です。

(;´Д`)

やり方は分かったが・・、最初にも言ったけど、おいらのサーバは、ほぼバニラ状態なんだけども、全ての行動やアイテムをテストして、Battleyeデバッグをしなきゃならんのか・・と。二の足を踏んでます。

なんか、違う所に原因があるような気がしてならない。

#デフォのAltisミッションで稼働させても、Kickされる始末

2018年7月28日プライベートarma3,dayz,exile,mod,server

Posted by nabe