CfgVehicles Config Reference: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "="cpp>" to "="cpp">")
 
(67 intermediate revisions by 11 users not shown)
Line 1: Line 1:
{{Cfg ref|start}}
{{ConfigPage|start}}
==Introduction==
== Introduction ==
<big>TokenName Config.cpp Reference</big>
<big>TokenName Config.cpp Reference</big>


Simply put, Token Name & Value pairs are as follows
Simply put, Token Name & Value pairs are as follows


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
SomeName = SomeValue;
SomeName = SomeValue;
</syntaxhighlight>
</syntaxhighlight>


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


An example is, when creating a model using class statements inside a [[Config.cpp]], to access it later, via the mission editor
An example is, when creating a model using class statements inside a [[Config.cpp]], to access it later, via the mission editor


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
scope=2;
scope=2;
</syntaxhighlight>
</syntaxhighlight>


This article details the token-names specifically available within the '''[[Models & Classnames: CfgVehicles - Vehicles|CfgVehicles]]''' class of a [[Config.cpp]]. The primary focus of this document is the TokenNames used for various aspects of controlling models within '''Addons'''.  
This article details the token-names specifically available within the '''[[Models & Classnames: CfgVehicles - Vehicles|CfgVehicles]]''' class of a [[Config.cpp]]. The primary focus of this document is the TokenNames used for various aspects of controlling models within '''Addons'''.


Unlike a command reference, where one meaning fits all, Token names are '''not''' verbs. The meaning of the name, it's effect, can be different, depending on context. You are advised therefore, that these names, as listed, apply ''only'' to the CfgVehicles class. They may, or may not, have identical meanings (if found), in other classes.
Unlike a command reference, where one meaning fits all, Token names are '''not''' verbs. The meaning of the name, it is effect, can be different, depending on context. You are advised therefore, that these names, as listed, apply ''only'' to the CfgVehicles class. They may, or may not, have identical meanings (if found), in other classes.


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


===TokenTypes===
=== TokenTypes ===
[[TokenNameValueTypes|Integer]]: A signed value that will be held in 4 bytes.


[[TokenNameValueTypes|Boolean]]: An [[TokenNameValueTypes|Integer]] value of 0 or 1. This is a 'convenience type' in humanly readable text. The engine stores it as an integer.
{| class="wikitable"
 
|-
[[TokenNameValueTypes|String]]: Any string value.  
! Token Type !! Description !! Example
 
|-
For elite only (not ArmA, or OFP) ''ALL STRINGS MUST BE ENCLOSED IN QUOTES''.  
| [[TokenNameValueTypes#Integers|Integer]]|| A signed value that will be held in 4 bytes.|| <code style="display: block">token = 1;</code>
 
|-
[[TokenNameValueTypes|Array]]: An array [] = {...}
| [[TokenNameValueTypes#Boolean|Boolean]]|| An [[TokenNameValueTypes#Integers|Integer]] value of 0 or 1. This is a 'convenience type' in humanly readable text. The engine stores it as an integer.<br>For Elite only: '''All strings must be enclosed in quotes'''. || <syntaxhighlight lang="cpp">token = true;</syntaxhighlight>
|-
| [[TokenNameValueTypes#Strings|String]]|| Any string value || <syntaxhighlight lang="cpp">token = "SomeString";</syntaxhighlight>
|-
| [[TokenNameValueTypes#Arrays|Array]]|| An array || <syntaxhighlight lang="cpp">token[] = { ... };</syntaxhighlight>
|-
| Float Array || An array of floats || <syntaxhighlight lang="cpp">token[] = { 0.5, 0.3, 0.05 };</syntaxhighlight>
|-
| String Array|| An array of strings|| <syntaxhighlight lang="cpp">token[] = { "String1", "String2" };</syntaxhighlight>
|-
| Integer Array|| An array of integers|| <syntaxhighlight lang="cpp">token[] = { 0, 1, 2 };</syntaxhighlight>
|-
| Complex Array || A mixture of multiple types, including embedded arrays. || <syntaxhighlight lang="cpp">token[] = { "String", 1, 0.5, true };</syntaxhighlight>
|-
| Variable Array || The number of elements for '''this''' array in '''this''' class model can have a varying number of elements (depending on context)||
|-
|}


float Array: An array of floats only
=== Filenames and Paths ===
 
string Arrray: should be obvious
 
integer Array: ditto
 
Complex Array: A mixture of multiple types, including 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)
 
===Filenames and Paths===
Filenames are case '''in'''sensitive.
Filenames are case '''in'''sensitive.


====Pbo File conventions====
==== Pbo File conventions ====
The root path of the filename is (generally) the name of the pbo
The root path of the filename is (generally) the name of the pbo


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
model= "\anypbofile\'''anywhere'''\....";
model= "\anypbofile\'''anywhere'''\....";
</syntaxhighlight>
</syntaxhighlight>
Line 60: Line 65:
Depending on the file referred to, eg a p3d file for a model, the extension (in this case .p3d) is not required.
Depending on the file referred to, eg a p3d file for a model, the extension (in this case .p3d) is not required.


====p3d files====
==== p3d files ====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
model="\anypbofilename\anyp3d(.p3d)";
model="\anypbofilename\anyp3d(.p3d)";
</syntaxhighlight>
</syntaxhighlight>


====paa/pac====
==== paa/pac ====
wherever these file types are indicated, the default extension is paa
Wherever these file types are indicated, the default extension is paa


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
icon=\somepbo\anyicon(.paa);
icon=\somepbo\anyicon(.paa);
</syntaxhighlight>
</syntaxhighlight>


====jpeg====
==== jpeg ====
jpeg pictures are usable anywhere a pac (or pac) file is indicated. It is never default.
jpeg pictures are usable anywhere a pac (or pac) file is indicated. It is never default.


<u>Exception</u>: Operation Flashpoint Elite specifically, cannot handle jpg.
<u>Exception</u>: Operation Flashpoint: Elite specifically, cannot handle jpg.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
picture="\AnyPbo\AnyPicture.jpg";
picture="\AnyPbo\AnyPicture.jpg";
</syntaxhighlight>
</syntaxhighlight>


====Sound files====
==== Sound files ====
wss is the default extension if not declared.
wss is the default extension if not declared.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
sound="\AnyPbo\AnySoundFolder\AnySound(.wss)";
sound="\AnyPbo\AnySoundFolder\AnySound(.wss)";
</syntaxhighlight>
</syntaxhighlight>
Line 90: Line 95:
Otherwise use Ogg Vorbis format (extension .ogg).
Otherwise use Ogg Vorbis format (extension .ogg).


===Vehicle vs 'Vehicle'===
=== Vehicle vs 'Vehicle' ===
In this document. a vehicle, is a true vehicle of some kind. Be it a tank, or a car.
In this document. a vehicle, is a true vehicle of some kind. Be it a tank, or a car.


A 'vehicle' on the other hand covers cfgVehicles as defined in a config.cpp which would include '''men''' or '''buildings''', since ofp considers them ''all'' to be 'vehicles'
A 'vehicle' on the other hand covers cfgVehicles as defined in a config.cpp which would include '''men''' or '''buildings''', since {{ofp}} considers them ''all'' to be 'vehicles'


===Config.bin vs Config.cpp===
=== Config.bin vs Config.cpp ===
<u>By convention only</u>, [[Config.cpp|config.'''cpp''']] is the humanly readable text equivalent of [[Config.bin|config.'''bin''']].
<u>By convention only</u>, [[Config.cpp|config.'''cpp''']] is the humanly readable text equivalent of [[Config.bin|config.'''bin''']].


Line 104: Line 109:
While unusual to have both, it is common for an addon, eg a pbo, to have '''both''' inside where the config.cpp is a 'work in progress' that might later be 'binarised' to raP, and the cpp removed.
While unusual to have both, it is common for an addon, eg a pbo, to have '''both''' inside where the config.cpp is a 'work in progress' that might later be 'binarised' to raP, and the cpp removed.


===raP files===
=== raP files ===
So-called 'binarised' or 'binary' files are encoded in [[raP File Format - Elite | raP file format]]. They are not in the conventional sense a "binary"&mdash;machine readable code or data&mdash;but rather a more convenient encoded form of the text file (from the engine's perspective). They represent the stripping out of comments and extraneous crud, with bells on. For example, save files are raP encoded, just like config.bin is.
So-called 'binarised' or 'binary' files are encoded in [[raP File Format - Elite | raP file format]]. They are not in the conventional sense a "binary"&mdash;machine readable code or data&mdash;but rather a more convenient encoded form of the text file (from the engine's perspective). They represent the stripping out of comments and extraneous crud, with bells on. For example, save files are raP encoded, just like config.bin is.


Line 111: Line 116:
The engine unconditionally converts text files to raP encoding before it uses it further. This (obviously) slows game or mission loading and (less obviously) is a source of 'undocumented features'. Prior to finishing your addon, it is a Good Idea&trade; to 'binarise' the config into raP encoding and rename the cpp file to .txt for documentation purposes.
The engine unconditionally converts text files to raP encoding before it uses it further. This (obviously) slows game or mission loading and (less obviously) is a source of 'undocumented features'. Prior to finishing your addon, it is a Good Idea&trade; to 'binarise' the config into raP encoding and rename the cpp file to .txt for documentation purposes.


==Alphabetical Order==
== Alphabetical Order ==
{{Cfg ref|abc}}
{{ConfigPage|abc}}
===A===
=== A ===
====...Action====
==== ...Action ====
[[TokenNameValueTypes|String]] : defaults ManActCargo
[[TokenNameValueTypes#Strings|String]] : defaults ManActCargo


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
commanderAction = "ManActM60CommanderOut";
commanderAction = "ManActM60CommanderOut";
driverAction = "ManActShipDriver";
driverAction = "ManActShipDriver";
gunnerAction = "ManActJeepGunner";
gunnerAction = "ManActJeepGunner";
commanderInAction = "ManActTestDriver";  
commanderInAction = "ManActTestDriver";
driverInAction = "ManActM113Driver";
driverInAction = "ManActM113Driver";
gunnerInAction = "ManActM1A1Gunner";
gunnerInAction = "ManActM1A1Gunner";
getInAction = ManActGetInTank; // default
getInAction = ManActGetInTank; // default
getOutAction = ManActGetOutTank; // default
getOutAction = ManActGetOutTank; // default
</syntaxhighlight>
</syntaxhighlight>


=====cargoAction=====
===== cargoAction =====
Variable String [[TokenNameValueTypes|Array]]: default {ManActCargo}
Variable String [[TokenNameValueTypes#Arrays|Array]]: default {ManActCargo}


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
cargoAction[] = {"ManActM113Medic", "ManActM113Medic", "ManActM113Injured"};
cargoAction[] = { "ManActM113Medic", "ManActM113Medic", "ManActM113Injured" };
</syntaxhighlight>
</syntaxhighlight>


Line 141: Line 146:
see [[#cargoIsCoDriver]]
see [[#cargoIsCoDriver]]


====...AngleX/Y====
==== ...AngleX/Y ====
[[TokenNameValueTypes|Float]] Degrees
[[TokenNameValueTypes#Floats|Float]] Degrees


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
initAngleX = 0;
initAngleX = 0;
minAngleX = -30;
minAngleX = -30;
Line 150: Line 155:
</syntaxhighlight>
</syntaxhighlight>


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
initAngleY = 0;
initAngleY = 0;
minAngleY = -100;
minAngleY = -100;
Line 156: Line 161:
</syntaxhighlight>
</syntaxhighlight>


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
initFov = 0.700000;
initFov = 0.700000;
minFov = 0.420000;
minFov = 0.420000;
Line 164: Line 169:
used by car.ViewPilot class
used by car.ViewPilot class


====angle====
==== angle ====
[[TokenNameValueTypes|Float]]: Degrees
[[TokenNameValueTypes#Floats|Float]]: Degrees


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
angle = -240;
angle = -240;
</syntaxhighlight>
</syntaxhighlight>
Line 173: Line 178:
see [[#Indicator... Class]] Or [[#Hatch... Class]]
see [[#Indicator... Class]] Or [[#Hatch... Class]]


====access====
==== access ====
[[TokenNameValueTypes|Integer]]: Determines the manipulability of the class.
[[TokenNameValueTypes#Integers|Integer]]: Determines the manipulability of the class.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
access=1;
access=1;
</syntaxhighlight>
</syntaxhighlight>
Line 187: Line 192:
All ''BIS'' classes are '''ReadOnlyVerified''' and can only be inherited into a new class
All ''BIS'' classes are '''ReadOnlyVerified''' and can only be inherited into a new class


====accuracy====
==== accuracy ====
[[TokenNameValueTypes|Float]]: Default value = 0.02.
[[TokenNameValueTypes#Floats|Float]]: Default value = 0.02.


Determines how easy an object is to identify. Smaller values are easier to detect.
Determines how easy an object is to identify. Smaller values are easier to detect.


Typically, buildings are 0.2, vehicles, 0.5  
Typically, buildings are 0.2, vehicles, 0.5


'''A value of 1000 causes the underlying class to be identified instead.''' Eg bushy trees, pink trees and yellow trees, can all be 'identified' as "trees". The description "bushy trees" is then used solely when Editing. See [[#VehicleClass]]
'''A value of 1000 causes the underlying class to be identified instead.''' Eg bushy trees, pink trees and yellow trees, can all be 'identified' as "trees". The description "bushy trees" is then used solely when Editing. See [[#VehicleClass]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
accuracy = 0.2; // buildings
accuracy = 0.2; // buildings
accuracy = 0.5; // small vehicles
accuracy = 0.5; // small vehicles
Line 214: Line 219:
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]


====acceleration====
==== acceleration ====
[[TokenNameValueTypes|Float]]: metres per second
[[TokenNameValueTypes#Floats|Float]]: metres per second


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
acceleration = 7;
acceleration = 7;
</syntaxhighlight>
</syntaxhighlight>


====airFriction====
==== airFriction ====
[[TokenNameValueTypes|Array]]: 3 separate tokens, airFriction0[], airFriction1[], airFriction2[] that define the X Y and Z component respectively.
[[TokenNameValueTypes#Arrays|Array]]: 3 separate tokens, airFriction0[], airFriction1[], airFriction2[] that define the X Y and Z component respectively.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
airFriction2[] = {25, 12, 2.500000};
airFriction2[] = { 25, 12, 2.500000 };
</syntaxhighlight>
</syntaxhighlight>


====airFrictionCoefs...====
==== airFrictionCoefs... ====
[[TokenNameValueTypes|Array]]: tokens for defining the friction behaviour of planes, introduced with Arma 3 Jets DLC. They define the airfriction for planes with simulation = "PlaneX". Untested if applicable to other objects as well.  The values in each array define the X, Y and Z coefficients respectively. The friction force in a certain axis is calculated ingame by F_friction = v * abs( v ) * airFrictionCoefs2+ v * airFrictionCoefs1+ (sign of v) * airFrictionCoefs0;  where "v" is the speed of the plane in that particular axis.
[[TokenNameValueTypes#Arrays|Array]]: tokens for defining the friction behaviour of planes, introduced with Arma 3 Jets DLC. They define the airfriction for planes with simulation = "PlaneX". Untested if applicable to other objects as well.  The values in each array define the X, Y and Z coefficients respectively. The friction force in a certain axis is calculated ingame by F_friction = v * abs( v ) * airFrictionCoefs2+ v * airFrictionCoefs1+ (sign of v) * airFrictionCoefs0;  where "v" is the speed of the plane in that particular axis.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
airFrictionCoefs2[] = { 0.00100, 0.00050, 0.00006};
airFrictionCoefs2[] = { 0.00100, 0.00050, 0.00006};
airFrictionCoefs1[] = { 0.100, 0.050, 0.006 };
airFrictionCoefs1[] = { 0.100, 0.050, 0.006 };
Line 237: Line 242:
</syntaxhighlight>
</syntaxhighlight>


====ambient====
==== ambient ====
Float [[TokenNameValueTypes|Array]]:
Float [[TokenNameValueTypes#Arrays|Array]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
ambient[] = {0.07, 0.07, 0.07, 1.0};
ambient[] = { 0.07, 0.07, 0.07, 1.0 };
</syntaxhighlight>
</syntaxhighlight>


See [[#Reflectors Class]], [[#Light Class]], [[#CargoLight Class]]
See [[#Reflectors Class]], [[#Light Class]], [[#CargoLight Class]]


====animated====
==== animated ====
[[TokenNameValueTypes|Boolean]] : Default Value true
[[TokenNameValueTypes#Boolean|Boolean]] : Default Value true


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


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
animated = false;
animated = false;
</syntaxhighlight>
</syntaxhighlight>
Line 261: Line 266:
see animations class
see animations class


====animPeriod====
==== animPeriod ====
[[TokenNameValueTypes|float]]: Seconds.  
[[TokenNameValueTypes#Floats|Float]]: Seconds.


This TokenName is generally used inside AnimationSources class (ArmA only). It's use in OFP:R is as follows
This TokenName is generally used inside AnimationSources class (ArmA only). It's use in OFP:R is as follows


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
animPeriod = 1.33; // a fountain
animPeriod = 1.33; // a fountain
</syntaxhighlight>
</syntaxhighlight>


====animation...====
==== animation... ====
[[TokenNameValueTypes|String]]: These animation strings point to rtm files to create the movement.
[[TokenNameValueTypes#Strings|String]]: These animation strings point to rtm files to create the movement.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
animationFlag = "\AnyAddon\AnyRTM(.rtm)"; // to wiggle flag in wind
animationFlag = "\AnyAddon\AnyRTM(.rtm)"; // to wiggle flag in wind
animationOpen = "\AnyAddon\AnyRTM(.rtm)"; // to open or close doors (eg)
animationOpen = "\AnyAddon\AnyRTM(.rtm)"; // to open or close doors (eg)
Line 279: Line 284:
</syntaxhighlight>
</syntaxhighlight>


====animationSource...====
==== animationList[] ====
[[TokenNameValueTypes|String]]
[[TokenNameValueTypes#Arrays|Array]] format [<nowiki/>[[TokenNameValueTypes#Strings|String]], [[TokenNameValueTypes#Floats|Float]]<nowiki/>]
 
(possibly introduced in {{GVI|arma3|1.24|size= 0.75}} when other randomisation features were added)
 
Array of animation sources to randomize the vehicle with similar to facewear/headgear randomization for characters (See {{Link|Arma 3: Characters And Gear Encoding Guide#FIA headgear and facewear randomization}}; format is:
 
<syntaxhighlight lang="cpp">
animationList[] = { "animation1", weight1, "animation2", weight2, etc. };
</syntaxhighlight>


<syntaxhighlight lang="c">
Animations must be classes from the vehicle's AnimationSources. If all the weights are the same value, it functions as straight equal randomisation.
 
Example:
<syntaxhighlight lang="cpp">
class MyAPC : B_APC_Wheeled_01_cannon_F
{
animationList[] = {
"showBags", 0,
"showCamonetHull", 0.5,
"showCamonetCannon", 0.75,
"showCamonetTurret", 1,
"showSLATHull", 1,
"showSLATTurret", 1
};
};
</syntaxhighlight>
 
==== animationSource... ====
[[TokenNameValueTypes#Strings|String]]
 
<syntaxhighlight lang="cpp">
animationSourceBody = "Turret_2";
animationSourceBody = "Turret_2";
animationSourceGun = "Gun_2";
animationSourceGun = "Gun_2";
animationSourceHatch = "hatchCommander";
animationSourceHatch = "hatchCommander";
animationSourceElevation = ""; //new in A3
animationSourceElevation = ""; // new in Arma 3
animationSourceCamElevation =""; //new in A3
animationSourceCamElevation =""; // new in Arma 3
</syntaxhighlight>
</syntaxhighlight>


====armor (integer)====
==== armor (integer) ====
[[TokenNameValueTypes|Float]]: A strength value of the object, how much external damage can be taken before 'destruction'. It is calculated together with object volume size! (bounding sphere calculated in geometry) Below are general ranges to give some idea.
[[TokenNameValueTypes#Floats|Float]]: A strength value of the object, how much external damage can be taken before 'destruction'. It is calculated together with object volume size! (bounding sphere calculated in geometry) Below are general ranges to give some idea.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
approx strength = (0.27/tgtRadius)^2 / armorInConfig
approx strength = (0.27/tgtRadius)^2 / armorInConfig


armor = 3; // man
armor = 3; // man
armor = 10; // motorcycle
armor = 10; // motorcycle
armor = 20; // a small car  
armor = 20; // a small car
armor = 15..60; // aircraft
armor = 15..60; // aircraft
armor = 150; // buildings
armor = 150; // buildings
Line 315: Line 348:
3 bullets 50
3 bullets 50


====armor (float)====
==== armor (float) ====
[[TokenNameValueTypes|Float]]: The floating version of armor type is only used in Hit... classes, eg HitTurret HitBody
[[TokenNameValueTypes#Floats|Float]]: The floating version of armor type is only used in Hit... classes, eg HitTurret HitBody


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
armor = 1.4; // a bee
armor = 1.4; // a bee
armor = 0.8; // a turret
armor = 0.8; // a turret
Line 325: Line 358:
<u>Related TokenNames</u>: [[#armor (float)]], [[#material]], [[#name]], [[#passThrough]]
<u>Related TokenNames</u>: [[#armor (float)]], [[#material]], [[#name]], [[#passThrough]]


====armor...====
==== armor... ====
[[TokenNameValueTypes|Float]]:
[[TokenNameValueTypes#Floats|Float]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
// for vehicles general
// for vehicles general
armorStructural= 1; // ranges between 1 and 4.0, default 1
armorStructural= 1; // ranges between 1 and 4.0, default 1
Line 355: Line 388:
</syntaxhighlight>
</syntaxhighlight>


====attendant====
==== assembleInfo ====
[[TokenNameValueTypes|Boolean]]: Default false
Used for both vehicles that can be diassembled and backpacks that are assembled into vehicles (static guns, drones, etc.)
 
Class values for backpacks, primary part:
<syntaxhighlight lang="cpp">
class assembleInfo
{
assembleTo = "I_G_HMG_02_high_F"; // Backpack assembles into this vehicle
primary = 1; // This backpack is main part, when assembly is done, its "assembleTo" class will be used for created vehicle
base[] = { "B_HMG_02_support_high_F", "O_HMG_02_support_high_F" , "I_HMG_02_support_high_F" }; // And requires these entities as second part (tripod), can be any number of classnames
displayName = "Static MG"; // String that will be shown in "Assemble X" mouse wheel menu action
dissasembleTo[] = {}; // Backpacks are not disassembled futher, but empty array is required here anyways
};
</syntaxhighlight>
 
Second part (tripod) only needs <syntaxhighlight lang="cpp" inline>primary = 0;</syntaxhighlight>:
<syntaxhighlight lang="cpp">
class assembleInfo
{
assembleTo = "";
primary = 0;
base = "";
displayName = "";
dissasembleTo[] = {};
};
</syntaxhighlight>
 
If no second part is needed for assembly, primary backpack's "base" have to be empty string: <syntaxhighlight lang="cpp" inline>base = "";</syntaxhighlight>
 
Vehicles disassembly info:
<syntaxhighlight lang="cpp">
class assembleInfo
{
assembleTo = "";
primary = 0;
base = "";
displayName = "";
dissasembleTo[] = { "B_HMG_02_high_weapon_F", "B_HMG_02_support_high_F" }; // Vehicle will be disassembled into these backpacks. Max 2 allowed.
};
</syntaxhighlight>
Note the typo in "dissasembleTo" property, engine expects it like this. Empty values have to be provided to avoid missing config values errors.
 
Note: Vehicle keeps track which second part (tripod) was used when it was assembled and its used again when you disassemble it back.
 
==== attendant ====
[[TokenNameValueTypes#Boolean|Boolean]]: Default false


Used for 'vehicles' to repair other 'vehicles'. Thus a hospital has an attendant that can repair soldiers. Adds the action "Heal at XXX"
Used for 'vehicles' to repair other 'vehicles'. Thus a hospital has an attendant that can repair soldiers. Adds the action "Heal at XXX"


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
attendant = true;
attendant = true;
</syntaxhighlight>
</syntaxhighlight>
Line 366: Line 443:
<u>Related TokenNames</u>: [[#hiddenSelections]]
<u>Related TokenNames</u>: [[#hiddenSelections]]


====audible====
==== audible ====
[[TokenNameValueTypes|float]]: Default Value 1
[[TokenNameValueTypes#Floats|Float]]: Default Value 1


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
audible = .05; // man
audible = .05; // man
audible = 3; // motorcycle
audible = 3; // motorcycle
Line 379: Line 456:
see [[#camouflage]]
see [[#camouflage]]


====autocenter====
==== autocenter ====
[[TokenNameValueTypes|Boolean]]: Default true
[[TokenNameValueTypes#Boolean|Boolean]]: Default true


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
autocenter = false; // man
autocenter = false; // man
</syntaxhighlight>
</syntaxhighlight>


====axis====
==== axis ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
axis = osa_poklop_driver;
axis = "osa_poklop_driver";
</syntaxhighlight>
</syntaxhighlight>


see [[#Indicator... Class]] Or [[#Hatch... Class]], [[#hour|IndicatorWatch Class]]
see [[#Indicator... Class]] Or [[#Hatch... Class]], [[#hour|IndicatorWatch Class]]


===B===
=== B ===
====body====
==== body ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
body = "mainTurret";
body = "mainTurret";
</syntaxhighlight>
</syntaxhighlight>
Line 405: Line 482:
see [[#Turret Class]]
see [[#Turret Class]]


====brakeDistance====
==== brakeDistance ====
[[TokenNameValueTypes|Float]]: default 5 meters per sec
[[TokenNameValueTypes#Floats|Float]]: default 5 meters per sec


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
brakeDistance = 1; // man
brakeDistance = 1; // man
brakeDistance = 14; // tank
brakeDistance = 14; // tank
Line 415: Line 492:
</syntaxhighlight>
</syntaxhighlight>


====bounding====
==== bounding ====
[[TokenNameValueTypes|String]]: Memorypoint for Bounding point. Exact purpose unknown. Defined for base class of Tanks. Default memorypoint is the tip of the tank's barrel (usti hlavne).
[[TokenNameValueTypes#Strings|String]]: Memorypoint which extends vehicle bounding box depending on position of this point. Defined for base class of Tanks. Default memorypoint is the tip of the tank's barrel (usti hlavne) - this means that when tank is pointing to the left, its bounding box is extended. You can observe bounding box extending in i.e. Zeus.
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
bounding = "usti hlavne";
bounding = "usti hlavne";
</syntaxhighlight>
</syntaxhighlight>


====brightness====
==== brightness ====
[[TokenNameValueTypes|Float]]:
[[TokenNameValueTypes#Floats|Float]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
brightness = 1.0;
brightness = 1.0;
</syntaxhighlight>
</syntaxhighlight>
Line 430: Line 507:
See [[#Reflectors Class]], [[#Light Class]], [[#CargoLight Class]]
See [[#Reflectors Class]], [[#Light Class]], [[#CargoLight Class]]


===C===
=== C ===
====...CanSee====
==== ...CanSee ====
[[TokenNameValueTypes|Integer]]  
[[TokenNameValueTypes#Integers|Integer]]


Used to describe which sensory inputs are available to which crew members.  
Used to describe which sensory inputs are available to which crew members.


{| class="bikitable"
{| class="wikitable"
! Numeric value !! CanSee.. define !! Description
! Numeric value !! CanSee.. define !! Description
|-
|-
Line 454: Line 531:
Multiple values can be added (or binary ored, giving the same result) together.
Multiple values can be added (or binary ored, giving the same result) together.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
commanderCanSee = 31; // default
commanderCanSee = 31; // default
gunnerCanSee = 4+8+16; // default
gunnerCanSee = 4 + 8 + 16; // default
driverCanSee = 2+8+16; // default
driverCanSee = 2 + 8 + 16; // default
</syntaxhighlight>
</syntaxhighlight>


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
#define CanSeeRadar 1
#define CanSeeRadar 1
#define CanSeeEye 2
#define CanSeeEye 2
#define CanSeeOptics 4
#define CanSeeOptics 4
#define CanSeeEar 8
#define CanSeeEar 8
#define CanSeeCompass 16
#define CanSeeCompass 16
#define CanSeeAll 31
#define CanSeeAll 31
#define CanSeePeripheral 32
#define CanSeePeripheral 32
#define CanSeeRadarC CanSeeRadar+CanSeeCompass
#define CanSeeRadarC CanSeeRadar + CanSeeCompass
</syntaxhighlight>
</syntaxhighlight>


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
commanderCanSee = CanSeeAll;
commanderCanSee = CanSeeAll;
gunnerCanSee = CanSeeOptics+CanSeeEar+CanSeeCompass;
gunnerCanSee = CanSeeOptics + CanSeeEar + CanSeeCompass;
driverCanSee = CanSeeEye+CanSeeEar+CanSeeCompass;
driverCanSee = CanSeeEye + CanSeeEar + CanSeeCompass;
</syntaxhighlight>
</syntaxhighlight>


====...CargoAngleY====
==== ...CargoAngleY ====
[[TokenNameValueTypes|Float]] Degrees
[[TokenNameValueTypes#Floats|Float]] Degrees


Found within vehicle classes.
Found within vehicle classes.
Line 484: Line 561:
Orientation of the man sitting in the cargo space.
Orientation of the man sitting in the cargo space.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
initCargoAngleY = 185; // Truck5t
initCargoAngleY = 185; // Truck5t
initCargoAngleY = 90; // M113
initCargoAngleY = 90; // M113
</syntaxhighlight>
</syntaxhighlight>


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
initCargoAngleY = 10; // UH60
initCargoAngleY = 10; // UH60
minCargoAngleY = -60;
minCargoAngleY = -60;
Line 495: Line 572:
</syntaxhighlight>
</syntaxhighlight>


====camouflage====
==== camouflage ====
[[TokenNameValueTypes|Float]]: Default Value = 2.
[[TokenNameValueTypes#Floats|Float]]: Default Value = 2.


how difficult to spot. bigger = easier
how difficult to spot. bigger = easier


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
camouflage = 0.6; // snipers
camouflage = 0.6; // snipers
camouflage = 1; // man
camouflage = 1; // man
Line 516: Line 593:
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]


====can...====
==== can... ====
=====canBeShot=====
===== canBeShot =====
[[TokenNameValueTypes|Boolean]]: Declares whether bullets have any effect
[[TokenNameValueTypes#Boolean|Boolean]]: Declares whether bullets have any effect


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
canBeShot = true;
canBeShot = true;
</syntaxhighlight>
</syntaxhighlight>


=====canDeactivateMines=====
===== canDeactivateMines =====
[[TokenNameValueTypes|Boolean]]: Default false
[[TokenNameValueTypes#Boolean|Boolean]]: Default false


part of the man class.
part of the man class.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
canDeactivateMines= true; // SoldierEngineer
canDeactivateMines= true; // SoldierEngineer
</syntaxhighlight>
</syntaxhighlight>


=====canFloat=====
===== canFloat =====
[[TokenNameValueTypes|Boolean]]: Default value: false
[[TokenNameValueTypes#Boolean|Boolean]]: Default value: false


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


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
canFloat = true;
canFloat = true;
</syntaxhighlight>
</syntaxhighlight>


=====canHideBodies=====
===== canHideBodies =====
[[TokenNameValueTypes|Boolean]]: Default false
[[TokenNameValueTypes#Boolean|Boolean]]: Default false


part of the man class.
part of the man class.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
canHideBodies = true; // SoldierWSaboteur
canHideBodies = true; // SoldierWSaboteur
</syntaxhighlight>
</syntaxhighlight>


====cargoIsCoDriver====
==== cargoIsCoDriver ====
Variable [[TokenNameValueTypes|Boolean]] [[TokenNameValueTypes|Array]] : Default {false};
Variable [[TokenNameValueTypes#Boolean|Boolean]] [[TokenNameValueTypes#Arrays|Array]] : Default {false};


This token declares which (if any) cargo positions are 'in the front' (Ie front windscreen)
This token declares which (if any) cargo positions are 'in the front' (Ie front windscreen)


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
cargoIsCoDriver[] = {true, true, false}; // 1st two passenger positions for a 5T truck
cargoIsCoDriver[] = { true, true, false }; // 1st two passenger positions for a 5T truck
</syntaxhighlight>
</syntaxhighlight>


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


====cast...Shadow====
{{ArgTitle|4|cargoReversedGetOut|{{GVI|arma3|2.04}}}}
[[TokenNameValueTypes|Boolean]]: Default false
[[TokenNameValueTypes#Arrays|Array]]
'''Description:''' Settings this to 0 will force the unit to face the vehicle when getting out of a vehicle. 1 is the default behaviour where the facing direction is opposit of the get in direction.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
cargoReversedGetOut[] = { 0 };
</syntaxhighlight>
 
==== cast...Shadow ====
[[TokenNameValueTypes#Boolean|Boolean]]: Default false
 
<syntaxhighlight lang="cpp">
castCargoShadow = false;
castCargoShadow = false;
castCommanderShadow = false;  
castCommanderShadow = false;
castDriverShadow = false;
castDriverShadow = false;
castGunnerShadow = true;
castGunnerShadow = true;
Line 574: Line 659:
Normally used to shadow 'soldiers' standing up in vehicle objects, such as the MG Jeep and Machine Guns.
Normally used to shadow 'soldiers' standing up in vehicle objects, such as the MG Jeep and Machine Guns.


====Classes Embedded====
==== Classes Embedded ====
see [[#Embedded ClassNames]]
see [[#Embedded ClassNames]]


====cloud...====
==== cloud... ====
Various([[TokenNameValueTypes|Strings]], [[TokenNameValueTypes|Floats]], [[TokenNameValueTypes|Arrays]])
Various([[TokenNameValueTypes|Strings]], [[TokenNameValueTypes|Floats]], [[TokenNameValueTypes|Arrays]])


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
cloudletDuration = 0.9;
cloudletDuration = 0.9;
cloudletAnimPeriod = 1.0;
cloudletAnimPeriod = 1.0;
Line 592: Line 677:
cloudletMaxYSpeed = 1.5;
cloudletMaxYSpeed = 1.5;
cloudletShape = "\ca\data\cl_basic";
cloudletShape = "\ca\data\cl_basic";
cloudletColor[] = {1, 1, 1, 0};
cloudletColor[] = { 1, 1, 1, 0 };
</syntaxhighlight>
</syntaxhighlight>


See [[#Smoke Class]]
See [[#Smoke Class]]


====cobraLight====
==== cobraLight ====
[[TokenNameValueTypes|String]] : Used as a core model for all other 'air' craft.
[[TokenNameValueTypes#Strings|String]] : Used as a core model for all other 'air' craft.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
cobraLight = "AnyAddon\AnyP3d(.p3d)";
cobraLight = "AnyAddon\AnyP3d(.p3d)";
</syntaxhighlight>
</syntaxhighlight>


====coefInside...====
==== coefInside... ====
[[TokenNameValueTypes|Float]]:
[[TokenNameValueTypes#Floats|Float]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
coefInside = 2; // cost for movement inside buildings
coefInside = 2; // cost for movement inside buildings
coefInsideHeur = 4.3; // estimation of cost based on in/out points
coefInsideHeur = 4.3; // estimation of cost based on in/out points
Line 615: Line 700:
Used by the static class for non moving objects such as buildings
Used by the static class for non moving objects such as buildings


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
coefInside = 1; // forest
coefInside = 1; // forest
coefInsideHeur = 0.25;
coefInsideHeur = 0.25;
</syntaxhighlight>
</syntaxhighlight>


====collisionLight====
==== collisionLight ====
Float [[TokenNameValueTypes|Boolean]]: Default: false.  
Float [[TokenNameValueTypes#Boolean|Boolean]]: Default: false.


Default state of collision lights
Default state of collision lights


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
collisionLight = true; //spawn vehicle with collision lights on
collisionLight = true; // spawn vehicle with collision lights on
</syntaxhighlight>
</syntaxhighlight>


====color====
==== color ====
Float [[TokenNameValueTypes|Array]]: of floats.  
Float [[TokenNameValueTypes#Arrays|Array]]: of floats.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
color[] = {0.8, 0.8, 1.0, 1.0};
color[] = { 0.8, 0.8, 1.0, 1.0 };
</syntaxhighlight>
</syntaxhighlight>


Line 640: Line 725:
See [[#Reflectors Class]], [[#Light Class]], [[#CargoLight Class]], [[#Smoke Class]]
See [[#Reflectors Class]], [[#Light Class]], [[#CargoLight Class]], [[#Smoke Class]]


====commanding====
==== commanding ====
[[TokenNameValueTypes|Integer]]: part of Turret class
[[TokenNameValueTypes#Integers|Integer]]: part of Turret class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
commanding = -1;
commanding = -1;
</syntaxhighlight>
</syntaxhighlight>


====cost====
==== cost ====
[[TokenNameValueTypes|Float]]: Default Value 50,0000
[[TokenNameValueTypes#Floats|Float]]: Default Value 50.0000


This value reflects the attractiveness of the target to the enemy 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 (while small) a higher cost, than others in the group, including the officer.
This value reflects the attractiveness of the target to the enemy AI. When ''all other considerations are equal''.
A soldier eg is not interested in Air, despite it is highly attractive cost values.
On the other hand, he is interested in a medic, since a medic (in normal configs) has a (while small) a higher cost, than others in the group, including the officer.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
cost = 10000000; // an air vehicle is typically this value
cost = 10000000; // an air vehicle is typically this value
cost = 8; // a medic;
cost = 8; // a medic;
Line 662: Line 749:
<u>Related TokenNames</u>: [[#type (threat)|type]], [[#cost]], [[#threat]]
<u>Related TokenNames</u>: [[#type (threat)|type]], [[#cost]], [[#threat]]


====count====
==== count ====
[[TokenNameValueTypes|String or Integer]]: (math formula).
[[TokenNameValueTypes|String or Integer]]: (math formula).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
weapon = M60;
weapon = "M60";
count = "30*1";
count = "30 * 1"; // or 'count = 30 * 1;'
</syntaxhighlight>
</syntaxhighlight>


this token is always associated in a weapon or magazine couplet, inside a TransportWeapons, or  
this token is always associated in a weapon or magazine couplet, inside a TransportWeapons, or
TransportMagazines class.
TransportMagazines class.


The value is mostly represented as a string as above (a math formula), or it can be (unusually)
The value is mostly represented as a string as above (a math formula), or it can be (unusually)


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
count = 2;
count = 2;
</syntaxhighlight>
</syntaxhighlight>
Line 681: Line 768:
See [[TokenNameValueTypes|At the End of the Day]] in the TokenNameValueTypes page for an explanation how this duality is possible.
See [[TokenNameValueTypes|At the End of the Day]] in the TokenNameValueTypes page for an explanation how this duality is possible.


====crew====
==== crew ====
[[TokenNameValueTypes|String]]: Default Civilian
[[TokenNameValueTypes#Strings|String]]: Default Civilian


Reflects whether vehicle is manned, and what with.
Reflects whether vehicle is manned, and what with.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
crew = <ClassName>
crew = <ClassName>
crew = "SoldierWPilot";
crew = "SoldierWPilot";
Line 692: Line 779:


'SoldierWPilot' is a class declared in same file.
'SoldierWPilot' is a class declared in same file.
====crewCrashProtection====
==== crewCrashProtection ====
[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes#Floats|Float]]


Multiplier of damage to crew of the vehicle.  Lower number means better protection.
Multiplier of damage to crew of the vehicle.  Lower number means better protection.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
crewCrashProtection = 0.05;
crewCrashProtection = 0.05;
</syntaxhighlight>
</syntaxhighlight>


===D===
=== D ===
====dammage...====
==== {{sic|dammage|damage}}... ====
Variable String [[TokenNameValueTypes|Array]]:
Variable String [[TokenNameValueTypes#Arrays|Array]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
dammageHalf[] = {"\AnyAddon\AnyPAA.paa", "\AnyAddon\AnyOtherPAA.paa", ...};
dammageHalf[] = { "\AnyAddon\AnyPAA.paa", "\AnyAddon\AnyOtherPAA.paa", ... };
dammageFull[] = {"\AnyAddon\AnyPAA.paa", "\AnyAddon\AnyOtherPAA.paa", ...};
dammageFull[] = { "\AnyAddon\AnyPAA.paa", "\AnyAddon\AnyOtherPAA.paa", ... };
</syntaxhighlight>
</syntaxhighlight>


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


=====damageResistance=====
{{ArgTitle|5|damageResistance|{{GVI|arma1|1.00}}}}
Since ArmA 1.00
Only for AI, to know when to shoot and when not.
Only for AI, to know when to shoot and when not.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
damageResistance = 0.004;
damageResistance = 0.004;
</syntaxhighlight>
</syntaxhighlight>


You can calculate it from vehicle armor and hit value of weapon that should be able to harm the vehicle. tgtRadius is radius of virtual bounding sphere calculated in vehicle geometry. [[CfgVehicles_Config_Reference#armor_.28integer.29]]
It can be calculated from vehicle armor and hit value of weapon that should be able to harm the vehicle. tgtRadius is radius of virtual bounding sphere calculated in vehicle geometry. [[CfgVehicles_Config_Reference#armor_.28integer.29]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
damageResistance = (HIT*HIT)/Armor*((0.27/tgtRadius)*(0.27/tgtRadius))
damageResistance = (HIT*HIT)/Armor*((0.27/tgtRadius)*(0.27/tgtRadius))
</syntaxhighlight>
</syntaxhighlight>


 
==== driveThroughEnabled ====
====driveThroughEnabled====
Determines if AI can decide to go through the object. This parameter skips regular mass checking if object can smashed through
Determines if AI can decide to go through the object. This parameter skips regular mass checking if object can smashed through


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
driveThroughEnabled = 1; // test parameter for AI knowing they can drive through the object
driveThroughEnabled = 1; // test parameter for AI knowing they can drive through the object
</syntaxhighlight>
</syntaxhighlight>


====damper...====
==== damper... ====
[[TokenNameValueTypes|Float]]:
[[TokenNameValueTypes#Floats|Float]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
damperSize = 0.1; // default
damperSize = 0.1; // default
damperForce = 3; // default
damperForce = 3; // default
</syntaxhighlight>
</syntaxhighlight>


====deltaT====
==== deltaT ====
[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes#Floats|Float]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
deltaT = -500;
deltaT = -500;
</syntaxhighlight>
</syntaxhighlight>
Line 751: Line 836:
See [[#Smoke Class]]
See [[#Smoke Class]]


====density====
==== density ====
[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes#Floats|Float]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
density = 0.5;
density = 0.5;
</syntaxhighlight>
</syntaxhighlight>
Line 760: Line 845:
See [[#Smoke Class]]
See [[#Smoke Class]]


====destrType====
==== destrType ====
[[TokenNameValueTypes|String]]: Default Value = DestructDefault
[[TokenNameValueTypes#Strings|String]]: Default Value = "DestructDefault"


Used for animation, sound, and final 'look' of vehicle.
Used for animation, sound, and final 'look' of vehicle.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
destrType = "DestructNo"; // nothing happens
destrType = "DestructNo"; // nothing happens
destrType = "DestructBuilding"; // smoke. explosion
destrType = "DestructBuilding"; // smoke. explosion
Line 772: Line 857:
destrType = "DestructTent"; // smoke, crushing, flattens
destrType = "DestructTent"; // smoke, crushing, flattens
destrType = "DestructMan";
destrType = "DestructMan";
destrType = "DestructDefault"; // =building
destrType = "DestructDefault"; // = building
destrType = "DestructWreck";
destrType = "DestructWreck";
</syntaxhighlight>
</syntaxhighlight>
Line 778: Line 863:
Tent and Tree are no longer identifiable when destroyed if not class 'things'
Tent and Tree are no longer identifiable when destroyed if not class 'things'


====disappearAtContact====
==== disappearAtContact ====
[[TokenNameValueTypes|Boolean]]: Default false;
[[TokenNameValueTypes#Boolean|Boolean]]: Default false;


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
disappearAtContact = true; // FxCartridge
disappearAtContact = true; // FxCartridge
</syntaxhighlight>
</syntaxhighlight>


====direction====
==== direction ====
[[TokenNameValueTypes|string]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
direction = "konec L svetla";
direction = "konec L svetla";
</syntaxhighlight>
</syntaxhighlight>
Line 794: Line 879:
see [[#Reflectors Class]]
see [[#Reflectors Class]]


====displayName====
==== displayName ====
[[TokenNameValueTypes|String]]: Default value = "Unknown" or "Vehicle"
[[TokenNameValueTypes#Strings|String]]: Default value = "Unknown" or "Vehicle"


Selects object uniquely in the Mission Editor, and separately, is used to identify object in game according to [[#accuracy]]. For instance when pointing your men to an object while in a mission, it is this ''displayName'' that is used.
Selects object uniquely in the Mission Editor, and separately, is used to identify object in game according to [[#accuracy]]. For instance when pointing your men to an object while in a mission, it is this ''displayName'' that is used.
Line 803: Line 888:
# For language differences
# For language differences


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
displayName = "$STR_DN_AH1Z";
displayName = "$STR_DN_AH1Z";
</syntaxhighlight>
</syntaxhighlight>
Line 814: Line 899:
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]


=====displayNameShort=====
===== displayNameShort =====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
displayNameShort = "$STR_DN_UH60";
displayNameShort = "$STR_DN_UH60";
</syntaxhighlight>
</syntaxhighlight>


====driverIsCommander====
==== driverIsCommander ====
[[TokenNameValueTypes|Boolean]] : Default false. When not set, the turret [[CfgVehicles_Config_Reference#commanding|commanding]] values are used to determine who is the commander. ([https://dev-heaven.net/issues/27614#note-10 source])
[[TokenNameValueTypes#Boolean|Boolean]] : Default false. When not set, the turret [[CfgVehicles_Config_Reference#commanding|commanding]] values are used to determine who is the commander. ({{Link|link= https://dev-heaven.net/issues/27614#note-10|text= source}})


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
driverIsCommander = true;
driverIsCommander = true;
</syntaxhighlight>
</syntaxhighlight>
Line 832: Line 917:
see [[#has...]]
see [[#has...]]


====driverForceOptics====
==== driverForceOptics ====
[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]
'''Description:''' Determines if the driver can freely look around inside the vehicle or if he is locked to looking forward through the hatch/optics.
'''Description:''' Determines if the driver can freely look around inside the vehicle or if he is locked to looking forward through the hatch/optics.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
driverForceOptics = true;
driverForceOptics = true;
</syntaxhighlight>
</syntaxhighlight>


====...DustEffect====
{{ArgTitle|4|driverReversedGetOut|{{GVI|arma3|2.04}}}}
[[TokenNameValueTypes|String]]
[[TokenNameValueTypes#Integers|Integer]]
 
'''Description:''' setting this to 0 will force the unit to face the vehicle when getting out of a vehicle. 1 is the default behaviour where the facing direction is opposit of the get in direction.
 
<syntaxhighlight lang="cpp">
driverReversedGetOut = 0;
</syntaxhighlight>
 
==== ...DustEffect ====
[[TokenNameValueTypes#Strings|String]]


Defines the effect that will be spawned at the position of the LandContact points.
Defines the effect that will be spawned at the position of the LandContact points.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
leftDustEffect = "vbs2_fx_lowTrackDustEffects";
leftDustEffect = "vbs2_fx_lowTrackDustEffects";
rightDustEffect = "vbs2_fx_lowTrackDustEffects";
rightDustEffect = "vbs2_fx_lowTrackDustEffects";
Line 852: Line 946:
see [[#...WaterEffect]]
see [[#...WaterEffect]]


===E===
=== E ===
====editorCategory====
==== editorCategory ====
[[Eden Editor]] main category. See [[Eden Editor: Object Categorization]] for more details.
[[:Category:Eden Editor|Eden Editor]] main category. See [[Eden Editor: Object Categorization]] for more details.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
editorCategory = "EdCat_Structures";
editorCategory = "EdCat_Structures";
</syntaxhighlight>
</syntaxhighlight>


====editorPreview====
==== editorPreview ====
[[Eden Editor]] preview picture. See [[Eden_Editor:_Configuring_Asset_Previews|Configuring Asset Previews]] for more details.
[[:Category:Eden Editor|Eden Editor]] preview picture. See [[Eden_Editor:_Configuring_Asset_Previews|Configuring Asset Previews]] for more details.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
editorPreview = "\A3\EditorPreviews_F\Data\myObject.jpg";
editorPreview = "\A3\EditorPreviews_F\Data\myObject.jpg";
</syntaxhighlight>
</syntaxhighlight>


====editorSubcategory====
==== editorSubcategory ====
[[Eden Editor]] sub-category. See [[Eden Editor: Object Categorization]] for more details.
[[:Category:Eden Editor|Eden Editor]] sub-category. See [[Eden Editor: Object Categorization]] for more details.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
editorSubcategory = "EdSubcat_Drones";
editorSubcategory = "EdSubcat_Drones";
</syntaxhighlight>
</syntaxhighlight>


====...Elev====
==== enableGPS ====
[[TokenNameValueTypes|Integer]]:Degrees
[[TokenNameValueTypes#Boolean|Boolean]]: If enabled vehicle will allow crew to use Minimap even if they do not posses GPS terminal.
 
<syntaxhighlight lang="cpp">
enableGPS = 1;
</syntaxhighlight>
 
==== ...Elev ====
[[TokenNameValueTypes#Integers|Integer]]: Degrees


'''Description:''' How far the mounted weapon and viewpoint (through optics only) can be lowered or raised, and how much the initial elevation is. Values of max and min = 90 effectively allows a weapon to be lowered into the ground/straight into the air.
'''Description:''' How far the mounted weapon and viewpoint (through optics only) can be lowered or raised, and how much the initial elevation is. Values of max and min = 90 effectively allows a weapon to be lowered into the ground/straight into the air.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
initElev = -80;
initElev = -80;
minElev = -60;
minElev = -60;
Line 887: Line 988:
part of any [[#Turret Class]] (tanks eg)
part of any [[#Turret Class]] (tanks eg)


====ejectDamageLimit====
==== ejectDamageLimit ====
[[TokenNameValueTypes|Float]]: If the damage value of the vehicle is higher than the ejectDamageLimit, AI will disembark the vehicle.
[[TokenNameValueTypes#Floats|Float]]: If the damage value of the vehicle is higher than the ejectDamageLimit, AI will disembark the vehicle.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
ejectDamageLimit = 0.75;
ejectDamageLimit = 0.75;
</syntaxhighlight>
</syntaxhighlight>


====ejectDead...====
==== ejectDead... ====
[[TokenNameValueTypes|Boolean]] : Default false
[[TokenNameValueTypes#Boolean|Boolean]] : Default false


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
ejectDeadGunner = false;
ejectDeadGunner = false;
ejectDeadCargo = false;
ejectDeadCargo = false;
Line 906: Line 1,007:
Causes that unit to 'unmount' the vehicle. Such as an MG nest, or motorcycle.
Causes that unit to 'unmount' the vehicle. Such as an MG nest, or motorcycle.


====ejectSpeed====
==== ejectSpeed ====
[[TokenNameValueTypes|Array]]: Speed vector of ejection seat. Therefore only applies to planes.
[[TokenNameValueTypes#Arrays|Array]]: Speed vector of ejection seat. Therefore only applies to planes.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
ejectSpeed[] = {0, 0, 0}; // cant eject in a Cessna
ejectSpeed[] = { 0, 0, 0 }; // cannot eject in a Cessna
</syntaxhighlight>
</syntaxhighlight>


====Embedded ClassNames====
==== Embedded ClassNames ====
Some Token Names are encountered only within an embedded classname, rather than the main 'vehicle' body.
Some Token Names are encountered only within an embedded classname, rather than the main 'vehicle' body.


Line 922: Line 1,023:
Below is a list of embedded classnames that (in most cases) use a TokenName uniquely. It is not found elsewhere and is better served describing that Token Name in the context it is found in, ie, an embedded class.
Below is a list of embedded classnames that (in most cases) use a TokenName uniquely. It is not found elsewhere and is better served describing that Token Name in the context it is found in, ie, an embedded class.


=====Hatch... Class=====
===== Hatch... Class =====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class HatchDriver {
class HatchDriver
selection = poklop_driver;
{
axis = osa_poklop_driver;
selection = "poklop_driver";
axis = "osa_poklop_driver";
angle = -100;
angle = -100;
};
};
</syntaxhighlight>
</syntaxhighlight>


=====Indicator... Class=====
===== Indicator... Class =====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class IndicatorSpeed {
class IndicatorSpeed
selection = ukaz_rychlo;
{
axis = osa_rychlo;
selection = "ukaz_rychlo";
axis = "osa_rychlo";
angle = -240;
angle = -240;
min = 0;
min = 0;
Line 942: Line 1,045:
</syntaxhighlight>
</syntaxhighlight>


=====Light Class=====
===== Light Class =====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class Light {
class Light
ambient[] = {0.3, 0.15, 0.0, 1.0};
{
ambient[] = { 0.3, 0.15, 0.0, 1.0 };
brightness = 0.08;
brightness = 0.08;
color[] = {1.0, 0.5, 0.0, 1.0};
color[] = { 1.0, 0.5, 0.0, 1.0 };
position = ohniste;
position = "ohniste";
shape = koulesvetlo;
shape = "koulesvetlo";
size = 0.3;
size = 0.3;
};
};
</syntaxhighlight>
</syntaxhighlight>


=====CargoLight Class=====
===== CargoLight Class =====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class CargoLight {
class CargoLight
ambient[] = {0.6, 0, 0.15, 1};
{
ambient[] = { 0.6, 0, 0.15, 1 };
brightness = 0.007;
brightness = 0.007;
color[] = {0, 0, 0, 0};
color[] = { 0, 0, 0, 0 };
};
};
</syntaxhighlight>
</syntaxhighlight>


=====Reflectors Class=====
===== Reflectors Class =====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
Reflectors ::LandVehicle {//old
class Reflectors : LandVehicle // old
ambient[] = {0.1, 0.1, 0.1, 1.0};
{
ambient[] = { 0.1, 0.1, 0.1, 1.0 };
brightness = 0.25;
brightness = 0.25;
color[] = {0.9, 0.8, 0.8, 1.0};
color[] = { 0.9, 0.8, 0.8, 1.0 };
position = L svetlo;
position = "L svetlo";
size = 0.5;
size = 0.5;
direction = konec L svetla;
direction = "konec L svetla";
hitpoint = L svetlo;
hitpoint = "L svetlo";
selection = L svetlo;
selection = "L svetlo";
};


 
class Reflectors // new
};
{
Reflectors {//new
class Light_1
class Light_1 {
{
ambient[] = {10,10,11};
ambient[] = { 10, 10, 11 };
color[] = {1000,1000,1100};
color[] = { 1000, 1000, 1100 };
size = 1;
size = 1;
dayLight = 1;
dayLight = 1;
Line 993: Line 1,100:
selection = "";
selection = "";
class Attenuation {//https://community.bistudio.com/wiki/setLightAttenuation
class Attenuation // see https://community.bistudio.com/wiki/setLightAttenuation
{
start = 0;
start = 0;
constant = 0;
constant = 0;
Line 1,004: Line 1,112:
};
};


//Arma 3 example value
// Arma 3 example value
class Reflectors
class Reflectors
{
class Left // main landing light
{
position = "L svetlo";
direction = "konec L svetla";
hitpoint = "L svetlo";
selection = "L svetlo";
color[] = { 7000, 7500, 10000 }; // R, G, B
ambient[] = { 70, 75, 100 }; // R, G, B
intensity = 50;
size = 1;
innerAngle = 15;
outerAngle = 65;
coneFadeCoef = 10;
useFlare = 1;
flareSize = 10;
flareMaxDistance = 250;
dayLight = 0;
class Attenuation
{
{
class Left //main landing light
start = 0;
{
constant = 0;
position = "L svetlo";
linear = 1;
direction = "konec L svetla";
quadratic = 1;
hitpoint = "L svetlo";
hardLimitStart = 100;
selection = "L svetlo";
hardLimitEnd = 200;
color[] = {7000,7500,10000}; //R,G,B
ambient[] = {70,75,100}; //R,G,B
intensity = 50;
size = 1;
innerAngle = 15;
outerAngle = 65;
coneFadeCoef = 10;
useFlare = 1;
flareSize = 10;
flareMaxDistance = 250;
dayLight = 0;
class Attenuation
{
start = 0;
constant = 0;
linear = 1;
quadratic = 1;
hardLimitStart = 100;
hardLimitEnd = 200;
};
};
class LG: Left  //left door gunner searchlight
{
position = "LG svetlo";
direction = "konec LG svetla";
hitpoint = "LG svetlo";
selection = "LG svetlo";
};
class Right: Left  //right door gunner searchlight
{
position = "P svetlo";
direction = "konec P svetla";
hitpoint = "P svetlo";
selection = "P svetlo";
};
};
};
};
class LG : Left  // left door gunner searchlight
{
position = "LG svetlo";
direction = "konec LG svetla";
hitpoint = "LG svetlo";
selection = "LG svetlo";
};
class Right : Left  // right door gunner searchlight
{
position = "P svetlo";
direction = "konec P svetla";
hitpoint = "P svetlo";
selection = "P svetlo";
};
};
// example red cabin light in helicopter


//example red cabin light in helicopter
class Cabin
{
position = "cabin_light";
direction = "cabin_light_dir";
hitpoint = "cabin_light";
selection = "cabin_light";
color[] = { 1000, 0, 0 };
ambient[] = { 100, 0, 0 };
intensity = 5;
size = 1;
innerAngle = 15;
outerAngle = 150;
coneFadeCoef = 1;
useFlare = 1;
flareSize = 0.1;
flareMaxDistance = 1;
dayLight = 0;


class Cabin
class Attenuation
{
{
position = "cabin_light";
start = 0;
direction = "cabin_light_dir";
constant = 0;
hitpoint = "cabin_light";
linear = 1;
selection = "cabin_light";
quadratic = 1;
color[] = {1000,0,0};
hardLimitStart = 1;
ambient[] = {100,0,0};
hardLimitEnd = 2;
intensity = 5;
};
size = 1;
};
innerAngle = 15;
outerAngle = 150;
coneFadeCoef = 1;
useFlare = 1;
flareSize = 0.1;
flareMaxDistance = 1;
dayLight = 0;
class Attenuation
{
start = 0;
constant = 0;
linear = 1;
quadratic = 1;
hardLimitStart = 1;
hardLimitEnd = 2;
};
};
</syntaxhighlight>
</syntaxhighlight>


Notes for Arma 3:  
Notes for {{arma3}}:


Add a light to an object in class cfgvehicles.<br>
Add a light to an object in class cfgvehicles.<br>
Line 1,090: Line 1,199:
The one you put to direction is the way your light will shine.<br>
The one you put to direction is the way your light will shine.<br>
The cone itself is set using innerAngle, outerAngle and coneFadeCoef.<br>
The cone itself is set using innerAngle, outerAngle and coneFadeCoef.<br>
innerAngle sets the cone in which the light has it's full intensity.<br>
innerAngle sets the cone in which the light has it is full intensity.<br>
outerAngle sets the cone outside of which the light has zero intensity.<br>
outerAngle sets the cone outside of which the light has zero intensity.<br>
coneFadeCoef is a coefficient that describes attenuation of the light between innerAngle and outerAngle. 1 equals linear attenuation, higher or lower value changes it, meaning how sharp/blurred will the edge of the lightcone as a whole be.<br>
coneFadeCoef is a coefficient that describes attenuation of the light between innerAngle and outerAngle. 1 equals linear attenuation, higher or lower value changes it, meaning how sharp/blurred will the edge of the lightcone as a whole be.<br>
Line 1,099: Line 1,208:


See [[setLightAttenuation]] notes for explanation of attenuation values.<br>
See [[setLightAttenuation]] notes for explanation of attenuation values.<br>
See also [https://community.bistudio.com/wiki/Arma_3_Cars_Config_Guidelines#Reflectors]<br>
See also {{Link|Arma 3 Cars Config Guidelines#Reflectors}}<br>
aggregateReflectors are described here [https://manuals.bisimulations.com/vbs3/3-6/devref/Content/Config_Manual/CfgVehicles/A_cpp/cpp_aggregateReflectors.htm]<br>
aggregateReflectors are described here {{Link|https://manuals.bisimulations.com/vbs3/3-6/devref/Content/Config_Manual/CfgVehicles/A_cpp/cpp_aggregateReflectors.htm|link}}<br>


=====Smoke Class=====
===== Smoke Class =====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class Smoke {
class Smoke
{
density = 0.5;
density = 0.5;
deltaT = -500;
deltaT = -500;
Line 1,114: Line 1,224:
size = 0.1;
size = 0.1;
timeToLive = 100000002004087730000.0;
timeToLive = 100000002004087730000.0;
//
 
cloudletDuration = 0.9;
cloudletDuration = 0.9;
cloudletAnimPeriod = 1.0;
cloudletAnimPeriod = 1.0;
Line 1,125: Line 1,235:
cloudletMinYSpeed = 0.3;
cloudletMinYSpeed = 0.3;
cloudletMaxYSpeed = 1.5;
cloudletMaxYSpeed = 1.5;
cloudletShape = cl_basic;
cloudletShape = "cl_basic";
cloudletColor[] = {1, 1, 1, 0};
cloudletColor[] = { 1, 1, 1, 0 };
class Table {
 
class T1 {
class Table
{
class T1
{
maxT = 0;
maxT = 0;
color[] = {0.8, 0.8, 0.8, 1};
color[] = { 0.8, 0.8, 0.8, 1 };
};
};
class T2 {
class T2
{
maxT = 900;
maxT = 900;
color[] = {0.3, 0.3, 0.3, 1};
color[] = { 0.3, 0.3, 0.3, 1 };
};
};
class T3 {
class T3
{
maxT = 1000;
maxT = 1000;
color[] = {1, 0.5, 0, 0.5};
color[] = { 1, 0.5, 0, 0.5 };
};
};
};
};
Line 1,144: Line 1,259:
</syntaxhighlight>
</syntaxhighlight>


====Turret Class====
==== Turret Class ====
(Tanks eg)
(Tanks eg)


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class TurretBase {
class TurretBase
body = OtocVez;
{
gun = OtocHlaven;
body = "OtocVez";
gunAxis = OsaHlavne;
gun = "OtocHlaven";
gunBeg = usti hlavne;
gunAxis = "OsaHlavne";
gunEnd = konec hlavne;
gunBeg = "usti hlavne";
gunEnd = "konec hlavne";
minElev = -4;
minElev = -4;
maxElev = 20;
maxElev = 20;
minTurn = -360;
minTurn = -360;
maxTurn = 360;
maxTurn = 360;
soundServo[] = {Vehicles\gun_elevate, 0.031623, 1.000000};
soundServo[] = { "Vehicles\gun_elevate", 0.031623, 1.0 };
turretAxis = OsaVeze;
turretAxis = "OsaVeze";
};
};
</syntaxhighlight>
</syntaxhighlight>


====Embedded TokenNames====
For details see [[Turret Config Reference]]
 
==== Embedded TokenNames ====
see [[#Embedded ClassNames]]
see [[#Embedded ClassNames]]


====enableSweep====
==== enableSweep ====
[[TokenNameValueTypes|Boolean]]: Default true. Used by Helicopter class
[[TokenNameValueTypes#Boolean|Boolean]]: Default true. Used by Helicopter class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
enableSweep = false; / /UH60MG
enableSweep = false; // UH60MG
</syntaxhighlight>
</syntaxhighlight>


Is sweeping over the target a valid technique for given helicopter?
Is sweeping over the target a valid technique for given helicopter?


====envelope====
==== envelope ====
[[TokenNameValueTypes|Float]] [[TokenNameValueTypes|Array]]
[[TokenNameValueTypes#Floats|Float]] [[TokenNameValueTypes#Arrays|Array]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
// lift (G) based on speed
// lift (G) based on speed
envelope[] = {
envelope[] = {
Line 1,187: Line 1,305:
</syntaxhighlight>
</syntaxhighlight>


Info by [http://forums.bistudio.com/showpost.php?p=2037721&postcount=9 RKSL-Rock]:
Info by {{Link|link= http://forums.bistudio.com/showpost.php?p=2037721&postcount=9|text= RKSL-Rock}}:


The top speed is set via the mass. So you will need MLODs to alter it. So it is the same issue as the original OP.
The top speed is set via the mass. So you will need MLODs to alter it. So it is the same issue as the original OP.
 
The config maxspeed value is only really used by the AI and the engine as a base variable in some calculations.
The config maxspeed value is only really used by the AI and the engine as a base variable in some calculations.
 
You can change the acceleration though by using the envelope command.
You can change the acceleration though by using the envelope command.
This will change the vertical speed relative to the maxspeed in the config in steps of 10% of the stated max speed.
This will change the vertical speed relative to the maxspeed in the config in steps of 10% of the stated max speed.
 
This is the envelope from the RKSL Lynx AH7:
This is the envelope from the RKSL Lynx AH7:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
envelope[] = {1.7, 2.50, 3.50, 4.50, 5.50, 5.50, 5.15, 5.15, 5.15, 5.15, 4.15, 3.15, 2.15, 2.15, 1.15};
envelope[] = { 1.7, 2.50, 3.50, 4.50, 5.50, 5.50, 5.15, 5.15, 5.15, 5.15, 4.15, 3.15, 2.15, 2.15, 1.15 };
</syntaxhighlight>
</syntaxhighlight>
 
There are normally 15 values representing the vertical lift in m/s at 10% steps from 0 to 140% of the max speed.
There are normally 15 values representing the vertical lift in m/s at 10% steps from 0 to 140% of the max speed.
 
So, if the max speed is 500 and the first value is always 0:
So, if the max speed is 500 and the first value is always 0:


Line 1,212: Line 1,330:
...
...
15th value = 700kph and 1.15 m/s vertical speed.
15th value = 700kph and 1.15 m/s vertical speed.
 
You wont affect the top speed but it will make it easier to handle.
You wont affect the top speed but it will make it easier to handle.


====EventHandlers... Class====
==== EventHandlers... Class ====
Pre-defined object [[Event Handlers]]. Property with class matches the handler name.
Pre-defined object [[Event Handlers]]. Property with class matches the handler name.
<syntaxhighlight lang="c">class EventHandlers
<syntaxhighlight lang="cpp">
class EventHandlers
{
{
init = "myAddon_object = _this select 0;";
init = "myAddon_object = _this select 0;";
Line 1,225: Line 1,344:
{{GVI|arma3|1.54}}
{{GVI|arma3|1.54}}
Arma 3 introduced '''extended event handlers'''. It's possible to define event handlers within unique sub-classes, which prevents compatibility issues when multiple addons wants to set the same handler type to single vehicle class.
Arma 3 introduced '''extended event handlers'''. It's possible to define event handlers within unique sub-classes, which prevents compatibility issues when multiple addons wants to set the same handler type to single vehicle class.
<syntaxhighlight lang="c">class EventHandlers
<syntaxhighlight lang="cpp">
class EventHandlers
{
{
class MyAddon
class MyAddon
Line 1,238: Line 1,358:
</syntaxhighlight>
</syntaxhighlight>


====extCameraPosition[]====
==== extCameraPosition[] ====


float [[TokenNameValueTypes|Array]]:  {X,Z,Y}; Default {0, 2, -20};
float [[TokenNameValueTypes#Arrays|Array]]:  { X, Z, Y }; Default { 0, 2, -20 };


External (third-person) camera offset relative to the vehicle's <tt>aimpoint</tt> memory point, around which the camera orbits.
External (third-person) camera offset relative to the vehicle's {{hl|aimpoint}} memory point, around which the camera orbits.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
extCameraPosition[] = {0, 5, -30}; // plane
extCameraPosition[] = { 0, 5, -30 }; // plane
extCameraPosition[] = {0, 1, -10}; // cars
extCameraPosition[] = { 0, 1, -10 }; // cars
extCameraPosition[] = {0, 1.500000, -9}; // tanks
extCameraPosition[] = { 0, 1.500000, -9 }; // tanks
extCameraPosition[] = {0, 0.300000, -3.500000}; // man
extCameraPosition[] = { 0, 0.300000, -3.500000 }; // man
</syntaxhighlight>
</syntaxhighlight>


====extCameraParams[]====
==== extCameraParams[] ====
float [[TokenNameValueTypes|Array]]: Default {0.5, 10, 50, 0.5, 1, 10, 30, 0, 1};
float [[TokenNameValueTypes#Arrays|Array]]: Default { 0.5, 10, 50, 0.5, 1, 10, 30, 0, 1 };


Smoothing of external camera movement
Smoothing of external camera movement


extCameraParams[] = {multFactor, speedMin, speedMax, factorSpeeedMin, factorSpeeedMax, heightMin, heightMax, factorHeightMin, factorHeightMax};
extCameraParams[] = { multFactor, speedMin, speedMax, factorSpeeedMin, factorSpeeedMax, heightMin, heightMax, factorHeightMin, factorHeightMax };


factor = multFactor * interpolate(speed, speedMin, speedMax, factorSpeeedMin, factorSpeeedMax) * interpolate(heightAGL, heightMin, heightMax, factorHeightMin, factorHeightMax)  
factor = multFactor * interpolate(speed, speedMin, speedMax, factorSpeeedMin, factorSpeeedMax) * interpolate(heightAGL, heightMin, heightMax, factorHeightMin, factorHeightMax)




Line 1,265: Line 1,385:
factor == 1 - > camera follow vehicle heading
factor == 1 - > camera follow vehicle heading


factor (0,1) interpolation between   horizon and vehicle heading
factor (0, 1) interpolation between horizon and vehicle heading


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
extCameraParams[] = { 0.5, 10, 50, 0.5, 1, 10, 30, 0, 1 };  // helicopters & UAV
extCameraParams[] = { 0.5, 10, 50, 0.5, 1, 10, 30, 0, 1 };  // helicopters & UAV
</syntaxhighlight>
</syntaxhighlight>


to force the old external camera behavior
to force the old external camera behavior
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
extCameraParams[] = {-1}  
extCameraParams[] = { -1 }
</syntaxhighlight>
 
=== F ===
==== featureType ====
[[TokenNameValueTypes#Integers|Integer]]: Default 0. 1 means the object is always visible within object view distance, 2 means always visible within terrain view distance. Same as [[setFeatureType]].
 
<syntaxhighlight lang="cpp">
featureType = 2;
</syntaxhighlight>
</syntaxhighlight>


===F===
==== minFireTime ====
====minFireTime====
[[TokenNameValueTypes#Integers|Integer]]: Default 20 seconds
[[TokenNameValueTypes|Integer]]: Default 20 seconds


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minFireTime = 20;
minFireTime = 20;
</syntaxhighlight>
</syntaxhighlight>
Line 1,286: Line 1,413:
Minimal time spent firing on single target.
Minimal time spent firing on single target.


====fired====
==== fired ====
[[TokenNameValueTypes|String]]: [[:Category:Event Handlers|Event Handlers]]
[[TokenNameValueTypes#Strings|String]]: [[:Category:Event Handlers|Event Handlers]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
fired = "_this exec ""\AnyAddon\AnySQS.sqs"""; // note the ""
fired = "_this exec ""\AnyAddon\AnySQS.sqs"""; // note the ""
</syntaxhighlight>
</syntaxhighlight>


====flapsFrictionCoef====
==== flapsFrictionCoef ====
[[TokenNameValueTypes|Float]]: Default 0.5
[[TokenNameValueTypes#Floats|Float]]: Default 0.5


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
flapsFrictionCoef = 2; // can be integer too.
flapsFrictionCoef = 2; // can be integer too.
</syntaxhighlight>
</syntaxhighlight>


====forceHide...====
==== forceHide... ====
[[TokenNameValueTypes|Boolean]] : Default false
[[TokenNameValueTypes#Boolean|Boolean]] : Default false


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
forceHideDriver = true; // shilka
forceHideDriver = true; // shilka
forceHideGunner = true; // tank
forceHideGunner = true; // tank
Line 1,311: Line 1,438:
Disables the turnout option for that particular crew member
Disables the turnout option for that particular crew member


====forceSupply====
==== forceSupply ====
[[TokenNameValueTypes|Boolean]] : Default  
[[TokenNameValueTypes#Boolean|Boolean]] : Default


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
forceSupply = true;
forceSupply = true;
</syntaxhighlight>
</syntaxhighlight>
Line 1,320: Line 1,447:
Found only in Weapon holders. Is used to make the weaponholder disappear when empty.
Found only in Weapon holders. Is used to make the weaponholder disappear when empty.


====formation...====
==== formation... ====
[[TokenNameValueTypes|Integer]]:
[[TokenNameValueTypes#Integers|Integer]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
formationX = 10; // default meters
formationX = 10; // default meters
formationZ = 20; // default meters
formationZ = 20; // default meters
Line 1,329: Line 1,456:
</syntaxhighlight>
</syntaxhighlight>


One or both X Z values are used to keep objects separated (in meters) depending on  
One or both X Z values are used to keep objects separated (in meters) depending on
wedge, echelon, V, single line, formations.
wedge, echelon, V, single line, formations.


====fov====
==== fov ====
[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes#Floats|Float]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
fov = 0.85; // Cessna
fov = 0.85; // Cessna
fov = 0.85; // man
fov = 0.85; // man
Line 1,341: Line 1,468:
</syntaxhighlight>
</syntaxhighlight>


====...Fov====
==== ...Fov ====
[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes#Floats|Float]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minFov = 0.420000; // man
minFov = 0.420000; // man
maxFov = 0.850000;
maxFov = 0.850000;
Line 1,353: Line 1,480:
also used by [[#...AngleX/Y|ViewPilot Classes]]
also used by [[#...AngleX/Y|ViewPilot Classes]]


====fuelCapacity====
==== fuelCapacity ====
[[TokenNameValueTypes|Float]]: Default Value 0. Has nothing to do with liters.
[[TokenNameValueTypes#Floats|Float]]: Default Value 0. Has nothing to do with liters.


Arma 3: for a vehicle using tankX simulation consumption seems to be exclusively determined by engine rpm. With a 700 idle-rpm and 3000 max-rpm engine - a fuelCapacity of 1 will give you 640 seconds operation time at idle rpm, and 300 seconds of operation at maximum rpm. If the idle rpm was 200, you would get 865 seconds of operation, the max rpm time would not change. The amount of thrust from controllerinput is completely irrelevant.
Arma 3: for a vehicle using tankX simulation consumption seems to be exclusively determined by engine rpm. With a 700 idle-rpm and 3000 max-rpm engine - a fuelCapacity of 1 will give you 640 seconds operation time at idle rpm, and 300 seconds of operation at maximum rpm. If the idle rpm was 200, you would get 865 seconds of operation, the max rpm time would not change. The amount of thrust from controllerinput is completely irrelevant.


A2 examples:
A2 examples:
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
fuelCapacity = 50; // motorcycle
fuelCapacity = 50; // motorcycle
fuelCapacity = 100; // car
fuelCapacity = 100; // car
Line 1,366: Line 1,493:
</syntaxhighlight>
</syntaxhighlight>


The required fuelCapacity value to achieve a specific operation TIME (in seconds) at a specific engine RPM (revolution per minute) can be estimated with:  
The required fuelCapacity value to achieve a specific operation TIME (in seconds) at a specific engine RPM (revolution per minute) can be estimated with:
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
fuelCapacity = (8E-7 * RPM + 0.001) * TIME
fuelCapacity = (8E-7 * RPM + 0.001) * TIME
</syntaxhighlight>
</syntaxhighlight>


====fuelConsumptionRate====
==== fuelConsumptionRate ====
[[TokenNameValueTypes|Integer]]: Default Value 0.01. Has no units. Works only on helicopters.
[[TokenNameValueTypes#Integers|Integer]]: Default Value 0.01. Has no units. Works only on helicopters.




===G===
=== G ===
====_generalMacro====
==== _generalMacro ====
[[TokenNameValueTypes|String]]: in Arma 3. Has no purpose whatsoever. It is generated automatically by BI developer tools for debugging [https://forums.bistudio.com/topic/179378-what-does-generalmacro-do/ See here for explanation]
[[TokenNameValueTypes#Strings|String]]: in Arma 3. Has no purpose whatsoever. It is generated automatically by BI developer tools for debugging. {{Feature|Quote|Some config properties are generated automatically (e.g., "nameSound", which sets how to unit appears in radio protocol, is computed based on unit's role and equipment, so coders won't need to set it manually). _generalMacro property is added to all objects which underwent this process to help with debugging.|Karel Mořický|https://forums.bohemia.net/forums/topic/179378-what-does-_generalmacro-do/}}


====getIn....ActionNamedSel====
==== getIn....ActionNamedSel ====
[[TokenNameValueTypes|String]]: Named selection for get in actions working in same principle as actionNamedSel in UserActions. Available variants:
[[TokenNameValueTypes#Strings|String]]: Named selection for get in actions working in same principle as actionNamedSel in UserActions. Available variants:
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
getInDriverActionNamedSel
getInDriverActionNamedSel
getInGunnerActionNamedSel
getInGunnerActionNamedSel
Line 1,390: Line 1,517:
</syntaxhighlight>
</syntaxhighlight>


====...Gun...====
==== ...Gun... ====
[[TokenNameValueTypes|Integer]]:degrees
[[TokenNameValueTypes#Integers|Integer]]:degrees


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minGunElev = -60;
minGunElev = -60;
maxGunElev = 60;
maxGunElev = 60;
Line 1,402: Line 1,529:
</syntaxhighlight>
</syntaxhighlight>


====...GunnerMayFire====
==== ...GunnerMayFire ====
[[TokenNameValueTypes|Boolean]]: Default false
[[TokenNameValueTypes#Boolean|Boolean]]: Default false


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
outGunnerMayFire = true; // m113
outGunnerMayFire = true; // m113
inGunnerMayFire = false;
inGunnerMayFire = false;
</syntaxhighlight>
</syntaxhighlight>


====...GunClouds Class====
==== ...GunClouds Class ====
This is a reference to the external WeaponCloudsGun classes
This is a reference to the external WeaponCloudsGun classes


most models simply inherit the defaults
most models simply inherit the defaults


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class GunClouds: WeaponCloudsGun{};
class GunClouds : WeaponCloudsGun {};
class MGunClouds: WeaponCloudsMGun{};
class MGunClouds : WeaponCloudsMGun {};
</syntaxhighlight>
</syntaxhighlight>


here is an example of over-rides for class man
here is an example of over-rides for class man


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class GunClouds:WeaponCloudsGun {
class GunClouds : WeaponCloudsGun
{
cloudletGrowUp = 0.200000;
cloudletGrowUp = 0.200000;
cloudletFadeIn = 0;
cloudletFadeIn = 0;
Line 1,438: Line 1,566:
</syntaxhighlight>
</syntaxhighlight>


====...GunFire Class====
==== ...GunFire Class ====
This is a reference to the external WeaponFireGun classes
This is a reference to the external WeaponFireGun classes


most models simply inherit the defaults
most models simply inherit the defaults


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class GunFire: WeaponFireGun {};
class GunFire : WeaponFireGun {};
class MGunFire: WeaponFireMGun {};
class MGunFire : WeaponFireMGun {};
</syntaxhighlight>
</syntaxhighlight>


====gearbox[]====
==== gearbox[] ====
[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes#Arrays|Array]]


'''Description:''' Changes acceleration and max speed values of certain Vehicles. If changed, impact to the acceleration is minor (if notable at all!) to catastrophic (worsened acceleration/maxspeed). Best to leave as-is.
'''Description:''' Changes acceleration and max speed values of certain Vehicles. If changed, impact to the acceleration is minor (if notable at all!) to catastrophic (worsened acceleration/maxspeed). Best to leave as-is.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gearbox[] = {-18, 0, 110, 16.15, 14.44, 13.33};
gearbox[] = { -18, 0, 110, 16.15, 14.44, 13.33 };
</syntaxhighlight>
</syntaxhighlight>


====gearRetracting====
==== gearRetracting ====
[[TokenNameValueTypes|Boolean]]: Default true
[[TokenNameValueTypes#Boolean|Boolean]]: Default true


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gearRetracting = false; // Cessna
gearRetracting = false; // Cessna
</syntaxhighlight>
</syntaxhighlight>
Line 1,466: Line 1,594:
more correctly viewed as HasRetractingGear.
more correctly viewed as HasRetractingGear.


====gun====
==== gun ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gun = OtocHlaven;
gun = "OtocHlaven";
</syntaxhighlight>
</syntaxhighlight>


see [[#Turret Class]]
see [[#Turret Class]]


====gunAimDown====
==== gunAimDown ====
[[TokenNameValueTypes|Float]]
[[TokenNameValueTypes#Floats|Float]]


'''Description:''' Aircraft only. How far a hardpoint-mounted gun "aims down"; high values allow for strafing runs without the need to nose-dive down too much, but also shift the targeting reticle in the aircraft's HUD; if too high, targeting reticle is only visible in 3rd Person (if available).
'''Description:''' Aircraft only. How far a hardpoint-mounted gun "aims down"; high values allow for strafing runs without the need to nose-dive down too much, but also shift the targeting reticle in the aircraft's HUD; if too high, targeting reticle is only visible in 3rd Person (if available).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gunAimDown = 0.07;
gunAimDown = 0.07;
</syntaxhighlight>
</syntaxhighlight>


====gunAxis====
==== gunAxis ====


====gunBeg====
==== gunBeg ====


====gunEnd====
==== gunEnd ====
see [[#Turret Class]]
see [[#Turret Class]]


====gunnerHasFlares====
==== gunnerHasFlares ====
[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gunnerHasFlares = false;
gunnerHasFlares = false;
</syntaxhighlight>
</syntaxhighlight>


====gunnerName====
==== gunnerName ====
[[TokenNameValueTypes|String]]
[[TokenNameValueTypes#Strings|String]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gunnerName = "$STR_POSITION_CREWCHIEF";
gunnerName = "$STR_POSITION_CREWCHIEF";
</syntaxhighlight>
</syntaxhighlight>


====gunnerOutOptics...====
==== gunnerOutOptics... ====
[[TokenNameValueTypes|String]]
[[TokenNameValueTypes#Strings|String]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gunnerOutOpticsModel = "";
gunnerOutOpticsModel = "";
</syntaxhighlight>
</syntaxhighlight>


[[TokenNameValueTypes|Array]]
[[TokenNameValueTypes#Arrays|Array]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gunnerOutOpticsColor[] = {0, 0, 0, 1};
gunnerOutOpticsColor[] = { 0, 0, 0, 1 };
</syntaxhighlight>
</syntaxhighlight>


[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gunnerOutForceOptics = false;
gunnerOutForceOptics = false;
</syntaxhighlight>
</syntaxhighlight>


[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gunnerOutOpticsShowCursor = false;
gunnerOutOpticsShowCursor = false;
</syntaxhighlight>
</syntaxhighlight>


===H===
==== gunnerType ====
====HeadAimDown====
[[TokenNameValueTypes#Strings|String]]
[[TokenNameValueTypes|Float]]: Default: 0.
 
Part of [[#Turret class]].
 
Defines the character class that inhabits this turret by default, replaces the pilot which would usually be in this turret. Used primarily to add helicopter crewmen to helicopter turrets.
<syntaxhighlight lang="cpp">
class MyHelicopter : B_Heli_Transport_01_F
{
class Turrets : Turrets
{
class MyTurret : MainTurret
{
gunnerType = "B_RangeMaster_F";
};
};
};
</syntaxhighlight>
Because turrets are sub-members of the Turrets class of the base vehicle, all the classes must be fully exposed to their source (Helicopter class) to be inherited from, otherwise all turrets must be overwritten.
 
=== H ===
==== HeadAimDown ====
[[TokenNameValueTypes#Floats|Float]]: Default: 0.


How much to tilt the driver's head forward in degrees.
How much to tilt the driver's head forward in degrees.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
HeadAimDown = 10; // tilt driver's head forward 10 degrees.  
HeadAimDown = 10; // tilt driver's head forward 10 degrees.
</syntaxhighlight>
</syntaxhighlight>


====...Height====
==== ...Height ====
[[TokenNameValueTypes|Integer]]:
[[TokenNameValueTypes#Integers|Integer]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minHeight = 5; // Min height in metres above sea-level.  
minHeight = 5; // Min height in metres above sea-level.
maxHeight = 50; // Max height above sea level.
maxHeight = 50; // Max height above sea level.
avgHeight = 10;
avgHeight = 10;
</syntaxhighlight>
</syntaxhighlight>


====has...====
==== has... ====
[[TokenNameValueTypes|Boolean]]:
[[TokenNameValueTypes#Boolean|Boolean]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
hasDriver = true; // default
hasDriver = true; // default
hasGunner = false; // default
hasGunner = false; // default
Line 1,565: Line 1,713:


Since 1.82 there is alternative syntax available for hasDriver property
Since 1.82 there is alternative syntax available for hasDriver property
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
hasDriver = -1; // t80auto
hasDriver = -1; // t80auto
</syntaxhighlight>
</syntaxhighlight>
Line 1,572: Line 1,720:
see [[#driverIsCommander]]
see [[#driverIsCommander]]


====...HeadTurnAI====
==== ...HeadTurnAI ====
[[TokenNameValueTypes|Integer]] Degrees  
[[TokenNameValueTypes#Integers|Integer]] Degrees


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minHeadTurnAI = -70; // man class
minHeadTurnAI = -70; // man class
maxHeadTurnAI = 70;
maxHeadTurnAI = 70;
</syntaxhighlight>
</syntaxhighlight>


====hiddenSelections====
==== hiddenSelections ====
[[TokenNameValueTypes|String]] [[TokenNameValueTypes|Array]]: Default none.
[[TokenNameValueTypes#Strings|String]] [[TokenNameValueTypes#Arrays|Array]]: Default none.


Here you can define selections on the model, which are not shown at mission startup. This is useful for creating variations of one model, where the different selections are left out with hiddenSelections. (ex: Soldiers have the hidden selection "medic", as they should not have a red cross at their body):  
Here you can define selections on the model, which are not shown at mission startup. This is useful for creating variations of one model, where the different selections are left out with hiddenSelections. (ex: Soldiers have the hidden selection "medic", as they should not have a red cross at their body):


Aside from this, the hidden selections are used for runtime texture assignment. Every element in the hidden selection-array corresponds to an index, with the first element being 0. Only 10 elements are allowed in the array and are numbered 0-9.
Aside from this, the hidden selections are used for runtime texture assignment. Every element in the hidden selection-array corresponds to an index, with the first element being 0. Only 10 elements are allowed in the array and are numbered 0-9.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
hiddenSelections[] = {"pruh"}; // bmp/tank
hiddenSelections[] = { "pruh" }; // bmp/tank
</syntaxhighlight>
</syntaxhighlight>


Try {{Inline code|[[this]] [[setObjectTexture]] [0, "\data\duha.pac"];}} in the initline of a BMP and you'll see which parts are meant by the selection "pruh".
Try <sqf inline>this setObjectTexture [0, "\data\duha.pac"];</sqf> in the initline of a BMP and you'll see which parts are meant by the selection "pruh".


Don't forget to add the model and the selections in the [[CfgModels]], as the hidden selections won't work otherwise (at least not after [[Binarize|binarizing]]).
Don't forget to add the model and the selections in the [[CfgModels]], as the hidden selections won't work otherwise (at least not after [[Binarize|binarizing]]).


====hide...====
==== hide... ====
[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
hideProxyInCombat = false; // default (true for tanks);  if true, disables turn-in option for all crew
hideProxyInCombat = false; // default (true for tanks);  if true, disables turn-in option for all crew
hideUnitInfo = false; // default see [[#unitInfoType]]
hideUnitInfo = false; // default see [[#unitInfoType]]
Line 1,607: Line 1,755:
</syntaxhighlight>
</syntaxhighlight>


====hitpoint====
==== hitpoint ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
hitpoint = "L svetlo";
hitpoint = "L svetlo";
</syntaxhighlight>
</syntaxhighlight>
Line 1,616: Line 1,764:
See [[#Reflectors Class]]
See [[#Reflectors Class]]


====hitSound...====
==== hitSound... ====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
hitSound1[] = {voices\Hit11, 0.056234, 1};
hitSound1[] = { "voices\Hit11", 0.056234, 1 };
...
...
hitSound20[] = {voices\Hit30, 0.056234, 1};
hitSound20[] = { "voices\Hit30", 0.056234, 1 };
...
...
hitSounds[] = {hitSound1, 0.05, hitSound2, 0.05,....
hitSounds[] = { "hitSound1", 0.05, "hitSound2", 0.05, ...
</syntaxhighlight>
</syntaxhighlight>


hitSounds is used by the engine to reference user generated hitSound...s
hitSounds is used by the engine to reference user generated hitSound...s


the number of user generated sounds, is limited only by the author.
there is no limit to the number of user-generated sounds.


====hour====
==== hour ====
part of the IndicatorWatch class
part of the IndicatorWatch class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class IndicatorWatch {
class IndicatorWatch
hour = hodinova;
{
minute = minutova;
hour = "hodinova";
axis = osa_time;
minute = "minutova";
axis = "osa_time";
reversed = 0;
reversed = 0;
};
};
</syntaxhighlight>
</syntaxhighlight>


===I===
==== hullExplosionDelay ====
====icon====
[[TokenNameValueTypes#Arrays|Array]]: Time ranage when catastrophic explosion (when HitHull > 0.9 & hullDamageCauseExplosion is set to 1) happens. First number is minimum time in seconds & 2nd - maximum
[[TokenNameValueTypes|String]]: Default Value = "unknown_object.paa"
 
<syntaxhighlight lang="cpp">
hullExplosionDelay[] = { 10, 20 };
</syntaxhighlight>
 
==== hullDamageCauseExplosion ====
[[TokenNameValueTypes#Integers|Integer]]: Determines if vehicle explodes after HitHull is above 0.9
 
<syntaxhighlight lang="cpp">
hullDamageCauseExplosion = 1; // vehicle will explode if HitHull is above 0.9
</syntaxhighlight>
 
=== I ===
==== icon ====
[[TokenNameValueTypes#Strings|String]]: Default Value = "unknown_object.paa"


This value us used by the map editor to show the building or vehicle when editing. It is not normally visible during game play. (but can be)
This value us used by the map editor to show the building or vehicle when editing. It is not normally visible during game play. (but can be)
Line 1,649: Line 1,812:
The icon can be any jpg, paa, or pac file. paa is default. Note that Elite cannot handle jpegs.
The icon can be any jpg, paa, or pac file. paa is default. Note that Elite cannot handle jpegs.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
icon = "\AnyAddon\AnyPAA(.paa)";
icon = "\AnyAddon\AnyPAA(.paa)";
</syntaxhighlight>
</syntaxhighlight>
Line 1,655: Line 1,818:
<u>Related TokenName</u>(s): [[#mapSize]]
<u>Related TokenName</u>(s): [[#mapSize]]


====in/out====
==== in/out ====
[[TokenNameValueTypes|Float]]: These TokenNames are used inside the [[#Smoke Class]]
[[TokenNameValueTypes#Floats|Float]]: These TokenNames are used inside the [[#Smoke Class]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
in = 0.0;
in = 0.0;
out = 0.0;
out = 0.0;
</syntaxhighlight>
</syntaxhighlight>


====init====
==== init ====
[[TokenNameValueTypes|String]]: [[:Category:Event Handlers|Event Handlers]]
[[TokenNameValueTypes#Strings|String]]: [[:Category:Event Handlers|Event Handlers]]
The Event Handler receives an array '''_this''' (the exact content of which still has to be documented), of which the first element contains the vehicle (e.g. _this select 0).
The Event Handler receives an array '''_this''' (the exact content of which still has to be documented), of which the first element contains the vehicle (e.g. _this select 0).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
init = "[(_this select 0)] exec ""\AnyAddon\AnySqs.sqs""";
init = "[(_this select 0)] exec ""\AnyAddon\AnySqs.sqs""";
</syntaxhighlight>
</syntaxhighlight>


====initT====
==== initT ====
[[TokenNameValueTypes|Integer]]: This TokenName is used inside the [[#Smoke Class]]
[[TokenNameValueTypes#Integers|Integer]]: This TokenName is used inside the [[#Smoke Class]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
initT = 1000;
initT = 1000;
</syntaxhighlight>
</syntaxhighlight>


====initYSpeed====
==== initYSpeed ====
[[TokenNameValueTypes|Float]]: This TokenName is used inside the [[#Smoke Class]]
[[TokenNameValueTypes#Floats|Float]]: This TokenName is used inside the [[#Smoke Class]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
initYSpeed = 1.7;
initYSpeed = 1.7;
</syntaxhighlight>
</syntaxhighlight>


====insideSoundCoef====
==== insideSoundCoef ====
[[TokenNameValueTypes|Float]]: default 0.5
[[TokenNameValueTypes#Floats|Float]]: default 0.5


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
insideSoundCoef = 0.05; // air vehicles are 2%
insideSoundCoef = 0.05; // air vehicles are 2%
</syntaxhighlight>
</syntaxhighlight>


====interval====
==== interval ====
[[TokenNameValueTypes|Float]]: This TokenName is used inside the [[#Smoke Class]]
[[TokenNameValueTypes#Floats|Float]]: This TokenName is used inside the [[#Smoke Class]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
interval = 0.01;
interval = 0.01;
</syntaxhighlight>
</syntaxhighlight>


====irScanGround====
==== irScanGround ====
[[TokenNameValueTypes|Boolean]]: Default true.
[[TokenNameValueTypes#Boolean|Boolean]]: Default true.


Probaly used to stop ai looking down
Probaly used to stop ai looking down


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
irScanGround = false; // tanks
irScanGround = false; // tanks
</syntaxhighlight>
</syntaxhighlight>


====irScanRange...====
==== irScanRange... ====
[[TokenNameValueTypes|Integer]]: Default 0
[[TokenNameValueTypes#Integers|Integer]]: Default 0


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
irScanRange = 4000; // outdated (since Resistance)
irScanRange = 4000; // outdated (since Resistance)
irScanRangeMin = 500; // tanks general
irScanRangeMin = 500; // tanks general
Line 1,721: Line 1,884:
</syntaxhighlight>
</syntaxhighlight>


====irScanToEyeFactor====
==== irScanToEyeFactor ====
[[TokenNameValueTypes|Integer]]: Default 1
[[TokenNameValueTypes#Integers|Integer]]: Default 1


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
irScanToEyeFactor = 2; // air
irScanToEyeFactor = 2; // air
irScanToEyeFactor = 5; // shilka
irScanToEyeFactor = 5; // shilka
</syntaxhighlight>
</syntaxhighlight>


====irTarget====
==== irTarget ====
[[TokenNameValueTypes|Boolean]]: Default true.
[[TokenNameValueTypes#Boolean|Boolean]]: Default true.


Used for (some) buildings so that they don't show up on tank radar. Save for very limited exceptions, this token should be enabled for all vehicle units.  
Used for (some) buildings so that they don't show up on tank radar. Save for very limited exceptions, this token should be enabled for all vehicle units.


Disabling it will make the vehicle NOT to be engaged by infantry anti-tank gunners nor vehicle weapons. It will only be engaged by small arms, and only if its armor value is low enough for AI infantry to think it can damage it by shooting at it.  
Disabling it will make the vehicle NOT to be engaged by infantry anti-tank gunners nor vehicle weapons. It will only be engaged by small arms, and only if its armor value is low enough for AI infantry to think it can damage it by shooting at it.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
irTarget = false; // man
irTarget = false; // man
</syntaxhighlight>
</syntaxhighlight>


====isBicycle====
==== isBicycle ====
[[TokenNameValueTypes|Boolean]]: Default false.
[[TokenNameValueTypes#Boolean|Boolean]]: Default false.


this value inside the motorcycle class is used to turn it on when inheriting to a real bicycle
this value inside the motorcycle class is used to turn it on when inheriting to a real bicycle


====isMan====
==== isMan ====
[[TokenNameValueTypes|Boolean]]: Default true.
[[TokenNameValueTypes#Boolean|Boolean]]: Default true.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
isMan = 1;
isMan = 1;
</syntaxhighlight>
</syntaxhighlight>
 
Defined within the man class
Defined within the man class


===K===
=== K ===
====killed====
==== killed ====
[[TokenNameValueTypes|String]]: [[:Category:Event Handlers|Event Handlers]]
[[TokenNameValueTypes#Strings|String]]: [[:Category:Event Handlers|Event Handlers]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
killed = "[(_this select 0), 1, 1, 0, 0] exec ""\AnyAddon\AnySQS.sqs"""; // note the ""
killed = "[(_this select 0), 1, 1, 0, 0] exec ""\AnyAddon\AnySQS.sqs"""; // note the ""
</syntaxhighlight>
</syntaxhighlight>


===L===
=== L ===
====ladders====
==== ladders ====
Embedded [[TokenNameValueTypes|Array]]: The ladders array is used to declare one or more ladder pairs inside the model.
Embedded [[TokenNameValueTypes#Arrays|Array]]: The ladders array is used to declare one or more ladder pairs inside the model.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
ladders[] = { {"start", "end" } }; // a building with one ladder
ladders[] = { {"start", "end" } }; // a building with one ladder
ladders[] = { {"start1", "end1" }, {"start2", "end2" } }; // two ladder building
ladders[] = { {"start1", "end1" }, {"start2", "end2" } }; // two ladder building
//...etc
// ...etc
</syntaxhighlight>
</syntaxhighlight>


Note that unfortunately, the 'start' and 'end' labels are arbitrary for ''each'' model. You cannot have a generic ladder building as such.
Note that unfortunately, the 'start' and 'end' labels are arbitrary for ''each'' model. You cannot have a generic ladder building as such.


Since 1.79.143080 it's possible to define radius of action & component in geometry LOD. Action will be visible then when player is looking at selected component
Since 1.79.143080 it is possible to define radius of action & component in geometry LOD. Action will be visible then when player is looking at selected component


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
// { Starting point (memory LOD), Ending point (memory LOD), radius (in meters), Named Selection (geometry LOD)}
// { Starting point (memory LOD), Ending point (memory LOD), radius (in meters), Named Selection (geometry LOD) }
ladders[] = {{"Ladder_1_start","Ladder_1_end",2.5,"Ladder_1_action"},{"Ladder_2_start","Ladder_2_end",2.5,"Ladder_2_action"},{"Ladder_3_start","Ladder_3_end",2.5,"Ladder_3_action"}};
ladders[] = { { "Ladder_1_start", "Ladder_1_end", 2.5, "Ladder_1_action" }, { "Ladder_2_start", "Ladder_2_end", 2.5, "Ladder_2_action" }, { "Ladder_3_start", "Ladder_3_end", 2.5, "Ladder_3_action" } };
</syntaxhighlight>
</syntaxhighlight>


====laser...====
==== laser... ====
[[TokenNameValueTypes|Boolean]]: Default false
[[TokenNameValueTypes#Boolean|Boolean]]: Default false


Determines if a vehicle has laser capability.
Determines if a vehicle has laser capability.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
laserScanner = true;
laserScanner = true;
laserTarget = true; // used as a generic class of All {} to default things true
laserTarget = true; // used as a generic class of All {} to default things true
</syntaxhighlight>
</syntaxhighlight>


====landingAoa====
==== landingAoa ====
MathFormula [[TokenNameValueTypes|String]] Default 10*3.1415/180
MathFormula [[TokenNameValueTypes#Strings|String]] Default 10*3.1415/180


Landing Angle of Approach. Used by plane class
Landing Angle of Approach. Used by plane class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
landingAoa = 7*3.1415/180; // Cessna
landingAoa = 7*3.1415/180; // Cessna
</syntaxhighlight>
</syntaxhighlight>


====landingSpeed====
==== landingSpeed ====
[[TokenNameValueTypes|Integer]]: Default 0 Kph.
[[TokenNameValueTypes#Integers|Integer]]: Default 0 Kph.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
landingSpeed = 75; // plane vehicles
landingSpeed = 75; // plane vehicles
</syntaxhighlight>
</syntaxhighlight>


====library====
==== library ====
[[TokenNameValueTypes|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:
[[TokenNameValueTypes#Strings|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:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class Library {
class Library
{
libTextDesc = "$STR_LIB_AH1Z";
libTextDesc = "$STR_LIB_AH1Z";
};
};
Line 1,817: Line 1,981:


==== LODDriverTurnedIn ====
==== LODDriverTurnedIn ====
[[TokenNameValueTypes|Integer]] Defines the LOD that is to be used when the Driver is turned in. Value=-1 seems to default to the standard LOD (for Turret's that is Gunnerview).  
[[TokenNameValueTypes#Integers|Integer]] Defines the LOD that is to be used when the Driver is turned in. Value=-1 seems to default to the standard LOD (for Turret's that is Gunnerview).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
LODDriverTurnedIn = -1
LODDriverTurnedIn = -1
</syntaxhighlight>
</syntaxhighlight>
Value:  -1=Default LOD; 1=first resolution LOD; 1000=Gunnerview;  1100=Pilotview; 1200=Cargoview.
Value:  -1=Default LOD; 1=first resolution LOD; 1000=Gunnerview;  1100=Pilotview; 1200=Cargoview.


==== LODDriverTurnedOut ====
==== LODDriverTurnedOut ====
[[TokenNameValueTypes|Integer]] Defines the LOD that is to be used when the Driveris turned out. The same rules as with LODDriverTurnedIn apply.
[[TokenNameValueTypes#Integers|Integer]] Defines the LOD that is to be used when the Driveris turned out. The same rules as with LODDriverTurnedIn apply.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
LODDriverTurnedOut = -1
LODDriverTurnedOut = -1
</syntaxhighlight>
</syntaxhighlight>


===M===
=== M ===
====magazine====
==== magazine ====
[[TokenNameValueTypes|Array]]: used in TransportMagazines class this specifies the type of ammo in the magazine and the amount.
[[TokenNameValueTypes#Arrays|Array]]: used in TransportMagazines class this specifies the type of ammo in the magazine and the amount.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
{
{
magazine = "30Rnd_556x45_Stanag";
magazine = "30Rnd_556x45_Stanag";
Line 1,844: Line 2,008:
Each of these couplets are contained within a 'weapon' classname within the magazine''S'' class itself. Example
Each of these couplets are contained within a 'weapon' classname within the magazine''S'' class itself. Example


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class TransportMagazines {
class TransportMagazines
class _xx_M16 {
{
magazine = M16;
class _xx_M16
count = 30*1;
{
magazine = "M16";
count = 30 * 1;
};
};
class _xx_M60 {
class _xx_M60
......
{
// ...
};
};
class _xx_PK {
class _xx_PK
......
{
// ...
};
};
...
// ...
};
};
</syntaxhighlight>
</syntaxhighlight>


====magazines====
==== magazines ====
Variable string [[TokenNameValueTypes|Array]]: default {}
Variable string [[TokenNameValueTypes#Arrays|Array]]: default {}


see [[#weapons]] for proper description
see [[#weapons]] for proper description


====mapSize====
==== mapSize ====
[[TokenNameValueTypes|Float]]: Default Value = 10 (meters).
[[TokenNameValueTypes#Floats|Float]]: Default Value = 10 (meters).


Used for the map editor to show the [[#icon|icon]] associated with this model class.  
Used for the map editor to show the [[#icon|icon]] associated with this model class.


There is no x y component to this, the measurement units are meters.
There is no x y component to this, the measurement units are meters.
Line 1,874: Line 2,042:
To create a circular, rectangular or other 'non square' image, you need to make a pac file for the icon with, a transparent layer.
To create a circular, rectangular or other 'non square' image, you need to make a pac file for the icon with, a transparent layer.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
mapSize = 0.7; // small object such as a tree
mapSize = 0.7; // small object such as a tree
mapSize = 4; // a smallish building
mapSize = 4; // a smallish building
Line 1,883: Line 2,051:
Later Oem addons, *generally* are better and more specific in this regard, making position and fitting a little easier.
Later Oem addons, *generally* are better and more specific in this regard, making position and fitting a little easier.


====marker====  
==== marker ====
[[TokenNameValueTypes|String]] : used as a core for all other air craft when looking on map.
[[TokenNameValueTypes#Strings|String]] : used as a core for all other air craft when looking on map.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
marker = "\AnyAddon\AnyP3d.(p3d")";
marker = "\AnyAddon\AnyP3d.(p3d")";
</syntaxhighlight>
</syntaxhighlight>


====material====
==== material ====
[[TokenNameValueTypes|Integer]]:
[[TokenNameValueTypes#Integers|Integer]]:


Used in Hit... classes, eg HitTurret HitBody
Used in Hit... classes, eg HitTurret HitBody


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
material = 50;
material = 50;
</syntaxhighlight>
</syntaxhighlight>
Line 1,901: Line 2,069:
<u>Related TokenNames</u>: [[#armor (float)]], [[#material]], [[#name]], [[#passThrough]]
<u>Related TokenNames</u>: [[#armor (float)]], [[#material]], [[#name]], [[#passThrough]]


====maximumLoad====
==== maximumLoad ====
The maximumLoad value defines the number of units of cargo storage.
The maximumLoad value defines the number of units of cargo storage.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
maximumLoad = 2000;
maximumLoad = 2000;
</syntaxhighlight>
</syntaxhighlight>


An item's storage value (the amount of space it takes up) is defined by it's mass value. For example:
An item's storage value (the amount of space it takes up) is defined by it is mass value. For example:
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
//CfgMagazines >> "Titan_AT"
// CfgMagazines >> "Titan_AT"
mass = 100;
mass = 100;
</syntaxhighlight>
</syntaxhighlight>


The following parameter are used by just Eden:
The following parameter are used by just Eden:
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
transportMaxMagazines
transportMaxMagazines
transportMaxWeapons
transportMaxWeapons
Line 1,921: Line 2,089:
</syntaxhighlight>
</syntaxhighlight>


====maxT====
==== maxT ====
[[TokenNameValueTypes|Integer]]: This TokenName is used inside the [[#Smoke Class]]
[[TokenNameValueTypes#Integers|Integer]]: This TokenName is used inside the [[#Smoke Class]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
maxT = 0;
maxT = 0;
</syntaxhighlight>
</syntaxhighlight>


====min/max====
==== min/max ====
[[TokenNameValueTypes|String]] Degrees Math Formula
[[TokenNameValueTypes#Strings|String]] Degrees Math Formula


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
min = 0;
min = 0;
max = 60 / 3.6;
max = 60 / 3.6;
</syntaxhighlight>
</syntaxhighlight>
 
Note for readability, these values are ''normally'' expressed as strings which the engine itself will convert.
Note for readability, these values are ''normally'' expressed as strings which the engine itself will convert.


see [[#selection|Indicator Class]]
see [[#selection|Indicator Class]]


====memoryPointExhaust...====
==== memoryPointExhaust... ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
memoryPointExhaust = "exhaust_start";
memoryPointExhaust = "exhaust_start";
memoryPointExhaustDir = "exhaust_end";
memoryPointExhaustDir = "exhaust_end";
</syntaxhighlight>
</syntaxhighlight>


====memoryPointGun====
==== memoryPointGun ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
memoryPointGun = "machinegun";
memoryPointGun = "machinegun";
</syntaxhighlight>
</syntaxhighlight>
====memoryPointGunnerOptics====
==== memoryPointGunnerOptics ====
[[TokenNameValueTypes|String]]
[[TokenNameValueTypes#Strings|String]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
memoryPointGunnerOptics = "gunnerview";
memoryPointGunnerOptics = "gunnerview";
</syntaxhighlight>
</syntaxhighlight>
====memoryPointGunnerOutOptics====
==== memoryPointGunnerOutOptics ====
[[TokenNameValueTypes|String]]
[[TokenNameValueTypes#Strings|String]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
memoryPointGunnerOutOptics = "commander_weapon_view";
memoryPointGunnerOutOptics = "commander_weapon_view";
</syntaxhighlight>
</syntaxhighlight>


====memoryPoint...Missile====
==== memoryPoint...Missile ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
memoryPointLMissile = "Missile_1";
memoryPointLMissile = "Missile_1";
memoryPointRMissile = "Missile_2";
memoryPointRMissile = "Missile_2";
</syntaxhighlight>
</syntaxhighlight>
====memoryPoint...Rocket====
==== memoryPoint...Rocket ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
memoryPointLRocket = "Rocket_1";
memoryPointLRocket = "Rocket_1";
memoryPointRRocket = "Rocket_2";
memoryPointRRocket = "Rocket_2";
</syntaxhighlight>
</syntaxhighlight>
====memoryPointsGetIn...====
==== memoryPointsGetIn... ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
memoryPointsGetInCargo = "pos_cargo";
memoryPointsGetInCargo = "pos_cargo";
memoryPointsGetInCoDriver = "pos_codriver";
memoryPointsGetInCoDriver = "pos_codriver";
Line 1,996: Line 2,164:
</syntaxhighlight>
</syntaxhighlight>
=====memoryPointsGetIn...Dir=====
===== memoryPointsGetIn...Dir =====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
memoryPointsGetInCargoDir = "pos_cargo_dir";
memoryPointsGetInCargoDir = "pos_cargo_dir";
memoryPointsGetInCoDriverDir = "pos_codriver_dir";
memoryPointsGetInCoDriverDir = "pos_codriver_dir";
Line 2,007: Line 2,175:
</syntaxhighlight>
</syntaxhighlight>


====memoryPointSupply====
==== memoryPointSupply ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
memoryPointSupply = "supply";
memoryPointSupply = "supply";
</syntaxhighlight>
</syntaxhighlight>


====memoryPointTrack...====
==== memoryPointTrack... ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
memoryPointTrackFLL = "tyreTrack_1_1l";
memoryPointTrackFLL = "tyreTrack_1_1l";
memoryPointTrackFLR = "tyreTrack_1_1r";
memoryPointTrackFLR = "tyreTrack_1_1r";
Line 2,028: Line 2,196:
</syntaxhighlight>
</syntaxhighlight>


====microMimics====
==== microMimics ====
[[TokenNameValueTypes|String]]: Man class
[[TokenNameValueTypes#Strings|String]]: Man class


This token refers to the class within the external cfgMimics class
This token refers to the class within the external cfgMimics class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
microMimics = Micro;
microMimics = "Micro";
</syntaxhighlight>
</syntaxhighlight>


====minute====
==== minute ====
part of the IndicatorWatch class
part of the IndicatorWatch class


see [[#hour]]
see [[#hour]]


====model====
==== model ====
[[TokenNameValueTypes|String]]: Default Value= "empty.p3d"
[[TokenNameValueTypes#Strings|String]]: Default Value= "empty.p3d"


Location in the addon where the p3d model resides.
Location in the addon where the p3d model resides.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
model = "\AddonName\anyp3d(.p3d)";
model = "\AddonName\anyp3d(.p3d)";
</syntaxhighlight>
</syntaxhighlight>
Line 2,053: Line 2,221:
Where a class is not a visible 'object', such as a BaseClass. You can specify
Where a class is not a visible 'object', such as a BaseClass. You can specify


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
model = "";
model = "";
</syntaxhighlight>
</syntaxhighlight>
Line 2,061: Line 2,229:
<u>Related TokenName</u>: [[#simulation]], [[#reversed]]
<u>Related TokenName</u>: [[#simulation]], [[#reversed]]


====moves====
==== moves ====
[[TokenNameValueTypes|String]]: Default = NoDefaultMoves
[[TokenNameValueTypes#Strings|String]]: Default = "NoDefaultMoves"


applies to the man class and refers to a cfgMoves class
applies to the man class and refers to a cfgMoves class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
moves = CfgMovesMC; // civilian, in fact, there isn't another
moves = "CfgMovesMC"; // civilian, in fact, there isn't another
</syntaxhighlight>
</syntaxhighlight>


===N===
=== N ===
====...NightLights...====
==== ...NightLights... ====
[[TokenNameValueTypes|Float]]:
[[TokenNameValueTypes#Floats|Float]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
spotableNightLightsOff = 0.05; // default
spotableNightLightsOff = 0.05; // default
spotableNightLightsOn = 4; // default
spotableNightLightsOn = 4; // default
Line 2,081: Line 2,249:
</syntaxhighlight>
</syntaxhighlight>


====name====
==== name ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
name = "motor";
name = "motor";
</syntaxhighlight>
</syntaxhighlight>
Line 2,092: Line 2,260:
<u>Related TokenNames</u>: [[#armor (float)]], [[#material]], [[#name]], [[#passThrough]]
<u>Related TokenNames</u>: [[#armor (float)]], [[#material]], [[#name]], [[#passThrough]]


====nameSound====
==== nameSound ====
[[TokenNameValueTypes|String]]: Default value: "Target"
[[TokenNameValueTypes#Strings|String]]: Default value: "Target"


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


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
nameSound = "rock";
nameSound = "rock";
</syntaxhighlight>
</syntaxhighlight>
Line 2,103: Line 2,271:
Many different nameSounds can be selected. Here are just a few.
Many different nameSounds can be selected. Here are just a few.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
nameSound = crew;
nameSound = "crew";
nameSound = target;  
nameSound = "target";
nameSound = tank;
nameSound = "tank";
nameSound = house;
nameSound = "house";
</syntaxhighlight>
</syntaxhighlight>


Line 2,114: Line 2,282:
Typically, a collection of buildings (eg) will be configured as follows
Typically, a collection of buildings (eg) will be configured as follows


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class GenBuilding : NonStrategic {
class GenBuilding : NonStrategic
scope=private; // internal use only
{
VehicleClass="Some Editor Group Name";
scope = private; // internal use only
namesound="house";
VehicleClass = "Some Editor Group Name";
nameSound = "house";
};
};
class YellowBuilding: GenBuilding {
class YellowBuilding : GenBuilding
scope=public;
{
name="YellowBuilding";
scope = public;
model="Some yellow building.p3d";
name = "YellowBuilding";
model = "Some yellow building.p3d";
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 2,130: Line 2,300:
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]


====noseDownCoef====
==== noseDownCoef ====
[[TokenNameValueTypes|Float]]: Default 1.0 used by Plane class
[[TokenNameValueTypes#Floats|Float]]: Default 1.0 used by Plane class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
noseDownCoef = 0.025; // Cessna
noseDownCoef = 0.025; // Cessna
</syntaxhighlight>
</syntaxhighlight>
Line 2,141: Line 2,311:
''Note: Not used in ArmA any more''
''Note: Not used in ArmA any more''


====nightVision====
==== nightVision ====
[[TokenNameValueTypes|Boolean]]: Default false
[[TokenNameValueTypes#Boolean|Boolean]]: Default false


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
nightVision = true;
nightVision = true;
</syntaxhighlight>
</syntaxhighlight>
Line 2,152: Line 2,322:
''Note: obsolete, not used, NVG item is used instead''
''Note: obsolete, not used, NVG item is used instead''


===O===
=== O ===
====...OpticsColor====
==== ...OpticsColor ====
Float [[TokenNameValueTypes|Array]] : Default {0, 0, 0, 1};
Float [[TokenNameValueTypes#Arrays|Array]] : Default {0, 0, 0, 1};
 
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
driverOpticsColor[] = {0, 0, 0, 1};
driverOpticsColor[] = { 0, 0, 0, 1 };
gunnerOpticsColor[] = {0.910000, 0.230000, 0.230000, 1};
gunnerOpticsColor[] = { 0.910000, 0.230000, 0.230000, 1 };
commanderOpticsColor[] = {0.910000, 0.230000, 0.230000, 1};
commanderOpticsColor[] = { 0.910000, 0.230000, 0.230000, 1 };
</syntaxhighlight>
</syntaxhighlight>


====...OpticsModel====
==== ...OpticsModel ====
[[TokenNameValueTypes|String]]: Default ""
[[TokenNameValueTypes#Strings|String]]: Default ""


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
commanderOpticsModel= "\AnyPbo\AnyP3d(.p3d)";
commanderOpticsModel= "\AnyPbo\AnyP3d(.p3d)";
driverOpticsModel = "\AnyPbo\AnyP3d(.p3d)";
driverOpticsModel = "\AnyPbo\AnyP3d(.p3d)";
Line 2,171: Line 2,341:
</syntaxhighlight>
</syntaxhighlight>


====gunnerOpticsShowCursor====
==== gunnerOpticsShowCursor ====
[[TokenNameValueTypes|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gunnerOpticsShowCursor = true;
gunnerOpticsShowCursor = true;
</syntaxhighlight>
</syntaxhighlight>


===P===
=== P ===
====passThrough====
==== passThrough ====
[[TokenNameValueTypes|Boolean]]: Default true
[[TokenNameValueTypes#Boolean|Boolean]]: Default true


If true, destroying this part of the vehicle will destroy the whole vehicle. If false, damage will only affect this part of the vehicle.
If true, destroying this part of the vehicle will destroy the whole vehicle. If false, damage will only affect this part of the vehicle.


This value is only taken into account in ArmA 2. It was ignored by the game engine in previous games (that includes OFP).
This value is only taken into account in Arma 2. It was ignored by the game engine in previous games (that includes OFP).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
passThrough = 1;
passThrough = 1;
</syntaxhighlight>
</syntaxhighlight>
Line 2,194: Line 2,364:
<u>Related TokenNames</u>: [[#armor (float)]], [[#material]], [[#name]], [[#passThrough]]
<u>Related TokenNames</u>: [[#armor (float)]], [[#material]], [[#name]], [[#passThrough]]


====picture====
==== picture ====
[[TokenNameValueTypes|String]]: Default: iaston.paa
[[TokenNameValueTypes#Strings|String]]: Default: iaston.paa


I think this is for briefing Information icon click
I think this is for briefing Information icon click


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
picture = "\AnyAddon\AnyPAA(.paa)";
picture = "\AnyAddon\AnyPAA(.paa)";
</syntaxhighlight>
</syntaxhighlight>
Line 2,209: Line 2,379:
RGB 255, 0, 255. Pink is invisible in .pac file.
RGB 255, 0, 255. Pink is invisible in .pac file.


====pilotLight====
==== pilotLight ====
[[TokenNameValueTypes|Boolean]]: Default: false
[[TokenNameValueTypes#Boolean|Boolean]]: Default: false


Default state of headlights on vehicle.
Default state of headlights on vehicle.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
pilotLight = true; //spawn vehicle with headlights on
pilotLight = true; // spawn vehicle with headlights on
</syntaxhighlight>
</syntaxhighlight>


====position====
==== position ====
[[TokenNameValueTypes|String]]:  
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
position = "ohniste";
position = "ohniste";
position = "L svetlo";
position = "L svetlo";
Line 2,228: Line 2,398:
See [[#Reflectors Class]], [[#Light Class]]
See [[#Reflectors Class]], [[#Light Class]]


====precision====
==== precision ====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
precision = 1; // man
precision = 1; // man
precision = 200; // air
precision = 200; // air
Line 2,235: Line 2,405:
</syntaxhighlight>
</syntaxhighlight>


====...preciseGetInOut====
==== ...preciseGetInOut ====
[[TokenNameValueTypes|Integer]]: Defines location of getin point. 0 = use memoryPointGetIn , 1 = use model center as get in point, 2 = use proxy of crew position as get in point. Default is 0.  
[[TokenNameValueTypes#Integers|Integer]]: Defines location of getin point. 0 = use memoryPointGetIn , 1 = use model center as get in point, 2 = use proxy of crew position as get in point. Default is 0.
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
preciseGetInOut=0; //for vehicle crew
preciseGetInOut=0; // for vehicle crew
cargoPreciseGetInOut=0; // for passengers
cargoPreciseGetInOut=0; // for passengers
</syntaxhighlight>
</syntaxhighlight>


====preferRoads====
==== preferRoads ====
[[TokenNameValueTypes|Boolean]]: Default false
[[TokenNameValueTypes#Boolean|Boolean]]: Default false


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
preferRoads = true; // all vehicles
preferRoads = true; // all vehicles
</syntaxhighlight>
</syntaxhighlight>


====primary====
==== primary ====
[[TokenNameValueTypes|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 declared the main, or primary turret. There may indeed be only one 'turret'. (Note: this entry has been replaced by the '''primary...''' entries. Please use those for your turret definitions to ensure maximal compatibility.)
[[TokenNameValueTypes#Boolean|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 declared the main, or primary turret. There may indeed be only one 'turret'. (Note: this entry has been replaced by the '''primary...''' entries. Please use those for your turret definitions to ensure maximal compatibility.)


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
primary = true;
primary = true;
</syntaxhighlight>
</syntaxhighlight>


====primary...====
==== primary... ====
[[TokenNameValueTypes|Boolean]] A vehicle can have multiple turrets, but one of them normally is the primary gunner turret and one the primary vehicle commander turret (this can be the same turret or two different turrets, but you cannot have several primary gunner or commander turrets). Please use these entries instead of the more general '''primary''' entry.
[[TokenNameValueTypes#Boolean|Boolean]] A vehicle can have multiple turrets, but one of them normally is the primary gunner turret and one the primary vehicle commander turret (this can be the same turret or two different turrets, but you cannot have several primary gunner or commander turrets). Please use these entries instead of the more general '''primary''' entry.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
primaryGunner = false;
primaryGunner = false;
primaryObserver = true; // Commander
primaryObserver = true; // Commander
</syntaxhighlight>
</syntaxhighlight>


====proxyIndex====
==== proxyIndex ====
[[TokenNameValueTypes|Integer]]
[[TokenNameValueTypes#Integers|Integer]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
proxyIndex = 2;
proxyIndex = 2;
</syntaxhighlight>
</syntaxhighlight>


====proxyType====
==== proxyType ====
[[TokenNameValueTypes|String]]
[[TokenNameValueTypes#Strings|String]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
proxyType = "CPCommander";
proxyType = "CPCommander";
</syntaxhighlight>
</syntaxhighlight>


===R===
=== R ===
====...Radius====
==== ...Radius ====
[[TokenNameValueTypes|Float]]:  
[[TokenNameValueTypes#Floats|Float]]:


Represents a circular area (radius in meters from '''centre''' of object for action to take place
Represents a circular area (radius in meters from '''centre''' of object for action to take place


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
getInRadius=2.5; // default
getInRadius=2.5; // default
getInRadius=3.5; // tank
getInRadius=3.5; // tank
Line 2,291: Line 2,461:
</syntaxhighlight>
</syntaxhighlight>


====...RotorSpeed====
==== ...RotorSpeed ====
[[TokenNameValueTypes|float]]: Helicopters
[[TokenNameValueTypes#Floats|Float]]: Helicopters


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
mainRotorSpeed = 1.0; // default
mainRotorSpeed = 1.0; // default
backRotorSpeed = 1.5; // default
backRotorSpeed = 1.5; // default
//
 
mainRotorSpeed = 1.0; // ch47d
mainRotorSpeed = 1.0; // ch47d
backRotorSpeed = -1.0;
backRotorSpeed = -1.0;
</syntaxhighlight>
</syntaxhighlight>


====...RotorDive====
==== ...RotorDive ====
[[TokenNameValueTypes|float]]: Helicopters, Default 0.0
[[TokenNameValueTypes#Floats|Float]]: Helicopters, Default 0.0


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minMainRotorDive = -9; // CH47D
minMainRotorDive = -9; // CH47D
maxMainRotorDive = 15;
maxMainRotorDive = 15;
Line 2,314: Line 2,484:
</syntaxhighlight>
</syntaxhighlight>


====ReloadAnimations Class====
==== ReloadAnimations Class ====
General useage in Helicopters, this class is 'looked for' by the engine. Various models, but normally only one, are specified as follows
General useage in Helicopters, this class is 'looked for' by the engine. Various models, but normally only one, are specified as follows


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class ReloadAnimations {
class ReloadAnimations
class SomeThingA {
{
...
class SomeThingA
{
// ...
};
};
...
// ...
class SomeThingZ {
class SomeThingZ
...
{
// ...
};
};
};
};
Line 2,331: Line 2,504:
here is an example for an Mi24 helicopter
here is an example for an Mi24 helicopter


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class MachineGun30E {
class MachineGun30E
weapon = MachineGun30E;
{
weapon = "MachineGun30E";
angle0 = 0;
angle0 = 0;
angle1 = -2 * 3.141592654;
angle1 = -2 * 3.141592654;
multiplier = 500;
multiplier = 500;
type = rotation;
type = "rotation";
animPeriod = 0.500000;
animPeriod = 0.500000;
selection = gatling;
selection = "gatling";
begin = usti hlavne;
begin = "usti hlavne";
end = konec hlavne;
end = "konec hlavne";
};
};
</syntaxhighlight>
</syntaxhighlight>


====rotL/R====
==== rotL/R ====
defined within a tank.Wheels class to describe the series of small wheels on each side
defined within a tank.Wheels class to describe the series of small wheels on each side


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
rotR[] = {kolL1, kolL2, kolL3, kolL4, kolL5, kolL6, kolL7, kolL8};
rotR[] = { kolL1, kolL2, kolL3, kolL4, kolL5, kolL6, kolL7, kolL8 };
rotL[] = {kolP1, kolP2, kolP3, kolP4, kolP5, kolP6, kolP7, kolP8};
rotL[] = { kolP1, kolP2, kolP3, kolP4, kolP5, kolP6, kolP7, kolP8 };
upDownL[] = {koloP1, podkoloP1, koloP2, podkoloP2, koloP3, podkoloP3, koloP4, podkoloP4, koloP5, podkoloP5, koloP6, podkoloP6, koloP7, podkoloP7, koloP8, podkoloP8};
upDownL[] = { koloP1, podkoloP1, koloP2, podkoloP2, koloP3, podkoloP3, koloP4, podkoloP4, koloP5, podkoloP5, koloP6, podkoloP6, koloP7, podkoloP7, koloP8, podkoloP8 };
upDownR[] = {koloL1, podkoloL1, koloL2, podkoloL2, koloL3, podkoloL3, koloL4, podkoloL4, koloL5, podkoloL5, koloL6, podkoloL6, koloL7, podkoloL7, koloL8, podkoloL8};
upDownR[] = { koloL1, podkoloL1, koloL2, podkoloL2, koloL3, podkoloL3, koloL4, podkoloL4, koloL5, podkoloL5, koloL6, podkoloL6, koloL7, podkoloL7, koloL8, podkoloL8 };
</syntaxhighlight>
</syntaxhighlight>


====reversed====
==== reversed ====
[[TokenNameValueTypes|Boolean]]: Default true
[[TokenNameValueTypes#Boolean|Boolean]]: Default true


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]]
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]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
reversed = false; // class thing
reversed = false; // class thing
</syntaxhighlight>
</syntaxhighlight>


====rotor...====
==== rotor... ====
[[TokenNameValueTypes|String]]: Helicopters
[[TokenNameValueTypes#Strings|String]]: Helicopters


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
rotorBig = "vrtule_velka"; // cobra
rotorBig = "vrtule_velka"; // cobra
rotorBigBlend = "vrtule_velka_bl";
rotorBigBlend = "vrtule_velka_bl";
Line 2,374: Line 2,548:
</syntaxhighlight>
</syntaxhighlight>


===S===
=== S ===
====...Sensitivity====
==== ...Sensitivity ====
[[TokenNameValueTypes|Float]]: Default 1.0 Used by Plane Class
[[TokenNameValueTypes#Floats|Float]]: Default 1.0 Used by Plane Class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
aileronSensitivity = 0.33; // Cessna
aileronSensitivity = 0.33; // Cessna
elevatorSensitivity = 0.1; // Cessna
elevatorSensitivity = 0.1; // Cessna
Line 2,384: Line 2,558:
</syntaxhighlight>
</syntaxhighlight>


====...Simul/Plan====
==== ...Simul/Plan ====
[[TokenNameValueTypes|float]]: in meters
[[TokenNameValueTypes#Floats|Float]]: in meters


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
steerAheadSimul = 0.5; // default
steerAheadSimul = 0.5; // default
steerAheadPlan = 0.35; // default
steerAheadPlan = 0.35; // default
Line 2,399: Line 2,573:
</syntaxhighlight>
</syntaxhighlight>


====scope====
==== scope ====
[[TokenNameValueTypes|Integer]]: Default value = private.
[[TokenNameValueTypes#Integers|Integer]]: Default value is 0 (private).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
scope = public;
scope = 2;
</syntaxhighlight>
</syntaxhighlight>


Scope in concept is the same as the C++ reserved words of public, protected and private.
Scope is used to limit access to the class in the Mission Editor (such as [[:Category:Eden Editor|Eden Editor]]) and scripts. The value can be one of '''0''' (private), '''1''' (protected/hidden), and '''2''' (public).


Defines normally exist at the top of a well written config.cpp to make meanings clearer.
[[PreProcessor_Commands#.23define|Defines]] normally exist at the top of a well written config.cpp to make meanings clearer.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
#define private 0
#define private 0
#define protected 1
#define protected 1
Line 2,420: Line 2,594:
'''private:'''
'''private:'''


Only other classes inherit this class. It is not createVehicle'able, nor can the class be accessed via the Mission Editor.
No object can be created using this class, neither in Mission Editor nor via scripts. This property marks the class as a "base" class, which other classes inherit from.


private is a common method of grouping base characteristics together and inheriting all those common characteristics into a class that can be viewed or accessed.
private is a common method of grouping base characteristics together and inheriting all those common characteristics into a class that can be viewed or accessed.
Line 2,426: Line 2,600:
'''public:'''
'''public:'''


Any classes declared public are CamCreateabale, '''and''' selectable via the Editor.
Public classes are usable in scripting commands (such as [[createVehicle]]) and can be shown in the Mission Editor.


'''protected:'''
'''protected:'''


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


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class vegetables {
class Vegetables
{
scope = protected;
scope = protected;
VehicleClass = "Fruit and Onions"; // a generic group in mission editor
VehicleClass = "Fruit and Onions"; // a generic group in mission editor
displayName = "Generic Vegetable";
displayName = "Generic Vegetable";
namesound = whatever;
namesound = "whatever";
icon = "vegetableIcon.paa";
icon = "vegetableIcon.paa";
// put any other common characteristics in here
// put any other common characteristics in here
};
};
class GreenOnions : vegetables {
class GreenOnions : Vegetables
{
scope = public;
scope = public;
displayName = "Green Onion;
displayName = "Green Onion";
}
}
class PurpleOnion : vegetables {
class PurpleOnion : Vegetables
{
....
....
}
}
Line 2,458: Line 2,635:
In the above example, it is just as useful to declare the base class '''private''. But, see below, and see [[#accuracy]]
In the above example, it is just as useful to declare the base class '''private''. But, see below, and see [[#accuracy]]


Protected classes are CamCreatable in the mission.sqm.  
Protected classes are CamCreatable in the mission.sqm.


Protected classes are immensely useful to 'hide' obsolete models that are still required to maintain compatibility with older missions. Ie older missions will still be playable, but newly created ones will only 'get at' the newer improvements specified in a public class. This
Protected classes are immensely useful to 'hide' obsolete models that are still required to maintain compatibility with older missions. Ie older missions will still be playable, but newly created ones will only 'get at' the newer improvements specified in a public class. This


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class OriginalThing {
class OriginalThing
scope=protected;
{
....
scope = protected;
// ...
// lots of original things
// lots of original things
....
// ...
};
};
class ImprovedThing : OriginalThing { // <<<< inherits it all
class ImprovedThing : OriginalThing // inherits it all
scope=public;
{
...
scope = public;
// ...
// lots of new improved things
// lots of new improved things
...
// ...
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 2,480: Line 2,659:
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]


====secondaryExplosion====
==== secondaryExplosion ====
[[TokenNameValueTypes|Integer]]: Default disabled (-1)
[[TokenNameValueTypes#Integers|Integer]]: Default disabled (-1)


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
secondaryExplosion = -1;
secondaryExplosion = -1;
</syntaxhighlight>
</syntaxhighlight>


====sensitivity====
==== sensitivity ====
[[TokenNameValueTypes|Float]]: Default 1.0
[[TokenNameValueTypes#Floats|Float]]: Default 1.0


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
sensitivity = 0.6; // cars
sensitivity = 0.6; // cars
sensitivity = 2; // sniper
sensitivity = 2; // sniper
Line 2,497: Line 2,676:
The higher the sensitivity value for an unit, the better it can see.
The higher the sensitivity value for an unit, the better it can see.


The effect is not linear, but logarithmic. So for an unit with value 1 vs one with value 3 it must be 1.7 times closer (square root of 3). This example does not take into account other factors like zoom, binocular use, optics, camouflage and accuracy (knowsAbout value needed to detect the type and side).  
The effect is not linear, but logarithmic. So for an unit with value 1 vs one with value 3 it must be 1.7 times closer (square root of 3). This example does not take into account other factors like zoom, binocular use, optics, camouflage and accuracy (knowsAbout value needed to detect the type and side).


1 equals roughly to 100 meters, 2.5 to 210m, 3 to 250m.
1 equals roughly to 100 meters, 2.5 to 210m, 3 to 250m.
Line 2,503: Line 2,682:
OA 1.62 state:
OA 1.62 state:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
class All
class All
sensitivity = 2.5;
sensitivity = 2.5;
sensitivityEar = 0.0075;
sensitivityEar = 0.0075;
class AllVehicles: All
class AllVehicles : All
class Land: AllVehicles
class Land : AllVehicles
class LandVehicle: Land
class LandVehicle : Land
class Car: LandVehicle
class Car : LandVehicle
sensitivity = 3;
sensitivity = 3;
class Motorcycle: LandVehicle
class Motorcycle : LandVehicle
sensitivity = 3;
sensitivity = 3;
class Bicycle: Motorcycle
class Bicycle : Motorcycle
class Tank: LandVehicle
class Tank : LandVehicle
sensitivityEar = "0.0075 /3";
sensitivityEar = "0.0075 /3";
class APC: Tank
class APC : Tank
class Man: Land
class Man : Land
sensitivity = 3;
sensitivity = 3;
sensitivityEar = 0.5;
sensitivityEar = 0.5;
class Animal: Man
class Animal : Man
class Air: AllVehicles
class Air : AllVehicles
class Helicopter: Air
class Helicopter : Air
class Plane: Air
class Plane : Air
class Ship: AllVehicles
class Ship : AllVehicles
class AH6X_EP1: AH6_Base_EP1
class AH6X_EP1 : AH6_Base_EP1
sensitivity = 2;
sensitivity = 2;
class Ka137_Base_PMC: Helicopter
class Ka137_Base_PMC : Helicopter
sensitivity = 2;
sensitivity = 2;
</syntaxhighlight>
</syntaxhighlight>


====sensitivityEar====
==== sensitivityEar ====
[[TokenNameValueTypes|Float]]: Default 0.0075
[[TokenNameValueTypes#Floats|Float]]: Default 0.0075


Sets how well can the given unit hear others.
Sets how well can the given unit hear others.
The bigger the value, the better the hearing.
The bigger the value, the better the hearing.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
sensitivityEar = 0.13; // man
sensitivityEar = 0.13; // man
</syntaxhighlight>
</syntaxhighlight>


====selection====
==== selection ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
selection = L svetlo;
selection = "L svetlo";
</syntaxhighlight>
</syntaxhighlight>


See [[#Reflectors Class]], [[#ReloadAnimations Class]] (Arma Only), [[#Hatch... Class]], [[#Indicator Class]]
See [[#Reflectors Class]], [[#ReloadAnimations Class]] (Arma Only), [[#Hatch... Class]], [[#Indicator Class]]


====selection...====
==== selection... ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
selectionBackLights = "light_back";
selectionBackLights = "light_back";
selectionBrakeLights = "light_brake";
selectionBrakeLights = "light_brake";
Line 2,566: Line 2,745:


The selections
The selections
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
selectionLeftOffset = "PasOffsetL";
selectionLeftOffset = "PasOffsetL";
selectionRightOffset = "PasOffsetP";
selectionRightOffset = "PasOffsetP";
Line 2,572: Line 2,751:
are used to animate tank track textures. You must have the appropriate [[Named Selection|Named Selections]] in the model and the selection must have an rvmat in order to work.
are used to animate tank track textures. You must have the appropriate [[Named Selection|Named Selections]] in the model and the selection must have an rvmat in order to work.


====shape====
==== shape ====
[[TokenNameValueTypes|Float]]: This TokenName is used inside the [[#Light Class]]
[[TokenNameValueTypes#Floats|Float]]: This TokenName is used inside the [[#Light Class]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
shape = "koulesvetlo";
shape = "koulesvetlo";
</syntaxhighlight>
</syntaxhighlight>
Line 2,581: Line 2,760:
See [[#Light Class]], [[#Reflectors Class]]
See [[#Light Class]], [[#Reflectors Class]]


====showgunneroptics====
==== showgunneroptics ====
[[TokenNameValueTypes|Boolean]]:
[[TokenNameValueTypes#Boolean|Boolean]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
showgunneroptics = 0;
showgunneroptics = 0;
</syntaxhighlight>
</syntaxhighlight>


====showWeaponCargo====
==== showWeaponCargo ====
[[TokenNameValueTypes|Boolean]]:Default ?
[[TokenNameValueTypes#Boolean|Boolean]]:Default ?


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
showWeaponCargo = true;
showWeaponCargo = true;
</syntaxhighlight>
</syntaxhighlight>


Found inside weapon holders (ammo boxes)<br>
Found inside weapon holders (ammo boxes)<br>
OFP: If it's set to true player won't be able to put weapons/magazines to container.
OFP: If it is set to true player won't be able to put weapons/magazines to container.


====sound====
==== sound ====
[[TokenNameValueTypes|String]]:  
[[TokenNameValueTypes#Strings|String]]:
Used by animated objects (campfire eg) to give sound effect. Or, simply by ambients(wolves)
Used by animated objects (campfire eg) to give sound effect. Or, simply by ambients(wolves)


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
sound = "Fire";
sound = "Fire";
sound = Fountain;
sound = "Fountain";
sound = OwlSfx;
sound = "OwlSfx";
</syntaxhighlight>
</syntaxhighlight>


====SoundEnvironExt Class====
==== SoundEnvironExt Class ====
class SoundEnvironExt {
class SoundEnvironExt


This is a <u>Class</u> used within the man class. Some/ None, or all sections of it can (of course) be over-ridden by inheritance.
This is a <u>Class</u> used within the man class. Some/ None, or all sections of it can (of course) be overridden by inheritance.


The external class '''CfgManActions''' accesses the '''SoundEnvironExt''' class defined (or inherited) for any 'man' (soldier eg).
The external class '''CfgManActions''' accesses the '''SoundEnvironExt''' class defined (or inherited) for any 'man' (soldier eg).
Line 2,617: Line 2,796:
External class '''CfgManActions''' contains many clauses
External class '''CfgManActions''' contains many clauses


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
soundOverride = fallbody; // eg
soundOverride = "fallbody"; // e.g
</syntaxhighlight>
</syntaxhighlight>


Line 2,625: Line 2,804:
thus, you can define none some or all arrays (within class with your SoundEnvironExt{}) for the following
thus, you can define none some or all arrays (within class with your SoundEnvironExt{}) for the following


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
normalExt[] =  
normalExt[] =
normal[] =  
normal[] =
road[] =
road[] =
rock[] =  
rock[] =
water[] =
water[] =
gravel[] =  
gravel[] =
sand[] =  
sand[] =
drygrass[] =  
drygrass[] =
grass[] =  
grass[] =
forest[] =  
forest[] =
mud[] =  
mud[] =
wood[] =  
wood[] =
metal[] =  
metal[] =
snow[] =  
snow[] =
hallway[] =
hallway[] =
fallbody[] =  
fallbody[] =
laydown[] =  
laydown[] =
standup[] =  
standup[] =
crawl[] =
crawl[] =
</syntaxhighlight>
</syntaxhighlight>
Line 2,649: Line 2,828:
Example
Example


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
snow[] = {
snow[] = {
{ People\snow_L, 0.000032,1 },
{ "People\snow_L", 0.000032, 1 },
{ People\snow_R, 0.000032,1 }
{ "People\snow_R", 0.000032, 1 }
};
};
</syntaxhighlight>
</syntaxhighlight>


snow is a Variable length Sound [[TokenNameValueTypes|Array]]
snow is a Variable length Sound [[TokenNameValueTypes#Arrays|Array]]


see [[#Sounds Various|sounds[]]]
see [[#Sounds Various|sounds[]]]


====Sounds Various====
==== Sounds Various ====
Complex [[TokenNameValueTypes|Array]]:  
Complex [[TokenNameValueTypes#Arrays|Array]]:


All the following use
All the following use


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
nameOfSound[] = {"\AddonName\AnySound(.wss)", 0.000000, 1, 1};
nameOfSound[] = { "\AddonName\AnySound(.wss)", 0.000000, 1, 1 };
</syntaxhighlight>
</syntaxhighlight>


*1st parameter: Sound file (path). *.wss is default, *.ogg can be specified.
* 1st parameter: Sound file (path). *.wss is default, *.ogg can be specified.
*2nd parameter: Change of volume compared to the strongest sound that is audible at the camera's (player's) position. It means that the strongest sound is played on 100% and this sound is played weaker (calculated from dB value, distance, occlude, ...). If this sound is alone in sound scene then it is played on 100% every time.  
* 2nd parameter: Change of volume compared to the strongest sound that is audible at the camera's (player's) position. It means that the strongest sound is played on 100% and this sound is played weaker (calculated from dB value, distance, occlude, ...). If this sound is alone in sound scene then it is played on 100% every time.
*3rd parameter: Speed of playing, 1 = normal speed/time of playing, 2 = 2 times slower, with half lower pitch.
* 3rd parameter: Speed of playing, 1 = normal speed/time of playing, 2 = 2 times slower, with half lower pitch.


=====...Sound=====
===== ...Sound =====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
flySound[] = {"\AddonName\AnySound.wss", 0.000000, 1, 1};
flySound[] = { "\AddonName\AnySound.wss", 0.000000, 1, 1 };
singSound[] = {"\AddonName\SoundFile.ogg", 0.031623, 1, 1};
singSound[] = { "\AddonName\SoundFile.ogg", 0.031623, 1, 1 };
scudSound[] = {weapons\rocketflying, 316.227783, 0.200000};
scudSound[] = { "weapons\rocketflying", 316.227783, 0.200000 };
scudSoundElevate[] = {vehicles\gun_elevate, 0.010000, 1};
scudSoundElevate[] = { "vehicles\gun_elevate", 0.010000, 1 };
</syntaxhighlight>
</syntaxhighlight>


=====sound...=====
===== sound... =====
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
soundCrash[] = {"\AnyAddon\AnySound(.wss)", 0.010000, 1};
soundCrash[] = { "\AnyAddon\AnySound(.wss)", 0.010000, 1 };
soundSetSonicBoom[] = { "Plane_Fighter_SonicBoom_SoundSet" }; // Sonic Boom for jet fighters at supersonic speeds; defined in cfgSoundSets
</syntaxhighlight>
</syntaxhighlight>


default values
default values


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
soundCrash[] = {Vehicles\crash, 0.316228, 1};
soundCrash[] = { "Vehicles\crash", 0.316228, 1 };
soundDammage[] = {"", 1, 1};
soundDammage[] = { "", 1, 1 };
soundEngine[] = {"", 1, 1};
soundEngine[] = { "", 1, 1 };
soundEnviron[] = {"", 1, 1};
soundEnviron[] = { "", 1, 1 };
soundLandCrash[] = {Explosions\intoground, 0.316228, 1};
soundLandCrash[] = { "Explosions\intoground", 0.316228, 1 };
soundWaterCrash[] = {Explosions\intowater, 0.316228, 1};
soundWaterCrash[] = { "Explosions\intowater", 0.316228, 1 };
soundGetIn[] = {Vehicles\get_in, 0.000316, 1};
soundGetIn[] = { "Vehicles\get_in", 0.000316, 1 };
soundGetOut[] = {Vehicles\get_out, 0.000316, 1};
soundGetOut[] = { "Vehicles\get_out", 0.000316, 1 };
soundServo[] = {Vehicles\gun_elevate, 0.010000, 0.500000};
soundServo[] = { "Vehicles\gun_elevate", 0.010000, 0.500000 };
soundGear[] = {"\AnyAddon\AnySound(.wss)", 0.316228, 1}; // no default
soundGear[] = { "\AnyAddon\AnySound(.wss)", 0.316228, 1 }; // no default
 
additionalSound[] = { "\AnyAddon\AnySound(.wss)", 0.000000, 1 }; // man only
additionalSound[] = {\AnyAddon\AnySound(.wss), 0.000000, 1}; // man only
</syntaxhighlight>
</syntaxhighlight>


=====sound[]=====
===== sound[] =====
used by animations
used by animations


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
sound[] = {"\anyPbo\AnySound(.wss)", 10.000000, 1};
sound[] = { "\anyPbo\AnySound(.wss)", 10.000000, 1 };
</syntaxhighlight>
</syntaxhighlight>


====side====
==== side ====
[[TokenNameValueTypes|Integer]]: Default Value: NEUTRAL.
[[TokenNameValueTypes#Integers|Integer]]: Default Value: NEUTRAL.


The side, when declared, sets the 'vehicle' to 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.
The side, when declared, sets the 'vehicle' to 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.
Line 2,717: Line 2,896:
Well written missions (and configs) use defines at top of file to make this more legible.
Well written missions (and configs) use defines at top of file to make this more legible.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
#define NO_SIDE -1
#define NO_SIDE -1
#define EAST 0 // (Russian)
#define EAST 0 // (Russian)
#define WEST 1 // (NATO)
#define WEST 1 // (NATO)
#define RESISTANCE 2 // Guerilla  
#define RESISTANCE 2 // Guerilla
#define CIVILIAN 3
#define CIVILIAN 3
#define NEUTRAL 4
#define NEUTRAL 4
Line 2,731: Line 2,910:
</syntaxhighlight>
</syntaxhighlight>


NEUTRAL is the general case for all objects.  
NEUTRAL is the general case for all objects.


NO_SIDE is used for ambient seagulls and wolves (see [[#sound]]). It differs from NEUTRAL in that the engine spends no time looking for interraction with other objects.
NO_SIDE is used for ambient seagulls and wolves (see [[#sound]]). It differs from NEUTRAL in that the engine spends no time looking for interraction with other objects.


====simulation====
==== simulation ====
[[TokenNameValueTypes|String]]: Default value: invisible.
[[TokenNameValueTypes#Strings|String]]: Default value: invisible.


The engine behaviour with this [[#model]].
The engine behaviour with this [[#model]].


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
simulation = "SeaGull";
simulation = "SeaGull";
simulation = "thing";
simulation = "thing";
Line 2,746: Line 2,925:
simulation = "flag";
simulation = "flag";
simulation = "house";
simulation = "house";
simulation = airplane, helicopter, tank // eg
// simulation = airplane, helicopter, tank
</syntaxhighlight>
</syntaxhighlight>
 
<u>Related TokenName</u>: [[#model]]
<u>Related TokenName</u>: [[#model]]


====size====
==== size ====
[[TokenNameValueTypes|Float]]: This TokenName is used inside the Smoke class and Reflector class
[[TokenNameValueTypes#Floats|Float]]: This TokenName is used inside the Smoke class and Reflector class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
size = 0.1;
size = 0.1;
</syntaxhighlight>
</syntaxhighlight>
Line 2,760: Line 2,939:
part of [[#direction|Reflectors class]]
part of [[#direction|Reflectors class]]


====source====
==== source ====
[[TokenNameValueTypes|String]]: found in animationSources
[[TokenNameValueTypes#Strings|String]]: found in animationSources


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
source = "reload";
source = "reload";
source = "time";
source = "time";
</syntaxhighlight>
</syntaxhighlight>


====sourceAddress====
==== sourceAddress ====
[[TokenNameValueTypes|String]]: found in animationSources
[[TokenNameValueTypes#Strings|String]]: found in animationSources


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
sourceAddress = "loop";
sourceAddress = "loop";
</syntaxhighlight>
</syntaxhighlight>


====sourceSize====
==== sourceSize ====
[[TokenNameValueTypes|Float]]: This TokenName is used inside the [[#Light Class]]
[[TokenNameValueTypes#Floats|Float]]: This TokenName is used inside the [[#Light Class]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
sourceSize = 0.015;
sourceSize = 0.015;
</syntaxhighlight>
</syntaxhighlight>


====...Speed====
==== ...Speed ====
[[TokenNameValueTypes|Float]]: In Kph.
[[TokenNameValueTypes#Floats|Float]]: In Kph.


Setting maxSpeed for infantry units too low might cause problems when working with waypoints (units won't be able to fully complete them or won't move towards them).
Setting maxSpeed for infantry units too low might cause problems when working with waypoints (units won't be able to fully complete them or won't move towards them).


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
minSpeed = -0.5; // range 0->1
minSpeed = -0.5; // range 0->1
maxSpeed = 80; // default
maxSpeed = 80; // default
Line 2,794: Line 2,973:
</syntaxhighlight>
</syntaxhighlight>


====scud...====
==== scud... ====
[[TokenNameValueTypes|String]]: Default ""
[[TokenNameValueTypes#Strings|String]]: Default ""


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
scudLaunch = scudlunch.rtm;
scudLaunch = "scudlunch.rtm";
scudStart = scudstart.rtm;
scudStart = "scudstart.rtm";
scudModel = scud_strela_proxy;
scudModel = "scud_strela_proxy";
scudModelFire = scud_strela_ohen;
scudModelFire = "scud_strela_ohen";
</syntaxhighlight>
</syntaxhighlight>


====straightDistance====
==== straightDistance ====
[[TokenNameValueTypes|INTEGER]]:
[[TokenNameValueTypes#Integers|Integer]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
straightDistance = 50;
straightDistance = 50;
</syntaxhighlight>
</syntaxhighlight>


====submerged..====
==== submerged.. ====
[[TokenNameValueTypes|Float]]: default 0.0
[[TokenNameValueTypes#Floats|Float]]: default 0.0


Almost all 'objects' are '''not''' submerged. This parameter is used to hide objects such as effects
Almost all 'objects' are '''not''' submerged. This parameter is used to hide objects such as effects


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
submerged = -0.5; // thing effect
submerged = -0.5; // thing effect
submergeSpeed = 0.25; // positive value makes it go deeper (sound goes quieter)
submergeSpeed = 0.25; // positive value makes it go deeper (sound goes quieter)
</syntaxhighlight>
</syntaxhighlight>


===T===
=== T ===
====...Turn====
==== ...Turn ====
[[TokenNameValueTypes|Integer]] Degrees
[[TokenNameValueTypes#Integers|Integer]] Degrees


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
initTurn = 90;
initTurn = 90;
minTurn = -70;
minTurn = -70;
Line 2,835: Line 3,014:
see[[#gun]]
see[[#gun]]


====TokenNames Embedded====
==== TokenNames Embedded ====
see [[#Embedded ClassNames]]
see [[#Embedded ClassNames]]


=====turning=====
===== turning =====
[[TokenNameValueTypes|Boolean]]:
[[TokenNameValueTypes#Boolean|Boolean]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
turning = 1;
turning = 1;
</syntaxhighlight>
</syntaxhighlight>


=====turnCoef=====
===== turnCoef =====
[[TokenNameValueTypes|Float]]: Default 2.0
[[TokenNameValueTypes#Floats|Float]]: Default 2.0


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
turnCoef = 6.0; // truck
turnCoef = 6.0; // truck
turnCoef = 9.0; // tractor
turnCoef = 9.0; // tractor
</syntaxhighlight>
</syntaxhighlight>


====terrainCoef====
==== terrainCoef ====
[[TokenNameValueTypes|Float]]: Default 3.0
[[TokenNameValueTypes#Floats|Float]]: Default 3.0


* Pre A3: multiplier to torque and speed (pForce)
* Pre A3: multiplier to torque and speed (pForce)
* A3: multiplier to maxSpeedCoef (1 - maxSpeedCoef) [cfgSurfaces parameter] for speedCoef
* A3: multiplier to maxSpeedCoef (1 - maxSpeedCoef) [cfgSurfaces parameter] for speedCoef


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
Pre A3::
Pre A3::
        terrainCoef = 6.0; // skoda
terrainCoef = 6.0; // skoda
---
---
A3:
A3:
    class Car_F: Car
class Car_F : Car
        terrainCoef = 2;
terrainCoef = 2;
 
class MRAP_03_base_F : Car_F
terrainCoef = 1;
class UGV_01_base_F : Car_F
terrainCoef = 1.2;
class Quadbike_01_base_F : Car_F
terrainCoef = 1.4;
class MRAP_01_base_F : Car_F
terrainCoef = 1.5;
class MRAP_02_base_F : Car_F
terrainCoef = 1.5;
class SUV_01_base_F : Car_F
terrainCoef = 2.5;
class Hatchback_01_base_F : Car_F
terrainCoef = 4.5;
class Kart_01_Base_F : Car_F
terrainCoef = 5;
 
 
class Truck_F : Car_F
terrainCoef = 2.5;


    class MRAP_03_base_F: Car_F
class Truck_03_base_F : Truck_F
        terrainCoef = 1;
terrainCoef = 1.8;
    class UGV_01_base_F: Car_F
class Truck_02_base_F : Truck_F
        terrainCoef = 1.2;
terrainCoef = 2;
    class Quadbike_01_base_F: Car_F
class Van_02_base_F : Truck_F
        terrainCoef = 1.4;
terrainCoef = 3;
    class MRAP_01_base_F: Car_F
        terrainCoef = 1.5;
    class MRAP_02_base_F: Car_F
        terrainCoef = 1.5;
    class SUV_01_base_F: Car_F
        terrainCoef = 2.5;
    class Hatchback_01_base_F: Car_F
        terrainCoef = 4.5;
    class Kart_01_Base_F: Car_F
        terrainCoef = 5;




    class Truck_F: Car_F
class Wheeled_APC_F : Car_F
        terrainCoef = 2.5;
terrainCoef = 1.5;
</syntaxhighlight>


    class Truck_03_base_F: Truck_F
==== textureList[] ====
        terrainCoef = 1.8;
Complex (string, float) [[TokenNameValueTypes#Arrays|Array]]
    class Truck_02_base_F: Truck_F
        terrainCoef = 2;
    class Van_02_base_F: Truck_F
        terrainCoef = 3;


Introduced with {{GVI|arma3|1.24}}, the Bootcamp Update, along with a lot of other randomization features.


    class Wheeled_APC_F: Car_F
Array of texture sources to randomize the vehicle with similar to facewear/headgear randomization for characters (See [[Arma 3: Characters And Gear Encoding Guide#FIA headgear and facewear randomization]]); format is:
        terrainCoef = 1.5;
<syntaxhighlight lang="cpp">
textureList[] = { "texture1", weight1, "texture2", weight2, etc. };
</syntaxhighlight>
Textures must be classes from the vehicle's TextureSources. If all the weights are the same value, it functions as straight equal randomization.
 
Example:
<syntaxhighlight lang="cpp">
class MyPlane : C_Plane_Civil_01_F
{
textureList[] = { "Racer_1", 0.5, "Racer_2", 1 };
};
</syntaxhighlight>
</syntaxhighlight>


====threat====
==== threat ====
float [[TokenNameValueTypes|Array]]: Default Value {0.700000, 0.500000, 0.300000};
float [[TokenNameValueTypes#Arrays|Array]]: Default Value {0.700000, 0.500000, 0.300000};


How threatening you are to unit [[#type (threat)|types]] {Soft, Armor, Air}, respectively.
How threatening you are to unit [[#type (threat)|types]] {Soft, Armor, Air}, respectively.
Line 2,907: Line 3,105:
The ai for this model selects targets of opportunity, based on these values.
The ai for this model selects targets of opportunity, based on these values.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
threat[] = {1, 0.0500000, 0.050000}; // soldier
threat[] = { 1, 0.0500000, 0.050000 }; // soldier
threat[] = {1, 0.900000, 0.100000}; // law soldier
threat[] = { 1, 0.900000, 0.100000 }; // law soldier
threat[] = {0.900000, 0.700000, 0.300000}; // bmp
threat[] = { 0.900000, 0.700000, 0.300000 }; // bmp
</syntaxhighlight>
</syntaxhighlight>


<u>Related TokenNames</u>: [[#type (threat)|type]], [[#cost]], [[#threat]]
<u>Related TokenNames</u>: [[#type (threat)|type]], [[#cost]], [[#threat]]


====timeToLive====
==== timeToLive ====
[[TokenNameValueTypes|Float]]: Default 10,000,000,000.0; // seconds?
[[TokenNameValueTypes#Floats|Float]]: Default 10 000 000 000.0; // seconds?


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
timeToLive = 20; // thing effects (bullets)
timeToLive = 20; // thing effects (bullets)
timeToLive = 100000002004087730000.0; // campfire
timeToLive = 100000002004087730000.0; // campfire
Line 2,925: Line 3,123:
See [[#Smoke Class]]
See [[#Smoke Class]]


====transport...====
==== transport... ====


=====transportAmmo=====
===== transportAmmo =====
[[TokenNameValueTypes|Integer]]: Used by supply 'vehicles' to determine total amount available for entire mission. Once depleted...
[[TokenNameValueTypes#Integers|Integer]]: Used by supply 'vehicles' to determine total amount available for entire mission. Once depleted...


A 'vehicle' in this case can be a genuine repair truck, or, a building.
A 'vehicle' in this case can be a genuine repair truck, or, a building.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
transportAmmo = 300000; // reammo truck
transportAmmo = 300000; // reammo truck
transportAmmo = 10000000; // bigship
transportAmmo = 10000000; // bigship
Line 2,940: Line 3,138:
</syntaxhighlight>
</syntaxhighlight>


=====transportMax...=====
===== transportMax... =====
These parameters appear not to be used in Arma 3 and are only included for backwards compatibility. See [[#maximumLoad|maximumLoad]] to define a vehicle's storage capacity.
These parameters appear not to be used in Arma 3 and are only included for backwards compatibility. See [[#maximumLoad|maximumLoad]] to define a vehicle's storage capacity.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
transportMaxMagazines = 50; // car
transportMaxMagazines = 50; // car
transportMaxWeapons = 10;
transportMaxWeapons = 10;
Line 2,965: Line 3,163:
transportMaxMagazines = 2000;
transportMaxMagazines = 2000;
</syntaxhighlight>
</syntaxhighlight>
 
Values vary depending on exact type of 'boat' eg.
Values vary depending on exact type of 'boat' eg.


These TokenNames ate used to indicate how many units of each type an object can hold. Most objects can't hold anything.
These TokenNames ate used to indicate how many units of each type an object can hold. Most objects can't hold anything.


=====transportSoldier=====
===== transportSoldier =====
[[TokenNameValueTypes|Integer]]: Default Value= 0.
[[TokenNameValueTypes#Integers|Integer]]: Default Value= 0.


Number of 'passengers' this vehicle can carry. The value does '''not''' include the driver, '''nor''' any vehicle positions such as gunner (if any) or commander(if any). See the JeepMg below for a 3 person vehicle which can only transport ONE soldier.
Number of 'passengers' this vehicle can carry. The value does '''not''' include the driver, '''nor''' any vehicle positions such as gunner (if any) or commander(if any). See the JeepMg below for a 3 person vehicle which can only transport ONE soldier.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
transportSoldier = 3; // jeep/car
transportSoldier = 3; // jeep/car
transportSoldier = 50; // large ship
transportSoldier = 50; // large ship
transportSoldier = 6to10; // SmallShip  
transportSoldier = 6to10; // SmallShip
transportSoldier = 3; // a10
transportSoldier = 3; // a10
transportSoldier = 8to12; // helicopters
transportSoldier = 8to12; // helicopters
Line 2,990: Line 3,188:
to make the game 'interesting', similar vehicles on different sides, can carry non equivalent numbers.
to make the game 'interesting', similar vehicles on different sides, can carry non equivalent numbers.


====transportVehiclesCount====
==== transportVehiclesCount ====
[[TokenNameValueTypes|Integer]] : default 0
[[TokenNameValueTypes#Integers|Integer]] : default 0


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
transportVehiclesCount = 15; // a Carrier (big ship)
transportVehiclesCount = 15; // a Carrier (big ship)
</syntaxhighlight>
</syntaxhighlight>


====TransportMagazines Class====
==== TransportMagazines Class ====


====transportVehiclesMass====
==== transportVehiclesMass ====
[[TokenNameValueTypes|Integer]]: Default 0
[[TokenNameValueTypes#Integers|Integer]]: Default 0


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
transportVehiclesMass = 0; // not used by any model
transportVehiclesMass = 0; // not used by any model
</syntaxhighlight>
</syntaxhighlight>


====TransportWeapons Class====
==== TransportWeapons Class ====
 
==== tracksSpeed ====
[[TokenNameValueTypes#Integers|Integer]]: Default 1
 
Speed of tracks UV animation. Use negative number to move tracks in opossite direction
 
<syntaxhighlight lang="cpp">
tracksSpeed = 1.4;
</syntaxhighlight>
 
==== TransportWeapons Class ====


====turretAxis====
==== turretAxis ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
turretAxis = OsaVeze;
turretAxis = "OsaVeze";
</syntaxhighlight>
</syntaxhighlight>


see [[#Turret Class]]
see [[#Turret Class]]


====type (threat)====
==== type (threat) ====
[[TokenNameValueTypes|Integer]]: Default Value: Armored
[[TokenNameValueTypes#Integers|Integer]]: Default Value: Armored


This indicates the threat type of the 'vehicle'.
This indicates the threat type of the 'vehicle'.
Line 3,024: Line 3,233:
In well written configs, the 3 possible values are declared as defines at top of file for legibility
In well written configs, the 3 possible values are declared as defines at top of file for legibility


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
#define VSoft 0
#define VSoft 0
#define VArmor 1
#define VArmor 1
Line 3,036: Line 3,245:
<u>Related TokenNames</u>: [[#type (threat)|type]], [[#cost]], [[#threat]]
<u>Related TokenNames</u>: [[#type (threat)|type]], [[#cost]], [[#threat]]


====type (animation)====
==== type (animation) ====
'''old''' [[TokenNameValueTypes|Unknown]]: Default Value: rotation
'''old''' [[TokenNameValueTypes|Unknown]]: Default Value: rotation


This appears in the ReloadAnimations class
This appears in the ReloadAnimations class


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
type = rotation;
type = "rotation";
</syntaxhighlight>
</syntaxhighlight>


====typicalCargo====
==== typicalCargo ====
Variable String [[TokenNameValueTypes|Array]]:Preloads vehicle with units (if auto)
Variable String [[TokenNameValueTypes#Arrays|Array]]:Array of units classes which are assumed to be onboard of vehicle. Used by AI to determine potential threat of vehicle in case they are not able to see units inside vehicle.


This array can have zero or more strings.
This array can have zero or more strings.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
typicalCargo[] = {"Soldier", "Soldier", "SoldierLAW", "SoldierLAW"};
typicalCargo[] = { "Soldier", "Soldier", "SoldierLAW", "SoldierLAW" };
</syntaxhighlight>
</syntaxhighlight>


Note that these are ''ClassNames'' of soldiers.
Note that these are ''ClassNames'' of soldiers.


===U===
=== U ===
====...UsesPilotView====
==== ...UsesPilotView ====
[[TokenNameValueTypes|Boolean]]: : Default false
[[TokenNameValueTypes#Boolean|Boolean]]: : Default false


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
gunnerUsesPilotView = false; // some choppers (mi17)
gunnerUsesPilotView = false; // some choppers (mi17)
commanderUsesPilotView = true;
commanderUsesPilotView = true;
Line 3,066: Line 3,275:




====uavHacker====
==== uavHacker ====
[[TokenNameValueTypes|Boolean]]<br>
[[TokenNameValueTypes#Boolean|Boolean]]<br>
Allows unit to hack UAVs. Used on UAV operators in vanilla (Arma 3)
Allows unit to hack UAVs. Used on UAV operators in vanilla (Arma 3)
<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
uavHacker = 1;
uavHacker = 1;
</syntaxhighlight>
</syntaxhighlight>


====unitInfoType====
==== unitInfoType ====
[[TokenNameValueTypes|String]]
[[TokenNameValueTypes#Strings|String]]


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
unitInfoType = "UnitInfoSoldier";
unitInfoType = "UnitInfoSoldier";
</syntaxhighlight>
</syntaxhighlight>
Line 3,084: Line 3,293:
see [[#hide...|#hideUnitInfo]]
see [[#hide...|#hideUnitInfo]]


====unloadInCombat====
==== unloadInCombat ====
[[TokenNameValueTypes|Boolean]]: default true
[[TokenNameValueTypes#Boolean|Boolean]]: default true


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
unloadInCombat = false;
unloadInCombat = false;
</syntaxhighlight>
</syntaxhighlight>
Line 3,093: Line 3,302:
All true vehicles will cause ai to disembark when in combat.
All true vehicles will cause ai to disembark when in combat.


====upDownL/R====
==== upDownL/R ====
wheels class
wheels class
see [[#rotL/R]]
see [[#rotL/R]]


===V===
=== V ===
====vehicleClass====
==== vehicleClass ====
[[TokenNameValueTypes|String]]: Default Value= "Objects"
[[TokenNameValueTypes#Strings|String]]: Default Value= "Objects"


Used for Mission Editor basic category selection
Used for Mission Editor basic category selection


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
vehicleClass = "Air";
vehicleClass = "Air";
vehicleClass = "Support";
vehicleClass = "Support";
Line 3,112: Line 3,321:
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]
[[#scope]], [[#accuracy]], [[#displayName]], [[#vehicleClass]], [[#nameSound]], [[#camouflage]]


====vehicleClass[]====
==== vehicleClass[] ====
String [[TokenNameValueTypes|Array]]:
String [[TokenNameValueTypes#Arrays|Array]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
vehicleClass[] = {Men, Car, Armored, Air, Support, Camera, Objects, Ammo, Sounds, Mines};
vehicleClass[] = { "Men", "Car", "Armored", "Air", "Support", "Camera", "Objects", "Ammo", "Sounds", "Mines" };
</syntaxhighlight>
</syntaxhighlight>


====view...Shadow====
==== view...Shadow ====
[[TokenNameValueTypes|Boolean]]:
[[TokenNameValueTypes#Boolean|Boolean]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
viewCargoShadow = true;
viewCargoShadow = true;
viewGunnerShadow = true;
viewGunnerShadow = true;
</syntaxhighlight>
</syntaxhighlight>


====viewDriverInExternal====
==== viewDriverInExternal ====
[[TokenNameValueTypes|Boolean]]: default false
[[TokenNameValueTypes#Boolean|Boolean]]: default false


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
viewDriverInExternal = true; // Show the driver in third person view
viewDriverInExternal = true; // Show the driver in third person view
</syntaxhighlight>
</syntaxhighlight>


====viewGunnerInExternal====
==== viewGunnerInExternal ====
[[TokenNameValueTypes|Boolean]]: default false
[[TokenNameValueTypes#Boolean|Boolean]]: default false


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
viewGunnerInExternal = true; // for some turrets and M113
viewGunnerInExternal = true; // for some turrets and M113
</syntaxhighlight>
</syntaxhighlight>


===W===
=== W ===
====...WaterEffect====
==== ...WaterEffect ====
[[TokenNameValueTypes|String]]
[[TokenNameValueTypes#Strings|String]]


Defines the effect that will be spawned at the position of the LandContact points when vehicle is in/on the water.
Defines the effect that will be spawned at the position of the LandContact points when vehicle is in/on the water.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
leftWaterEffect = "vbs2_fx_lowWaterEffects";
leftWaterEffect = "vbs2_fx_lowWaterEffects";
rightWaterEffect = "vbs2_fx_lowWaterEffects";
rightWaterEffect = "vbs2_fx_lowWaterEffects";
Line 3,154: Line 3,363:
see [[#...DustEffect]]
see [[#...DustEffect]]


====weapon====
==== weapon ====
[[TokenNameValueTypes|String]]:
[[TokenNameValueTypes#Strings|String]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
weapon = "M197";
weapon = "M197";
</syntaxhighlight>
</syntaxhighlight>
Line 3,163: Line 3,372:
Selects a weapon from the CfgWeapons class
Selects a weapon from the CfgWeapons class


====weapons====
==== weapons ====
Variable String [[TokenNameValueTypes|Array]]: default {};
Variable String [[TokenNameValueTypes#Arrays|Array]]: default {};


Weaopns and Magazines contain individual description of what a 'vehicle' IS carrying.
Weapons and Magazines contain individual description of what a 'vehicle' IS carrying.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
weapons[] = {"FFARLauncher", "TwinM134"}; // an aircraft
weapons[] = { "FFARLauncher", "TwinM134" }; // aircraft
weapons[] = {CarHorn}; // truck
weapons[] = { "CarHorn" }; // truck


weapons[] = {M21, LAWLauncher, Throw, Put}; // soldier
weapons[] = { "M21", "LAWLauncher", "Throw", "Put" }; // soldier
magazines[] = {M21, M21, M21, M21, HandGrenade, HandGrenade, LAWLauncher};
magazines[] = { "M21", "M21", "M21", "M21", "HandGrenade", "HandGrenade", "LAWLauncher" };
</syntaxhighlight>
</syntaxhighlight>


Line 3,180: Line 3,389:
The names M21, Carhorn etc are external references to the cfgWeapons / cfgMagazines classes
The names M21, Carhorn etc are external references to the cfgWeapons / cfgMagazines classes


====weaponsGroup====
==== weaponsGroup ====
[[TokenNameValueTypes|Integer]]:
[[TokenNameValueTypes#Integers|Integer]]:


The weapons grouping for a vehicle, determined by enumerated weapon category definitions.
The weapons grouping for a vehicle, determined by enumerated weapon category definitions.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
weaponsGroup1 = WEAPONGROUP_CANNONS + WEAPONGROUP_MGUNS;                               // Adds Cannons and Machine Guns to Weapons Group 1
weaponsGroup1 = WEAPONGROUP_CANNONS + WEAPONGROUP_MGUNS; // Adds Cannons and Machine Guns to Weapons Group 1
weaponsGroup2 = WEAPONGROUP_ROCKETS;                                                   // Adds Rockets to Weapons Group 2
weaponsGroup2 = WEAPONGROUP_ROCKETS; // Adds Rockets to Weapons Group 2
weaponsGroup3 = WEAPONGROUP_AAMISSILES + WEAPONGROUP_ATMISSILES + WEAPONGROUP_MISSILES; // Adds All Missile types to Weapons Group 3
weaponsGroup3 = WEAPONGROUP_AAMISSILES + WEAPONGROUP_ATMISSILES + WEAPONGROUP_MISSILES; // Adds All Missile types to Weapons Group 3
weaponsGroup4 = WEAPONGROUP_BOMBS + WEAPONGROUP_SPECIAL;                               // Adds Bombs and Laser Designators to Weapons Group 4
weaponsGroup4 = WEAPONGROUP_BOMBS + WEAPONGROUP_SPECIAL; // Adds Bombs and Laser Designators to Weapons Group 4
</syntaxhighlight>
</syntaxhighlight>


<pre style="color: green">#define WEAPONGROUP_CANNONS     1 // Cannons
<syntaxhighlight lang="cpp">
#define WEAPONGROUP_MGUNS       2 // Machine Guns
#define WEAPONGROUP_CANNONS 1 // Cannons
#define WEAPONGROUP_ROCKETS     4 // Rockets
#define WEAPONGROUP_MGUNS 2 // Machine Guns
#define WEAPONGROUP_AAMISSILES   8 // Anti-Air Missiles
#define WEAPONGROUP_ROCKETS 4 // Rockets
#define WEAPONGROUP_ATMISSILES 16 // Anti-Tank Missiles
#define WEAPONGROUP_AAMISSILES 8 // Anti-Air Missiles
#define WEAPONGROUP_MISSILES   32 // All / Other Missiles
#define WEAPONGROUP_ATMISSILES 16 // Anti-Tank Missiles
#define WEAPONGROUP_BOMBS       64 // Bombs
#define WEAPONGROUP_MISSILES 32 // All / Other Missiles
#define WEAPONGROUP_SPECIAL   128 // Laser Designator + Misc</pre>
#define WEAPONGROUP_BOMBS 64 // Bombs
#define WEAPONGROUP_SPECIAL 128 // Laser Designator + Misc
</syntaxhighlight>


====weaponSlots====
==== weaponSlots ====
[[TokenNameValueTypes|Integer]]:
[[TokenNameValueTypes#Integers|Integer]]:


Weaponslots apply to man class (soldier, civilian, etc)
Weaponslots apply to man class (soldier, civilian, etc)
Line 3,208: Line 3,419:
It indicates the 'gear' capacity.
It indicates the 'gear' capacity.


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
Soldier: 1 + 4 + 12*256 + 2*4096 + 2 + 8*16; // all soldiers/civilians
weaponSlots = 1 + 4 + 12 * 256 + 2 * 4096 + 2 + 8 * 16; // all soldiers/civilians
Medic : 1 + 4 + 8*256 + 2*4096 + 2 + 4*16;
weaponSlots = 1 + 4 + 8 * 256 + 2 * 4096 + 2 + 4 * 16; // medics


weaponSlots = ;
// 1 = primary weapon
 
// 2 = handgun slot
1 = primary weapon
// 4 = secondary weapon (launcher)
2 = handgun slot
// 16 = handgun magazines (8x)(or grenades for M203/GP-25)
4 = secondary weapon (launcher)
// 256 = magazine slots (12x / 8x for medics)
16 = handgun magazines (8x)(or grenades for M203/GP-25)
// 4096 = goggle slot (2x)
256 = magazine slots (12x / 8x for medics)
// 131072 = ?
4096 = goggle slot (2x)
131072 = ?
</syntaxhighlight>
</syntaxhighlight>


====wheelCircumference====
==== wheelCircumference ====
[[TokenNameValueTypes|Float]] Default 2.513 meters
[[TokenNameValueTypes#Floats|Float]] Default 2.513 meters


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
wheelCircumference = 8; // tractor
wheelCircumference = 8; // tractor
</syntaxhighlight>
</syntaxhighlight>


====wounds====
==== wounds ====
string [[TokenNameValueTypes|Array]]:
string [[TokenNameValueTypes#Arrays|Array]]:


<syntaxhighlight lang="c">
<syntaxhighlight lang="cpp">
wounds[] = {xicht_a.paa, xicht_a_zranen, ...};
wounds[] = { "xicht_a.paa", "xicht_a_zranen", ... };
</syntaxhighlight>
</syntaxhighlight>


this token is used in the man class to show a series of pac/paa files depending on damaged state of the body.
this token is used in the man class to show a series of pac/paa files depending on damaged state of the body.


{{Cfg ref|end}}
{{ConfigPage|end}}
 


[[category:Operation Flashpoint: Modelling]]
{{GameCategory|ofp|Modelling}}
[[category:Operation Flashpoint: Editing]]
{{GameCategory|ofp|Editing}}
[[Category:ArmA: Addon Configuration]]
{{GameCategory|arma1|Addon Configuration}}
[[Category:OFP Reference Lists]]
{{GameCategory|ofp|Reference Lists}}
[[Category:Arma 3: Vehicle Configuration]]
{{GameCategory|arma3|Vehicle Configuration}}

Latest revision as of 23:43, 12 February 2024

Introduction

TokenName Config.cpp Reference

Simply put, Token Name & Value pairs are as follows

SomeName = SomeValue;

Token Names are used extensively throughout Operation Flashpoint 'text' files.

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

scope=2;

This article details the token-names specifically available within the CfgVehicles class of a Config.cpp. The primary focus of this document is the TokenNames used for various aspects of controlling models within Addons.

Unlike a command reference, where one meaning fits all, Token names are not verbs. The meaning of the name, it is effect, can be different, depending on context. You are advised therefore, that these names, as listed, apply only to the CfgVehicles class. They may, or may not, have identical meanings (if found), in other classes.

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

TokenTypes

Token Type Description Example
Integer A signed value that will be held in 4 bytes. token = 1;
Boolean An Integer value of 0 or 1. This is a 'convenience type' in humanly readable text. The engine stores it as an integer.
For Elite only: All strings must be enclosed in quotes.
token = true;
String Any string value
token = "SomeString";
Array An array
token[] = { ... };
Float Array An array of floats
token[] = { 0.5, 0.3, 0.05 };
String Array An array of strings
token[] = { "String1", "String2" };
Integer Array An array of integers
token[] = { 0, 1, 2 };
Complex Array A mixture of multiple types, including embedded arrays.
token[] = { "String", 1, 0.5, true };
Variable Array The number of elements for this array in this class model can have a varying number of elements (depending on context)

Filenames and Paths

Filenames are case insensitive.

Pbo File conventions

The root path of the filename is (generally) the name of the pbo

model= "\anypbofile\'''anywhere'''\....";

note the pbo extension is inferred

anywhere is an (optional) (series of) folder(s) INSIDE the pbo.

Depending on the file referred to, eg a p3d file for a model, the extension (in this case .p3d) is not required.

p3d files

model="\anypbofilename\anyp3d(.p3d)";

paa/pac

Wherever these file types are indicated, the default extension is paa

icon=\somepbo\anyicon(.paa);

jpeg

jpeg pictures are usable anywhere a pac (or pac) file is indicated. It is never default.

Exception: Operation Flashpoint: Elite specifically, cannot handle jpg.

picture="\AnyPbo\AnyPicture.jpg";

Sound files

wss is the default extension if not declared.

sound="\AnyPbo\AnySoundFolder\AnySound(.wss)";

Otherwise use Ogg Vorbis format (extension .ogg).

Vehicle vs 'Vehicle'

In this document. a vehicle, is a true vehicle of some kind. Be it a tank, or a car.

A 'vehicle' on the other hand covers cfgVehicles as defined in a config.cpp which would include men or buildings, since Operation Flashpoint considers them all to be 'vehicles'

Config.bin vs Config.cpp

By convention only, config.cpp is the humanly readable text equivalent of config.bin.

The engine will accept either or both.

When both are encountered, it is the text file that is predominant (the raPified file is ignored). (Which is the text file, and which is the 'binary' is moot, see below).

While unusual to have both, it is common for an addon, eg a pbo, to have both inside where the config.cpp is a 'work in progress' that might later be 'binarised' to raP, and the cpp removed.

raP files

So-called 'binarised' or 'binary' files are encoded in raP file format. They are not in the conventional sense a "binary"—machine readable code or data—but rather a more convenient encoded form of the text file (from the engine's perspective). They represent the stripping out of comments and extraneous crud, with bells on. For example, save files are raP encoded, just like config.bin is.

By convention only, a config.cpp is a text file. The engine does not actually care; if it encounters a config.cpp with a raP signature, it is treated as per a config.bin.

The engine unconditionally converts text files to raP encoding before it uses it further. This (obviously) slows game or mission loading and (less obviously) is a source of 'undocumented features'. Prior to finishing your addon, it is a Good Idea™ to 'binarise' the config into raP encoding and rename the cpp file to .txt for documentation purposes.

Alphabetical Order

A

...Action

String : defaults ManActCargo

commanderAction =	"ManActM60CommanderOut";
driverAction =		"ManActShipDriver";
gunnerAction =		"ManActJeepGunner";
commanderInAction =	"ManActTestDriver";
driverInAction =	"ManActM113Driver";
gunnerInAction =	"ManActM1A1Gunner";
getInAction =		ManActGetInTank;	// default
getOutAction =		ManActGetOutTank;	// default
cargoAction

Variable String Array: default {ManActCargo}

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.

see #cargoIsCoDriver

...AngleX/Y

Float Degrees

initAngleX = 0;
minAngleX = -30;
maxAngleX = 30;
initAngleY = 0;
minAngleY = -100;
maxAngleY = 100;
initFov = 0.700000;
minFov = 0.420000;
maxFov = 0.850000;

used by car.ViewPilot class

angle

Float: Degrees

angle = -240;

see #Indicator... Class Or #Hatch... Class

access

Integer: Determines the manipulability of the class.

access=1;

0 ReadAndWrite additional values can be added 1 ReadAndCreate only adding new class members is allowed 2 ReadOnly no modifications enabled 3 ReadOnlyVerified no modifications enabled, CRC test applied

All BIS classes are ReadOnlyVerified and can only be inherited into a new class

accuracy

Float: Default value = 0.02.

Determines how easy an object is to identify. Smaller values are easier to detect.

Typically, buildings are 0.2, vehicles, 0.5

A value of 1000 causes the underlying class to be identified instead. Eg bushy trees, pink trees and yellow trees, can all be 'identified' as "trees". The description "bushy trees" is then used solely when Editing. See #VehicleClass

accuracy = 0.2;		// buildings
accuracy = 0.5;		// small vehicles
accuracy = 0.9;		// truck
accuracy = 3.500000;	// sniper
accuracy = 1.500000;	// lawsoldier
accuracy = 1000;		// soldier // identify (most) solders as 'man'

Relationship to #camouflage:

accuracy defines how hard it is for the AI to recognise the correct class of a unit. But even if it can't recognise the correct class it can still recognise it as an enemy and engage it.

camouflage defines how hard it is for the AI to see that the unit is there.

Related TokenNames #scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage

acceleration

Float: metres per second

acceleration = 7;

airFriction

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

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

airFrictionCoefs...

Array: tokens for defining the friction behaviour of planes, introduced with Arma 3 Jets DLC. They define the airfriction for planes with simulation = "PlaneX". Untested if applicable to other objects as well. The values in each array define the X, Y and Z coefficients respectively. The friction force in a certain axis is calculated ingame by F_friction = v * abs( v ) * airFrictionCoefs2+ v * airFrictionCoefs1+ (sign of v) * airFrictionCoefs0; where "v" is the speed of the plane in that particular axis.

airFrictionCoefs2[] = { 0.00100, 0.00050, 0.00006};
airFrictionCoefs1[] = { 0.100, 0.050, 0.006 };
airFrictionCoefs0[] = { 0.0, 0.0, 0.0 };

ambient

Float Array:

ambient[] = { 0.07, 0.07, 0.07, 1.0 };

See #Reflectors Class, #Light Class, #CargoLight Class

animated

Boolean : Default Value true

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

animated = false;

model is animated, or not.

when set true, the animation class, if any, happens, otherwise it doesn't

see animations class

animPeriod

Float: Seconds.

This TokenName is generally used inside AnimationSources class (ArmA only). It's use in OFP:R is as follows

animPeriod = 1.33; // a fountain

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)";

animationList[]

Array format [String, Float]

(possibly introduced in Arma 3 logo black.png1.24 when other randomisation features were added)

Array of animation sources to randomize the vehicle with similar to facewear/headgear randomization for characters (See Arma 3: Characters And Gear Encoding Guide - FIA headgear and facewear randomization; format is:

animationList[] = { "animation1", weight1, "animation2", weight2, etc. };

Animations must be classes from the vehicle's AnimationSources. If all the weights are the same value, it functions as straight equal randomisation.

Example:

class MyAPC : B_APC_Wheeled_01_cannon_F
{
	animationList[] = {
		"showBags", 0,
		"showCamonetHull", 0.5,
		"showCamonetCannon", 0.75,
		"showCamonetTurret", 1,
		"showSLATHull", 1,
		"showSLATTurret", 1
	};
};

animationSource...

String

animationSourceBody = "Turret_2";
animationSourceGun = "Gun_2";
animationSourceHatch = "hatchCommander";
animationSourceElevation = ""; // new in Arma 3
animationSourceCamElevation =""; // new in Arma 3

armor (integer)

Float: A strength value of the object, how much external damage can be taken before 'destruction'. It is calculated together with object volume size! (bounding sphere calculated in geometry) Below are general ranges to give some idea.

approx strength = (0.27/tgtRadius)^2 / armorInConfig

armor = 3;			// man
armor = 10;			// motorcycle
armor = 20;			// a small car
armor = 15..60;		// aircraft
armor = 150;		// buildings
armor = 150..300;	// bmp
armor = 400...900;	// tank
armor = 300;		// boat
armor = 10000;		// ship

If unspecified (or not inherited) the default value is 30

1 bullet will kill armor <=20

2 bullets <=40

3 bullets 50

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

Related TokenNames: #armor (float), #material, #name, #passThrough

armor...

Float:

// for vehicles general
armorStructural= 1;	// ranges between 1 and 4.0, default 1
armorFuel = 1.4;	// default
armorGlass = 0.5;	// default
armorLights = 0.4;	// default 0.4 in all models.
armorWheels = 0.05;	// default
// for tanks
armorHull = 1;
armorTurret = 0.8;
armorGun = 0.6;
armorEngine = 0.8;
armorTracks = 0.6;
// for men
armorHead = 0.7;
armorHands = 0.5;
armorLegs = 0.5;
// helicopters
armorHull = 0.5;
armorEngine = 0.6;
armorAvionics = 1.4;
armorVRotor = 0.5;
armorHRotor = 0.7;
armorMissiles = 1.6;
armorGlass = 0.5;

assembleInfo

Used for both vehicles that can be diassembled and backpacks that are assembled into vehicles (static guns, drones, etc.)

Class values for backpacks, primary part:

class assembleInfo
{
	assembleTo = "I_G_HMG_02_high_F";	// Backpack assembles into this vehicle
	primary = 1;						// This backpack is main part, when assembly is done, its "assembleTo" class will be used for created vehicle
	base[] = { "B_HMG_02_support_high_F", "O_HMG_02_support_high_F" , "I_HMG_02_support_high_F" }; // And requires these entities as second part (tripod), can be any number of classnames
	displayName = "Static MG";			// String that will be shown in "Assemble X" mouse wheel menu action
	dissasembleTo[] = {};				// Backpacks are not disassembled futher, but empty array is required here anyways
};

Second part (tripod) only needs primary = 0;:

class assembleInfo
{
	assembleTo = "";
	primary = 0;
	base = "";
	displayName = "";
	dissasembleTo[] = {};
};

If no second part is needed for assembly, primary backpack's "base" have to be empty string: base = "";

Vehicles disassembly info:

class assembleInfo
{
	assembleTo = "";
	primary = 0;
	base = "";
	displayName = "";
	dissasembleTo[] = { "B_HMG_02_high_weapon_F", "B_HMG_02_support_high_F" }; // Vehicle will be disassembled into these backpacks. Max 2 allowed.
};

Note the typo in "dissasembleTo" property, engine expects it like this. Empty values have to be provided to avoid missing config values errors.

Note: Vehicle keeps track which second part (tripod) was used when it was assembled and its used again when you disassemble it back.

attendant

Boolean: Default false

Used for 'vehicles' to repair other 'vehicles'. Thus a hospital has an attendant that can repair soldiers. Adds the action "Heal at XXX"

attendant = true;

Related TokenNames: #hiddenSelections

audible

Float: Default Value 1

audible = .05;	// man
audible = 3;	// motorcycle
audible = 6;	// tank/ship

How loud you are. The bigger value, the better the unit is heard.

see #camouflage

autocenter

Boolean: Default true

autocenter = false;	// man

axis

String:

axis = "osa_poklop_driver";

see #Indicator... Class Or #Hatch... Class, IndicatorWatch Class

B

body

String:

body = "mainTurret";

see #Turret Class

brakeDistance

Float: default 5 meters per sec

brakeDistance = 1;	// man
brakeDistance = 14;	// tank
brakeDistance = 500;// plane
brakeDistance = 50;	// boat

bounding

String: Memorypoint which extends vehicle bounding box depending on position of this point. Defined for base class of Tanks. Default memorypoint is the tip of the tank's barrel (usti hlavne) - this means that when tank is pointing to the left, its bounding box is extended. You can observe bounding box extending in i.e. Zeus.

bounding = "usti hlavne";

brightness

Float:

brightness = 1.0;

See #Reflectors Class, #Light Class, #CargoLight Class

C

...CanSee

Integer

Used to describe which sensory inputs are available to which crew members.

Numeric value CanSee.. define Description
1 Radar Enables top left radar (OA) for a vehicle (top centre in arma and OFP).
2 Eye Effect unknown - maybe affects AI capabilities?
4 Optics Effect unknown - maybe affects AI capabilities?
8 Ear Effect unknown - maybe affects AI capabilities?
16 Compass Enables top centre compass bar and digital compass in A2/OA.
32 Peripheral Enables small colored blobs at the edge of the screen that indicate nearby units.

Multiple values can be added (or binary ored, giving the same result) together.

commanderCanSee = 31;		// default
gunnerCanSee = 4 + 8 + 16;	// default
driverCanSee = 2 + 8 + 16;	// default
#define CanSeeRadar			1
#define CanSeeEye			2
#define CanSeeOptics		4
#define CanSeeEar			8
#define CanSeeCompass		16
#define CanSeeAll			31
#define CanSeePeripheral	32
#define CanSeeRadarC		CanSeeRadar + CanSeeCompass
commanderCanSee = CanSeeAll;
gunnerCanSee = CanSeeOptics + CanSeeEar + CanSeeCompass;
driverCanSee = CanSeeEye + CanSeeEar + CanSeeCompass;

...CargoAngleY

Float Degrees

Found within vehicle classes.

Orientation of the man sitting in the cargo space.

initCargoAngleY = 185;	// Truck5t
initCargoAngleY = 90;	// M113
initCargoAngleY = 10;	// UH60
minCargoAngleY = -60;
maxCargoAngleY = 120;

camouflage

Float: Default Value = 2.

how difficult to spot. bigger = easier

camouflage = 0.6;	// snipers
camouflage = 1;		// man
camouflage = 4;		// trucks
camouflage = 8;		// tanks

Relationship to #accuracy:

camouflage defines how hard it is for the AI to see that the unit is there. The AI will not spot an enemy that has a camouflage setting of 0 (maybe this needs some more testing) even if it stands directly in front of it as long as the enemy doesn't fire.

accuracy defines how hard it is for the AI to recognise the correct class of a unit. But even if it can't recognise the correct class it can still recognise it as an enemy and engage it.

Related TokenNames #scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage

can...

canBeShot

Boolean: Declares whether bullets have any effect

canBeShot = true;
canDeactivateMines

Boolean: Default false

part of the man class.

canDeactivateMines= true;	// SoldierEngineer
canFloat

Boolean: Default value: false

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

canFloat = true;
canHideBodies

Boolean: Default false

part of the man class.

canHideBodies = true;	// SoldierWSaboteur

cargoIsCoDriver

Variable Boolean Array : Default {false};

This token declares which (if any) cargo positions are 'in the front' (Ie front windscreen)

cargoIsCoDriver[] = { true, true, false };	// 1st two passenger positions for a 5T truck

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

cargoReversedGetOut

Array Description: Settings this to 0 will force the unit to face the vehicle when getting out of a vehicle. 1 is the default behaviour where the facing direction is opposit of the get in direction.

cargoReversedGetOut[] = { 0 };

cast...Shadow

Boolean: Default false

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

Normally used to shadow 'soldiers' standing up in vehicle objects, such as the MG Jeep and Machine Guns.

Classes Embedded

see #Embedded ClassNames

cloud...

Various(Strings, Floats, Arrays)

cloudletDuration = 0.9;
cloudletAnimPeriod = 1.0;
cloudletSize = 0.1;
cloudletAlpha = 0.8;
cloudletGrowUp = 0.4;
cloudletFadeIn = 0.0;
cloudletFadeOut = 5.0;
cloudletAccY = -0.1;
cloudletMinYSpeed = 0.3;
cloudletMaxYSpeed = 1.5;
cloudletShape = "\ca\data\cl_basic";
cloudletColor[] = { 1, 1, 1, 0 };

See #Smoke Class

cobraLight

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

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

coefInside...

Float:

coefInside = 2;			// cost for movement inside buildings
coefInsideHeur = 4.3;	// estimation of cost based on in/out points
coefSpeedInside = 2; // we must go slowly inside houses

Used by the static class for non moving objects such as buildings

coefInside = 1;	// forest
coefInsideHeur = 0.25;

collisionLight

Float Boolean: Default: false.

Default state of collision lights

collisionLight = true; // spawn vehicle with collision lights on

color

Float Array: of floats.

color[] = { 0.8, 0.8, 1.0, 1.0 };

This is a fixed four dimension array consisting of the color values for a RGBA model.

See #Reflectors Class, #Light Class, #CargoLight Class, #Smoke Class

commanding

Integer: part of Turret class

commanding = -1;

cost

Float: Default Value 50.0000

This value reflects the attractiveness of the target to the enemy AI. When all other considerations are equal. A soldier eg is not interested in Air, despite it is highly attractive cost values. On the other hand, he is interested in a medic, since a medic (in normal configs) has a (while small) a higher cost, than others in the group, including the officer.

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

Related TokenNames: type, #cost, #threat

count

String or Integer: (math formula).

weapon = "M60";
count = "30 * 1"; // or 'count = 30 * 1;'

this token is always associated in a weapon or magazine couplet, inside a TransportWeapons, or TransportMagazines class.

The value is mostly represented as a string as above (a math formula), or it can be (unusually)

count = 2;

See At the End of the Day in the TokenNameValueTypes page for an explanation how this duality is possible.

crew

String: Default Civilian

Reflects whether vehicle is manned, and what with.

crew = <ClassName>
crew = "SoldierWPilot";

'SoldierWPilot' is a class declared in same file.

crewCrashProtection

Float

Multiplier of damage to crew of the vehicle. Lower number means better protection.

crewCrashProtection = 0.05;

D

dammagesic...

Variable String Array:

dammageHalf[] = { "\AnyAddon\AnyPAA.paa", "\AnyAddon\AnyOtherPAA.paa", ... };
dammageFull[] = { "\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.

damageResistance

Only for AI, to know when to shoot and when not.

damageResistance = 0.004;

It can be calculated from vehicle armor and hit value of weapon that should be able to harm the vehicle. tgtRadius is radius of virtual bounding sphere calculated in vehicle geometry. CfgVehicles_Config_Reference#armor_.28integer.29

damageResistance = (HIT*HIT)/Armor*((0.27/tgtRadius)*(0.27/tgtRadius))

driveThroughEnabled

Determines if AI can decide to go through the object. This parameter skips regular mass checking if object can smashed through

driveThroughEnabled			= 1; // test parameter for AI knowing they can drive through the object

damper...

Float:

damperSize = 0.1;	// default
damperForce = 3;	// default

deltaT

Float

deltaT = -500;

See #Smoke Class

density

Float

density = 0.5;

See #Smoke Class

destrType

String: Default Value = "DestructDefault"

Used for animation, sound, and final 'look' of vehicle.

destrType = "DestructNo";		// nothing happens
destrType = "DestructBuilding";	// smoke. explosion
destrType = "DestructEngine";	// smoke only
destrType = "DestructTree";		// smoke, crushing, falls over
destrType = "DestructTent";		// smoke, crushing, flattens
destrType = "DestructMan";
destrType = "DestructDefault";	// = building
destrType = "DestructWreck";

Tent and Tree are no longer identifiable when destroyed if not class 'things'

disappearAtContact

Boolean: Default false;

disappearAtContact = true;	// FxCartridge

direction

String:

direction = "konec L svetla";

see #Reflectors Class

displayName

String: Default value = "Unknown" or "Vehicle"

Selects object uniquely in the Mission Editor, and separately, is used to identify object in game according to #accuracy. For instance when pointing your men to an object while in a mission, it is this displayName that is used.

It is good practice to use a stringtable.csv that should accompany your addon so that

  1. All names and labels are in one place instead of hunting for them.
  2. For language differences
displayName = "$STR_DN_AH1Z";

Note, that will careful crafting of classes, different colored 'rocks' can all be called the same displayName (rock) in the mission itself. See #scope and #accuracy for details.

See #nameSound for definition of what is actually 'said'

Related TokenNames #scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage

displayNameShort

String:

displayNameShort = "$STR_DN_UH60";

driverIsCommander

Boolean : Default false. When not set, the turret commanding values are used to determine who is the commander. (source (dead link))

driverIsCommander = true;

For boat, MG Jeep and helicopters

see #has...

driverForceOptics

Boolean Description: Determines if the driver can freely look around inside the vehicle or if he is locked to looking forward through the hatch/optics.

driverForceOptics = true;

driverReversedGetOut

Integer

Description: setting this to 0 will force the unit to face the vehicle when getting out of a vehicle. 1 is the default behaviour where the facing direction is opposit of the get in direction.

driverReversedGetOut = 0;

...DustEffect

String

Defines the effect that will be spawned at the position of the LandContact points.

leftDustEffect = "vbs2_fx_lowTrackDustEffects";
rightDustEffect = "vbs2_fx_lowTrackDustEffects";

see #...WaterEffect

E

editorCategory

Eden Editor main category. See Eden Editor: Object Categorization for more details.

editorCategory = "EdCat_Structures";

editorPreview

Eden Editor preview picture. See Configuring Asset Previews for more details.

editorPreview = "\A3\EditorPreviews_F\Data\myObject.jpg";

editorSubcategory

Eden Editor sub-category. See Eden Editor: Object Categorization for more details.

editorSubcategory = "EdSubcat_Drones";

enableGPS

Boolean: If enabled vehicle will allow crew to use Minimap even if they do not posses GPS terminal.

enableGPS = 1;

...Elev

Integer: Degrees

Description: How far the mounted weapon and viewpoint (through optics only) can be lowered or raised, and how much the initial elevation is. Values of max and min = 90 effectively allows a weapon to be lowered into the ground/straight into the air.

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

part of any #Turret Class (tanks eg)

ejectDamageLimit

Float: If the damage value of the vehicle is higher than the ejectDamageLimit, AI will disembark the vehicle.

ejectDamageLimit = 0.75;

ejectDead...

Boolean : Default false

ejectDeadGunner = false;
ejectDeadCargo = false;
ejectDeadDriver = false;
ejectDeadCommander = false;

Causes that unit to 'unmount' the vehicle. Such as an MG nest, or motorcycle.

ejectSpeed

Array: Speed vector of ejection seat. Therefore only applies to planes.

ejectSpeed[] = { 0, 0, 0 };	// cannot eject in a Cessna

Embedded ClassNames

Some Token Names are encountered only within an embedded classname, rather than the main 'vehicle' body.

An embedded classname conveniently adds a unique feature to the 'vehicle'. Such as smoke, such as, a turret for a tank.

Embedded class names are used extensively in animated buildings for the quite logical reason that identical Token Names for door1 cannot be the same as Door2.

Below is a list of embedded classnames that (in most cases) use a TokenName uniquely. It is not found elsewhere and is better served describing that Token Name in the context it is found in, ie, an embedded class.

Hatch... Class
class HatchDriver
{
	selection = "poklop_driver";
	axis = "osa_poklop_driver";
	angle = -100;
};
Indicator... Class
class IndicatorSpeed
{
	selection = "ukaz_rychlo";
	axis = "osa_rychlo";
	angle = -240;
	min = 0;
	max = 60 / 3.6;
};
Light Class
class Light
{
	ambient[] = { 0.3, 0.15, 0.0, 1.0 };
	brightness = 0.08;
	color[] = { 1.0, 0.5, 0.0, 1.0 };
	position = "ohniste";
	shape = "koulesvetlo";
	size = 0.3;
};
CargoLight Class
class CargoLight
{
	ambient[] = { 0.6, 0, 0.15, 1 };
	brightness = 0.007;
	color[] = { 0, 0, 0, 0 };
};
Reflectors Class
class Reflectors : LandVehicle	// old
{
	ambient[] = { 0.1, 0.1, 0.1, 1.0 };
	brightness = 0.25;
	color[] = { 0.9, 0.8, 0.8, 1.0 };
	position = "L svetlo";
	size = 0.5;
	direction = "konec L svetla";
	hitpoint = "L svetlo";
	selection = "L svetlo";
};

class Reflectors				// new
{
	class Light_1
	{
		ambient[] = { 10, 10, 11 };
		color[] = { 1000, 1000, 1100 };
		size = 1;
		dayLight = 1;
		useFlare = 1;
		intensity = 1;
		coneFadeCoef = 2;
		innerAngle = 89;
		outerAngle = 90;
		position = "light_start_memoryPoint";
		direction = "light_end_memoryPoint";
		hitpoint = "";
		selection = "";
		
		class Attenuation // see https://community.bistudio.com/wiki/setLightAttenuation
		{
			start = 0;
			constant = 0;
			linear = 0;
			quadratic = 0;
			hardLimitStart = 9;
			hardLimitEnd = 10;
		};
	};
};

// Arma 3 example value
class Reflectors
{
	class Left // main landing light
	{
		position = "L svetlo";
		direction = "konec L svetla";
		hitpoint = "L svetlo";
		selection = "L svetlo";
		color[] = { 7000, 7500, 10000 }; // R, G, B
		ambient[] = { 70, 75, 100 }; // R, G, B
		intensity = 50;
		size = 1;
		innerAngle = 15;
		outerAngle = 65;
		coneFadeCoef = 10;
		useFlare = 1;
		flareSize = 10;
		flareMaxDistance = 250;
		dayLight = 0;
		class Attenuation
		{
			start = 0;
			constant = 0;
			linear = 1;
			quadratic = 1;
			hardLimitStart = 100;
			hardLimitEnd = 200;
		};
	};
	class LG : Left  // left door gunner searchlight
	{
		position = "LG svetlo";
		direction = "konec LG svetla";
		hitpoint = "LG svetlo";
		selection = "LG svetlo";
	};
	class Right : Left   // right door gunner searchlight
	{
		position = "P svetlo";
		direction = "konec P svetla";
		hitpoint = "P svetlo";
		selection = "P svetlo";
	};
};

// example red cabin light in helicopter

class Cabin
{
	position = "cabin_light";
	direction = "cabin_light_dir";
	hitpoint = "cabin_light";
	selection = "cabin_light";
	color[] = { 1000, 0, 0 };
	ambient[] = { 100, 0, 0 };
	intensity = 5;
	size = 1;
	innerAngle = 15;
	outerAngle = 150;
	coneFadeCoef = 1;
	useFlare = 1;
	flareSize = 0.1;
	flareMaxDistance = 1;
	dayLight = 0;

	class Attenuation
	{
		start = 0;
		constant = 0;
		linear = 1;
		quadratic = 1;
		hardLimitStart = 1;
		hardLimitEnd = 2;
	};
};

Notes for Arma 3:

Add a light to an object in class cfgvehicles.
Each reflector requires a selection in relevant model vis LODs (e.g. "L svetlo") for the flare effect.
Requires two memory points in memory LOD - light spawn position and direction e.g. position "L svetlo" and direction "konec L svetla".

The memory point you assign to position parameter is where the light source itself will be.
The one you put to direction is the way your light will shine.
The cone itself is set using innerAngle, outerAngle and coneFadeCoef.
innerAngle sets the cone in which the light has it is full intensity.
outerAngle sets the cone outside of which the light has zero intensity.
coneFadeCoef is a coefficient that describes attenuation of the light between innerAngle and outerAngle. 1 equals linear attenuation, higher or lower value changes it, meaning how sharp/blurred will the edge of the lightcone as a whole be.
Note that both the angles represent full angle of the cone, not just "angular offset" from direction of the light. If you set it to 90 degrees, it means the cone is 45 degrees to the "left" and 45 to the "right" of the direction specified by your memory points.
As a spot light, reflectors are not made for cones above 180 degrees.
Some time ago BIS made changes to the lighting system to allow for higher light variety during night time. One of the effects it had on configs of lights was that you need to set higher intensity than before the change to get the same results.
color[] and ambient[] seem to have changed from RGB from 0-1 to way higher values - see example.

See setLightAttenuation notes for explanation of attenuation values.
See also Arma 3 Cars Config Guidelines - Reflectors
aggregateReflectors are described here link

Smoke Class
class Smoke
{
	density = 0.5;
	deltaT = -500;
	in = 0.0;
	out = 0.0;
	initT = 1000;
	initYSpeed = 1.7;
	interval = 0.01;
	size = 0.1;
	timeToLive = 100000002004087730000.0;

	cloudletDuration = 0.9;
	cloudletAnimPeriod = 1.0;
	cloudletSize = 0.1;
	cloudletAlpha = 0.8;
	cloudletGrowUp = 0.4;
	cloudletFadeIn = 0.0;
	cloudletFadeOut = 5.0;
	cloudletAccY = -0.1;
	cloudletMinYSpeed = 0.3;
	cloudletMaxYSpeed = 1.5;
	cloudletShape = "cl_basic";
	cloudletColor[] = { 1, 1, 1, 0 };

	class Table
	{
		class T1
		{
			maxT = 0;
			color[] = { 0.8, 0.8, 0.8, 1 };
		};
		class T2
		{
			maxT = 900;
			color[] = { 0.3, 0.3, 0.3, 1 };
		};
		class T3
		{
			maxT = 1000;
			color[] = { 1, 0.5, 0, 0.5 };
		};
	};
};

Turret Class

(Tanks eg)

class TurretBase
{
	body = "OtocVez";
	gun = "OtocHlaven";
	gunAxis = "OsaHlavne";
	gunBeg = "usti hlavne";
	gunEnd = "konec hlavne";
	minElev = -4;
	maxElev = 20;
	minTurn = -360;
	maxTurn = 360;
	soundServo[] = { "Vehicles\gun_elevate", 0.031623, 1.0 };
	turretAxis = "OsaVeze";
};

For details see Turret Config Reference

Embedded TokenNames

see #Embedded ClassNames

enableSweep

Boolean: Default true. Used by Helicopter class

enableSweep = false;	// UH60MG

Is sweeping over the target a valid technique for given helicopter?

envelope

Float Array

// lift (G) based on speed
envelope[] = {
	// speed relative to max. speed -> lift
	// 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4	// rel. speed
	0.0, 0.2, 0.9, 2.1, 2.5, 3.3, 3.5, 3.2, 2.5, 2.0, 1.5, 1.0, 0.9, 0.7, 0.5	// lift
};

Info by RKSL-Rock:

The top speed is set via the mass. So you will need MLODs to alter it. So it is the same issue as the original OP.

The config maxspeed value is only really used by the AI and the engine as a base variable in some calculations.

You can change the acceleration though by using the envelope command. This will change the vertical speed relative to the maxspeed in the config in steps of 10% of the stated max speed.

This is the envelope from the RKSL Lynx AH7:

envelope[] = { 1.7, 2.50, 3.50, 4.50, 5.50, 5.50, 5.15, 5.15, 5.15, 5.15, 4.15, 3.15, 2.15, 2.15, 1.15 };

There are normally 15 values representing the vertical lift in m/s at 10% steps from 0 to 140% of the max speed.

So, if the max speed is 500 and the first value is always 0:

2nd value = 50kph and 2.5 m/s vertical speed 3rd value = 100kph and 3.5 m/s vertical speed ... 11th value = 500kph and 4.15 m/s vertical speed ... 15th value = 700kph and 1.15 m/s vertical speed.

You wont affect the top speed but it will make it easier to handle.

EventHandlers... Class

Pre-defined object Event Handlers. Property with class matches the handler name.

class EventHandlers
{
	init = "myAddon_object = _this select 0;";
};

Arma 3 logo black.png1.54 Arma 3 introduced extended event handlers. It's possible to define event handlers within unique sub-classes, which prevents compatibility issues when multiple addons wants to set the same handler type to single vehicle class.

class EventHandlers
{
	class MyAddon
	{
		init = "myAddon_object = _this select 0;";
	};
	class YourAddon
	{
		init = "yourAddon_object = _this select 0;";
	};
};

extCameraPosition[]

float Array: { X, Z, Y }; Default { 0, 2, -20 };

External (third-person) camera offset relative to the vehicle's aimpoint memory point, around which the camera orbits.

extCameraPosition[] = { 0, 5, -30 };				// plane
extCameraPosition[] = { 0, 1, -10 };				// cars
extCameraPosition[] = { 0, 1.500000, -9 };			// tanks
extCameraPosition[] = { 0, 0.300000, -3.500000 };	// man

extCameraParams[]

float Array: Default { 0.5, 10, 50, 0.5, 1, 10, 30, 0, 1 };

Smoothing of external camera movement

extCameraParams[] = { multFactor, speedMin, speedMax, factorSpeeedMin, factorSpeeedMax, heightMin, heightMax, factorHeightMin, factorHeightMax };

factor = multFactor * interpolate(speed, speedMin, speedMax, factorSpeeedMin, factorSpeeedMax) * interpolate(heightAGL, heightMin, heightMax, factorHeightMin, factorHeightMax)


factor == 0 -> camera follow horizon

factor == 1 - > camera follow vehicle heading

factor (0, 1) interpolation between horizon and vehicle heading

extCameraParams[] = { 0.5, 10, 50, 0.5, 1, 10, 30, 0, 1 };  // helicopters & UAV

to force the old external camera behavior

extCameraParams[] = { -1 }

F

featureType

Integer: Default 0. 1 means the object is always visible within object view distance, 2 means always visible within terrain view distance. Same as setFeatureType.

featureType = 2;

minFireTime

Integer: Default 20 seconds

minFireTime = 20;

Minimal time spent firing on single target.

fired

String: Event Handlers

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

flapsFrictionCoef

Float: Default 0.5

flapsFrictionCoef = 2;	// can be integer too.

forceHide...

Boolean : Default false

forceHideDriver = true;	// shilka
forceHideGunner = true;	// tank
forceHideCommander = true;

Disables the turnout option for that particular crew member

forceSupply

Boolean : Default

forceSupply = true;

Found only in Weapon holders. Is used to make the weaponholder disappear when empty.

formation...

Integer:

formationX = 10;	// default meters
formationZ = 20;	// default meters
formationTime = 10;	// default seconds

One or both X Z values are used to keep objects separated (in meters) depending on wedge, echelon, V, single line, formations.

fov

Float

fov = 0.85;	// Cessna
fov = 0.85;	// man
fov = 1.0;	// truck

...Fov

Float

minFov = 0.420000;	// man
maxFov = 0.850000;
minFov = 0.600000;	// truck
maxFov = 1.400000;

also used by ViewPilot Classes

fuelCapacity

Float: Default Value 0. Has nothing to do with liters.

Arma 3: for a vehicle using tankX simulation consumption seems to be exclusively determined by engine rpm. With a 700 idle-rpm and 3000 max-rpm engine - a fuelCapacity of 1 will give you 640 seconds operation time at idle rpm, and 300 seconds of operation at maximum rpm. If the idle rpm was 200, you would get 865 seconds of operation, the max rpm time would not change. The amount of thrust from controllerinput is completely irrelevant.

A2 examples:

fuelCapacity = 50;	// motorcycle
fuelCapacity = 100;	// car
fuelCapacity = 700;	// tank
fuelCapacity = 1000;// air

The required fuelCapacity value to achieve a specific operation TIME (in seconds) at a specific engine RPM (revolution per minute) can be estimated with:

fuelCapacity = (8E-7 * RPM + 0.001) * TIME

fuelConsumptionRate

Integer: Default Value 0.01. Has no units. Works only on helicopters.


G

_generalMacro

String: in Arma 3. Has no purpose whatsoever. It is generated automatically by BI developer tools for debugging.
«
« Some config properties are generated automatically (e.g., "nameSound", which sets how to unit appears in radio protocol, is computed based on unit's role and equipment, so coders won't need to set it manually). _generalMacro property is added to all objects which underwent this process to help with debugging. » – Karel Mořický (source)

getIn....ActionNamedSel

String: Named selection for get in actions working in same principle as actionNamedSel in UserActions. Available variants:

getInDriverActionNamedSel
getInGunnerActionNamedSel
getInCommanderActionNamedSel
getInCargoActionNamedSel
getInTurretActionNamedSel
getInUnitActionNamedSel

...Gun...

Integer:degrees

minGunElev = -60;
maxGunElev = 60;
minGunTurn = -5;
maxGunTurn = 5;
minGunTurnAI = -30;
maxGunTurnAI = 30;

...GunnerMayFire

Boolean: Default false

outGunnerMayFire = true;	// m113
inGunnerMayFire = false;

...GunClouds Class

This is a reference to the external WeaponCloudsGun classes

most models simply inherit the defaults

class GunClouds : WeaponCloudsGun {};
class MGunClouds : WeaponCloudsMGun {};

here is an example of over-rides for class man

class GunClouds : WeaponCloudsGun
{
	cloudletGrowUp = 0.200000;
	cloudletFadeIn = 0;
	cloudletFadeOut = 0.400000;
	cloudletDuration = 0.200000;
	cloudletAlpha = 1;
	cloudletAccY = 2;
	cloudletMinYSpeed = -10;
	cloudletMaxYSpeed = 10;
	interval = 0.020000;
	size = 0.300000;
	sourceSize = 0.015000;
};

...GunFire Class

This is a reference to the external WeaponFireGun classes

most models simply inherit the defaults

class GunFire : WeaponFireGun {};
class MGunFire : WeaponFireMGun {};

gearbox[]

Array

Description: Changes acceleration and max speed values of certain Vehicles. If changed, impact to the acceleration is minor (if notable at all!) to catastrophic (worsened acceleration/maxspeed). Best to leave as-is.

gearbox[] = { -18, 0, 110, 16.15, 14.44, 13.33 };

gearRetracting

Boolean: Default true

gearRetracting = false;	// Cessna

more correctly viewed as HasRetractingGear.

gun

String:

gun = "OtocHlaven";

see #Turret Class

gunAimDown

Float

Description: Aircraft only. How far a hardpoint-mounted gun "aims down"; high values allow for strafing runs without the need to nose-dive down too much, but also shift the targeting reticle in the aircraft's HUD; if too high, targeting reticle is only visible in 3rd Person (if available).

gunAimDown = 0.07;

gunAxis

gunBeg

gunEnd

see #Turret Class

gunnerHasFlares

Boolean

gunnerHasFlares = false;

gunnerName

String

gunnerName = "$STR_POSITION_CREWCHIEF";

gunnerOutOptics...

String

gunnerOutOpticsModel = "";

Array

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

Boolean

gunnerOutForceOptics = false;

Boolean

gunnerOutOpticsShowCursor = false;

gunnerType

String

Part of #Turret class.

Defines the character class that inhabits this turret by default, replaces the pilot which would usually be in this turret. Used primarily to add helicopter crewmen to helicopter turrets.

class MyHelicopter : B_Heli_Transport_01_F
{
	class Turrets : Turrets
	{
		class MyTurret : MainTurret
		{
			gunnerType = "B_RangeMaster_F";
		};
	};
};

Because turrets are sub-members of the Turrets class of the base vehicle, all the classes must be fully exposed to their source (Helicopter class) to be inherited from, otherwise all turrets must be overwritten.

H

HeadAimDown

Float: Default: 0.

How much to tilt the driver's head forward in degrees.

HeadAimDown = 10;	// tilt driver's head forward 10 degrees.

...Height

Integer:

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

has...

Boolean:

hasDriver = true;	// default
hasGunner = false;	// default
hasCommander =true;	// default

Depending on vehicle model.

Controls the 'get in' commands.


Since 1.82 there is alternative syntax available for hasDriver property

hasDriver = -1;	// t80auto

This will disable driver seat and add control ability to commander (turret with highest commanding value aka seat with highest effectiveCommander value)

see #driverIsCommander

...HeadTurnAI

Integer Degrees

minHeadTurnAI = -70;	// man class
maxHeadTurnAI = 70;

hiddenSelections

String Array: Default none.

Here you can define selections on the model, which are not shown at mission startup. This is useful for creating variations of one model, where the different selections are left out with hiddenSelections. (ex: Soldiers have the hidden selection "medic", as they should not have a red cross at their body):

Aside from this, the hidden selections are used for runtime texture assignment. Every element in the hidden selection-array corresponds to an index, with the first element being 0. Only 10 elements are allowed in the array and are numbered 0-9.

hiddenSelections[] = { "pruh" }; // bmp/tank

Try this setObjectTexture [0, "\data\duha.pac"]; in the initline of a BMP and you'll see which parts are meant by the selection "pruh".

Don't forget to add the model and the selections in the CfgModels, as the hidden selections won't work otherwise (at least not after binarizing).

hide...

Boolean

hideProxyInCombat		= false;	// default (true for tanks);  if true, disables turn-in option for all crew
hideUnitInfo			= false;	// default see [[#unitInfoType]]
hideWeaponsCargo		= false;	// default
hideWeaponsCommander	= true;		// default
hideWeaponsDriver		= true;		// default
hideWeaponsGunner		= true;		// default

hitpoint

String:

hitpoint = "L svetlo";

See #Reflectors Class

hitSound...

hitSound1[] = { "voices\Hit11", 0.056234, 1 };
...
hitSound20[] = { "voices\Hit30", 0.056234, 1 };
...
hitSounds[] = { "hitSound1", 0.05, "hitSound2", 0.05, ...

hitSounds is used by the engine to reference user generated hitSound...s

there is no limit to the number of user-generated sounds.

hour

part of the IndicatorWatch class

class IndicatorWatch
{
	hour = "hodinova";
	minute = "minutova";
	axis = "osa_time";
	reversed = 0;
};

hullExplosionDelay

Array: Time ranage when catastrophic explosion (when HitHull > 0.9 & hullDamageCauseExplosion is set to 1) happens. First number is minimum time in seconds & 2nd - maximum

hullExplosionDelay[] = { 10, 20 };

hullDamageCauseExplosion

Integer: Determines if vehicle explodes after HitHull is above 0.9

hullDamageCauseExplosion = 1; // vehicle will explode if HitHull is above 0.9

I

icon

String: Default Value = "unknown_object.paa"

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

The icon can be any jpg, paa, or pac file. paa is default. Note that Elite cannot handle jpegs.

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

Related TokenName(s): #mapSize

in/out

Float: These TokenNames are used inside the #Smoke Class

in = 0.0;
out = 0.0;

init

String: Event Handlers The Event Handler receives an array _this (the exact content of which still has to be documented), of which the first element contains the vehicle (e.g. _this select 0).

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

initT

Integer: This TokenName is used inside the #Smoke Class

initT = 1000;

initYSpeed

Float: This TokenName is used inside the #Smoke Class

initYSpeed = 1.7;

insideSoundCoef

Float: default 0.5

insideSoundCoef = 0.05;	// air vehicles are 2%

interval

Float: This TokenName is used inside the #Smoke Class

interval = 0.01;

irScanGround

Boolean: Default true.

Probaly used to stop ai looking down

irScanGround = false;	// tanks

irScanRange...

Integer: Default 0

irScanRange = 4000;		// outdated (since Resistance)
irScanRangeMin = 500;	// tanks general
irScanRangeMax = 4000;
irScanRangeMin = 2000;	// air
irScanRangeMax = 10000;
irScanRangeMin = 4000;	// a vulcan
irScanRangeMax = 10000;

irScanToEyeFactor

Integer: Default 1

irScanToEyeFactor = 2;	// air
irScanToEyeFactor = 5;	// shilka

irTarget

Boolean: Default true.

Used for (some) buildings so that they don't show up on tank radar. Save for very limited exceptions, this token should be enabled for all vehicle units.

Disabling it will make the vehicle NOT to be engaged by infantry anti-tank gunners nor vehicle weapons. It will only be engaged by small arms, and only if its armor value is low enough for AI infantry to think it can damage it by shooting at it.

irTarget = false;	// man

isBicycle

Boolean: Default false.

this value inside the motorcycle class is used to turn it on when inheriting to a real bicycle

isMan

Boolean: Default true.

isMan = 1;

Defined within the man class

K

killed

String: Event Handlers

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

L

ladders

Embedded Array: The ladders array is used to declare one or more ladder pairs inside the model.

ladders[] = { {"start", "end" } };							// a building with one ladder
ladders[] = { {"start1", "end1" }, {"start2", "end2" } };	// two ladder building
// ...etc

Note that unfortunately, the 'start' and 'end' labels are arbitrary for each model. You cannot have a generic ladder building as such.

Since 1.79.143080 it is possible to define radius of action & component in geometry LOD. Action will be visible then when player is looking at selected component

// { Starting point (memory LOD), Ending point (memory LOD), radius (in meters), Named Selection (geometry LOD) }
ladders[] = { { "Ladder_1_start", "Ladder_1_end", 2.5, "Ladder_1_action" }, { "Ladder_2_start", "Ladder_2_end", 2.5, "Ladder_2_action" }, { "Ladder_3_start", "Ladder_3_end", 2.5, "Ladder_3_action" } };

laser...

Boolean: Default false

Determines if a vehicle has laser capability.

laserScanner = true;
laserTarget = true;	// used as a generic class of All {} to default things true

landingAoa

MathFormula String Default 10*3.1415/180

Landing Angle of Approach. Used by plane class

landingAoa = 7*3.1415/180;	// Cessna

landingSpeed

Integer: Default 0 Kph.

landingSpeed = 75;	// plane vehicles

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";
};

LODDriverTurnedIn

Integer Defines the LOD that is to be used when the Driver is turned in. Value=-1 seems to default to the standard LOD (for Turret's that is Gunnerview).

LODDriverTurnedIn = -1

Value: -1=Default LOD; 1=first resolution LOD; 1000=Gunnerview; 1100=Pilotview; 1200=Cargoview.

LODDriverTurnedOut

Integer Defines the LOD that is to be used when the Driveris turned out. The same rules as with LODDriverTurnedIn apply.

LODDriverTurnedOut = -1

M

magazine

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

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

Each of these couplets are contained within a 'weapon' classname within the magazineS class itself. Example

class TransportMagazines
{
	class _xx_M16
	{
		magazine = "M16";
		count = 30 * 1;
	};
	class _xx_M60
	{
		// ...
	};
	class _xx_PK
	{
		// ...
	};
	// ...
};

magazines

Variable string Array: default {}

see #weapons for proper description

mapSize

Float: Default Value = 10 (meters).

Used for the map editor to show the icon associated with this model class.

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

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

mapSize = 0.7;	// small object such as a tree
mapSize = 4;	// a smallish building

The Mission Editor map is not very good in this regard (as noted above). However, the main problem is the base classes of the engine. The mapSize= for most objects, particularly buildings, is a one shoe fits all. A forest, eg, is the same mapSize= as a tree !!!

Later Oem addons, *generally* are better and more specific in this regard, making position and fitting a little easier.

marker

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

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

material

Integer:

Used in Hit... classes, eg HitTurret HitBody

material = 50;

Related TokenNames: #armor (float), #material, #name, #passThrough

maximumLoad

The maximumLoad value defines the number of units of cargo storage.

maximumLoad = 2000;

An item's storage value (the amount of space it takes up) is defined by it is mass value. For example:

// CfgMagazines >> "Titan_AT"
mass = 100;

The following parameter are used by just Eden:

transportMaxMagazines
transportMaxWeapons
transportMaxBackpacks

maxT

Integer: This TokenName is used inside the #Smoke Class

maxT = 0;

min/max

String Degrees Math Formula

min = 0;
max = 60 / 3.6;

Note for readability, these values are normally expressed as strings which the engine itself will convert.

see Indicator Class

memoryPointExhaust...

String:

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

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

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

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

microMimics

String: Man class

This token refers to the class within the external cfgMimics class

microMimics = "Micro";

minute

part of the IndicatorWatch class

see #hour

model

String: Default Value= "empty.p3d"

Location in the addon where the p3d model resides.

model = "\AddonName\anyp3d(.p3d)";

Where a class is not a visible 'object', such as a BaseClass. You can specify

model = "";

this cuts down on load and access.

Related TokenName: #simulation, #reversed

moves

String: Default = "NoDefaultMoves"

applies to the man class and refers to a cfgMoves class

moves = "CfgMovesMC";	// civilian, in fact, there isn't another

N

...NightLights...

Float:

spotableNightLightsOff = 0.05;	// default
spotableNightLightsOn = 4;		// default
visibleNightLightsOff = 0.1;	// default
visibleNightLightsOn = 0.2;		// default

name

String:

name = "motor";

Used in Hit... classes, eg HitTurret HitBody

Related TokenNames: #armor (float), #material, #name, #passThrough

nameSound

String: Default value: "Target"

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

nameSound = "rock";

Many different nameSounds can be selected. Here are just a few.

nameSound = "crew";
nameSound = "target";
nameSound = "tank";
nameSound = "house";

The actual descriptive text accompanying the 'sound' can be different see #displayName

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";
};

Related TokenNames #scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage

noseDownCoef

Float: Default 1.0 used by Plane class

noseDownCoef = 0.025;	// Cessna

How much the nose drops when banking.

Note: Not used in ArmA any more

nightVision

Boolean: Default false

nightVision = true;

present in lawsoldier, sniper, saboteur, tank, and air crew

Note: obsolete, not used, NVG item is used instead

O

...OpticsColor

Float Array : Default {0, 0, 0, 1};

driverOpticsColor[] = { 0, 0, 0, 1 };
gunnerOpticsColor[] = { 0.910000, 0.230000, 0.230000, 1 };
commanderOpticsColor[] = { 0.910000, 0.230000, 0.230000, 1 };

...OpticsModel

String: Default ""

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

gunnerOpticsShowCursor

Boolean

gunnerOpticsShowCursor = true;

P

passThrough

Boolean: Default true

If true, destroying this part of the vehicle will destroy the whole vehicle. If false, damage will only affect this part of the vehicle.

This value is only taken into account in Arma 2. It was ignored by the game engine in previous games (that includes OFP).

passThrough = 1;

Used in Hit... classes, eg HitTurret HitBody

Related TokenNames: #armor (float), #material, #name, #passThrough

picture

String: Default: iaston.paa

I think this is for briefing Information icon click

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

"Picture" is used in config.cpp to display the 128 x 64 graphic file of the unit in the HUD and the bottom of the screen while in game. A .pac file can be used also. If using a .pac make your alpha channel pink - RGB 255, 0, 255. Pink is invisible in .pac file.

pilotLight

Boolean: Default: false

Default state of headlights on vehicle.

pilotLight = true; // spawn vehicle with headlights on

position

String:

position = "ohniste";
position = "L svetlo";

See #Reflectors Class, #Light Class

precision

precision = 1;		// man
precision = 200;	// air
precision = 50;		// boat

...preciseGetInOut

Integer: Defines location of getin point. 0 = use memoryPointGetIn , 1 = use model center as get in point, 2 = use proxy of crew position as get in point. Default is 0.

preciseGetInOut=0; // for vehicle crew
cargoPreciseGetInOut=0; // for passengers

preferRoads

Boolean: Default false

preferRoads = true;	// all vehicles

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 declared the main, or primary turret. There may indeed be only one 'turret'. (Note: this entry has been replaced by the primary... entries. Please use those for your turret definitions to ensure maximal compatibility.)

primary = true;

primary...

Boolean A vehicle can have multiple turrets, but one of them normally is the primary gunner turret and one the primary vehicle commander turret (this can be the same turret or two different turrets, but you cannot have several primary gunner or commander turrets). Please use these entries instead of the more general primary entry.

primaryGunner = false;
primaryObserver = true;	// Commander

proxyIndex

Integer

proxyIndex = 2;

proxyType

String

proxyType = "CPCommander";

R

...Radius

Float:

Represents a circular area (radius in meters from centre of object for action to take place

getInRadius=2.5;	// default
getInRadius=3.5;	// tank
getInRadius=10;		// ship
'''supplyRadius''' = 2.5;	// for fuel dumps ammo trucks etc

...RotorSpeed

Float: Helicopters

mainRotorSpeed = 1.0;	// default
backRotorSpeed = 1.5;	// default

mainRotorSpeed = 1.0;	// ch47d
backRotorSpeed = -1.0;

...RotorDive

Float: Helicopters, Default 0.0

minMainRotorDive = -9;	// CH47D
maxMainRotorDive = 15;
neutralMainRotorDive = -5;
minBackRotorDive = -15;
maxBackRotorDive = 9;
neutralBackRotorDive = -5;

ReloadAnimations Class

General useage in Helicopters, this class is 'looked for' by the engine. Various models, but normally only one, are specified as follows

class ReloadAnimations
{
	class SomeThingA
	{
		// ...
	};
	// ...
	class SomeThingZ
	{
		// ...
	};
};

here is an example for an Mi24 helicopter

class MachineGun30E
{
	weapon = "MachineGun30E";
	angle0 = 0;
	angle1 = -2 * 3.141592654;
	multiplier = 500;
	type = "rotation";
	animPeriod = 0.500000;
	selection = "gatling";
	begin = "usti hlavne";
	end = "konec hlavne";
};

rotL/R

defined within a tank.Wheels class to describe the series of small wheels on each side

rotR[] = { kolL1, kolL2, kolL3, kolL4, kolL5, kolL6, kolL7, kolL8 };
rotL[] = { kolP1, kolP2, kolP3, kolP4, kolP5, kolP6, kolP7, kolP8 };
upDownL[] = { koloP1, podkoloP1, koloP2, podkoloP2, koloP3, podkoloP3, koloP4, podkoloP4, koloP5, podkoloP5, koloP6, podkoloP6, koloP7, podkoloP7, koloP8, podkoloP8 };
upDownR[] = { koloL1, podkoloL1, koloL2, podkoloL2, koloL3, podkoloL3, koloL4, podkoloL4, koloL5, podkoloL5, koloL6, podkoloL6, koloL7, podkoloL7, koloL8, podkoloL8 };

reversed

Boolean: Default true

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 = false;	// class thing

rotor...

String: Helicopters

rotorBig = "vrtule_velka";	// cobra
rotorBigBlend = "vrtule_velka_bl";
rotorSmall = "vrtule_mala";
rotorSmallBlend = "vrtule_mala_bl";

S

...Sensitivity

Float: Default 1.0 Used by Plane Class

aileronSensitivity = 0.33;		// Cessna
elevatorSensitivity = 0.1;		// Cessna
wheelSteeringSensitivity = 1.0;	// default

...Simul/Plan

Float: in meters

steerAheadSimul = 0.5;	// default
steerAheadPlan = 0.35;	// default
steerAheadSimul = 0.2;	// man
steerAheadPlan = 0.2;

predictTurnSimul = 1.2;	// default
predictTurnPlan = 1.2;	// default
predictTurnSimul = 3;	// ship
predictTurnPlan = 3;

scope

Integer: Default value is 0 (private).

scope = 2;

Scope is used to limit access to the class in the Mission Editor (such as Eden Editor) and scripts. The value can be one of 0 (private), 1 (protected/hidden), and 2 (public).

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:

No object can be created using this class, neither in Mission Editor nor via scripts. This property marks the class as a "base" class, which other classes inherit from.

private is a common method of grouping base characteristics together and inheriting all those common characteristics into a class that can be viewed or accessed.

public:

Public classes are usable in scripting commands (such as createVehicle) and can be shown in the Mission Editor.

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 = "Fruit and Onions";	// a generic group in mission editor
	displayName = "Generic Vegetable";
	namesound = "whatever";
	icon = "vegetableIcon.paa";
	// put any other common characteristics in here
};
class GreenOnions : Vegetables
{
	scope = public;
	displayName = "Green Onion";
}
class PurpleOnion : Vegetables
{
	....
}

The effect here is to reduce (considerably) not only the amount of typing, but memory storage too.

It is only the public classes that are listed in the Mission Editor.

So in above example while each one of these has a separate displayName=, they are ALL 'grouped' in the Editor's "Fruit and Onions", and all of them will be referred to in the mission as "Generic Vegetable". If you follow along, you should fully expect to see another protected class called "Generic Fruit"

In the above example, it is just as useful to declare the base class 'private. But, see below, and see #accuracy

Protected classes are CamCreatable in the mission.sqm.

Protected classes are immensely useful to 'hide' obsolete models that are still required to maintain compatibility with older missions. Ie older missions will still be playable, but newly created ones will only 'get at' the newer improvements specified in a public class. This

class OriginalThing
{
	scope = protected;
	// ...
	// lots of original things
	// ...
};
class ImprovedThing : OriginalThing // inherits it all
{
	scope = public;
	// ...
	// lots of new improved things
	// ...
};

Related TokenNames #scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage

secondaryExplosion

Integer: Default disabled (-1)

secondaryExplosion = -1;

sensitivity

Float: Default 1.0

sensitivity = 0.6;	// cars
sensitivity = 2;	// sniper

The higher the sensitivity value for an unit, the better it can see.

The effect is not linear, but logarithmic. So for an unit with value 1 vs one with value 3 it must be 1.7 times closer (square root of 3). This example does not take into account other factors like zoom, binocular use, optics, camouflage and accuracy (knowsAbout value needed to detect the type and side).

1 equals roughly to 100 meters, 2.5 to 210m, 3 to 250m.

OA 1.62 state:

class All
	sensitivity = 2.5;
	sensitivityEar = 0.0075;
class AllVehicles : All
class Land : AllVehicles
class LandVehicle : Land
class Car : LandVehicle
	sensitivity = 3;
class Motorcycle : LandVehicle
	sensitivity = 3;
class Bicycle : Motorcycle
class Tank : LandVehicle
	sensitivityEar = "0.0075 /3";
class APC : Tank
class Man : Land
	sensitivity = 3;
	sensitivityEar = 0.5;
class Animal : Man
class Air : AllVehicles
class Helicopter : Air
class Plane : Air
class Ship : AllVehicles
class AH6X_EP1 : AH6_Base_EP1
	sensitivity = 2;
class Ka137_Base_PMC : Helicopter
	sensitivity = 2;

sensitivityEar

Float: Default 0.0075

Sets how well can the given unit hear others. The bigger the value, the better the hearing.

sensitivityEar = 0.13;	// man

selection

String:

selection = "L svetlo";

See #Reflectors Class, #ReloadAnimations Class (Arma Only), #Hatch... Class, #Indicator Class

selection...

String:

selectionBackLights = "light_back";
selectionBrakeLights = "light_brake";
selectionFireAnim = "muzzleflash";
selectionHRotorStill= "mainRotorStatic";
selectionHRotorMove = "mainRotorBlurred";
selectionVRotorStill = "tailRotorStatic";
selectionVRotorMove = "tailRotorBlurred";
selectionFabric = "latka";

The selections

selectionLeftOffset = "PasOffsetL";
selectionRightOffset = "PasOffsetP";

are used to animate tank track textures. You must have the appropriate Named Selections in the model and the selection must have an rvmat in order to work.

shape

Float: This TokenName is used inside the #Light Class

shape = "koulesvetlo";

See #Light Class, #Reflectors Class

showgunneroptics

Boolean:

showgunneroptics = 0;

showWeaponCargo

Boolean:Default ?

showWeaponCargo = true;

Found inside weapon holders (ammo boxes)
OFP: If it is set to true player won't be able to put weapons/magazines to container.

sound

String: Used by animated objects (campfire eg) to give sound effect. Or, simply by ambients(wolves)

sound = "Fire";
sound = "Fountain";
sound = "OwlSfx";

SoundEnvironExt Class

class SoundEnvironExt

This is a Class used within the man class. Some/ None, or all sections of it can (of course) be overridden by inheritance.

The external class CfgManActions accesses the SoundEnvironExt class defined (or inherited) for any 'man' (soldier eg).

External class CfgManActions contains many clauses

soundOverride = "fallbody";	// e.g

for instances of when it wants sounds for that 'action' to take place.

thus, you can define none some or all arrays (within class with your SoundEnvironExt{}) for the following

normalExt[] =
normal[] =
road[] =
rock[] =
water[] =
gravel[] =
sand[] =
drygrass[] =
grass[] =
forest[] =
mud[] =
wood[] =
metal[] =
snow[] =
hallway[] =
fallbody[] =
laydown[] =
standup[] =
crawl[] =

Example

snow[] = {
	{ "People\snow_L", 0.000032, 1 },
	{ "People\snow_R", 0.000032, 1 }
};

snow is a Variable length Sound Array

see sounds[]

Sounds Various

Complex Array:

All the following use

nameOfSound[] = { "\AddonName\AnySound(.wss)", 0.000000, 1, 1 };
  • 1st parameter: Sound file (path). *.wss is default, *.ogg can be specified.
  • 2nd parameter: Change of volume compared to the strongest sound that is audible at the camera's (player's) position. It means that the strongest sound is played on 100% and this sound is played weaker (calculated from dB value, distance, occlude, ...). If this sound is alone in sound scene then it is played on 100% every time.
  • 3rd parameter: Speed of playing, 1 = normal speed/time of playing, 2 = 2 times slower, with half lower pitch.
...Sound
flySound[] = { "\AddonName\AnySound.wss", 0.000000, 1, 1 };
singSound[] = { "\AddonName\SoundFile.ogg", 0.031623, 1, 1 };
scudSound[] = { "weapons\rocketflying", 316.227783, 0.200000 };
scudSoundElevate[] = { "vehicles\gun_elevate", 0.010000, 1 };
sound...
soundCrash[] = { "\AnyAddon\AnySound(.wss)", 0.010000, 1 };
soundSetSonicBoom[] = { "Plane_Fighter_SonicBoom_SoundSet" }; // Sonic Boom for jet fighters at supersonic speeds; defined in cfgSoundSets

default values

soundCrash[] = { "Vehicles\crash", 0.316228, 1 };
soundDammage[] = { "", 1, 1 };
soundEngine[] = { "", 1, 1 };
soundEnviron[] = { "", 1, 1 };
soundLandCrash[] = { "Explosions\intoground", 0.316228, 1 };
soundWaterCrash[] = { "Explosions\intowater", 0.316228, 1 };
soundGetIn[] = { "Vehicles\get_in", 0.000316, 1 };
soundGetOut[] = { "Vehicles\get_out", 0.000316, 1 };
soundServo[] = { "Vehicles\gun_elevate", 0.010000, 0.500000 };
soundGear[] = { "\AnyAddon\AnySound(.wss)", 0.316228, 1 };			// no default
additionalSound[] = { "\AnyAddon\AnySound(.wss)", 0.000000, 1 };	// man only
sound[]

used by animations

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

side

Integer: Default Value: NEUTRAL.

The side, when declared, sets the 'vehicle' to 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 NO_SIDE -1
#define EAST 0			// (Russian)
#define WEST 1			// (NATO)
#define RESISTANCE 2	// Guerilla
#define CIVILIAN 3
#define NEUTRAL 4
#define ENEMY 5
#define FRIENDLY 6
#define LOGIC 7

side = EAST;

NEUTRAL is the general case for all objects.

NO_SIDE is used for ambient seagulls and wolves (see #sound). It differs from NEUTRAL in that the engine spends no time looking for interraction with other objects.

simulation

String: Default value: invisible.

The engine behaviour with this #model.

simulation = "SeaGull";
simulation = "thing";
simulation = "fire";
simulation = "flag";
simulation = "house";
// simulation = airplane, helicopter, tank

Related TokenName: #model

size

Float: This TokenName is used inside the Smoke class and Reflector class

size = 0.1;

part of Reflectors class

source

String: found in animationSources

source = "reload";
source = "time";

sourceAddress

String: found in animationSources

sourceAddress = "loop";

sourceSize

Float: This TokenName is used inside the #Light Class

sourceSize = 0.015;

...Speed

Float: In Kph.

Setting maxSpeed for infantry units too low might cause problems when working with waypoints (units won't be able to fully complete them or won't move towards them).

minSpeed = -0.5;	// range 0->1
maxSpeed = 80;		// default
maxSpeed = 30;		// tractor
maxSpeed = 60;		// boat

scud...

String: Default ""

scudLaunch = "scudlunch.rtm";
scudStart = "scudstart.rtm";
scudModel = "scud_strela_proxy";
scudModelFire = "scud_strela_ohen";

straightDistance

Integer:

straightDistance = 50;

submerged..

Float: default 0.0

Almost all 'objects' are not submerged. This parameter is used to hide objects such as effects

submerged = -0.5;		// thing effect
submergeSpeed = 0.25;	// positive value makes it go deeper (sound goes quieter)

T

...Turn

Integer Degrees

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

part of any Turret class (tanks eg)

see#gun

TokenNames Embedded

see #Embedded ClassNames

turning

Boolean:

turning = 1;
turnCoef

Float: Default 2.0

turnCoef = 6.0;	// truck
turnCoef = 9.0;	// tractor

terrainCoef

Float: Default 3.0

  • Pre A3: multiplier to torque and speed (pForce)
  • A3: multiplier to maxSpeedCoef (1 - maxSpeedCoef) [cfgSurfaces parameter] for speedCoef
Pre A3::
		terrainCoef = 6.0;	// skoda
---
A3:
	class Car_F : Car
		terrainCoef = 2;

	class MRAP_03_base_F : Car_F
		terrainCoef = 1;
	class UGV_01_base_F : Car_F
		terrainCoef = 1.2;
	class Quadbike_01_base_F : Car_F
		terrainCoef = 1.4;
	class MRAP_01_base_F : Car_F
		terrainCoef = 1.5;
	class MRAP_02_base_F : Car_F
		terrainCoef = 1.5;
	class SUV_01_base_F : Car_F
		terrainCoef = 2.5;
	class Hatchback_01_base_F : Car_F
		terrainCoef = 4.5;
	class Kart_01_Base_F : Car_F
		terrainCoef = 5;


	class Truck_F : Car_F
		terrainCoef = 2.5;

	class Truck_03_base_F : Truck_F
		terrainCoef = 1.8;
	class Truck_02_base_F : Truck_F
		terrainCoef = 2;
	class Van_02_base_F : Truck_F
		terrainCoef = 3;


	class Wheeled_APC_F : Car_F
		terrainCoef = 1.5;

textureList[]

Complex (string, float) Array

Introduced with Arma 3 logo black.png1.24, the Bootcamp Update, along with a lot of other randomization features.

Array of texture sources to randomize the vehicle with similar to facewear/headgear randomization for characters (See Arma 3: Characters And Gear Encoding Guide#FIA headgear and facewear randomization); format is:

textureList[] = { "texture1", weight1, "texture2", weight2, etc. };

Textures must be classes from the vehicle's TextureSources. If all the weights are the same value, it functions as straight equal randomization.

Example:

class MyPlane : C_Plane_Civil_01_F
{
	textureList[] = { "Racer_1", 0.5, "Racer_2", 1 };
};

threat

float Array: Default Value {0.700000, 0.500000, 0.300000};

How threatening you are to unit types {Soft, Armor, Air}, respectively.

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

threat[] = { 1, 0.0500000, 0.050000 };			// soldier
threat[] = { 1, 0.900000, 0.100000 };			// law soldier
threat[] = { 0.900000, 0.700000, 0.300000 };	// bmp

Related TokenNames: type, #cost, #threat

timeToLive

Float: Default 10 000 000 000.0; // seconds?

timeToLive = 20;	// thing effects (bullets)
timeToLive = 100000002004087730000.0;	// campfire

See #Smoke Class

transport...

transportAmmo

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

A 'vehicle' in this case can be a genuine repair truck, or, a building.

transportAmmo = 300000;			// reammo truck
transportAmmo = 10000000;		// bigship

transportFuel = 3000;			// refueltruck
transportRepair = 200000000;	// repairtruck
transportMax...

These parameters appear not to be used in Arma 3 and are only included for backwards compatibility. See maximumLoad to define a vehicle's storage capacity.

transportMaxMagazines = 50;		// car
transportMaxWeapons = 10;
transportMaxMagazines = 5;		// motorcycle
transportMaxWeapons = 0;
transportMaxMagazines = 50;		// tank
transportMaxWeapons = 10;
transportMaxMagazines = 20;		// air
transportMaxWeapons = 3;
transportMaxMagazines = 100;	// boat
transportMaxWeapons = 20;
transportMaxMagazines = 500;	// ship
transportMaxWeapons = 200;
transportMaxMagazines = 200;	// truck
transportMaxWeapons = 50;
transportMaxMagazines = 100;	// apc
transportMaxWeapons = 20;
transportMaxMagazines = 200;	// helicopter
transportMaxWeapons = 50;
transportMaxWeapons = 500;		// ammo boxes
transportMaxMagazines = 2000;

Values vary depending on exact type of 'boat' eg.

These TokenNames ate used to indicate how many units of each type an object can hold. Most objects can't hold anything.

transportSoldier

Integer: Default Value= 0.

Number of 'passengers' this vehicle can carry. The value does not include the driver, nor any vehicle positions such as gunner (if any) or commander(if any). See the JeepMg below for a 3 person vehicle which can only transport ONE soldier.

transportSoldier = 3;		// jeep/car
transportSoldier = 50;		// large ship
transportSoldier = 6to10;	// SmallShip
transportSoldier = 3;		// a10
transportSoldier = 8to12;	// helicopters
transportSoldier = 2or3;	// ambulance
transportSoldier = 8;		// apc/bmp
transportSoldier = 12;		// truck
transportSoldier = 1;		// jeepmg
transportSoldier = 1or2;	// repair type truck

to make the game 'interesting', similar vehicles on different sides, can carry non equivalent numbers.

transportVehiclesCount

Integer : default 0

transportVehiclesCount = 15; // a Carrier (big ship)

TransportMagazines Class

transportVehiclesMass

Integer: Default 0

transportVehiclesMass = 0;	// not used by any model

TransportWeapons Class

tracksSpeed

Integer: Default 1

Speed of tracks UV animation. Use negative number to move tracks in opossite direction

tracksSpeed = 1.4;

TransportWeapons Class

turretAxis

String:

turretAxis = "OsaVeze";

see #Turret Class

type (threat)

Integer: Default Value: Armored

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 VSoft 0
#define VArmor 1
#define VAir 2

type = VAir;

Vehicles (and buildings) are armoured, humans are 'soft' and aircraft (obviously) are air

Related TokenNames: type, #cost, #threat

type (animation)

old Unknown: Default Value: rotation

This appears in the ReloadAnimations class

type = "rotation";

typicalCargo

Variable String Array:Array of units classes which are assumed to be onboard of vehicle. Used by AI to determine potential threat of vehicle in case they are not able to see units inside vehicle.

This array can have zero or more strings.

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

Note that these are ClassNames of soldiers.

U

...UsesPilotView

Boolean: : Default false

gunnerUsesPilotView = false;	// some choppers (mi17)
commanderUsesPilotView = true;


uavHacker

Boolean
Allows unit to hack UAVs. Used on UAV operators in vanilla (Arma 3)

uavHacker = 1;

unitInfoType

String

unitInfoType = "UnitInfoSoldier";

Certain 'vehicles' hide this information.

see #hideUnitInfo

unloadInCombat

Boolean: default true

unloadInCombat = false;

All true vehicles will cause ai to disembark when in combat.

upDownL/R

wheels class see #rotL/R

V

vehicleClass

String: Default Value= "Objects"

Used for Mission Editor basic category selection

vehicleClass = "Air";
vehicleClass = "Support";
vehicleClass = "My Great Addon";

Related TokenNames #scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage

vehicleClass[]

String Array:

vehicleClass[] = { "Men", "Car", "Armored", "Air", "Support", "Camera", "Objects", "Ammo", "Sounds", "Mines" };

view...Shadow

Boolean:

viewCargoShadow = true;
viewGunnerShadow = true;

viewDriverInExternal

Boolean: default false

viewDriverInExternal = true;	// Show the driver in third person view

viewGunnerInExternal

Boolean: default false

viewGunnerInExternal = true;	// for some turrets and M113

W

...WaterEffect

String

Defines the effect that will be spawned at the position of the LandContact points when vehicle is in/on the water.

leftWaterEffect = "vbs2_fx_lowWaterEffects";
rightWaterEffect = "vbs2_fx_lowWaterEffects";

see #...DustEffect

weapon

String:

weapon = "M197";

Selects a weapon from the CfgWeapons class

weapons

Variable String Array: default {};

Weapons and Magazines contain individual description of what a 'vehicle' IS carrying.

weapons[] = { "FFARLauncher", "TwinM134" };	// aircraft
weapons[] = { "CarHorn" };	// truck

weapons[] = { "M21", "LAWLauncher", "Throw", "Put" };	// soldier
magazines[] = { "M21", "M21", "M21", "M21", "HandGrenade", "HandGrenade", "LAWLauncher" };

The amount of weapons (and magazines) that can be carried by the 'man' is determined by #weaponSlots

The names M21, Carhorn etc are external references to the cfgWeapons / cfgMagazines classes

weaponsGroup

Integer:

The weapons grouping for a vehicle, determined by enumerated weapon category definitions.

weaponsGroup1 = WEAPONGROUP_CANNONS + WEAPONGROUP_MGUNS;								// Adds Cannons and Machine Guns to Weapons Group 1
weaponsGroup2 = WEAPONGROUP_ROCKETS;													// Adds Rockets to Weapons Group 2
weaponsGroup3 = WEAPONGROUP_AAMISSILES + WEAPONGROUP_ATMISSILES + WEAPONGROUP_MISSILES; // Adds All Missile types to Weapons Group 3
weaponsGroup4 = WEAPONGROUP_BOMBS + WEAPONGROUP_SPECIAL;								// Adds Bombs and Laser Designators to Weapons Group 4
#define WEAPONGROUP_CANNONS		1	// Cannons
#define WEAPONGROUP_MGUNS		2	// Machine Guns
#define WEAPONGROUP_ROCKETS		4	// Rockets
#define WEAPONGROUP_AAMISSILES	8	// Anti-Air Missiles
#define WEAPONGROUP_ATMISSILES	16	// Anti-Tank Missiles
#define WEAPONGROUP_MISSILES	32	// All / Other Missiles
#define WEAPONGROUP_BOMBS		64	// Bombs
#define WEAPONGROUP_SPECIAL		128	// Laser Designator + Misc

weaponSlots

Integer:

Weaponslots apply to man class (soldier, civilian, etc)

It indicates the 'gear' capacity.

weaponSlots = 1 + 4 + 12 * 256 + 2 * 4096 + 2 + 8 * 16;	// all soldiers/civilians
weaponSlots = 1 + 4 + 8 * 256 + 2 * 4096 + 2 + 4 * 16;	// medics

// 1 = primary weapon
// 2 = handgun slot
// 4 = secondary weapon (launcher)
// 16 = handgun magazines (8x)(or grenades for M203/GP-25)
// 256 = magazine slots (12x / 8x for medics)
// 4096 = goggle slot (2x)
// 131072 = ?

wheelCircumference

Float Default 2.513 meters

wheelCircumference = 8;	// tractor

wounds

string Array:

wounds[] = { "xicht_a.paa", "xicht_a_zranen", ... };

this token is used in the man class to show a series of pac/paa files depending on damaged state of the body.