砲撃・航空支援(RTO Soldier) Readmeファイル


ファイル概要
-------------------------------------------------------------------------------
このアドオンは PLA-VMEアドオンの砲撃の後方支援を呼ぶ機能のみを抜き出した「RTO Soldier」のVer2.0β版です。
MIF_NapalmFX11やOFP-Dの Air Strike のエフェクトを利用した爆弾およびナパーム弾による航空支援を新たに追加し、さらにナパーム弾被弾時にREMのエフェクトを加え、その他Addonとして利用できるように修正しました。
β版に付き、バグや思わぬ誤動作を引き起こす場合がありますので予めご了承ください。

免責
-------------------------------------------------------------------------------
このアドオンを使用して発生したいかなる損害についても作者は責任を負えません。
自己責任でご利用ください。

修正点
-------------------------------------------------------------------------------
(Ver1.0 → Ver1.1)
  • 新たに East、Resistance のユニットを追加
  • 砲弾着弾時の効果音を追加
  • このアドオン専用に砲弾を追加(多目的対戦車榴弾、榴弾)
  • 着弾ロジックを変更(命中精度の向上)
(Ver1.1 → Ver2.0β)
  • 新たに航空支援(爆弾・ナパーム弾)を追加

このファイルについて
-------------------------------------------------------------------------------
このファイルには以下の項目について書かれていますので、参考にしてください。
ファイル概要
免責
修正点
このファイルについて
インストール方法
使用方法
前準備
砲撃支援
  ・砲弾の違いとAccurate、Openの違い
航空支援
  ・爆弾の違い
  ・爆撃方法
  ・爆撃不可と誤差
  ・Tips
付属のミッションについて
他のユニットでこの機能を使用する方法
他のアドオンにこの機能を追加する方法
他のアドオンの無線機等を対応させる方法
既知の問題点

インストール方法
-------------------------------------------------------------------------------
解凍してできた RTO_Soldier.pbo を Res/Addon フォルダ
(通常はC:\Program Files\Codemasters\OperationFlashpoint\Res\AddOns)にコピーしてください。
また、missions フォルダの中の4つのフォルダは、ユーザーのミッションフォルダ
(通常は C:\Program Files\Codemasters\OperationFlashpoint\Users\ユーザー名\missions)にコピーしてください。

[West/Men] 、[East/Men] および [Resistance/Man] に [RTO Soldier] が追加されます。
※RTO:Redio Telephone Operator(通信兵)

それぞれ、以下のWeapon(無線機)とMagazine(Document)を所有しています。

UNIT WEAPON CLASS-NAME / MAGAZINE CLASS-NAME
[West/Men] prc117new / VME_DOC_WEST
VME_DOC_AS、VME_DOC_NP
[East/Men] rf_11mk2 / VME_DOC_RUS
[Resistance/Man] prc77 / VME_DOC_RES

用途 MAGAZINE CLASS-NAME 属性 備考
砲撃要請用 VME_DOC_WEST(Artillery) West Accurate、Open
VME_DOC_RUS(Artillery) East Accurate、Open
VME_DOC_RES(Artillery) Resistance Openのみ
爆撃要請用 VME_DOC_AS(Mk84 LDGB) West 多目的爆弾
VME_DOC_NP(Mk77 Napalm) West ナパーム弾
砲撃の方式および砲弾・爆弾の種類については砲撃支援航空支援の各使用方法を参照のこと。

また、各無線機には対応する Document 以外使用できません。例えば prc117new で使用できるのは、VME_DOC_WEST、VME_DOC_AS、VME_DOC_NP のみとなります。
また、各属性(West、Eastなどの陣営)が持てるWeapon、Magazineも固定です。(例えば West の場合は prc117new 以外の無線機を使用することは出来ません。)

使用方法
-------------------------------------------------------------------------------
 ○前準備
このアドオンをミッションで使用するためには、マップ上に「Trigger」を作成する必要があります。(ナパーム弾を使用しない場合は必要ありませんのでこの項目を読み飛ばしてください。)

(アドオンのコンセプトから言って、アドオンのみで機能するようにしたかったのですが、作者の貧相な知識では方法が分かりませんでした。このファイルの既知の問題点にも書いておりますので良い方法をご存知の方は情報をお願いします。)
  1. OFPのミッションエディタを起動し、このユニット(RTO Soldier)を配置する(または設置してあるミッションの)マップを開きます。
  2. エディタ上部のメニューから [Triggers (F3)] を選択します。(図1
  3. マップのほぼ中央でダブルクリックし [Insert Trigger] 画面を表示します。(図2
  4. ミッションが行われる範囲を覆うように [Axis a]、[Axis b] (図2:@、A)の数値を入力し、(例のDesert Island は島自体が小さいため、値が 2000 となっていますが、よく分からなければ [Axis a]、[Axis b] ともに 10000 と入力してください。そうすればマップ全体を覆うことが出来ます。)[Activation] (図2:B)は [Anybody] を選択、最後に [Name :] 欄(図2:C)に allist と入力し [OK] (図2:D)を押してください。
  5. 例で使用した Desert Island の場合、最後は島全体を覆うように Trigger が作成されています。(図3

 ○砲撃支援
  1. アクションメニューから[Call Artillery Support (Accurate)] または [Call Artillery Support (Open)] (※注)を選択します。(Resistanceの場合は [Call Artillery Support] のみ(Open 相当)となります。
  2. チャット部分に「Connecting... 」と表示され、数秒すると『ポン』という音とともに画面左上の [Hint] 欄に「Artillery Support Single-click on the map to place target」と表示がでます。
  3. 次にマップ画面を開き、砲撃してほしい位置をシングルクリックします。
  4. 「Sure. Just keep your heads down... 」と通信メッセージの表示および無線の音声が入り、20秒程度で指定位置に砲撃が開始されます。(East の場合音声のみで、通信メッセージは表示されません。)
  5. 支援を呼べる回数は Magazine にある Document の数になります。(デフォルトWest 1回、East 5回、Resistance 2回)
    また、1回で10発の砲撃を行います。
 ※注:砲弾の違いとAccurate、Openの違い
Ver1.0では、戦車の Heat 弾と同等の砲弾を指定ポイントの半径50m以内にランダムに投下していましたが、比較的偏って落ちることが多く、しかも威力が弱かったため大して効果を発揮することが出来ませんでした。

このアドオンで表現している砲撃による後方支援の場合、実際はより口径の大きな加農砲、榴弾砲などが用いられますので、Ver2.0では、出来るだけこのイメージに近づけるため2種類の砲弾を用意しました。

まず1つ目が『多目的対戦車榴弾(High Explosive Anti Tank-Multi Purpose)』と呼ばれるもので(M1戦車などのHeat弾がこの砲弾に相当します。)、対戦車榴弾の弾体を調整破片化し、歩兵やソフトスキンに対し榴弾的にも使用できるようにしたものです。ただし、爆発の指向性や、近接信管が使えないことから、破片の飛散角度は限定的で、通常榴弾ほどの威力範囲はありません。

もう一つが『榴弾(High Explosive)』で、弾体の破片効果および炸薬の爆風で目標に被害を与えるものです。
人員や装甲化されていない車両に対し効果を発揮しますが、装甲化されている車両に対しては、例え直撃しても大したダメージを与えることは出来ません。

「Accurate」では、指定ポイントから半径15m以内を多目的対戦車榴弾で集中的に砲撃します。
従って、車両の破壊目的や、基地内にいる数のまとまった敵ユニットなどに対し使用すれば高い効果が得られます。
しかし、上記にもあるとおり威力範囲が狭く、着弾点から半径5m以内の敵にしかダメージを与えることが出来ません。なお、直撃した場合に与えることの出来るダメージは LAW Launcher 程度です。

「Open」は、指定ポイントから半径30mの広範囲に榴弾を砲撃します。これは多目的対戦車榴弾とは逆に、UAZ や Jeepなどの軽車両を除く車両に対しては、直撃弾であっても大したダメージを与えることは出来ませんが、威力範囲が広く、着弾点から半径15m以内のユニットに対し何らかのダメージを与えることが出来ます。
従って、散開したユニットや、森の中など見えにくいユニットに対して効果的です。なお、威力範囲内の敵には、ライフル弾で撃たれたときと同等のダメージを与えることが出来ます。

ただし、いずれもVer1.0より少ないものの、仕様上偏って砲弾が落ちることがあります。

 ○航空支援
  1. アクションメニューから[Call Air Support (Mk84)] または [Call Air Support (Mk77)] (※注)を選択します。(Air Support を呼べるのはWestユニットのみとなります。)
  2. チャット部分に「Connecting... 」と表示され、数秒すると『ポン』という音とともに画面左上の [Hint] 欄に「Call Air Strike Support. Single-click on the map to place target」と表示がでます。
  3. 次にマップ画面を開き、爆撃してほしい位置(着弾地点)をシングルクリックします。
  4. 「November one to ... 」と無線に音声が入り、1分程度で指定位置に爆撃が開始されるか、または、爆撃が不可能な場合は「Your order area is out of attack range ...」と通信メッセージが表示され終了します。
    爆撃不可能になる条件は下記の『爆撃不可と誤差』をご覧ください。
  5. 支援を呼べる回数は Magazine にある Document の数になります。(デフォルト:各1回)
    また、1回で5発の爆弾またはナパーム弾を投下します。
  ※注:爆弾の違い
爆弾はOFP最強の兵器であるLGB(Laser Guided Bomb:レーザー誘導爆弾)と同等の威力を持つ、無誘導のMk84 LDGB(低抵抗多目的爆弾)を投下します。
無誘導ですが、威力が強力な上にかなり正確な位置に投下が可能です。(OFPのLGBは『Laser Guided Bomb』としか記述がないのでハッキリ分かりませんが、恐らく2000ポンド級の爆弾、つまりMk84にレーザー誘導装置をつけたGBU-10 Pavewayかと思われます。)

一方、Mk77 750lb Napalm(ナパーム弾)はナフサ、パーム油などを主成分とする油脂焼夷弾で、これが投下されると、爆弾そのものに破壊力・殺傷力はほとんどないものの、広範囲が一瞬にして炎の海となります。(実際の爆発シーンはこちら
さらに化学剤を使っているため水での消火は非常に困難で、炎に呑み込まれたものは徹底的に燃やし尽くされてしまいます。

現実では、非人道的として廃棄が進められているナパ−ム弾ですが、OFP上で再現してみました。
なお、ナパーム弾での爆発時、現在のバージョンでは初期爆発の後の黒煙を伴う炎は演出用で、触れても火がつくことはありません。(触れると引火するのは初期の炎だけです。)

 ○爆撃方法
爆撃は爆撃機(ダミー)によって直線状に5つの爆弾を投下することで行われますが(図4)、そのうちの、真ん中にあたる3発目が指定されたポイント(マップをクリックした地点)付近に投下されます。

(図4)


また、爆撃の方向はプレイヤーの向きによって決定され、プレイヤーの向きに対し、出来るだけ直角になるように投下されます。
例えば(図5)のようにプレーヤーの向きが真北(0°)であるとき、爆撃ポイントへの爆撃は90°方向から行われます。
以後、プレーヤーの向きによって45°ずつ変化します。

(図5)


これは、プレーヤーと同一方向に投下した場合、プレーヤーが爆発に巻き込まれることを防ぐためですが、逆に言えばプレーヤーの向きによってある程度爆撃方向をコントロールすることが可能です。(後述の『Tips』をご覧ください。)
  ○爆撃不可と誤差
爆弾およびナパーム弾は一定の高度から投下されますが、(図6)のように投下地点(航空機が爆弾を投下する場所)に山などがあり適正な高度を確保できない場合や、投下地点がマップ外などの場合は投下することが出来ません。

(図6)


爆撃不可能なポイントをクリックしたときは画面左上の [Hint] 欄に(図7)のように表示されるとともに、「Your order area is out of attack range ...」と通信メッセージが表示され終了します。
このような場合は、後述の『Tips』にあるように、プレーヤーの向きを変える事によって爆撃方向を変えることが可能です。

(図7:爆撃不可) (図8:爆撃可能)

また、以下の(図9、図10)のように着弾地点付近に高低差がある場合は外れたり、着弾がずれることがあるので、味方を巻き込まないように注意してください。

(図9:外れた上に、標的からだいぶ離れた位置に着弾している。)


(図10:標的に命中したものの、標的から離れた位置にも着弾している。)

(これらの状況を再現したサンプルミッションを付属しています。詳しくは『付属のミッションについて』をご覧ください。)

Tips
-------------------------------------------------------------------------------
爆撃不可と誤差』の項目でご説明したように、何らかの理由で爆撃できない場合は、プレーヤーの向きを変えることによって爆撃が可能になる場合があります。
まず、プレーヤーの向きと爆撃方向の相対関係を(表1)に示します。

(表1)
プレイヤーの向き 爆撃方向(爆撃機の進入角度)
337.5〜22.4°
および
157.5〜202.4°
90°
22.5〜67.4°
および
202.5〜247.4°
135°
67.5〜112.4°
および
247.5〜292.4°
112.5〜157.4°
および
292.5〜337.4°
45°

前述(図5)のとおりプレーヤーの向きが0°(360°)の場合は爆撃方向は90°になります。

下記(図11)は、付属したサンプルミッション exp_mission.Eden のマップです。
ミッションをスタートするとプレーヤーは280°を向いた位置(Aの方向)になっています。
この状態のままで、[Call Air Support (Mk84)] または [Call Air Support (Mk77)] をクリックし、続いてマップの Target (このTarget の位置にT80があります。)をクリックしてください。
すると『ポン』という効果音と共に(図7)が表示されて、爆撃が不可能である旨表示されます。
これは、プレイヤーの向きが280°であるとき、(表1)のとおり爆撃方向はA(0°)であることが分かりますが、ちょうど爆撃機の進入路に309mの山があり適正な投下高度が取れないためです。

次に、B方向(レッドのスモークが焚かれています。)を向き、Air Support を呼び、マップの Target をクリックしてください。
プレイヤーの向きは185°程度ですので、今度は爆撃方向がB(90°)に変わります。
しかし、この方向ではプレーヤーが爆発に巻き込まれてしまいます。

ミッションを Replay し、今度はC方向(グリーンのスモークが焚かれています。)を向き、先ほどと同様にAir Support を呼び、マップの Target をクリックしてください。
プレイヤーの向きは40°程度ですので、爆撃方向がC(135°)に変わります。
この方向であればプレイヤーが爆発に巻き込まれることなく標的を破壊することが可能です。

以上のように一定の方向で爆撃できない場合にお試しください。

(図11)


また、どの方角からの爆撃が可能であっても(図12)のような場合、プレーヤーの向きが90°であるため爆撃方向が0°(A方向)ですが、敵ユニットの配置からいってB方向に爆撃した方がより効果的です。
このような場合も、あえてプレイヤーの向きを0°方向にして Air Support を呼び出すことによりB方向からの爆撃が可能となります。

(図12)


付属のミッションについて
-------------------------------------------------------------------------------
解凍してできた missions フォルダには以下の4つのミッションが収めてあります。
ミッションといってもエンディングもなにもない簡易的なものですが、機能や効果の確認にご利用ください。
インストールは、インストール方法に従い行ってください。

exp_mission.Eden
Tips』で『爆撃不可と誤差』の解説に使用したミッションです。
プレイヤーの位置関係と爆撃方向の確認にご使用ください。

faild.Eden
このミッションは『爆撃不可と誤差』の(図9)でご説明した、どの方向からの爆撃も不可能か、または失敗する見本のミッションです。

sample1.Cain
このミッションは、Kolgujev島の基地に敵ユニットを配置していますので、それぞれの兵器の特徴や破壊力をご確認いただけます。

sample2.Intro
このミッションでは特にナパーム弾の効果をご覧いただけるように、あえて着弾地点をずらしてあります。爆発から破壊に至るまでの過程を確認できます。


他のユニットで使用する場合
-------------------------------------------------------------------------------
通常、RTO Soldier 以外この機能を使用することはできません(RTO Soldier が戦死したりして、無線機と Document を拾っても他の武器のように機能しません)ので、他のユニットでこの機能を使用したい場合は以下の変更を行ってください。

オリジナルのOFP(Res)でこの機能を使用する場合
ここでは例として、この機能を「West/Officer」に持たせる場合をご説明します。
        1.OperationFlashPoint\Res\Bin の Config.bin を CPP2BIN などのツールを使用して Config.cpp にしてテキ
          ストエディタで編集できるように変換します。
        2.Config.cpp から以下の行を探します。(Windows標準のメモ帳でも編集は可能ですが、探すのが大変なので
          検索機能のある秀丸などをお勧めします。)

                class OfficerW:SoldierWB
                {
                        picture="\misc\frcky.paa";
                        nameSound="officer";
                        scope=2;
                        model="mc vojakwo2.p3d";
                        displayName="$STR_DN_OFFICER";
                        accuracy=2.0;
                        cost=500000;
                        nightVision=1;
                        weapons[]={"M16","Binocular","Throw","Put"};
                        magazines[]={"M16","M16","M16","M16","HandGrenade","HandGrenade","HandGrenade","HandGrenade","SmokeShell","SmokeShell"};
                };

        3.上記の行を以下のように書き換え(追加)ます。

                class OfficerW:SoldierWB
                {
                        picture="\misc\frcky.paa";
                        nameSound="officer";
                        scope=2;
                        model="mc vojakwo2.p3d";
                        displayName="$STR_DN_OFFICER";
                        accuracy=2.0;
                        cost=500000;
                        nightVision=1;
                        weapons[]={"M16","Binocular","Throw","Put"};
                        magazines[]={"M16","M16","M16","M16","HandGrenade","HandGrenade","HandGrenade","HandGrenade","SmokeShell","SmokeShell"};

                        //----------ここから追加する----------
                        additionalSound[]={"\RTO_Soldier\sounds\soldiermoving.ogg",0.000500,0};

                        class UserActions
                        {
                                class ArtilleryA
                                {
                                        displayName="Call Artillery Support (Accurate)";
                                        position="pos driver";
                                        radius=1.00000;
                                        condition="(this hasweapon ""prc117new"") && ""VME_DOC_WEST"" in magazines this && speed this < 5 && alive this ";
                                        statement="[this,""VME_DOC_WEST"",player,""accurate""] exec ""\RTO_Soldier\scripts\castarget.sqs"";this removeMagazine ""VME_DOC_WEST""";
                                };
                                class ArtilleryO
                                {
                                        displayName="Call Artillery Support (Open)";
                                        position="pos driver";
                                        radius=1.00000;
                                        condition="(this hasweapon ""prc117new"") && ""VME_DOC_WEST"" in magazines this && speed this < 5 && alive this ";
                                        statement="[this,""VME_DOC_WEST"",player,""open""] exec ""\RTO_Soldier\scripts\castarget.sqs"";this removeMagazine ""VME_DOC_WEST""";
                                };
                            class AirStrike
                            {
                                    displayName="Call Air Support (Mk84)";
                                    position="pos driver";
                                    radius=1.00000;
                                    condition="(this hasweapon ""prc117new"") && ""VME_DOC_AS"" in magazines this && speed this < 5 && alive this ";
                                    statement="[this,""VME_DOC_AS"",player] exec ""\RTO_Soldier\scripts\castarget_bomb.sqs""";
                            };
                            class AirStrike_Napalm
                            {
                                    displayName="Call Air Support (Mk77)";
                                    position="pos driver";
                                    radius=1.00000;
                                    condition="(this hasweapon ""prc117new"") && ""VME_DOC_NP"" in magazines this && speed this < 5 && alive this ";
                                    statement="[this,""VME_DOC_NP"",player] exec ""\RTO_Soldier\scripts\castarget_napalm.sqs""";
                            };
                        };
                        //--------------ここまで--------------
                };

        4.上書きして再度 CPP2BIN などのツールを使用して Config.bin に戻します。
          (オリジナルのバックアップ推奨)
          (※Config.cppのままでも動くようなので、問題ない場合は再変換の必要はありません。)
        5.以上の書き換えが終了すると、RTO Soldier が戦死したり、無線機と Document を Drop した場合、Officer
          がそれを拾えば、RTO Soldier と同じように機能させることができます。
        6.他の種類の兵士にもこの機能を持たせたい場合は、同じように書き換えます。
          なお、East、Resistance のユニットに追加する場合、インストール方法の項目内に記載の
          WEAPON CLASS-NAME / MAGAZINE CLASS-NAME を参考に、上記の "prc117new" および "VME_DOC_WEST" の部分
          を適宜変更してください。ただし、VME_DOC_AS(Mk84)、VME_DOC_NP(Mk77)は prc117new 無線機以外機能しません。

他のアドオンにこの機能を追加する場合
-------------------------------------------------------------------------------
他のアドオンのユニットに追加する方法も基本的に同じです。
ここでは例として Balistic Addon Studio(BAS) の Deltas/Rangers アドオン(BAS_DeltaRangers_v1_55)での追加方法をご説明します。
        1.Deltas/Rangers アドオンは迷彩服の種類によって Woodland(BAS_DeRaW.pbo)と Desert(BAS_DeRaD.pbo)
          に分かれていますので、この機能を追加したいユニットの PBO ファイルを(または両方)PBO DECRYPTOR 
          などのツールを使って解凍します。(この例では Woodland(BAS_DeRaW.pbo)を使用します。)
        2.展開されたてできたフォルダの中の Config.cpp をテキストエディタで開きます。
        3.まず、この機能を使用するために RTO_Soldier を Require する必要がありますので、次の行を探します。

                requiredAddons[] = {"BIS_Resistance","BAS_Weap","BIS_WeaponPack"};

                        上記の行に RTO_Soldier を追加します。
                                        ↓

                requiredAddons[] = {"BIS_Resistance","BAS_Weap","BIS_WeaponPack","RTO_Soldier"};

        4.機能を追加する兵士の種類は任意で構いませんが、 Deltas/Rangers アドオンには元々 RTO がいるので、
          RTO に追加してみます。(以下の例では、無線機に prc117new を使用する場合を記載します。)
          以下の行を探します。

                class BAS_DeltaRTO : SoldierWB
                {
                        displayName = "Delta Radio Operator";
                        model = "\BAS_deraw\BAS_DeltaSoldier.p3d";
                        vehicleClass = "BAS - Men";
                        scope = 1;
                        cost = 400000
                        sensitivity = 1.25;
                        accuracy = 2.500000;
                        nightVision = 1;
                        camouflage = 0.750000;
                        canHideBodies = 1;
                        attendant = true;
                        armor = 5;
                        armorStructural = 2.0;
                        armorHead = 0.7;
                        armorBody = 5.5;
                        armorHands = 0.5;
                        armorLegs = 0.5;
                        weapons[] = {"BAS_M4REFLEX","BAS_Satcom","NVGoggles","Glock","Throw","Put"};
                        magazines[] = {"BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","HandGrenade","HandGrenade","HandGrenade","SmokeShell","GlockMAG","GlockMAG","GlockMAG","GlockMAG"};
                        BASWood_WOUNDS
                        animated = 1;
                        class Animations
                        {
                                class goggles
                                {
                                        type = "rotation";
                                        animPeriod = 0.5;
                                        selection = "goggles";
                                        axis = "axisgoggles";
                                        angle0 = 0;
                                        angle1 = 0.75;
                                };
                        };
                        class UserActions
                        {
                                class Lowervisor
                                {
                                        displayName = "Lower Goggles";
                                        position = "axisgoggles";
                                        radius = 1.00000;
                                        condition = "this animationPhase {goggles} < 0.5 && this == player";
                                        statement = "this animate [{goggles}, 1]";
                                };
                                class Raisevisor
                                {
                                        displayName = "Raise Goggles";
                                        position = "axisgoggles";
                                        radius = 1.00000;
                                        condition = "this animationPhase {goggles} >= 0.5 && this == player";
                                        statement = "this animate [{goggles}, 0]";
                                };
                        };
                };

        5.上記を以下のように書き換え(追加)ますが、オリジナルの OFP に追加したときと違い、すでに class UserAction
          の項目が存在しているので注意してください。また追加箇所も2箇所となります。

                class BAS_DeltaRTO : SoldierWB
                {
                        displayName = "Delta Radio Operator";
                        model = "\BAS_deraw\BAS_DeltaSoldier.p3d";
                        vehicleClass = "BAS - Men";
                        scope = 1;
                        cost = 400000
                        sensitivity = 1.25;
                        accuracy = 2.500000;
                        nightVision = 1;
                        camouflage = 0.750000;
                        canHideBodies = 1;
                        attendant = true;
                        armor = 5;
                        armorStructural = 2.0;
                        armorHead = 0.7;
                        armorBody = 5.5;
                        armorHands = 0.5;
                        armorLegs = 0.5;

                        //
                        //      ※武器と弾薬の変更については下記の「※」を参照
                        //

                        weapons[] = {"BAS_M4REFLEX","BAS_Satcom","NVGoggles","Glock","Throw","Put"};
                        magazines[] = {"BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","HandGrenade","HandGrenade","HandGrenade","SmokeShell","GlockMAG","GlockMAG","GlockMAG","GlockMAG"};


                        BASWood_WOUNDS
                        animated = 1;

                        //
                        //----------次の1行を追加----------
                        //
                        additionalSound[]={"\RTO_Soldier\sounds\soldiermoving.ogg",0.000500,0};

                        class Animations
                        {
                                class goggles
                                {
                                        type = "rotation";
                                        animPeriod = 0.5;
                                        selection = "goggles";
                                        axis = "axisgoggles";
                                        angle0 = 0;
                                        angle1 = 0.75;
                                };
                        };
                        class UserActions
                        {
                                class Lowervisor
                                {
                                        displayName = "Lower Goggles";
                                        position = "axisgoggles";
                                        radius = 1.00000;
                                        condition = "this animationPhase {goggles} < 0.5 && this == player";
                                        statement = "this animate [{goggles}, 1]";
                                };
                                class Raisevisor
                                {
                                        displayName = "Raise Goggles";
                                        position = "axisgoggles";
                                        radius = 1.00000;
                                        condition = "this animationPhase {goggles} >= 0.5 && this == player";
                                        statement = "this animate [{goggles}, 0]";
                                };

                                //
                                //----------さらにここから----------
                                //
                                class ArtilleryA
                                {
                                        displayName="Call Artillery Support (Accurate)";
                                        position="pos driver";
                                        radius=1.00000;
                                        condition="(this hasweapon ""prc117new"") && ""VME_DOC_WEST"" in magazines this && speed this < 5 && alive this ";
                                        statement="[this,""VME_DOC_WEST"",player,""accurate""] exec ""\RTO_Soldier\scripts\castarget.sqs"";this removeMagazine ""VME_DOC_WEST""";
                                };
                                class ArtilleryO
                                {
                                        displayName="Call Artillery Support (Open)";
                                        position="pos driver";
                                        radius=1.00000;
                                        condition="(this hasweapon ""prc117new"") && ""VME_DOC_WEST"" in magazines this && speed this < 5 && alive this ";
                                        statement="[this,""VME_DOC_WEST"",player,""open""] exec ""\RTO_Soldier\scripts\castarget.sqs"";this removeMagazine ""VME_DOC_WEST""";
                                };
                            class AirStrike
                            {
                                    displayName="Call Air Support (Mk84)";
                                    position="pos driver";
                                    radius=1.00000;
                                    condition="(this hasweapon ""prc117new"") && ""VME_DOC_AS"" in magazines this && speed this < 5 && alive this ";
                                    statement="[this,""VME_DOC_AS"",player] exec ""\RTO_Soldier\scripts\castarget_bomb.sqs""";
                            };
                            class AirStrike_Napalm
                            {
                                    displayName="Call Air Support (Mk77)";
                                    position="pos driver";
                                    radius=1.00000;
                                    condition="(this hasweapon ""prc117new"") && ""VME_DOC_NP"" in magazines this && speed this < 5 && alive this ";
                                    statement="[this,""VME_DOC_NP"",player] exec ""\RTO_Soldier\scripts\castarget_napalm.sqs""";
                            };
                                //
                                //---------ここまで追加する---------
                                //

                        };
                };

        6.Deltas/Rangers アドオンの RTO は上記で追加した BAS_DeltaRTO 以外にも Ranger と Silenced Delta/Ranger お
          よび JAM用 Delta/Ranger、JAM用 Silenced Delta/Ranger それぞれにいますので、任意で同様に書き換えてください。
        7.最後に MakePBO などのツールでPBOファイルを作成し、デフォルトのPBOファイルと入れ替えて終了です。


        ※上記のように Config.cpp を書き換えることで、RTO Soldier の機能を使用することができますが、実際のミッション
         などで使用する際にはさらに Mission.sqs で武器と弾薬の変更が必要になる為(Weapon に pcr117new を、Magazine
         に VME_DOC_WEST を追加しなければいけません。)、あらかじめ装備品の変更を行う場合には以下の行を書き換えます。

                weapons[] = {"BAS_M4REFLEX","BAS_Satcom","NVGoggles","Glock","Throw","Put"};
                magazines[] = {"BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","HandGrenade","HandGrenade","HandGrenade","SmokeShell","GlockMAG","GlockMAG","GlockMAG","GlockMAG"};

                                                        ↓

                weapons[] = {"BAS_M4REFLEX","pcr117new","NVGoggles","Glock","Throw","Put"};
                magazines[] = {"BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","BAS_M4Mag","VME_DOC_NP","VME_DOC_AS","VME_DOC_WEST","GlockMAG","GlockMAG","GlockMAG","GlockMAG"};

                ※VME_DOC_WEST、VME_DOC_AS、VME_DOC_NP は1つ以上あれば機能しますので、数量は任意で変更してください。
                 また、他のユニットで使用する場合と同様に pcr117new 無線機以外 VME_DOC_AS、VME_DOC_NP は機能しません。

他のアドオンの無線機等を対応させる方法
-------------------------------------------------------------------------------
後方支援は支援を呼ぶための無線機(prc117new、rf_11mk2、prc77)と 書類(座標や暗号コードが書かれた書類という設定)の VME_DOC_xxx (xxx は対応する属性の略号)の組み合わせによって可能になりますが、上記の例で使用したBAS Deltas/Rangers アドオンの RTO はすでに 衛星通信機(BAS_Satcom)を持っていますので、折角ですからこの無線機にも対応させます。 
        方法は Config.cpp で追加した

        class ArtilleryA
        {
                displayName="Call Artillery Support (Accurate)";
                position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"") && ""VME_DOC_WEST"" in magazines this && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_WEST"",player,""accurate""] exec ""\RTO_Soldier\scripts\castarget.sqs"";this removeMagazine ""VME_DOC_WEST""";
        };
        class ArtilleryO
        {
                displayName="Call Artillery Support (Open)";
                position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"") && ""VME_DOC_WEST"" in magazines this && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_WEST"",player,""open""] exec ""\RTO_Soldier\scripts\castarget.sqs"";this removeMagazine ""VME_DOC_WEST""";
        };
     class AirStrike
      {
            displayName="Call Air Support (Mk84)";
            position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"") && ""VME_DOC_AS"" in magazines this && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_AS"",player] exec ""\RTO_Soldier\scripts\castarget_bomb.sqs""";
        };
        class AirStrike_Napalm
        {
                displayName="Call Air Support (Mk77)";
                position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"") && ""VME_DOC_NP"" in magazines this && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_NP"",player] exec ""\RTO_Soldier\scripts\castarget_napalm.sqs""";
        };

        の、condition=" から始まる行を以下のように書き換えます。

        class ArtilleryA
        {
                displayName="Call Artillery Support (Accurate)";
                position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"" || this hasweapon ""BAS_Satcom"") && ""VME_DOC_WEST"" in magazines this && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_WEST"",player,""accurate""] exec ""\RTO_Soldier\scripts\castarget.sqs"";this removeMagazine ""VME_DOC_WEST""";
        };

        class ArtilleryO
        {
                displayName="Call Artillery Support (Open)";
                position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"" || this hasweapon ""BAS_Satcom"") && ""VME_DOC_WEST"" in magazines this && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_WEST"",player,""open""] exec ""\RTO_Soldier\scripts\castarget.sqs"";this removeMagazine ""VME_DOC_WEST""";
        };
     class AirStrike
      {
            displayName="Call Air Support (Mk84)";
            position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"" || this hasweapon ""BAS_Satcom"") && ""VME_DOC_AS"" in magazines this && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_AS"",player] exec ""\RTO_Soldier\scripts\castarget_bomb.sqs""";
        };
        class AirStrike_Napalm
        {
                displayName="Call Air Support (Mk77)";
                position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"" || this hasweapon ""BAS_Satcom"") && ""VME_DOC_NP"" in magazines this && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_NP"",player] exec ""\RTO_Soldier\scripts\castarget_napalm.sqs""";
        };

        以上のように書き換えておけば BAS の SatCom AN/PSC-5D でも後方支援を呼ぶことができます。
        また、支援を呼べる回数は VME_DOC の数となりますが、無線機さえ持っていれば無制限に呼べるようにするには
        以下のように書き換えます。(以下の場合は prc117new または BAS_Satcom を持っている場合)

        class ArtilleryA
        {
                displayName="Call Artillery Support (Accurate)";
                position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"" || this hasweapon ""BAS_Satcom"") && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_WEST"",player,""accurate""] exec ""\RTO_Soldier\scripts\castarget.sqs""";
        };
        class ArtilleryO
        {
                displayName="Call Artillery Support (Open)";
                position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"" || this hasweapon ""BAS_Satcom"") && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_WEST"",player,""open""] exec ""\RTO_Soldier\scripts\castarget.sqs""";;
        };
     class AirStrike
      {
            displayName="Call Air Support (Mk84)";
            position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"" || this hasweapon ""BAS_Satcom"") && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_AS"",player] exec ""\RTO_Soldier\scripts\castarget_bomb.sqs""";
        };
        class AirStrike_Napalm
        {
                displayName="Call Air Support (Mk77)";
                position="pos driver";
                radius=1.00000;
                condition="(this hasweapon ""prc117new"" || this hasweapon ""BAS_Satcom"") && speed this < 5 && alive this ";
                statement="[this,""VME_DOC_NP"",player] exec ""\RTO_Soldier\scripts\castarget_napalm.sqs""";
        };

        なお、これ以外のアドオンや無線機等も同じ方法で追加可能です。
既知の問題点
-------------------------------------------------------------------------------
現在のバージョンでは以下の問題点と個人的に改良したい点(したほうがいいか悩んでいる点)があります。
  • ナパーム弾の爆発時、マシンのスペックによって動きが極端に遅くなる。
  • アドオンのみで動作させたいものの、使用するためにはトリガを作成しなくてはならない。
  • プレーヤーの向きにより、爆弾やナパーム弾を予め決めた方角で投下しているが、もう少しスマートな方法はないか。
  • 演出用の炎にも触れるとダメージを受けるようにした方がいいか。
  • 非人道的として廃棄が進められているナパーム弾だけに、火達磨になり叫び声を上げ転がりまわるエフェクトは止めた方がいいのか。(実際、『火炎瓶や石、ナイフ投げ』の火炎瓶で、「あの叫び声は残酷すぎる。気分が悪い!」とのご意見がありまして…。)
等など、他にも皆様からの情報、ご意見をお待ちしております。

Mail:ofp@po.matrix.jp(※:スパム防止のため@を大文字にしてあります。)
URL:http://www.dcw.ne.jp/ofp/