目次
ミッション作成に役立つリンク
1942ArmAアドオンに含まれている武器のクラスネームを閲覧するには以下のファイルをDLしてください。
キットではじめるミッション作成
ミッション作成に最低限必要と思われるファイルをまとめたもの。
リバイブ、ブリーフィング、BGM関連ファイル入り。
ミッション作成の大まかな流れ
1、 リバイブ導入の下準備
- マップにプレーヤーユニットを置き、名前(s1、s2、s3…)をつける。
- ゲームロジック→オブジェクトにある"ゲームロジック"に「server」という名前をつけてMAP上に置く。
- 海がある場合は陸地に「center」という名前をつけたマーカーを置く。
2、 ミッションをセーブし、ミッションフォルダにキットを導入する。
フォルダの場所 → マイドキュメント/ArmA2 Other Profiles/プレーヤー名/Missions
- 「基本ファイル」フォルダの中身をミッションフォルダに入れる。
- 「revive_init.sqfファイル」フォルダから適切なファイルを選んでミッションフォルダに入れる。
3, briefing.htmlの編集
ミッション終了後に現れるデブリーフィング画面の設定。
- デブリーフィング(ミッション終了後に表示される文章)を書く。
4, description.extの編集
ロード画像の設定、BGMスクリプト・リバイブスクリプトの有効化。
- ロード中に左上に表示される文の設定。
- 適当なロード画像を用意し、キットに入っているものを置き換える。(※)
(※)縦横のサイズは2~n(256、512、1024)にすること。画像はjpgでないと反映されない模様。
5, init.sqfの編集
ブリーフィング画面の設定。
例)任務が3つのとき
onPlayerConnected "publicVariable 'part1'; publicVariable 'part2'; publicVariable 'part3';"; ←タスクの数に応じて変えること
if (isServer) then {part1=false; part2=false; part3=false;}; ←上に同じ
[[
["t_obj1","1つ目の任務","任務1の説明。",true,[],"assigned"],
["t_obj2","2つ目の任務","任務2の説明。",true],
["t_obj3","3つ目の任務","任務3の説明。",true] ←最後の項目には文の後ろに","をつけない
],[
["クレジット","製作者など。"],
["解説","ミッションの注釈など。"],
["ミッション","ミッションの説明文"] ←上に同じ
]] call compile preprocessfile "briefing.sqf";
if (cadetMode) then {TASKMASTER_ShowHints=true;};
<br/>
- 以下のコマンドを用いるとマーカー名をクリックしたときに地図上のマーカーの位置に飛ぶことができる。
<marker name='マーカーの名前'>マーカー</marker>
- 注釈などに画像を埋め込みたい場合は以下のコマンドを用いる。
<img image='test.jpg' width='256' height='256'/>
6, revive_initの編集
細かい機能については下記「revive_init.sqfの編集」を参照のこと。
キットのデフォルト設定は以下の通り。必要に応じて編集すること。
- リバイブ回数は20。
- プレーヤーは30人(s1~s30)まで対応。
- モバイルリスポンテントは有効で、s1が所持。
- リスポン地点はテントのみ。
- 自己治療は無効。
7, エディタを開き残りの作業を終える
- リスポン地点を追加した場合はマーカーを設置する。
- BGMの設定をする(※)。
曲のクラスネームは以下のようになっている。
["AA_ArmaElectrolife",0,104,1]
トリガーのOn Act欄に以下のように記述することで曲のランダム再生、連続再生が可能になる。
0=[2,["AA_StreetCombat",0,80,1],["AA_TeamAlpha",0,114,1],["AA_Zkouska",0,73,1]] execVM "cly_jukebox.sqf"
8, プレビューを押し、設定が反映されているか確認する
- ロード画像の表示
- リバイブ関連(復活できるかどうか、テントは置けるかどうか、リスポン地点が選択できるかどうか等)
- ブリーフィング関連(Mキーを押しマップ画面で確認)
- BGM関連(音が鳴っているか否か)
お疲れ様でした。これでミッション作成の下準備は完了です。
クラスネームについて
エディット時にアイテムを指定する際には各アイテムの「クラスネーム」を知る必要がある。
コマンド一覧
以下のコマンドをオブジェクトのinit欄(「初期化」と超訳されている部分)に記述する。
文と文の間は ; を入れてつなぐこと 。
武器・弾薬を除去する removeallweapons this ※双眼鏡・暗視装置も消えるので注意。アイテム(GPS等)は消えない。
人に武器を足す this addweapon "classname"
人に弾薬を足す this addmagazine "classname"
人に弾薬をX個足す for "_i" from 1 to X-0 do {this addMagazine "classname"}
バックパックを除去する this removebackpack "classname"
バックパックを追加する this addbackpack "classname"
バックパックを空にする clearMagazineCargo (unitBackpack this)
バックパックに武器を入れる (unitBackpack this) addWeaponCargo ["classname",1] ※武器は1つまで。武器を入れるには10スロット必要。
バックパックに弾薬をX個入れる (unitBackpack this) addMagazineCargo ["classname",X]
弾薬箱・車両の全武器を除去する clearWeaponCargo this
弾薬箱・車両の全弾薬を除去する clearMagazineCargo this
弾薬箱・車両に武器をX個入れる this addWeaponCargo ["classname",X]
弾薬箱・車両に弾薬をX個入れる this addMagazineCargo ["classname",X]
人間用テンプレ
removeAllWeapons this ; for "_i" from 1 to X-0 do {this addMagazine "classname"} ; this addWeapon "classname";
実例(兵士にRHアドオンのAKM(弾倉5)、手榴弾2、双眼鏡を持たせる)
removeAllWeapons this ; for "_i" from 1 to 5-0 do {this addMagazine "30rnd_762x39_AK47"} ; for "_i" from 1 to 2-0 do {this addMagazine "handgrenade_east"} ;
this addWeapon "RH_AKM" ; this addweapon "binocular";
ミッションで役立つスクリプト
ミッションで使えそうなスクリプトの紹介と解説。
■リバイブ(蘇生)機能
死亡した兵士の蘇生、リスポン地点からの復活といった事が可能になるスクリプトです。
解凍して出てきた"revive_sqf"フォルダ、"respawnSpecial"フォルダ、"revive_init.sqf"ファイルをミッションフォルダに入れる。
ミッションファイルの編集
ArmA2 Other Profiles/名前/missions にあるミッションフォルダの各ファイルを編集します。
init.sqfファイルへの記述
次の文を記述する。
server execVM "revive_init.sqf";
description.extへの記述
次の文を記述する。
respawn = "BASE";
respawndelay = 4;
disabledAI = 0;
#include "revive_sqf\dialogs\config.cpp"
#include "revive_sqf\dialogs\define.hpp"
#include "revive_sqf\dialogs\rev_cam_dialog.hpp"
#include "revive_sqf\dialogs\respawn_button_1.hpp"
#include "revive_sqf\dialogs\respawn_button_2.hpp"
#include "revive_sqf\dialogs\respawn_button_3.hpp"
#include "revive_sqf\dialogs\respawn_button_4.hpp"
#include "revive_sqf\dialogs\respawn_button_1b.hpp"
#include "revive_sqf\dialogs\respawn_button_1c.hpp"
#include "revive_sqf\dialogs\respawn_button_2b.hpp"
#include "revive_sqf\dialogs\respawn_button_3b.hpp"
#include "revive_sqf\dialogs\respawn_button_4b.hpp"
#include "revive_sqf\dialogs\respawn_button_1map.hpp"
#include "revive_sqf\dialogs\respawn_button_2map.hpp"
#include "revive_sqf\dialogs\respawn_button_3map.hpp"
#include "revive_sqf\dialogs\respawn_button_4map.hpp"
#include "revive_sqf\dialogs\OK_map.hpp"
#include "revive_sqf\dialogs\dead_cam_dialog.hpp"
#include "revive_sqf\dialogs\rev_cam_dialog_blank.hpp"
revive_init.sqfの編集
各項目に説明が書いてあるので基本的な部分のみ
_max_respawns = 5;
_JIP_respawns = [5,5];
リスポン回数の設定。途中参加者のリスポン回数を別に設定することも可能。
NORRN_player_units = [s1,s2,s3,s4];
どの兵士にリバイブをつけるかを定義する。この場合s1、s2、s3、s4という名前がついた4人。
_no_respawn_points = 2;
_Base_1 = "Mobile";
_Base_2 = "Start";
_Base_3 = "";
_Base_4 = "";
リスポン場所の数と定義
Base1のMobileは兵士が運搬するモバイルテントにリスポンが可能になる。
Base2以下はリスポン場所。この場合Startという名前がついたマーカーの場所にリスポンが可能になる。
※Base_1を空白にしたり、Mobile以外に設定するとうまく働かない?(要検証)
持たせたくない場合は下の"mobile_man"の項目を"objNull"にするのが無難。
_mobile_man = s1;
モバイルテントを誰が持つかを定義する。持たせたくない場合は"objNull"と記述。
_enemy_side_1 = "EAST";
_allied_side_1 = "WEST";
_allied_side_2 = "WEST";
敵と味方の定義。
プレーヤーがOPFORやINDEPENDENTの場合は適宜説明文通りの記述を加える。
_can_revive = "soldierWB";
_can_be_revived = "soldierWB";
リバイブできる人間と受けられる人間の定義。Opforの兵士は"soldierEB"。
ユニットが1種類ならそのユニットのclassnameを書いてもOK。(例:Lingor Unitの機動隊員→"ibr_fea")
_heal_yourself = 0
_no_of_heals = 1;
Heal(自己治療)の可否とその回数。Medicがいない場合(スペツナズ、Lingor機動隊等)はこれで代用する。
エディタ上での操作
- ゲームロジック→オブジェクトにある"ゲームロジック"に「server」という名前をつけてMAP上に置く。
- ユニットに名前をつける(s1,s2...)。
- リスポン地点を用意する場合は名前を付けたマーカーを任意の地点に置く。
- 海がある場合は陸地に「center」という名前をつけたマーカーを置く。
リバイブあれこれ
リスポン車両を設けたい!
- revive_init.sqfを開き、"NORRNCustomExec3"で始まる項目を探して以下のように記述する。
NORRNCustomExec3 ="[_name,'リスポン地点の名前']execVm 'respawnSpecial\respawnSpecial.sqf'";
- 上に移動し、リスポン地点を追加する。(base_2、base_3、base_4のどれか)
_Base_2 = "リスポン地点の名前";
- エディタを起動し、リスポン機能を付けたい車両に"Respawn_carrier"という名前をつける(上で設定したリスポン地点の名前ではないことに注意)。
- 車両の近くにリスポン地点の名前をつけたマーカーを設置する。
海で死んだら復活できない!
- revive_init.sqfの"water_dialog"の項目を探し、以下のようになっているか確認する(おそらくデフォルトで = 1 … ON になっている)。
_water_dialog = 1;
- 2.エディタを起動し、陸地に"center"という名前をつけたマーカーを置く。
ユニットが水中で死ぬと"wash ashore"というボタンが出るので、これを押すとユニットは"center"マーカーのある方向に自動で移動する。
岸に着くとリバイブ待ちの状態になるのでリスポン地点から復活する。
■車両リスポン機能
破壊された車両をリスポンさせるスクリプトです。
●解凍して出てきた”vehicle.sqf”ファイルをミッションフォルダに入れる。
●エディタを開き、リスポン機能を付けたい車両のinit欄に以下の文を記述する。
veh = [this, 10, 600, 0] execVM "vehicle.sqf"
最初の数字→破壊されてからリスポンするまでの時間
2番目の数字→乗り捨て(誰も載っていない状態)からリスポンするまでの時間
3番目の数字→リスポン回数(0は無限)
その他細かい機能に関してはファイルを開くと書いてあるので参照のこと。
■自動補給機能
乗り物がトリガー内に入った時に自動で修理及び弾薬・燃料の補給を行なってくれるBFライクなスクリプトです。
●解凍して出てきた”rearm.sqf”ファイルをミッションフォルダに入れる。
スクリプトの機能をいじる場合は下記参照。
WaitUntil{(getPos _unit select 2)<スクリプトが有効になる高度}; デフォルトは20m
sleep スクリプトが有効になるまでの時間; デフォルトは3秒
if((getPos _unit select 2)>スクリプトが有効になる高度 || not (_unit in list Rearmlist)) exitWith{};
_unit VehicleChat "修理中...";
sleep 各項目が完了するまでの時間; デフォルトは5秒(燃料、弾薬、修理で合計15秒)
●エディタを起動し、補給機能を有効にしたい場所(滑走路など)にトリガーを設置する。
トリガーの設定は以下の通り。
- REPEATEDLY(繰り返し), 発動BLUFOR(プレーヤーがbluforの場合), PRESENT
- 名前:Rearmlist
- 条件欄: this;
- Act欄: {[_x] execVM "rearm.sqf"} foreach thislist;
他のトリガーと範囲が重なるとうまくいかない場合がある模様。
■バニラ武器全部入り弾薬箱(自動補充付)
弾薬箱にArmA2、OA、DLC(BAF・PMC)の武器を全部追加するS&D系ミッション向けスクリプトです。
解凍して出てきた"crateFiller.sqf"ファイルをミッションフォルダに入れる。
エディタを起動し、弾薬箱(容量的に「大型弾薬箱」が適当)のinit欄に以下のように記述する。
nul = [this,"all","all",true,5,100,0,0] execVM "crateFiller.sqf"
- 1番目の数字→武器数
- 2番目の数字→弾薬数
- 3番目の数字→アイテム数(GPS、地図、NVなど)
- 4番目の数字→バックパック数
あまり多くし過ぎると箱の容量を超えるので注意。
武器・弾薬は上記の数程度、アイテム・バックパックは箱に入れないほうがいいと思われる。
最終更新:2012年04月30日 00:37