こっぺぱんブログ

ARTICLE PAGE

in PCゲームその他

Arma3 空母Nimitz カタパルトから射出するスクリプトの導入と使用例 自分用メモ

-- COMMENT




Arma3には空母NimitzというMODがありますが通常であれば機体を空母に配置してプレーヤー自身がマニュアル操作することでカタパルトが起動しカタパルトから射出、空母から離陸することが可能ですが、これをAiが操作する機体で行う場合にはスクリプトを使用することで可能なようです。以下の内容はAIが操作する機体をカタパルトで射出、離陸する際のスクリプトの導入と使用例になります。

ただ、以下のやり方で行った場合には指定した航空機の配置した場所によりますが、一機目の機体はカタパルトの手前に配置するとしばらくしてカタパルトの奥にスポーンしてカタパルトの射出モーションに移行しますが、二機目の機体はそのように動作してくれません。また一機目の機体も配置する場所が空母の側面の場合には一度空母の外に落ちそうになるとカタパルトの奥にスポーンされ射出モーションに移行すると少々難があります。









導入

空母Nimitzでカタパルトを使用して機体を射出、離陸する際に使用するスクリプト郡は以下のサイトからダウンロードします。以下のリンク先で「[SP]NimitzTraffic.Stratis.7z」をダウンロードします。

[SP]NimitzTraffic.Stratis.7zのダウンロード




Editで作成したミッションファイルは以下のパスの「missions」フォルダにXXXX.Maldenといった名称でフォルダが作成されます。

C:\Users\XXXX\Documents\Arma 3\missions\XXXX.Malden(XXXXはユーザー名)



ダウンロードした[SP]NimitzTraffic.Stratis.7zを解凍しフォルダの中の「TakeOffFunctions」フォルダをXXXX.Maldenなどの名称のミッションフォルダにコピーします。以下、便宜上フォルダ名を「test.Malden」として説明します。



init.sqfの作成


「test.Malden」フォルダに新規で「init.sqf」という名称でテキストファイルを作成し、以下の内容を記述します。


[Nimitz, F18, 3] execVM "TeTeT_traffic\TakeOffFunctions\fn_planeStart.sqf"


「init.sqf」に記述した execVMコマンドで指定したスクリプトを呼び出します。上記の記述例では「TeTeT_traffic\TakeOffFunctions\」フォルダ以下の「fn_planeStart.sqf」というスクリプトを呼び出しています。「fn_planeStart.sqf」には機体をカタパルトから射出する際のコードが記述されています。

この記述例では「F18」という変数名の機体を3番カタパルトから射出させます。またexecVMコマンドで「fn_planeStart.sqf」を呼び出す際に「Common.h」というファイルが「fn_planeStart.sqf」と同じフォルダ上にないとファイルを読み込んだ時点でCTDします。




image1_20170930184433c5a.jpg


「Nimitz, F18, 3]」の「F18」はカタパルトで射出する対象の航空機の変数名です。機種はF18でなくてもF14でも何でも構いませんがこの記述例のままの場合には変数名を「F18」と定義する必要があります。「Nimitz, F18, 3]の「3」は3番カタパルトを使用して射出するように定義します。3番カタパルトは右から数えて3番目のカタパルトです。

後は適当にマップ上に空母Nimitzと航空機を配置しておきます。新しい名称でセーブする場合にはその名称のフォルダに「init.sqf」と「TakeOffFunctions」とコピーしておきます。

Arma3_x64 2017-10-01 18-56-04-477

カタパルトの手前に配置してあげるとよさそうです。



Arma3_x64 2017-10-01 13-35-02-665



これで下準備は整いました。Editで「test.Malden」を読み込むと「init.sqf」に記述されたスクリプトが呼び出され指定した機体が自動的にカタパルトから射出されます。といいたい所ですが、前述したように機体をカタパルトの手前に配置しないと綺麗にカタパルトからの射出モーションに移行しないといった制限が発生します。

また一機目は問題なくても二機目はカタパルトの手前に配置しても左側面にそれる傾向がありうまくカタパルトからの射出モーションに移行してくれません。現状プレイヤーの機体を3番カタパルト、Aiが操作する機体を2番カタパルトといった具合で使用しています。それだけでも絵にはなりますが。

ちなみにinit.sqfで指定した機体がプレイヤーの操作する機体の場合にはAiの操作する機体同様にカタパルトからの射出モーションに一定時間後自動的に移行します。


image1_2017100213294292d.jpg

また空母Nimitzは同盟軍側の艦船のため、Nimitzから赤のユニットOPFOR軍などの機体を離陸させた時点でNimitzから銃撃を受けます。それを避けるためにはNimitzのプロパティを開き、「オブジェクト固有」→「Arm AA Defenses」を無効にします。


仮に空母側面に配置した機体を指定したカタパルトに向かわせカタパルトから射出されるモーションに移行して射出されるということを自然に見えるように行うためには「init.sqf」に指定した機体を指定したカタパルトに向かうといったスクリプトの呼び出しを追記するといった形でもう一手間かける必要がありそうです。













関連記事
スポンサーサイト
  • Share