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" | 特定の地点で復活します マップに次の名称を付けたマーカーを配置する必要があります
|
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.
上記のような記述をすることで、ミッションアンロックに関する情報を設定できます。
disabledAI = false/true
値をtrueにするとマルチプレイで選択可能なユニットにAIを割り当てることが出来なくなります。
人が操作するプレイヤーのみで遊んでもらいたいミッションに設定します。
この設定を行うとミッションに途中参加する際、エディタで配置したユニットの初期位置からの参加になります。
ここではブリーフィングメニューや補助アクセサリーの有効、無効を切り替えることが出来ます。
1が有効(表示)で、0が無効(非表示)となります。
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.extを作成可能なCGIプログラム「Description Generator」を用意しました。
description.extの知識がない方でも簡単に作成できます。
バグがあったら掲示板の方にお知らせください。
description.extの動作テストを行うには、一度ミッションをシングルプレイミッションかマルチプレイミッションに
エクスポートする必要があります。
エディット中のミッションフォルダにdescription.extファイルを作成し、ミッションエディターでミッションをエクスポートします。
その後、シングルプレイかマルチプレイのメニューで作成したミッションを選んで実際に動かして確認します。