From BISim Wiki
Jump to: navigation, search



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 ;.

When editing a mission in the mission editor description.ext is only read when the mission is loaded, not when you preview the mission.

 ! For edits to description.ext to take effect in Preview you must first save or re-load the mission into the editor.



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 = "YourMessage";// Title that appears on screen in briefing



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;


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 = RespawnType;

respawnDelay = DelayInSeconds;

respawnVehicleDelay = DelayInSeconds; (Note that vehicle has to be set as respawnable in MP games using the respawnVehicle command.)

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:
  • respawn_west
  • respawn_east
  • respawn_guerrila
  • respawn_civilian

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.

Vehicle respawn in base requires a marker named:

  • respawn_vehicle_west
  • respawn_vehicle_east
  • respawn_vehicle_guerrila
  • respawn_vehicle_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) - with this respawn type, team switch is also available to any AI controlled playable units.


There are three types of sound that can be specified:

  1. General sounds that can be used for dialog, voiceovers in the briefing etc. These sounds are initiated in a mission by using the commands: say, playSound
  2. Dialog, where one unit talks over the radio, e.g. via sideRadio
  3. Music, using the command playMusic

The sound definitions follow the standard defined in Array Sound. Note that the location of the sound file is relative to the mission, and must start with a backslash.


class CfgSounds {
  sounds[] = {};   
  class wolf1 {
    name = "";
    sound[] = {"\sound\wolf1.ogg", 1, 1};
    titles[] = {0, "Wolf howling"};
  class wolf2 {
    name = "";
    sound[] = {"\sound\wolf2.ogg", 1, 1};
    titles[] = {};
playSound "wolf1";  // general sound
dog say "wolf2";  // locational sound
trigger1 setSoundEffect ["wolf1","","",""]; // sound name used in trigger

See CfgSounds for a description of this class, or check the tutorial here.
Demo mission: File:Identities and


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};
unit sideRadio RadioMsg2


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

Setting volume (db) of music far from zero will disable fadeMusic command. Optimal values are from -10 to 10.


Defines the properties of individual units, i.e. the name, face, type of glasses worn, voice and tone.
Once an identity has been defined here, it is assigned to a specific unit via setIdentity.


class CfgIdentities {
  class John_Doe {
    name="John Doe";


The "human" name (e.g. "John Doe"), which is returned by the name command.
Can be any string, including an empty one (""), or read from the stringtable.csv via $STR_SomeName.


The available faces depends on the unit model that it will be assigned to.
Defined in CfgFaces. See setFace for more details.


Whether the unit will wear glasses (and what kind). Non-functional - always "None"
Defined in CfgGlasses, and can currently (3.7) be:


Which voice/language to use.
Defined in CfgVoice, and can currently (3.7) be:

In versions below 3.x this option has no effect (the engine would always use the same male voice).


Pitch sets the tone of voice. 1.0 for normal; < 1.0 for deep; >1.0 for high pitched
This effect is only applied to radio communications, but not to sounds that are played via e.g. say or playSound.
The way different pitches are achieved is by speeding up or slowing down the replay speed, i.e. a higher-pitched voice will finish the same sentence faster than a lower-pitched one.

Demo mission: File:Identities and


It is possible to define keys for every mission.

Keys are used in single player missions for

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



Removes all playable units which do not have a human player. (MP)

Note: Disabling all the AI units will prevent JIP into playable units

disabledAI = false/true


Enables scorelist for AI players

aiKills = 1/0;


Skip briefing screen for SP missions. If no briefing.html is present, it is skipped anyway.

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;


Defines if the debriefing is shown or not at the end of the mission.

debriefing = 0;



Enables/Disables the GPS

ShowGPS = 0;

This option disables the mini map attached to the GPS.


Defines if the compass is visible.

showCompass = 0;


Defines if the map is shown after the mission starts.

showMap = 0;


Defines if the NotePad is shown after the mission starts.

showNotePad = 0;


Defines if the NotePad is shown after the mission starts. (no validated)

showPad = 0;


Defines if the watch is visible.

showWatch = 0;


Dialogs are also configured in the description.ext into classes.

See Dialogs for more information.


RscTitles class defines image, text and object resources for use with commands such as: cutRsc, cutText, cutObj, titleRsc, titleText, titleObj.


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

	class MiDisplay {

 	onLoad = "Sa_MiDisplay = _this";

 	class controls  {
	       class fn0 : RscText {
		idc = 1120;
 	  	colorBackground[] = {0,0,0,1 };

Sa_MiDisplay = [];
1110 cutRsc ["MiDisplay", "Plain"];
((Sa_MiDisplay select 0) displayCtrl 1120) ctrlSetText "Text";
1110 cuttext ["","plain"];


The functionality described below is only available in VBS2, V1.x and V2.x. It has not been implemented in VBS3.

Via titleParam1 and titleParam2 (and their associated options) a MP admin can define end conditions specific to this particular session.
The associated selection dialogs are shown in the MP lobby, and the displayed options depend on what is specified in the titleParam & textsParam definitions.

These options will not be interpreted directly by the game engine, but have to be checked by some user-created script, which will compare a current value to the limits defined by these options. Once the specified limit has been reached, the script will have to terminate the mission via a trigger or command.
The limits defined are available in-game via the global variables Param1 and Param2.

MP Limit Options.jpg

Either "titleParam1", "titleParam2", none, or both options can be defined.

Upper list Lower list Description
titleParam1 titleParam2 Content of header line for option list
textsParam1 textsParam2 Option strings that will be shown in the list
valuesParam1 valuesParam2 Numeric values that will be assigned to "Param1/2", when the associated option is selected (e.g. "Unlimited":0, "5 min":300, etc.)
defValueParam1 defValueParam2 Value that should be selected by default

Example: (see output on right)

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

A script that would check for the second condition ("Score to win") could look like this:

waitUntil {score player>=Param2};
forceEnding 3;

Header Class

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.


Here is a basic class example:

class Header
 gameType = COOP;            //DM, Team, Coop, ...
 minPlayers = 1;             //min # of players the mission supports
 maxPlayers = 10;            //Max # of players the mission supports
 playerCountMultipleOf = 1;


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.


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).


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.

Personal tools