【GAME】ARMA3 EXILE MODサーバの旅その72
追記:GAC JSDFというMODがあった
追記:89式いれちゃおうか
追記:リッチテキストの仕様
追記:DMSのAIのウェイポイント
追記:DMSミッションの調整
前記事が長くなり過ぎたので、新記事で(禁断のサーバ改造)
色々と弄ってる、@ExileServerのこのコード(アイテム湧き関連)
ExileServer_system_lootManager_spawnLootInBuilding.sqf
思いついたので、採用するかは別として、つぶやく。
エリア毎に湧き具合を変化できたら、どーだろうか・・と。現在は、全エリアで湧き具合は同一設定。
_lootTableNameに、エリア名が入ってるので、これで判断できる(放射線エリアに入ってたら無条件に”Radiation”)
1スポットの湧き数は、ループに入る前に、_numberOfItemsToSpawnに格納されてます(乱数結果)
if(_lootTableName isEqual “Military”)then{
_numberOfItemsToSpawn=_numberOfItemsToSpawn+1;
}; (41行)
とかすれば、軍事施設(Military)では、湧きを多めにしたり、とかできる。
VehicleServiceとか、Medicalエリアでは、不自然なアイテム湧きに見えたりする事があるので、意外にアリかも(ガソリンスタンドに、アイテム山盛りとか)
(;´∀`)
1スポーン湧きのタイミング、2個同じアイテムは湧かないようになってる。かつ、その分、湧き数が減る。
これが嫌なら、以下を削除です。1アイテム湧かす度に、配列を舐めてるので、若干サーバ負荷を減らせます。
(44行)if !(_itemClassName in _spawnedItemClassNames) then
さらに、アイテム湧きカスタムアイデア。
sunOrMoonコマンドで、現在、昼か夜かを判断できます(0:夜/1:昼)
夜はアイテム湧きを豪勢にしたり、ケミカルライトを多めに湧かしたりとか。
追記:DMSミッションの調整
ミッションはあまり重要視してなかったので、テコ入れする。チームでインしてきたり、装備が整ったら、挑戦したくなりますもんね。
ソロ志向で考えていたので、かなり難易度を下げてましたが、難易度に幅をもたせる方向で再調整。
DMSでのAIスキルのレベルは4種類ですが、Armaよろしく、めちゃめちゃ細かいスキル調整が可能です。
夜間&草むらに隠れてても、確実にヘッショ決めてくる・・というのは避けておきたい・・がw
高難易度でも、全フリせずに、aimingShake(エイムぶれ)を下げ気味でどーだろうか。
(;´∀`)
aimingAccuracy:弾道計算もやってのけちゃう
aimingSpeed:エイムの速度
commanding:グループとの情報共有
courage:部下の士気
general:意思決定
reloadSpeed:リロード速度
spotDistance:ターゲットを見つける能力
spotTime:状況判断速度
aimingShake:エイムのぶれ
※単純翻訳によるものです実際に動作確認したもんじゃない
※近場でAI仲間が死んでも、棒立ちしてるのはspotTimeが低いためかな?他の項目も影響してるっぽいけど
追記:DMSのAIのウェイポイント
AIの移動(ウェイポイント)が具体的にどーなってるのか気になったので調べてみた。
@DMS/scripts/fn_SetGroupBehavior.sqf
for “_i" from 0 to 359 step 45 do
{
private _npos = _pos getPos [_radius,_i];
private _wp = _group addWaypoint [_npos,5];
_wp setWaypointType “MOVE";
};
_wp = _group addWaypoint [_pos,0];
_wp setWaypointType “CYCLE";
一部ミッションは違うけども、こうなってます。
ミッション位置を中心に、円形で単純に動いてる(ウェイポイントは45度単位)
難易度に合わせて、その円形のサイズが違う(DMS_AI_WP_Radius_easyとかで設定された値)
実際には地形があるので、綺麗な円形にはならないんでしょうが、若干ばかしランダム要素を、弄りたくなってしまいます。
(;´∀`)
上記コードの以下の部分をこうすれば、汚いランダム円形にはなります(各点、設定値+0~100m外側へランダム)
private _npos = _pos getPos [_radius+ floor(random 100),_i];
最終的には、こうなりました。この方が設定値が生かされるもんね。
private _npos = _pos getPos [floor(_radius/2+random (_radius/2)),_i];
近場の空白地を探したいならfindEmptyPosition、何か適当なランドマークを探したいならselectBestPlacesコマンドが利用できる。
どこでミッションが発生するか分かりようが無いので、上記コマンドの利用は難しいけんども。
あと、あくまでグループ(小隊)のウェイポイントなので、戦闘中とかは無視される。
もうちょい考える。
ミッション攻略といえば、400-600m圏内の高所を取るってのが定石な訳で、これを潰しちゃえば・・どうやろうか。。
(;^ω^)すまんなプレーヤー諸君
@DMS/scripts/fn_SetGroupBehavior.sqf(97行追加)
// Find high-position
private _highpos = _pos;
for “_i" from 0 to 359 step 10 do
{
private _npos = _pos getPos [500,_i];
private _pt = ASLToATL _npos;
if(_pt select 2 > _highpos select 2){_highpos=_pt};
};
if((_highpos select 2)-(_pos select 2)>100){_pos = _highpos;};
ウェイポイントを設定する前に、ミッション周囲(500m)の高低差を調べて、基準点から100m以上で最も高い位置をウェイポイントの中心地にします。
※まだ、動作確認してません
追記:リッチテキストの仕様
HTMLのような記述で多少自由度の高い表現が可能です。備忘
DMSのミッション開始時のトースト表示の内容はこれ。これを、Exileサーバに渡してる(ExileServer_system_network_send_broadcast)
format
[
“<t color=’%1′ size=’%2′ font=’%3′>%4</t><br/><t color=’%5′ size=’%6′ font=’%7′>%8</t>",
_titleColor,
DMS_ExileToasts_Title_Size,
DMS_ExileToasts_Title_Font,
_messageTitle,
DMS_ExileToasts_Message_Color,
DMS_ExileToasts_Message_Size,
DMS_ExileToasts_Message_Font,
_message
]
<img image=’red.paa’ />みたいに書けば画像も入れ込める。
追記:89式いれちゃおうか
Japan Unit MODを適用して、日本製アサルト89式を導入する事に決めました。
よって、看板を作らないといけない(自分ルール)
(;^ω^)
追記:GAC JSDFというMODがあった
89式を使いたくてJapanUnitsというMODだけ見てましたが、他にも「GAC JSDF」というMODを見つけました(400MB、要CBA A3)
こちらは日本人が開発してるので、より確実です。
(;^ω^)
これから、中身をチェックしてみよう。