Description.ext
Introduction
The description.ext is a text file located in the root of the mission folder which allows you to define many things in your mission. Each entry must be given a new line in the description.ext. The description.ext in fact uses the same syntax as all config files, therefore each line should be terminated with ;. OFP is most often able to recover from missing semicolons, ArmA though is strict and requires a ;.
When editing a mission in the mission editor description.ext is only read when the mission is loaded, not when you preview the mission.
OnLoad...
OnLoadMission
This displays a message whilst the mission is loading. Note that a mission that takes very little time to load will only display the message for a short time. Care should be taken to see whether your message is readable in that timeframe.
OnLoadMission = "YourMissionName";
The OnLoadMission option is used to present the mission name to the user. In MP this is the name you see when selecting a mission and also the name that is presented to the GameSpy browser.
If the option is missing from the description.ext then the filename is presented. *note needs verified
OnLoadIntro
OnLoadIntro = "YourMessage";// Title that appears on screen in briefing
OnLoadIntroTime
OnLoadMissionTime
This allows you to define whether you will see the time and date displayed whilst the mission/intro loads. Variables are True or False.
OnLoadIntroTime = False; OnLoadMissionTime = False;
loadScreen
loadScreen = "pictures\intro.paa";
You can define a picture to be shown while the mission is loaded.
The path is relative to the mission folder.
...Score
This feature allows you to set scores for your mission. Score is related to the star display in the debriefing screen. The score can be influenced during a missions progress by using the addRating command.
MinScore = 0; AvgScore = 1800; MaxScore = 7500;
Respawn...
Line in a file description.ext
respawn = RespawnType;
respawnDelay = DelayInSeconds;
respawnVehicleDelay = DelayInSeconds;
respawnDialog = 0; // Show the scoreboard and respawn countdown timer for a player if he is killed with respawnType 3. Default is 1 (true).
RespawnType | Description |
0 or "NONE" | No respawn |
1 or "BIRD" | Respawn as a seagull |
2 or "INSTANT" | Respawn just where you died. |
3 or "BASE" | Respawn in base. Requires a marker named:
Add markers named with the prefix 'respawn_west' with any suffix (eg: respawn_westABC, respawn_west1, respawn_west_2, etc) for multiple random respawn points. Similarly for east, guerrila and civilian.
|
4 or "GROUP" | Respawn in your group (if there's no AI left, you'll become a seagull). |
5 or "SIDE" | Respawn into an AI unit on your side (if there's no AI left, you'll become a seagull) - implemented in ArmA 1.08: with this respawn type, team switch is also available to any AI controlled playable units. |
Sounds
There are three types of sound that can be specified:
- General sounds that can be used for dialog, voiceovers in the briefing etc. These sounds are actioned in a mission by using the commands: say, playSound
- Dialog where one unit talks over the radio, for example using the command sideRadio
- Music using the command playMusic
Examples:
CfgSounds
General Sounds
class CfgSounds { sounds[] = {}; class wolf1 { name = "my_wolf_sound"; // how the sound is referred to in the editor (e.g. trigger effects) sound[] = {"fx\wolf1.ogg", 1, 1}; // filename, volume, pitch titles[] = {}; }; };
playSound "wolf1"; // use the class name! player say ["wolf1", 100];
(see tutorial)
CfgRadio
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", db-100, 1.0}; // .wss implied title = {$STR_RADIO_2}; }; };
Note that the location of the sound file is relative to the mission.
- usage
unit sideRadio RadioMsg2
CfgMusic
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}; }; };
playMusic "MarsIntro"
Notes
Name can be left blank as in the examples above. Only specify a name if you wish to access these sounds via the environment options of a trigger.
Title is the text string that will be displayed on the screen when the sound file is played. See also Stringtable.csv
CfgIdentities
It is here that you can define the identities of individual units, you can specify the face, type of glasses worn, voice, tone of voice and name of an identity. You then give a specific unit this identity by using the command setIdentity in the mission.
Example:
class CfgIdentities { class John_Doe { name="John Bartholemew Doe"; face="Face20"; glasses="None"; speaker="Dan"; pitch=1.1; }; };
See setIdentity for valid options for: face, glasses, speaker etc.
Name
- Name can be any string, including none, and $STR_Anything
Face
Face can take any of the following values:
- Male: OFP
- "Face1" to "Face52"
- "Face99"
- "FaceR01" to "Face R04" : Resistance only
- Male: ArmA
- "Face1" to "Face53" : ArmA
- Male: Arma 2
- "Face01" to "Face107" : note the zero before 1 to 9
- "_camo1" to "_camo6" for each in addition as extension like "Face107_camo6"
- Male: Arma 2 Operation Arrowhead
- "Face01_EP1" to "Face20_EP1" : note the zero before 1 to 9
- "_camo1" to "_camo6" for each in addition as extension like "Face20_camo6_EP1"
- "Facegrover_EP1"
- "_camo1" to "_camo6" for each in addition as extension like "Facegrover_camo6_EP1"
- "Facegrover_wounded_EP1"
- "_camo1" to "_camo6" for each in addition as extension like "Facegrover_wounded_camo6_EP1"
- Male: Arma 2 British Armed Forces
- "Face01_baf" to "Face09_baf"
- "FrostFace"
- Male: Arma 2 PMC
- "Face108_PMC" to "Face124_PMC"
- "_camo1" to "_camo6" for each in addition as extension like "Face124_camo6_PMC"
- "FacePoet"
- "FaceStranger"
- "FaceTanny"
- Female: OFP
- "Eva"
- "Kamila"
- "Lada"
- "Lucie"
- "Marketa"
- "Nada"
Glasses
- OFP
- "None"
- "Spectacles"
- "Sunglasses"
- ArmA
- "None"
- Arma 2
- "None"
- "Spectacles"
- "RoundGlasses"
- "SunGlasses"
- "Tactical"
- "BlackSun"
- "BlueSun"
- "RedSun"
- "GreenSun" : these are yellow glasses
- "LHD_glasses" : these are combat glasses, unavailable via profile editor
Speaker
Speaker determines which voice is used and can take any of the following values:
- OFP
- "Adam"
- "Dan"
- "George"
- "Greg"
- "John"
- "Jonah"
- "Marc"
- "Patrick"
- "Paul"
- "Peter"
- "Rich"
- "Rob"
- "Ted"
- "Tom"
- Red Hammer
- "Aleksei"
- "Andrei"
- "Boris"
- "Georgiy"
- "Ivan"
- "Nikolai"
- "Oleg"
- "Ruslan"
- "Sergey"
- "Vadim"
- "Vitaliy"
- "Vladimir"
- ArmA
- Amy
- Brian
- Dan
- Dusan
- Howard
- Mathew
- Robert
- Russell
- Ryan
Note that ArmA voice files are severely deficient.
- There are many many more voice profiles in the arma pbo than the limited list above, but are not 'get attable'
- ALL of the above profiles have missing sounds to one degree or another. Some have su25.wss (eg) others do not.
- There are countless sound files (more than 50%)in each profile that simply cannot be accessed. "fifty.wss" eg
- Where possible, and voices are important to you, use a fixed up pbo such as cwr_voice.pbo
- Arma 2
- Male01
- Male02
- Male03
- Male04
- Male05
Each voice having localization variant, e.g Male01EN, Male03CZ, Male02RU. EN for english, CZ for Chernarussian, RU for russian.
- Arma 2:British Armed Forces DLC
- Male01_BAF
- Male02_BAF
- Male03_BAF
- Male04_BAF
These voices are availible for Arma 2 Operations Arrowhead British Armed Forces Downloadable Content.
Pitch
Pitch sets the tone of voice. 1.0 for normal; < 1.0 for deep; >1.0 for high pitched
Keys
Since Armed Assault it's possible to define keys for every mission.
Keys are used in single player missions for
- marking mission as completed in mission list (square left to mission name) and
- for unlocking hidden content.
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.
Note that unlike other 'text' items $STR_ variables (in the stringtable.csv for the mission) cannot be used
To create a green mark tick two operations are needed
1) description.ext
doneKeys[] = {Mission04Key,TotallyFailedKey4};
2) outro.sqs
activateKey "Mission04Key"
'outro.sqs' is poetic licence for whatever-it-is you decide to end a mission in a way that will set this key or keys
it is up to you to decide what is successful, and indeed, how you end, your mission
Note that a series of keys can be specified and that as such, which one(s) you set cause other mission(s) to unlock
A totally failed outcome, could set a totally failed key, and this unlock (say) a retraining mission.
See also: activateKey, isKeyActive
Miscellaneous
disabledAI
Removes all playable units which do not have a human player. (MP)
Note: Disabling all the AI units will prevent JIP into playable units in OFP:Elite and ArmA.
disabledAI = false/true
aiKills
Enables scorelist for AI players
aiKills = 1/0;
briefing
Skip briefing screen for SP missions. If no briefing.html is present, it is skipped anyway. Note: Added in 1.05
In VBS2 version +1.30, if set, mission will start soon as all clients are done loading data and will skip the briefing. Note: Briefing will still be displayed untill all clients are connected and done loading.
briefing = 0;
debriefing
Defines if the debriefing is shown or not at the end of the mission.
debriefing = 0;
Show...
ShowGPS
Enables/Disables the GPS
ShowGPS = 0;
Note: In ArmA 1.04 toggle this option to disable the mini map attached to the GPS.
showCompass
Defines if the compass is visible.
showCompass = 0;
showMap
Defines if the map is shown after the mission starts.
showMap = 0;
showNotePad
In ArmA, defines if the NotePad is shown after the mission starts.
showNotePad = 0;
showPad
Defines if the NotePad is shown after the mission starts. (Not in ArmA)
showPad = 0;
showWatch
Defines if the watch is visible.
showWatch = 0;
Dialogs
Dialogs are also configured in the description.ext into classes.
See Dialogs for more information.
RscTitles
RscTitles class defines image, text and object resources for use with commands such as: cutRsc, cutText, cutObj, titleRsc, titleText, titleObj.
Example:
class RscTitles { titles[] = {introImage}; // optional class introImage { idd = -1; movingEnable = false; duration = 120; fadein = 0; name = "IntroImage"; controls[] = {"image1"}; class image1: RscPicture { x = 0; y = 0; w = 1; h = 1; text = "IntroImage.paa"; }; };
cutRsc["introImage", "PLAIN", 1];
Example 2:
class RscTitles { titles[]={MiDisplay}; class MiDisplay { idd=1111; movingEnable=0; duration=10000; fadein=1; name="MiDisplay"; onLoad = "Sa_MiDisplay = _this"; class controls { class fn0 : RscText { idc = 1120; colorBackground[] = {0,0,0,1 }; x=0.3; y=0.2; w=0.4; h=0.04; text=""; }; }; };
Sa_MiDisplay = []; /* .......... */ 1110 cutRsc ["MiDisplay", "Plain"]; /* .......... */ disableSerialization; ((Sa_MiDisplay select 0) displayCtrl 1120) ctrlSetText "Text"; /* .......... */ 1110 cuttext ["","plain"];
Weapons and Magazines
The weapons and magazines available to players during the briefing are also defined in description.ext.
Example:
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;}; };
Backpacks
OA only.
class Backpacks { class US_Patrol_Pack_EP1 {count = 4;}; class US_Assault_Pack_EP1 {count = 4;}; };
Multiplayer
TitleParam1 and TitleParam2 are multiplayer options. These options are seen in the lobby of a multiplayer game. These options can be useful for setting time limits and score limits in such games as Capture the Flag and Death Matches. Other popular uses include accelerate time, setting the mission difficulty or switching the intro on/off.
In the mission param1 and param2 have the values of the chosen options. Many people will assign a variable in the init.sqs file to param1 for simplicity, an example of this would be to assign variable timelimit = param1.
Example:
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};
Arma 2: Patch v1.03.58899 Beta has added multiple parameters support, that you can setup like this :
class Params
{
class Score
{
title = "$STR_mp_param_score";
values[] = {10,200};
texts[] = {"10","200"};
default = 10;
};
class Duration
{
title = "$STR_mp_param_duration";
values[] = {1,2};
texts[] = {"one hour","two hours"};
default = 1;
};
etc. .....
}
Header Class
With the introduction of OFP:Elite, BI started to include a new class definition in the description.ext. The purpose of this class definition is to signal the engine the gameType which is displayed in the MP game browser. This can assist other players for finding particular missions using the filters.
Example
Here is a basic class example:
class Header { gameType = COOP; ////DM, CTF, FF, Coop, Team, Scont, Hold, Unknown minPlayers = 1; //min # of players the mission supports maxPlayers = 10; //Max # of players the mission supports playerCountMultipleOf = 1; //OFP:Elite option. };
gameType
These are basic types to help with filtering in the MP game browser.
DM = Death Match CTF = Capture the Flag FF = Flag Fight Coop = Cooperative Mission Team = Team Mission Scont = Sector Control Hold = Hold Location Unknown = Unknown - is used when no class header is defined.
playerCountMultipleOf
playerCountMultipleOf was introduced in OFP:Elite, the game server would set the maximum amount of players based on bandwidth and eventually this parameter. The default is 2, so it means the mission will try to balance the game to multiples of 2 (2 vs 2, 4 vs 4, etc.) and you did not end up with a team mission with 5 maximum players(2 vs 3 is unfair?). Coop type missions use 1, Team type missions use 2(default).
Notes
In OFP:Elite this file is required for MP missions. If this is not included -1 error is shown when selecting a mission and the mission won't load.
In ArmA if this class is missing the mission will still load with an error in the RPT file and the mission type will be considered Unknown.