ミッションの設定をする(description.ext) -ArmA訓練所-

ArmA訓練所
2007/05/21

ここではミッションエディター内では実現できない、ミッションの設定方法を紹介します。
たとえばブリーフィング時に武器を変更したり、マルチプレイでrespawnする設定です。
他にも細かい機能がいくつもあるので、是非覚えて使ってみましょう。


目次


ミッションの設定をするには

ミッションの設定にはdescription.extというArmAやOFP独特のテキストファイルを使います。
マイドキュメント\ArmA\missions\ミッション名\description.extというファイル名のテキストファイルを作成して使います。
(ArmAの箇所はArmA Other Profilesの場合有り)
設定項目の終わりは半角のセミコロン(;)で確実に区切る必要があります。


機能別設定項目(全般)

ここではシングル、マルチどちらでも使用可能なものを、機能・目的で設定できる項目を紹介します。

ミッションロード中に文字を表示する

OnLoadIntro = "YourMessage";
OnLoadMission = "YourMissionName";

OnLoadIntroでミッションのイントロをロードするときのロード画面に表示する文字を設定できます。
OnLoadMissionでミッションをロードする時のロード画面に表示する文字を設定できます。
ミッション名や、作戦地域名や時間などを表示すると雰囲気が出ます。

OnLoadIntroTime = False;
OnLoadMissionTime = False;

OnLoadIntroTimeでイントロのロード中に日時を表示するかどうか設定できます。
OnLoadMissionTimeでミッションロード中に日時を表示するかどうか設定できます。
Trueで表示、Falseで非表示になります。

スコアの評価基準を設定する

MinScore = 0;
AvgScore = 1800;
MaxScore = 7500;

MinScoreが最低得点、AvgScoreが平均点、MaxScoreが最高得点です。
ミッションで敵を倒したり、スクリプトのaddRatingで得た得点を評価する際にの基準になります。
平均点を下回ると×印の評価を受け、平均点を超えると○印の評価を受けます。

リスポーン(復活)の設定をする

respawn = RespawnType; 
respawndelay = DelayInSeconds; 

リスポーン(復活)の種類と、死んでから復活するまでの時間(秒数)を設定できます。
この機能はマルチプレイでしか動作しません。
シングルプレイで他のキャラに切り替えるにはplayableユニットを配置し、TキーやTeam Switchで切り替えます。
respawnが種類、respawndelayが時間です。
respawnに設定できる値は次の通り。

リスポーン種別説明
0 または "NONE"復活しません
1 または "BIRD"カモメになります
2 または "INSTANT"自分が死んだ場所に復活します
3 または "BASE" 特定の地点で復活します
マップに次の名称を付けたマーカーを配置する必要があります
  1. respawn_west
  2. respawn_east
  3. respawn_guerrila
  4. respawn_civilian
それぞれ、1番がBLUFOR、2番がOPFOR、3番がRACS、4番が市民となります。
4 または "GROUP" 自分のグループ内のAIに操作を切り替えます(AIが残っていなければカモメになります)
5 または "SIDE" 自軍のAIユニットに操作を切り替えます(AIが残っていなければカモメになります)
-しかしこの機能は計画のみで実装されていません
respawn = 3; 
respawndelay = 10; 

または

respawn = "BASE"; 
respawndelay = 10; 

上の様にすると、特定の場所に10秒後にリスポーンします。

ゲーム中に鳴らすカスタムサウンドを定義する

class CfgSounds
{
 sounds[] = {};   
  class wolf1
  {
   name = "";
   sound[] = {"\sound\wolf1.ogg", 1, 1};
   titles[] = {};
  };
  class wolf2
  {
   name = "";
   sound[] = {"\sound\wolf2.ogg", 1, 1};
   titles[] = {};
  };
};

上記のような記述をすることで、自分で作った効果音などをゲーム中で鳴らせるようになります。
ファイル形式はOGG Vorbisのみのようです。
再生にはplaySoundを使います。
playSound wolf2

ゲーム中に鳴らすカスタムラジオを定義する

class CfgRadio
{
 sounds[] = {};
  class RadioMsg1
  {
   name = "";
    sound[] = {"\sound\filename1.ogg", db-100, 1.0};
    title = "Well all the civilians are now safe in the lodge.  I am ready for your orders.";
  };
  class RadioMsg2   {    name = "";    sound[] = {"\sound\filename2.ogg", db-100, 1.0};    title = {$STR_RADIO_2};   }; };

上記のような記述をすることで、ゲーム中に入るラジオメッセージを定義できます。
定義したラジオメッセージを表示するにはsideRadioを使います。
unit sideRadio RadioMsg2

ゲーム中に鳴らすカスタムミュージックを定義する

class CfgMusic
{
 tracks[]={};
 class MarsIntro  {   name = "";   sound[] = {"\music\filename.ogg", db+0, 1.0};  };  class Ludwig9  {   name = "";   sound[] = {"\music\filename.ogg", db+10, 1.0};  }; };

上記のように記述することで、ゲーム中に鳴らす自分で作った音楽を定義できます。
ファイル形式はOGG Vorbisのみのようです。
再生させるにはplayMusicを使います。
playMusic MarsIntro

ユニットの個性を設定する

class CfgIdentities
{
 class John_Doe
 {
  name="John Bartholemew Doe";
  face="Face20";
  glasses="None";
  speaker="Dan";
  pitch=1.1;
 };
};

上記のように記述することで、ユニットの個性を定義できます。
定義した個性はsetIdentityでユニットに適用できます。
soldier1 setIdentity "John_Doe"

ミッションアンロックの設定をする

keys[] = {"key1","key2","key3"};  // List of keys (needed for keysLimit)
keysLimit = 2;                    // Number of keys from the list needed for unlock a mission.
doneKeys[] = {"key4"};            // Name of key(s) needed for mark a mission in SP missions list as completed.

上記のような記述をすることで、ミッションアンロックに関する情報を設定できます。

プレイ可能なAIユニットを使用不可にする

disabledAI = false/true

値をtrueにするとマルチプレイで選択可能なユニットにAIを割り当てることが出来なくなります。
人が操作するプレイヤーのみで遊んでもらいたいミッションに設定します。
この設定を行うとミッションに途中参加する際、エディタで配置したユニットの初期位置からの参加になります。

ブリーフィングメニューの表示項目の表示/非表示を切り替える

ここではブリーフィングメニューや補助アクセサリーの有効、無効を切り替えることが出来ます。
1が有効(表示)で、0が無効(非表示)となります。

GPSの使用可否

ShowGPS = 0;

デブリーフィングの有無

debriefing = 0;

コンパスの使用可否

showCompass = 0;

マップの使用可否

showMap = 0;

ノートパッドの使用可否

showPad = 0;

腕時計の使用可否

showWatch = 0;

ブリーフィングの有無

briefing = 0;

例えば、マップを非表示にしたり、コンパスやGPSを非表示にすることで遭難ミッションを作成したり、
時計を有効活用して、特定の時間になると敵の警備が薄くなるなどのシチュエーションを楽しめます。

ブリーフィング中に変更できる武器・弾薬を設定する

class Weapons 
 {
  class AK74 {count = 8;};
  class RPG7V {count = 2;};
  class Binocular {count = 2;};
 };
class Magazines 
 {
  class 30Rnd_545x39_AK {count = 32;};
  class PG7V {count = 6;};
  class HandGrenade {count = 16;};
 };

Weaponsクラスで使用可能な武器、Magazinesクラスで使用可能な弾薬を定義します。
classに続いて武器・弾薬のクラス名、countの値に個数を記述します。

機能別設定項目(マルチプレイヤー)

ここではマルチプレイヤー向けの設定項目を紹介します。

ミッション開始前にミッションの設定をする

titleParam1 = "Time limit:";
valuesParam1[] = {0, 300, 600, 900};
defValueParam1 = 900;
textsParam1[] = {"Unlimited", "5 min", "10 min", "15 min", };
titleParam2 = "Score to win:";
valuesParam2[] = {10000, 5, 7, 10, 15, 20, 25, 30};
defValueParam2 = 5;
textsParam2[] = {"Unlimited", 5, 7, 10, 15, 20, 25, 30};

例えば上記のように記述することで、マルチプレイミッションで時間制限や点数制限のような設定が可能です。
他にもミッションの開始時間やAIの難易度などにも応用できます。
ミッションに渡せるパラメータ(情報)は2つで、それぞれ上記のようにあらかじめ決められたものから選択します。
titleParam1で情報1の見出し、valuesParam1[]で表示順に対応する値のリスト、
defValueParam1で初期設定の値、textsParam1[]で画面に表示される文字を定義します。
ミッションではvaluesParam1[]などで定義された値が使用されます。
ミッション中でparam1やparam2といった変数を利用すると、これらの値を取り出すことが出来ます。

トリガーやスクリプトで以下のようにして取得
timeLimit = param1;
scoreLimit = param2;

ミッション情報を定義する

class Header
{
 gameType = COOP;
 minPlayers = 1;
 maxPlayers = 10;
};

上記のように記述することで、ミッションの情報を定義できます。
マルチプレイでサーバーを探す際に表示されるサーバーブラウザでこの情報が表示されます。
gameTypeはそのミッションのゲームタイプ、協力プレイや対戦プレイと言った情報を設定できます。
ここで設定できるのは表示のみで、実際のゲーム内容が変化するわけではありません。
minPlayersで最小プレイ可能人数、maxPlayersで最大プレイ可能人数を設定します。

gameType設定値説明
DMデスマッチ
CTFキャプチャーザフラッグ(敵の旗の取り合い)
FFフラッグ戦(全員で一つの旗を取り合う)
Coop協力プレイ
Teamチームプレイ
Scontセクターコントロール(特定の地点を占拠する)
Hold特定の地点を守り抜く
Unknown不明(設定されていないときはUnknownとなる)

Description Generator

項目の内容を入力するだけでdescription.extを作成可能なCGIプログラム「Description Generator」を用意しました。
description.extの知識がない方でも簡単に作成できます。
バグがあったら掲示板の方にお知らせください。


動作テスト

description.extの動作テストを行うには、一度ミッションをシングルプレイミッションかマルチプレイミッションに
エクスポートする必要があります。
エディット中のミッションフォルダにdescription.extファイルを作成し、ミッションエディターでミッションをエクスポートします。
その後、シングルプレイかマルチプレイのメニューで作成したミッションを選んで実際に動かして確認します。


Homeへ