CfgVehicles Config Reference: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
Line 216: Line 216:


  cobraLight = "AnyAddon\AnyP3d(.p3d)";
  cobraLight = "AnyAddon\AnyP3d(.p3d)";
==coefInside...==
[[TokenNameValueTypes|Float]]:
  coefInside = 0.5;
  coefInsideHeur = 0.8;


==color==
==color==

Revision as of 11:43, 1 July 2006

Introduction

TokenName Reference

Simply put, Token Name & Value pairs are as follows

SomeName = SomeValue;

Token Names are used extensively throughout ofp 'text' files.

This article details the token-names available in Config.cpp , description.ext and mission.sqm. The primary focus of this document is the TokenNames used for various aspects of controlling models within Addons. Description.ext and mission.sqm are included because many of the 'tokens' are common to all.

For instance, when creating a model using class statements inside a Config.cpp, to access it later, via the mission editor

scope=2;

This article lists token names, their value ranges, and their type.

Where not specifcally specified, the 'useage'of the token name is within Config.cpp, class CfgVehicles.


Legend:

Integer: A signed value that will be held in 4 bytes.

Boolean: An Integer value of 0 or 1. This is a 'convenience type' in humanly readable text. The engine stores it as an integer.

String: Any string value. ALL STRINGS MUST BE ENCLOSED IN QUOTES for Elite. These strings are misinterpreted as #defines otherwise.

Array: An array []={...}

float Array: An array of floats only string Arrray: should be obvious integer Array: ditto Complex Array: A mixture of multiple types, includig embedded arrays.

Variable Array: the number of elements for this array in this class model can have a varying number of elements (depending on context)

Notes: For Models and other items using p3d files, the .p3d extension is not reguired. Similar comment for pac/paa files, and wss (sound) files where appropriate


A

...Action

String

 commanderAction = "ManActTestDriver";
 driverAction = "ManActTestDriver";
 gunnerAction = "ManActAH1Gunner";

cargoAction

Variable String Array:

cargoAction[] = {"ManActM113Medic","ManActM113Medic","ManActM113Injured"};

note that unlike driverAction and gunnerAction this is an array. (for multiple positions)

The number of elements in this array correspond to the #transportSoldier value declared for this class.

...InAction

String

 commanderInAction = "ManActTestDriver";
 driverInAction = "ManActTestDriver";
 gunnerInAction = "ManActTestDriver";

...AngleX

Integer Degrees

  initAngleX = 0;
  minAngleX = -30;
  maxAngleX = 30;

...AngleY

Integer Degrees

  initAngleY = 0;
  minAngleY = -30;
  maxAngleY = 30;

initCargoAngleY

Integer Degrees

 initCargoAngleY = 185;

airFriction

Used in: cfgNonAiVehicles

Array: 3 separate tokens, airFriction0[],airFriction1[],airFriction2[] that define the X Y and Z component respectively.

airFriction2[] = {25,12,2.500000};

acceleration

Used in: cfgNonAiVehicles

Integer: metres per second

acceleration = 7;

access

Integer: Similar to #scope

access = 1;

accuracy

Integer:

accuracy = 0.5;

aileronSensitivity

Float

 aileronsensitivity = 0.66;

ambient

Array: Used by reflectors

  ambient[] = {0.070000,0.070000,0.070000,1.000000};

animated

Bool : Used by class models that inherit an animated 'vehicle' to turn those aspects of the vehicle off.

  animated = false;

animation...

String: These animation strings point to rtm files to create the movement.

 animationFlag = "\AnyAddon\AnyRTM(.rtm)";// to wiggle flag in wind
 animationOpen = "\AnyAddon\AnyRTM(.rtm)";// to open or close doors (eg)
 animationDrop = "\AnyAddon\AnyRTM(.rtm)";

animationSource...

animationSourceBody

String

   animationSourceBody = "Turret_2";
   animationSourceGun = "Gun_2";
   animationSourceHatch = "hatchCommander";

armor Integer

Integer: A strength value of how much external damage can be taken before 'destruction'.

  armor = 50; // a helicopter
  armor = 900; // an Abrams tank

armor (float)

Float: The floating version of armor type is only used in Hit... classes, eg HitTurret HitBody

  armor = 1.4; // a bee
  armor = 0.8;// a turret

armor...

Float:

 armorBody = 0.4;
 armorFuel = 1.4;
 armorGlass = 0.5;
 armorLights = 0.4;
 armorWheels = 0.1;

attendant

Bool: Used for 'vehicles' to repair other vehicles. Thus a hospital has an attendant that can repair soldiers.

 attendant = true;

audible

Integer

 audible = 8;

B

brightness

Float:

   brightness = 1.000000;

body

String:

   body = "mainTurret";


C

..can

canBeShot

Used in: cfgNonAiVehicles Boolean: Declares whether bullets have any effect

canBeShot = true;

canFloat

Boolean: Used to allow vehicles (such as BMP) not to sink !

 canFloat = true;

canLock

Boolean:

canLock = 0;

camouflage

Integer:

camouflage = 4;

cast...Shadow

Boolean:

castCargoShadow = true;
castDriverShadow = false;
castGunnerShadow = true;

...CanSee

String (math formula)

 gunnerCanSee = "4+8+16 +1";
 commanderCanSee = 31; // this appears to be wrong

...CargoAngleY

Integer degrees

 initCargoAngleY = 10;
 minCargoAngleY = -60;
 maxCargoAngleY = 120;


cargoIsCoDriver

Variable Boolean Array

  cargoIsCoDriver[] = {false,false,false,false,true};// 5th position in this vehicle

The number of elements in this array correspond to the #transportSoldier value declared for this class model.

cast...Shadow

castCargoShadow

Boolean

castCargoShadow = true;

castDriverShadow

Boolean:

   castDriverShadow = 1;

castGunnerShadow

Boolean: part of Turret class

   castGunnerShadow = 1;

cobraLight

String : Used as a core model for all other 'air' craft.

cobraLight = "AnyAddon\AnyP3d(.p3d)";

coefInside...

Float:

 coefInside = 0.5;
 coefInsideHeur = 0.8;

color

Array: of floats. Used by reflectors

  color[] = {0.800000,0.800000,1.000000,1.000000};

commanding

Integer: part of Turret class

    commanding = -1;

cost

Integer: This value reflects the attractiveness of the target to the enemu ai. _when_ all other considerations are equal. A soldier eg is not interested in Air, despite it's highly attractive cost values. On the other hand, he is interested in a medic, since a medic (in normal configs) has a (whiel small) a higher cost, than others in the group, including the officer.

    cost = 10000000;// an air vehicle is tyoically this value
cost = 8; // a medic;
cost = 1; // a grunt
cost = 4; // an officer
cost = 0; // most buildings;

crew

String: Reflects whether vehicle is manned, and what.

    crew = "SoldierWPilot";

count (string)

String: (math formula). Used in magazine class to declare amount (of bullets)

count = "30*1";


D


dammageHalf

Array: of varable number of strings

 dammageHalf[] = {"\AnyAddon\AnyPAA.paa","\AnyAddon\AnyOtherPAA.paa", ...};

When 'vehicle' is considered at least half way to destruction, the series of pictures is applied to the model.

dammageFull

Array: of varable number of strings

 dammageFull[] = {"\AnyAddon\AnyPAA.paa","\AnyAddon\AnyOtherPAA.paa", ...};

see #dammageHalf for the self evident difference.

damper...

Float:

damperSize = 0.100000;
damperForce = 1;

direction

Float:

   direction = "konec L svetla";

displayName

String: This value is used to select the unit in the Mission Editor, as well as when pointing your team to an object in the game.

Ordinaruly it is good practice to acess the stringtable.csv that accompanies the addont so that

  1. all names and labels are in one place
  2. for language differences
displayName = "$STR_DN_AH1Z";

displayNameShort

String:

 displayNameShort = "$STR_DN_UH60";

destrType

String: used for animation, sound, and final 'look' of vehicle.

 destrType = "DestructBuilding";
 destrType = "DestructNo";
 destrType = "DestructEngine";
 destrType = "DestructTree";


driverCanSee

String (math formula)

  driverCanSee = "2+8";

==driverIsCommander==; Bool

driverIsCommander = true;

driverForceOptics

Bool

  driverForceOptics = true;


E


...Elev

Integer:Degrees

initElev = -80;
minElev = -60;
maxElev = 10;

ejectDamageLimit

Float: You can get hurt, but you can't die with vals less than 1.0

 ejectDamageLimit = 0.750000;

ejectSpeed

Array

ejectSpeed[] = {0,0,0};

ejectDead...

Boolean

 ejectDeadGunner = false;
 ejectDeadCargo = true;

enableSweep

Boolean:

 enableSweep = false;

envelope

Float Array

envelope[] = {0.000000,0.000000,0.300000,1.000000,2.500000,3.300000,3.500000,3.200000,2.500000,2.000000,1.500000,1.000000};

elevatorSensitivity

Float

elevatorSensitivity = 0.2;

extCameraPosition[]

Array

 extCameraPosition[] = {0,2,-15};


F

fired

String:

fired = "_this exec ""\AnyAddon\AnySQS.sqs"""; // note the ""

flapsFrictionCoef

Integer

 flapsFrictionCoef = 2;

forceHide...

Boolean

forceHideDriver = true;
forceHideGunner = false;

fov

Float

 fov = 0.500000;

...Fov

Float

  initFov = 0.100000;
  minFov = 0.030000;
  maxFov = 1.200000;

flySound

Array

flySound[] = {"\AddonName\AnySound.wss",0.000000,1,1};

see #sound...

fuelCapacity

Array

 fuelCapacity = 246;


G

gun

String:

   gun = "mainGun";

gearRetracting

Boolean

 gearRetracting = 1;

gunAimDown

Float

 gunAimDown = 0.07;

gunBeg

String:

   gunBeg = "muzzle_1";

gunEnd

String:

   gunEnd = "chamber_1";


gunnerHasFlares

Boolean

  gunnerHasFlares = false;

...GunnerMayFire

Boolean

     outGunnerMayFire = true;
     inGunnerMayFire = false;

gunnerOutOptics...

String

     gunnerOutOpticsModel = "";

Array

     gunnerOutOpticsColor[] = {0,0,0,1};

Boolean

     gunnerOutForceOptics = false;

Boolean

     gunnerOutOpticsShowCursor = false;

gunnerName

String

   gunnerName = "$STR_POSITION_CREWCHIEF";

gunnerUsesPilotView

Boolean:

gunnerUsesPilotView = 1;


H


...Height

Integer:

minHeight = 5; //Min height in metres above sealevel. 
maxHeight = 50;//max height above sea level.
avgHeight = 10;

hideProxyInCombat

Bool

hideProxyInCombat = 0;

hiddenSelections

String Array

hiddenSelections[] = {"pruh"};

hitpoint

String:

   hitpoint = "L svetlo";

has...

Boolean

 hasGunner = false;
  hasCommander = true;


I


icon

String:

This value us used exclusively by the map editor to show the building or vehicle when editing. It is not normally visible during game play.

The icon can be any jpg, paa, or pac file. paa is default.

 icon = "\AnyAddon\AnyPAA(.paa)";

init

String:

  init = "[(_this select 0)] exec ""\AnyAddon\AnySqs.sqs"""; // note the ""

irScanGround

Integer:

 irScanGround = 0;

irScanToEyeFactor

Integer:

 irScanToEyeFactor = 5;

irScanRange...

Integer:

 irScanRange = 4000;
 irScanRangeMin = 4000; // a vulcan
 irScanRangeMax = 10000; // a shilka

irTarget

Bool: Used for buildings so that they don't show up on tank radar

 irTarget = false;


K


killed

String:

  killed = "[(_this select 0),1,1,0,0] exec ""\AnyAddon\AnySQS.sqs""";// note the ""


L


laserscanner

Boolean: Determines if a vehicle has laser capability.

 laserScanner = true;

landingSpeed

Integer

 landingSpeed = 75;

landingAoa

String (math formula) Landing Angle of Approach

 landingAoa = "3.5*3.1415/180";

library

String: This TokenName is associated with the library class of a vehicle (if any). It is used to give a 'memo' style full screen info on the given object. Example of use:

 class Library
 {
  libTextDesc = "$STR_LIB_AH1Z";
 };


M


magazine

Array: used in TransportMagazines class this specifies the type of ammo in the magzine and the amount.

magazine = "30Rnd_556x45_Stanag";
count = "30*1";

mapSize

Float: Used for the map editor to show the icon associated with this model class. See #icon

There is no x y component to this, the meaurement units are meters.

To creat a circular, rectangular or other 'non sqaure' image, you need to make a pac file for the icon with, a transparent layer.

 mapSize = 0.700000; // small object such as a tree

magazines

Array: variable strings

  magazines[] = {"750Rnd_M197_AH1","38Rnd_FFAR","8Rnd_Hellfire"};

marker

String : used as a core for all other air craft when looking on map.

marker = "\AnyAddon\AnyP3d.(p3d")";

material

Integer:

  material = 50;

mainRotorSpeed

Integer:

mainRotorSpeed = -1;

backRotorSpeed

Float backRotorSpeed = 1.0;

hmmm, that's curious, it accepts floats or ints.

memoryPointExhaust...

String:

memoryPointExhaust = "exhaust_start";
memoryPointExhaustDir = "exhaust_end";

memoryPointsGetIn...

String:

   memoryPointsGetInCargo = "pos_cargo";
   memoryPointsGetInCoDriver = "pos_codriver";
   memoryPointsGetInCommander = "pos_commander";
   memoryPointsGetInDriver = "pos_driver";
   memoryPointsGetInGunner = "pos gunner";

memoryPointsGetIn...Dir

String:

   memoryPointsGetInCargoDir = "pos_cargo_dir";
   memoryPointsGetInCoDriverDir = "pos_codriver_dir";
   memoryPointsGetInCommanderDir = "pos_commander_dir";
   memoryPointsGetInDriverDir = "pos_driver_dir";
   memoryPointsGetInGunnerDir = "pos gunner dir";

memoryPointGun

String:

   memoryPointGun = "machinegun";

memoryPointGunnerOptics

String

   memoryPointGunnerOptics = "gunnerview";

memoryPointGunnerOutOptics

String

     memoryPointGunnerOutOptics = "commander_weapon_view";

memoryPoint...Missile

String:

   memoryPointLMissile = "Missile_1";
   memoryPointRMissile = "Missile_2";

memoryPoint...Rocket

String:

   memoryPointLRocket = "Rocket_1";
   memoryPointRRocket = "Rocket_2";

memoryPointSupply

String:

 memoryPointSupply = "supply";

memoryPointTrack...

String:

 memoryPointTrackFLL = "tyreTrack_1_1l";
 memoryPointTrackFLR = "tyreTrack_1_1r";
 memoryPointTrackBLL = "tyreTrack_1_2l";
 memoryPointTrackBLR = "tyreTrack_1_2r";
 memoryPointTrackFRL = "tyreTrack_2_1l";
 memoryPointTrackFRR = "tyreTrack_2_1r";
 memoryPointTrackBRL = "tyreTrack_2_2l";
 memoryPointTrackBRR = "tyreTrack_2_2r";


model

String: Location in the addon where the p3d model resides. Can be subfolder

model = "\AddonName\anyp3d(.p3d)"; // can be ""




N


name

String:

  name = "motor";

nameSound

String: Namesound is used by the AI audio to indicate verbally where to go, what 'vehicle' to attack. This the audio speech "move to 'rock' 3 o'clock' is derived from the namesound.

nameSound = "rock";

typically, a collection of buildings (eg) will be configured as follows

class GenBuilding : NonStrategic
{
  scope=private; // internal use only
  VehicleClass="Some Editor Group Name";
  namesound="house";
};
class YellowBuilding: GenBuilding
{
  scope=public;
  name="YellowBuilding";
  model="Some yellow building.p3d";
};

noseDownCoef

Float

noseDownCoef = 0.025;


O


...OpticsModel

commanderOpticsModel

String

 commanderOpticsModel= "\AnyPbo\AnyP3d(.p3d)";

driverOpticsModel

String

 driverOpticsModel = "\AnyPbo\AnyP3d(.p3d)";

gunnerOptics...

gunnerOpticsModel

String

 gunnerOpticsModel= "\AnyPbo\AnyP3d(.p3d)";

gunnerOpticsShowCursor

Bool

  gunnerOpticsShowCursor = true;


P


passThrough

Boolean:

 passThrough = 1;

picture

String: I think this is for briefing Information icon click

 picture = "\AnyAddon\AnyPAA(.paa)";

primary

Boolean: For models that can have, (but don't necessarily do have) multiple internal objects of the same type (turrets eg). One of them, is declated the main, or primary turret. There may indeed be only one 'turret'.

  primary = true;

primary...

Boolean

     primaryGunner = false;
     primaryObserver = true;

proxyIndex

Integer

   proxyIndex = 2;

proxyType

String

     proxyType = "CPCommander";

position

String:

   position = "L svetlo";


R


reversed

Used in: cfgNonAiVehicles

Boolean: Normally, models ARE reversed with respect to how they present on the screen after editing with tools like oxygen (eg) This overrides the default. See #model

reversed = 0;

rotor...

rotorBig

String:

 rotorBig = "vrtule_velka";

rotorBigBlend

String:

 rotorBigBlend = "vrtule_velka_bl";

rotorSmall

String:

 rotorSmall = "vrtule_mala";

rotorSmallBlend

String:

 rotorSmallBlend = "vrtule_mala_bl";

S


scope

Used in: cfgNonAiVehicles

INTEGER:

scope = public;

Scope in concept is the same as the C++ reserved words of public, protected and private.

defines normally exist at the top of a well written config.cpp to make meanings clearer.

#define private    0
#define protected  1
#define public     2

The meaning of each is as follows

private:

only other classes within the same config cpp can access, or 'inherit' this class.

protected:

Identical to public, except the class will not be listed in the mission editor. A very common form of use for this is

class vegetables
{
  scope=protected;
  VehicleClass="Vegetables.
  namesound= whatever;
  icon= "vegetableIcon.paa";
 ///   put any other common characteristics in here
};
class GreenOnions : vegetables
{
   scope = public;
   name="Green Onion;
}
class PurpleOnion : vegetables
{
   ....

The effect here is to reduce (considerably) not only the amount of tyoing, but memory storage too. It is only the public classes that are listed in the editor, and this, you would expect, that each one of these has a separate name=, wheras, they are ALL grouped' in the Editor's 'Vegetables'

Protected classes are CamCreatble in the mission.sqm.

Protected classes are immensely useful to 'hide' obsolete models that are still required to maintain compatibility with older missions.

public:

Any classes declared public are CamCreateabale, and selectable via the Editor.


selection

String:

   selection = "L svetlo";

Selection...

selectionBackLights

 selectionBackLights = "light_back";

selectionBrakeLights

 selectionBrakeLights = "light_brake";

selectionFireAnim

String:

selectionFireAnim = "muzzleflash";

selectionHRotorStill

String:

selectionHRotorStill= "mainRotorStatic";

selectionHRotorMove

String:

selectionHRotorMove = "mainRotorBlurred";

selectionVRotorStill

String:

selectionVRotorStill = "tailRotorStatic";

selectionVRotorMove

String:

selectionVRotorMove = "tailRotorBlurred";

size

Float:

   size = 0.500000;

side

Integer: The side, when declared, sets the 'vehicle' on east west resistance civilian. The effect differs according to the 'vehicle' itself. Eg soldiers, versus hospitals or repair trucks that can only be used by same side, if specifically sided.

Well written missions (and configs) use defines at top of file to make this more legible.

#define WEST 0
#define EAST 1
#define CIVILIAN 2
#define NOSIDE 3
etc...
 side = EAST;

simulation

String: The engine behaviour with this #model.

simulation = "SeaGull";// campfire,house, etc

singSound

Array: normally for a bird see #sound...

singSound[] = {"\AddonName\SoundFile.ogg",0.031623,1,1};

showgunneroptics

Boolean:

 showgunneroptics = 0;

sound

NameTokenValueTypes:String : Used by animated objects (campfire eg) to give sound effect.

 sound = "Fire";

sound[]

Complex Array:

 sound[] = {"\anyPbo\AnySound(.wss)",10.000000,1};

sound...

also see #flySound , #singSound

soundCrash

Array:

 soundCrash[] = {"\AnyAddon\AnySound(.wss)",0.010000,1};

soundDammage

Array:

 soundDammage[] = {"\AnyAddon\AnySound(.wss)",0.010000,1};

soundEngine

Array:

 soundEngine[] = {"\AnyAddon\AnySound(.wss)",5.623414,1};

soundEnviron

Array complex.

 soundEnviron[] = {"\AnyAddon\AnySound(.wss)",0.100000,1.000000};

soundGear

Array complex.

soundGear[] = {"\AnyAddon\AnySound(.wss)",0.316228,1};

SoundGetIn

Array:

 SoundGetIn[] = {"\AnyAddon\AnySound(.wss)",0.010000,1};

soundGetOut

Array:

 soundGetOut[] = {"\AnyAddon\AnySound(.wss)",0.010000,1};

soundLandCrash

Array:

 soundLandCrash[] = {"\AnyAddon\AnySound(.wss)",0.010000,1};

soundServo

Array:

 soundServo[] = {"\AnyAddon\AnySound(.wss)",0.100000,1.000000};

soundWaterCrash

Array

 soundWaterCrash[] = {"\AnyAddon\AnySound(.wss)",0.010000,1};

source

String: found in animationSources

   source = "reload";

...Speed

Float: In Kph.

minSpeed = -0.500000; //range 0->1
maxSpeed = 20;

straightDistance

Used in: cfgNonAiVehicles

INTEGER:

straightDistance = 50;

supplyRadius

Float: new In meters. This token-name lets cars (eg) fill from petrol stations (eg) without having to bang into them, or be at 'exact' angles.

 supplyRadius = 2.500000;


T


...Turn

Integer Degrees

  initTurn = 90;
  minTurn= -70;
  maxTurn = 70;

turning

Used in: cfgNonAiVehicles

Boolean: (i think)

turning = 1;

turnCoef

Float:

 turnCoef = 6.0;

terrainCoef

Float:

  terrainCoef = 6.0;

threat

Array: This three element array reperesents the threat this 'vehicle' has to the enemy ai.

The 3 components of the 'threat' are land threat, air threat, sea threat. In the exampe below for a cobra. It is not too dangerous for land 'vehicles' (men and machines) bit deadly against other air vehicles and nasty to boats.

The ai for this model selects targets of opportunity, based on these values.

 threat[] = {0.300000,1,0.800000};

see #type

transport...

transportAmmo

Integer: Used by ammo supply 'vehicles' to determine total amount avaialable for entire mission. Once depleted...

    transportAmmo = 300000;

transportFuel

Integer: Used by refule 'vehicles' to determine total amount avaialable for entire mission. Once depleted...

  transportFuel = 3000;

transportRepair

Integer: Used by repair 'vehicles' to determine total amount avaialable for entire mission. Once depleted...

 transportRepair = 200000000;

transportSoldier

Integer: Number of units this vehicle can carry.

 transportSoldier = 13;

transportMaxMagazines

Integer:

transportMaxMagazines = 150;

transportMaxWeapons

Integer:

 transportMaxWeapons = 30;

typicalCargo

Array: variable strings. Preloads veicle with units (if auto)

 typicalCargo[] = {"Soldier","Soldier","SoldierLAW","SoldierLAW"};


type

Integer: this indicates the threat type of the 'vehicle' in well written configs, the 3 possible values are declared as defines at top of file for legibility

#define LAND 0
#define SEA  1
#define AIR  2
 type = AIR;

see #threat



U

unitInfoType

String

 unitInfoType = "UnitInfoSoldier";

V


viewGunnerInExternal

Boolean: part of Turret class

   viewGunnerInExternal = true;

viewCargoShadow

Boolean:

  viewCargoShadow = true;

viewGunnerShadow

Boolean: part of Turret class

  viewGunnerShadow = true;

vehicleClass

String: Used for Mission Editor basic category selection

 vehicleClass = "Air";


W


weapon

String: found in animationSources

   weapon = "M197";

weapons[]

Array: an array of selectable weaponry for the given 'vehicle'

  weapons[] = {"FFARLauncher","TwinM134"};

wheelCircumference

Float

 wheelCircumference = 4.513000;

wheelSteeringSensitivity

Float

 wheelSteeringSensitivity = 0.500000;