返信先: ARMA3 ミッションエディットスレ

ホーム フォーラム TRI Gaming フォーラム ARMA3 ミッションエディットスレ 返信先: ARMA3 ミッションエディットスレ

#140262

先日私が作成したミッションをプレイしていただいた際にアーセナルに意図してた装備品が入っていないという問題が発生しました。
原因は、エディッタ上でアーセナルの内容をいじっていたため、操作ミスで追加されていなかったようです。

そこで、tri鯖で採用されているarsenal.sqfを使おうかなと様々なミッションファイルのarsenal.sqf中身を見たところ、人それぞれ違う点に気づきました。
これを引き継いで自分の好きなように・・・と思いましたが、これからいろいろミッションを作るときにせっかく「作った装備品リストが継承できないのはもったいない」ので、その点を解消できるスクリプトを書いたんですが・・・。

デバックするのにいろいろな装備品リストが必要になります。(というか、このスクリプトの真の完成はそのリストあってこそです)
なので・・・そのリスト作成をお手伝いいただけると大変助かります。

"任意のファイル名.sqf"
[
"arifle_MX_ACO_pointer_F",
// コメントも書けます。
"srifle_DMR_02_sniper_F",
/* 複数行も */
"MMG_01_tan_F"
// 日本語のコメントを書くならファイルフォーマットをUTF-8に!
]

こんな感じに、[]の中にクラスネームを書くだけです。
※ただし、異なるクラスのものを混ぜて書かないでください。

1.銃火器本体(Weapon)
2.薬莢(Magazine)
3.バックパック
4.それ以外のアイテム(服やベスト、医薬品に…)

この4つの項目で分けてください。

スクリプトが読める人は、現在作成中のスクリプトを貼っておきますのでご助言ございましたらお願いします。
ミッションフォルダのsettingsの中に有るフォルダ構造に関しては深く考えていないので、その点のご指摘ただけると幸いです。
帰宅中にふと思った、わかりやすくて管理しやすい方法。

missionFolder
 ->settings
   ->VirtualArsenal
     ->Backpack
     ->Item
     ->Magazine
     ->Weapon

4つのフォルダそれぞれに自由にリストを作成する。
その際、ファイルの命名規則を設け、例えば、作者名_好きな名前.sqfのようにする。
いろいろなアドオンをミックスしてて、もしそのアドオンが入ってなくてもちょっとエラー吐くだけでちゃんと動くからこんな感じでいいかなと。

フォルダ構造は自由に変更しても、スクリプト実行の際に指定しますのでご安心ください。

少しだけスクリプトについて解説

setArsenal.sqf
null = [アーセナル追加先, [アーセナルの内容があるオブジェクトの名前, ...etc(複数可)]] execVM "scripts\CustomVirtualArsenal\setArsenal.sqf";

機能はアーセナルの項目が出来るようにするのが主機能です。
その際、アーセナルの内容を記録した(アーセナルが追加されている)オブジェクト名を第二引数に配列にして渡しています。
これにより、他のアーセナルの「継承」が出来るようになります。

setArsenalContents.sqf
null=[
アーセナルの内容を追加(記録)するオブジェクト名,
追加モード, // "i" = アイテム類, "w" = 武器, "m" = 薬莢, "b" = バックパック
検索フォルダ(もしくは上位フォルダ), // "settings\VirtualArsenal\Weapon\A3\" が現在の設定です
検索ファイル名(sqf) // 配列でsqfファイル複数指定できます。クラスネームを直接書いても動作しますが...このスクリプトの目的からそれるので推奨はしません。 省略した場合はsetList.sqfというのが読み込まれます。
] execVM "scripts\CustomVirtualArsenal\setArsenalContents.sqf";

追加モードに関しては改良予定。
具体的には、上記に示したファイル構造であれば自動的に判別する。

setList.sqf
[
// 以下のファイルをすべて読み込みます。
"basic.sqf",
"special.sqf"
]
  • この返信は9年、 11ヶ月前にJFetch(ふぇっち)が編集しました。理由: リストを記録するファイル名指定に不備
  • この返信は9年、 11ヶ月前にJFetch(ふぇっち)が編集しました。理由: スクリプトの仕様変更があったため