【GAME】ARMA3 EXILE MODサーバの旅その61
追記:Battleyeのscript.txtの書き方
追記:だめだ
追記:bisign生成方法
追記:1.0.4のinitPlayerLocal.sqf
暑中見舞い申し上げます。
(;´∀`)あつい
モニターに向かい合ってる最中に、ぬこバンディットに狙われそうになった所です。
入力中のテキストを破壊されてしまいます。
昨夜、メインPC(自作)が使用中に謎の電源OFFに・・、遂に壊れたか?!と焦りまくり、オーバークロックしてたので、定格に戻して様子を見てる所。
定格運用は、温度が上がらないのを、改めて知るw
Battleyeのエラーがどーしても取れなくて、もう、考えつく限り手を尽くしたんですが、まったくしっぽを掴めない。
諦めかけたその時・・。
ふっ、と思い出しました。
initPlayerLocal.sqf(主にトレーダー配置のスクリプト)
これ、1.0.3から1.0.4で書き方が変更されたファイルです。
移行時に、気にはなったけど、同じスクリプトコードだし(やってる事一緒やし)、問題無いだろうと、そのまんまスルーしてました・・。
問題はこいつでした・・。
(;´Д`)Linux環境だからとか関係なかったんや・・
全部コメントアウトして、起動してみたら、動くでやんの・・。
(´;ω;`)ブワッ
超巨大な遠回りをしてしまったようです。
新しい書き方は、createVehicleうんぬんと、泥臭い書き方では無く、Exileコードを呼び出しで書かれてるようです。
うん・・
全部書き直しですね。
これらコードの出力ツールのEden.pboの更新はされて無いようなので、このファイルは手書きしかなくなってしまったようですね。
追記:1.0.4のinitPlayerLocal.sqf
1.0.4のinitPlayerLocal.sqfはロクに見たことなかったので、何をやってるのかコードを見る。
どーって事無くて、トレーダー毎に、ExileClient_object_trader_createを呼び出してるに過ぎなかった。
んで、バニラでは、トレーダーにくっ付けるオブジェクトなんかをアタッチしてるだけでした(複数ある場合は、別個生成してからアタッチ)
んで、こちらが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生成方法
PBO署名ファイルの生成の仕方です(biKey、bisign)
Arma3Toolsがインストールされたディレクトリ内の、DSSignFile内にコマンドが入ってます。
DSCreateKey.exeで鍵を作って、DSSignFile.exeで生成できるようです。
GUIツールからは出来ないっぽい?
追記:だめだ
またBattleyeエラーが出始めた・・。
(;´Д`)
すっかり心が折れたぞw
最後の手段として残しておいた、これをやるしかありません。
完全無欠にまったくのゼロからの構築ぇ・・
このまま続けてもラチがあきません。この方が早い。
追記:Battleyeのscript.txtの書き方
やっと、Battleyeのscript.txtの書き方のページを見つけました。
頭の数字は、キックするか?ログ出しするかという意味らしく、7だと全部ってことのようです。
続けて、キーワード名と、”=!”や”!”で、条件の指定(含まれているかどうか)、そして、対象テキスト文字となってます。
Battleyeでの定義
5 “HMMWV_" !"HMMWV_Ambulance“
と書いた場合は、もし、スクリプト中に含まれていた場合はエラーになります。以下、例
スクリプト内
createVehicle [“HMMWV_Ambulance_DES_EP1″,getPosATL player,[],10,"NONE"];
Battleyeは単純な文字列比較で構成されてるようです。
ただ、これらの比較チェックは、サーバ側で行われてるんでしょうし、(チート対策とはいえ)なんだか裏方は忙しそうです。
(;´∀`)
しかしながら、Exile MODでのバニラの定義を覗くと、解析しようにも、恐ろしい長さがあるんです・・。無理っすわ
4万桁とか・・・w
多分、Exile Clientの一部コードが丸っと圧縮されてる雰囲気です。
追記:Battleyeヽ(゚∀。)ノウェ
ほぼバニラ状態なのに、Battleyeスクリプトで蹴られるのが、どうにも気になって仕方が無い。
継続してネットから情報を探してます(多種多様な言語のページから・・)
(;´Д`)
前に書いたモノでの認識で間違い無いようで、Battleyeエラーが出たなら、スクリプトを確認して、(必要なら)原因のコードをログから拾い上げて、”そのまま”追加すれば良いようです。
BattleyeのKick条件は、ホワイトリストなので、許可すべきアイテムやアクション等は全て、書かなきゃいけないようです(ワイルドカードが利用できるので、多くは、”l_”とか”misc_”等の様に書ける)
追加の方法は、
ログにこんなエラーが出たら「Script restriction #40」
scripts.txtの40+2行の所を見て一応確認します。
battleyeディレクトリ内に、.logファイルがあるはずなので、それを開きます。
蹴られたコード(場合によっては複数行)が表示されてます。
それを、”(クオート)と改行を、”¥n”でエスケープシーケンスして、1行にまとめ上げて、!=”・・・”として、最後の行に追加します。
これで終わりですが。
Battleyeの更新のために、サーバ再起動は不要だそうです。ただ、Rconツールなどから、リフレッシュ操作が必要です。
(;´Д`)
やり方は分かったが・・、最初にも言ったけど、おいらのサーバは、ほぼバニラ状態なんだけども、全ての行動やアイテムをテストして、Battleyeデバッグをしなきゃならんのか・・と。二の足を踏んでます。
なんか、違う所に原因があるような気がしてならない。
#デフォのAltisミッションで稼働させても、Kickされる始末
ディスカッション
ピンバック & トラックバック一覧
[…] 【GAME】ARMA3 EXILE MODサーバの旅その612018年7月28日 […]