{"name":"CfgVehicles Config Reference","title":"CfgVehicles Config Reference","type":"topic","url":"https://community.bistudio.com/wiki/CfgVehicles_Config_Reference","revid":378791,"updated":"2026-06-14T23:14:28Z","aliases":["reflectors"],"markdown":"### Introduction\n\nTokenName Config.cpp Reference\n\nSimply put, Token Name & Value pairs are as follows\n\n```cpp\nSomeName = SomeValue;\n```\n\nToken Names are used extensively throughout Operation Flashpoint 'text' files.\n\nAn example is, when creating a model using class statements inside a Config.cpp, to access it later, via the mission editor\n\n```cpp\nscope = 2;\n```\n\nThis 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**.\n\nUnlike 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.\n\nThis article lists token names, their value ranges, and their type.\n\n#### TokenTypes\n\n| Token Type | Description | Example |\n|---|---|---|\n| Integer | A signed value that will be held in 4 bytes. | `token = 1;` |\n| Boolean | An 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**. | `token = true;` |\n| String | Any string value | `token = \"SomeString\";` |\n| Array | An array | `token[] = { ... };` |\n| Float Array | An array of floats | `token[] = { 0.5, 0.3, 0.05 };` |\n| String Array | An array of strings | `token[] = { \"String1\", \"String2\" };` |\n| Integer Array | An array of integers | `token[] = { 0, 1, 2 };` |\n| Complex Array | A mixture of multiple types, including embedded arrays. | `token[] = { \"String\", 1, 0.5, true };` |\n| Variable Array | The number of elements for **this** array in **this** class model can have a varying number of elements (depending on context) |  |\n\n#### Filenames and Paths\n\nFilenames are case **in**sensitive.\n\n##### Pbo File conventions\n\nThe root path of the filename is (generally) the name of the pbo\n\n```cpp\nmodel= \"\\anypbofile\\anywhere\\....\";\n```\n\nnote the pbo extension is inferred\n\n**anywhere** is an (optional) (series of) folder(s) INSIDE the pbo.\n\nDepending on the file referred to, eg a p3d file for a model, the extension (in this case .p3d) is not required.\n\n##### p3d files\n\n```cpp\nmodel = \"\\anypbofilename\\anyp3d(.p3d)\";\n```\n\n##### paa/pac\n\nWherever these file types are indicated, the default extension is paa\n\n```cpp\nicon = \"\\somepbo\\anyicon(.paa)\";\n```\n\n##### jpeg\n\njpeg pictures are usable anywhere a pac (or pac) file is indicated. It is never default.\n\nException: Operation Flashpoint: Elite specifically, cannot handle jpg.\n\n```cpp\npicture = \"\\AnyPbo\\AnyPicture.jpg\";\n```\n\n##### Sound files\n\nwss is the default extension if not declared.\n\n```cpp\nsound = \"\\AnyPbo\\AnySoundFolder\\AnySound(.wss)\";\n```\n\nOtherwise use Ogg Vorbis format (extension .ogg).\n\n#### Vehicle vs 'Vehicle'\n\nIn this document. a vehicle, is a true vehicle of some kind. Be it a tank, or a car.\n\nA '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'\n\n#### Config.bin vs Config.cpp\n\nBy convention only, config.**cpp** is the humanly readable text equivalent of config.**bin**.\n\nThe engine will accept either or **both**.\n\nWhen 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).\n\nWhile 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.\n\n#### raP files\n\nSo-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.\n\nBy 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.\n\nThe 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.\n\n### Alphabetical Order\n\n#### A\n\n##### ...Action\n\nString : defaults ManActCargo\n\n```cpp\ncommanderAction =    \"ManActM60CommanderOut\";\ndriverAction =        \"ManActShipDriver\";\ngunnerAction =        \"ManActJeepGunner\";\ncommanderInAction =    \"ManActTestDriver\";\ndriverInAction =    \"ManActM113Driver\";\ngunnerInAction =    \"ManActM1A1Gunner\";\ngetInAction =        ManActGetInTank;    // default\ngetOutAction =        ManActGetOutTank;    // default\n```\n\n###### cargoAction\n\nVariable String Array: default {ManActCargo}\n\n```cpp\ncargoAction[] = { \"ManActM113Medic\", \"ManActM113Medic\", \"ManActM113Injured\" };\n```\n\n**Note** that unlike driverAction and gunnerAction this is an array. (for multiple positions)\n\nThe number of elements in this array correspond to the #transportSoldier value declared for this class.\n\nsee #cargoIsCoDriver\n\n##### ...AngleX/Y\n\nFloat Degrees\n\n```cpp\ninitAngleX = 0;\nminAngleX = -30;\nmaxAngleX = 30;\n```\n\n```cpp\ninitAngleY = 0;\nminAngleY = -100;\nmaxAngleY = 100;\n```\n\n```cpp\ninitFov = 0.700000;\nminFov = 0.420000;\nmaxFov = 0.850000;\n```\n\nused by car.ViewPilot class\n\n##### angle\n\nFloat: Degrees\n\n```cpp\nangle = -240;\n```\n\nsee #Indicator... Class Or #Hatch... Class\n\n##### access\n\nInteger: Determines the manipulability of the class.\n\n```cpp\naccess = 1;\n```\n\n0 ReadAndWrite additional values can be added\n1 ReadAndCreate only adding new class members is allowed\n2 ReadOnly no modifications enabled\n3 ReadOnlyVerified no modifications enabled, CRC test applied\n\nAll *BIS* classes are **ReadOnlyVerified** and can only be inherited into a new class\n\n##### accuracy\n\nFloat: Default value = 0.02.\n\nDetermines how easy an object is to identify. Smaller values are easier to detect.\n\nTypically, buildings are 0.2, vehicles, 0.5\n\n**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\n\n```cpp\naccuracy = 0.2;            // buildings\naccuracy = 0.5;            // small vehicles\naccuracy = 0.9;            // truck\naccuracy = 3.500000;    // sniper\naccuracy = 1.500000;    // lawsoldier\naccuracy = 1000;        // soldier - identify (most) soldiers as 'man'\n```\n\nRelationship to #camouflage:\n\n**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.\n\n**camouflage** defines how hard it is for the AI to *see* that the unit is there.\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage\n\n##### acceleration\n\nFloat: metres per second\n\n```cpp\nacceleration = 7;\n```\n\n##### airFriction\n\nArray: 3 separate tokens, airFriction0[], airFriction1[], airFriction2[] that define the X Y and Z component respectively.\n\n```cpp\nairFriction2[] = { 25, 12, 2.500000 };\n```\n\n##### airFrictionCoefs...\n\nArray: 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.\n\n```cpp\nairFrictionCoefs2[] = { 0.00100, 0.00050, 0.00006};\nairFrictionCoefs1[] = { 0.100, 0.050, 0.006 };\nairFrictionCoefs0[] = { 0.0, 0.0, 0.0 };\n```\n\n##### ambient\n\nFloat Array:\n\n```cpp\nambient[] = { 0.07, 0.07, 0.07, 1.0 };\n```\n\nSee #Reflectors Class, #Light Class, #CargoLight Class\n\n##### animated\n\nBoolean : Default Value true\n\nUsed by class models that inherit an animated 'vehicle' to turn those aspects of the vehicle off.\n\n```cpp\nanimated = false;\n```\n\nmodel is animated, or not.\n\nwhen set true, the animation class, if any, happens, otherwise it doesn't\n\nsee animations class\n\n##### animPeriod\n\nFloat: Seconds.\n\nThis TokenName is generally used inside AnimationSources class (ArmA only). It's use in OFP:R is as follows\n\n```cpp\nanimPeriod = 1.33; // a fountain\n```\n\n##### animation...\n\nString: These animation strings point to rtm files to create the movement.\n\n```cpp\nanimationFlag = \"\\AnyAddon\\AnyRTM(.rtm)\";    // to wiggle flag in wind\nanimationOpen = \"\\AnyAddon\\AnyRTM(.rtm)\";    // to open or close doors (eg)\nanimationDrop = \"\\AnyAddon\\AnyRTM(.rtm)\";\n```\n\n##### animationList[]\n\nArray format [String, Float]\n\n(possibly introduced in Arma 3 v1.24 when other randomisation features were added)\n\nArray 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:\n\n```cpp\nanimationList[] = { \"animation1\", weight1, \"animation2\", weight2, etc. };\n```\n\nAnimations must be classes from the vehicle's AnimationSources. If all the weights are the same value, it functions as straight equal randomisation.\n\nExample:\n\n```cpp\nclass MyAPC : B_APC_Wheeled_01_cannon_F\n{\n    animationList[] = {\n        \"showBags\", 0,\n        \"showCamonetHull\", 0.5,\n        \"showCamonetCannon\", 0.75,\n        \"showCamonetTurret\", 1,\n        \"showSLATHull\", 1,\n        \"showSLATTurret\", 1\n    };\n};\n```\n\n##### animationSource...\n\nString\n\n```cpp\nanimationSourceBody = \"Turret_2\";\nanimationSourceGun = \"Gun_2\";\nanimationSourceHatch = \"hatchCommander\";\nanimationSourceElevation = \"\"; // new in Arma 3\nanimationSourceCamElevation =\"\"; // new in Arma 3\n```\n\n##### armor (integer)\n\nFloat: 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.\n\n```cpp\napprox strength = (0.27/tgtRadius)^2 / armorInConfig\n\narmor = 3;            // man\narmor = 10;            // motorcycle\narmor = 20;            // a small car\narmor = 15..60;        // aircraft\narmor = 150;        // buildings\narmor = 150..300;    // bmp\narmor = 400...900;    // tank\narmor = 300;        // boat\narmor = 10000;        // ship\n```\n\nIf unspecified (or not inherited) the default value is 30\n\n- 1 bullet will kill armor <= 20\n- 2 bullets <= 40\n- 3 bullets 50\n\n##### armor (float)\n\nFloat: The floating version of armor type is only used in Hit... classes, eg HitTurret HitBody\n\n```cpp\narmor = 1.4;    // a bee\narmor = 0.8;    // a turret\n```\n\nRelated TokenNames: #armor (float), #material, #name, #passThrough\n\n##### armor...\n\nFloat:\n\n```cpp\n// for vehicles general\narmorStructural= 1;    // ranges between 1 and 4.0, default 1\narmorFuel = 1.4;    // default\narmorGlass = 0.5;    // default\narmorLights = 0.4;    // default 0.4 in all models.\narmorWheels = 0.05;    // default\n// for tanks\narmorHull = 1;\narmorTurret = 0.8;\narmorGun = 0.6;\narmorEngine = 0.8;\narmorTracks = 0.6;\n// for men\narmorHead = 0.7;\narmorHands = 0.5;\narmorLegs = 0.5;\n// helicopters\narmorHull = 0.5;\narmorEngine = 0.6;\narmorAvionics = 1.4;\narmorVRotor = 0.5;\narmorHRotor = 0.7;\narmorMissiles = 1.6;\narmorGlass = 0.5;\n```\n\n##### assembleInfo\n\nUsed for both vehicles that can be diassembled and backpacks that are assembled into vehicles (static guns, drones, etc.)\n\nClass values for backpacks, primary part:\n\n```cpp\nclass assembleInfo\n{\n    assembleTo = \"I_G_HMG_02_high_F\";    // Backpack assembles into this vehicle\n    primary = 1;                        // This backpack is main part, when assembly is done, its \"assembleTo\" class will be used for created vehicle\n    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\n    displayName = \"Static MG\";            // String that will be shown in \"Assemble X\" mouse wheel menu action\n    dissasembleTo[] = {};                // Backpacks are not disassembled futher, but empty array is required here anyways\n};\n```\n\nSecond part (tripod) only needs `primary = 0;`:\n\n```cpp\nclass assembleInfo\n{\n    assembleTo = \"\";\n    primary = 0;\n    base = \"\";\n    displayName = \"\";\n    dissasembleTo[] = {};\n};\n```\n\nIf no second part is needed for assembly, primary backpack's \"base\" have to be empty string: `base = \"\";`\n\nVehicles disassembly info:\n\n```cpp\nclass assembleInfo\n{\n    assembleTo = \"\";\n    primary = 0;\n    base = \"\";\n    displayName = \"\";\n    dissasembleTo[] = { \"B_HMG_02_high_weapon_F\", \"B_HMG_02_support_high_F\" }; // Vehicle will be disassembled into these backpacks. Max 2 allowed.\n};\n```\n\nNote the typo in \"dissasembleTo\" property, engine expects it like this. Empty values have to be provided to avoid missing config values errors.\n\nNote: Vehicle keeps track which second part (tripod) was used when it was assembled and its used again when you disassemble it back.\n\n##### attendant\n\nBoolean: Default false\n\nUsed for 'vehicles' to repair other 'vehicles'. Thus a hospital has an attendant that can repair soldiers. Adds the action \"Heal at XXX\"\n\n```cpp\nattendant = true;\n```\n\nRelated TokenNames: #hiddenSelections\n\n##### audible\n\nFloat: Default Value 1\n\n```cpp\naudible = .05;    // man\naudible = 3;    // motorcycle\naudible = 6;    // tank/ship\n```\n\nHow loud you are. The bigger value, the better the unit is heard.\n\nsee #camouflage\n\n##### autocenter\n\nBoolean: Default true\n\n```cpp\nautocenter = false;    // man\n```\n\n##### axis\n\nString:\n\n```cpp\naxis = \"osa_poklop_driver\";\n```\n\nsee #Indicator... Class Or #Hatch... Class, IndicatorWatch Class\n\n#### B\n\n##### body\n\nString:\n\n```cpp\nbody = \"mainTurret\";\n```\n\nsee #Turret Class\n\n##### brakeDistance\n\nFloat: default 5 meters per sec\n\n```cpp\nbrakeDistance = 1;    // man\nbrakeDistance = 14;    // tank\nbrakeDistance = 500;// plane\nbrakeDistance = 50;    // boat\n```\n\n##### bounding\n\nString: 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.\n\n```cpp\nbounding = \"usti hlavne\";\n```\n\n##### brightness\n\nFloat:\n\n```cpp\nbrightness = 1.0;\n```\n\nSee #Reflectors Class, #Light Class, #CargoLight Class\n\n#### C\n\n##### ...CanSee\n\nInteger\n\nUsed to describe which sensory inputs are available to which crew members.\n\n| Numeric value | CanSee.. define | Description |\n|---|---|---|\n| 1 | Radar | Enables top left radar (OA) for a vehicle (top centre in arma and OFP). |\n| 2 | Eye | Effect unknown - maybe affects AI capabilities? |\n| 4 | Optics | Effect unknown - maybe affects AI capabilities? |\n| 8 | Ear | Effect unknown - maybe affects AI capabilities? |\n| 16 | Compass | Enables top centre compass bar and digital compass in A2/OA. |\n| 32 | Peripheral | Enables small colored blobs at the edge of the screen that indicate nearby units. |\n\nMultiple values can be added (or binary ored, giving the same result) together.\n\n```cpp\ncommanderCanSee = 31;        // default\ngunnerCanSee = 4 + 8 + 16;    // default\ndriverCanSee = 2 + 8 + 16;    // default\n```\n\n```cpp\n#define CanSeeRadar            1\n#define CanSeeEye            2\n#define CanSeeOptics        4\n#define CanSeeEar            8\n#define CanSeeCompass        16\n#define CanSeeAll            31\n#define CanSeePeripheral    32\n#define CanSeeRadarC        CanSeeRadar + CanSeeCompass\n```\n\n```cpp\ncommanderCanSee = CanSeeAll;\ngunnerCanSee = CanSeeOptics + CanSeeEar + CanSeeCompass;\ndriverCanSee = CanSeeEye + CanSeeEar + CanSeeCompass;\n```\n\n##### ...CargoAngleY\n\nFloat Degrees\n\nFound within vehicle classes.\n\nOrientation of the man sitting in the cargo space.\n\n```cpp\ninitCargoAngleY = 185;    // Truck5t\ninitCargoAngleY = 90;    // M113\n```\n\n```cpp\ninitCargoAngleY = 10;    // UH60\nminCargoAngleY = -60;\nmaxCargoAngleY = 120;\n```\n\n##### camouflage\n\nFloat: Default Value = 2.\n\nhow difficult to spot. bigger = easier\n\n```cpp\ncamouflage = 0.6;    // snipers\ncamouflage = 1;        // man\ncamouflage = 4;        // trucks\ncamouflage = 8;        // tanks\n```\n\nRelationship to #accuracy:\n\n**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*.\n\n**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.\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage\n\n##### can...\n\n###### canBeShot\n\nBoolean: Declares whether bullets have any effect\n\n```cpp\ncanBeShot = true;\n```\n\n###### canDeactivateMines\n\nBoolean: Default false\n\npart of the man class.\n\n```cpp\ncanDeactivateMines= true;    // SoldierEngineer\n```\n\n###### canFloat\n\nBoolean: Default value: false\n\nUsed to allow vehicles (such as BMP) not to sink !\n\n```cpp\ncanFloat = true;\n```\n\n###### canHideBodies\n\nBoolean: Default false\n\npart of the man class.\n\n```cpp\ncanHideBodies = true;    // SoldierWSaboteur\n```\n\n##### cargoIsCoDriver\n\nVariable Boolean Array : Default {false};\n\nThis token declares which (if any) cargo positions are 'in the front' (Ie front windscreen)\n\n```cpp\ncargoIsCoDriver[] = { true, true, false };    // 1st two passenger positions for a 5T truck\n```\n\nThe number of elements in **this** array correspond to the #transportSoldier value declared for **this** class model.\n\n##### cargoReversedGetOut (Arma 3 v2.04)\n\nArray\n**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.\n\n```cpp\ncargoReversedGetOut[] = { 0 };\n```\n\n##### cast...Shadow\n\nBoolean: Default false\n\n```cpp\ncastCargoShadow = false;\ncastCommanderShadow = false;\ncastDriverShadow = false;\ncastGunnerShadow = true;\n```\n\nNormally used to shadow 'soldiers' standing up in vehicle objects, such as the MG Jeep and Machine Guns.\n\n##### Classes Embedded\n\nsee #Embedded ClassNames\n\n##### cloud...\n\nVarious(Strings, Floats, Arrays)\n\n```cpp\ncloudletDuration = 0.9;\ncloudletAnimPeriod = 1.0;\ncloudletSize = 0.1;\ncloudletAlpha = 0.8;\ncloudletGrowUp = 0.4;\ncloudletFadeIn = 0.0;\ncloudletFadeOut = 5.0;\ncloudletAccY = -0.1;\ncloudletMinYSpeed = 0.3;\ncloudletMaxYSpeed = 1.5;\ncloudletShape = \"\\ca\\data\\cl_basic\";\ncloudletColor[] = { 1, 1, 1, 0 };\n```\n\nSee #Smoke Class\n\n##### cobraLight\n\nString : Used as a core model for all other 'air' craft.\n\n```cpp\ncobraLight = \"AnyAddon\\AnyP3d(.p3d)\";\n```\n\n##### coefInside...\n\nFloat:\n\n```cpp\ncoefInside = 2;            // cost for movement inside buildings\ncoefInsideHeur = 4.3;    // estimation of cost based on in/out points\ncoefSpeedInside = 2; // we must go slowly inside houses\n```\n\nUsed by the static class for non moving objects such as buildings\n\n```cpp\ncoefInside = 1;    // forest\ncoefInsideHeur = 0.25;\n```\n\n##### collisionLight\n\nFloat Boolean: Default: false.\n\nDefault state of collision lights\n\n```cpp\ncollisionLight = true; // spawn vehicle with collision lights on\n```\n\n##### color\n\nFloat Array: of floats.\n\n```cpp\ncolor[] = { 0.8, 0.8, 1.0, 1.0 };\n```\n\nThis is a fixed four dimension array consisting of the color values for a RGBA model.\n\nSee #Reflectors Class, #Light Class, #CargoLight Class, #Smoke Class\n\n##### commanding\n\nInteger: part of Turret class\n\n```cpp\ncommanding = -1;\n```\n\n##### cost\n\nFloat: Default Value 50.0000\n\nThis value reflects the attractiveness of the target to the enemy AI. When *all other considerations are equal*.\nA soldier eg is not interested in Air, despite it is highly attractive cost values.\nOn 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.\n\n```cpp\ncost = 10000000;    // an air vehicle is typically this value\ncost = 8;            // a medic;\ncost = 1;            // a grunt\ncost = 4;            // an officer\ncost = 0;            // most buildings;\n```\n\nRelated TokenNames: type, #cost, #threat\n\n##### count\n\nString or Integer: (math formula).\n\n```cpp\nweapon = \"M60\";\ncount = \"30 * 1\"; // or 'count = 30 * 1;'\n```\n\nthis token is always associated in a weapon or magazine couplet, inside a TransportWeapons, or\nTransportMagazines class.\n\nThe value is mostly represented as a string as above (a math formula), or it can be (unusually)\n\n```cpp\ncount = 2;\n```\n\nSee At the End of the Day in the TokenNameValueTypes page for an explanation how this duality is possible.\n\n##### crew\n\nString: Default Civilian\n\nReflects whether vehicle is manned, and what with.\n\n```cpp\ncrew = <ClassName>\ncrew = \"SoldierWPilot\";\n```\n\n'SoldierWPilot' is a class declared in same file.\n\n##### crewCrashProtection\n\nFloat\n\nMultiplier of damage to crew of the vehicle. Lower number means better protection.\n\n```cpp\ncrewCrashProtection = 0.05;\n```\n\n#### D\n\n##### dammage [sic]...\n\nVariable String Array:\n\n```cpp\ndammageHalf[] = { \"\\AnyAddon\\AnyPAA.paa\", \"\\AnyAddon\\AnyOtherPAA.paa\", ... };\ndammageFull[] = { \"\\AnyAddon\\AnyPAA.paa\", \"\\AnyAddon\\AnyOtherPAA.paa\", ... };\n```\n\nWhen 'vehicle' is considered at least half way to destruction, the series of pictures is applied to the model.\n\n###### damageResistance (Armed Assault v1.00)\n\nOnly for AI, to know when to shoot and when not.\n\n```cpp\ndamageResistance = 0.004;\n```\n\nIt 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\n\n```cpp\ndamageResistance = (HIT*HIT)/Armor*((0.27/tgtRadius)*(0.27/tgtRadius))\n```\n\n##### driveThroughEnabled\n\nDetermines if AI can decide to go through the object. This parameter skips regular mass checking if object can smashed through\n\n```cpp\ndriveThroughEnabled            = 1; // test parameter for AI knowing they can drive through the object\n```\n\n##### damper...\n\nFloat:\n\n```cpp\ndamperSize = 0.1;    // default\ndamperForce = 3;    // default\n```\n\n##### deltaT\n\nFloat\n\n```cpp\ndeltaT = -500;\n```\n\nSee #Smoke Class\n\n##### density\n\nFloat\n\n```cpp\ndensity = 0.5;\n```\n\nSee #Smoke Class\n\n##### destrType\n\nString: Default Value = \"DestructDefault\"\n\nUsed for animation, sound, and final 'look' of vehicle. Since Arma 3 v2.22 Powerline colums and radio tower get new type of destruction \"DestructColumn\". The tall column leans 22.5 degrees, away from the source that caused damage (for example satchel charge). The lean direction is synced for JIP, the anchor supports and powerlines destruction is scripted and JIP synced as well.\n\n```cpp\ndestrType = \"DestructNo\";        // nothing happens\ndestrType = \"DestructBuilding\";    // smoke. explosion\ndestrType = \"DestructEngine\";    // smoke only\ndestrType = \"DestructTree\";        // smoke, crushing, falls over\ndestrType = \"DestructTent\";        // smoke, crushing, flattens\ndestrType = \"DestructMan\";\ndestrType = \"DestructDefault\";    // = building\ndestrType = \"DestructWreck\";\ndestrType = \"DestructColumn\"; // Power line columns, radio tower\n```\n\nTent and Tree are no longer identifiable when destroyed if not class 'things'\n\n##### disableDriverAttenuation\n\nNumber: Default 0;\n\nDisables attenuation for the driver.\n\n```cpp\ndisableDriverAttenuation = 1;\n```\n\n##### disappearAtContact\n\nBoolean: Default false;\n\n```cpp\ndisappearAtContact = true;    // FxCartridge\n```\n\n##### direction\n\nString:\n\n```cpp\ndirection = \"konec L svetla\";\n```\n\nsee #Reflectors Class\n\n##### displayName\n\nString: Default value = \"Unknown\" or \"Vehicle\"\n\nSelects 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.\n\nIt is good practice to use a stringtable.csv that should accompany your addon so that\n\n1. All names and labels are in one place instead of hunting for them.\n1. For language differences\n\n```cpp\ndisplayName = \"$STR_DN_AH1Z\";\n```\n\nNote, 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.\n\nSee #nameSound for definition of what is actually 'said'\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage\n\n###### displayNameShort\n\nString:\n\n```cpp\ndisplayNameShort = \"$STR_DN_UH60\";\n```\n\n##### driverIsCommander\n\nBoolean : Default false. When not set, the turret commanding values are used to determine who is the commander. (*source* (dead link))\n\n```cpp\ndriverIsCommander = true;\n```\n\nFor boat, MG Jeep and helicopters\n\nsee #has...\n\n##### driverForceOptics\n\nBoolean\n**Description:** Determines if the driver can freely look around inside the vehicle or if he is locked to looking forward through the hatch/optics.\n\n```cpp\ndriverForceOptics = true;\n```\n\n##### driverReversedGetOut (Arma 3 v2.04)\n\nInteger\n\n**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.\n\n```cpp\ndriverReversedGetOut = 0;\n```\n\n##### ...DustEffect\n\nString\n\nDefines the effect that will be spawned at the position of the LandContact points.\n\n```cpp\nleftDustEffect = \"vbs2_fx_lowTrackDustEffects\";\nrightDustEffect = \"vbs2_fx_lowTrackDustEffects\";\n```\n\nsee #...WaterEffect\n\n#### E\n\n##### editorCategory\n\nEden Editor main category. See Eden Editor: Object Categorization for more details.\n\n```cpp\neditorCategory = \"EdCat_Structures\";\n```\n\n##### editorPreview\n\nEden Editor preview picture. See Configuring Asset Previews for more details.\n\n```cpp\neditorPreview = \"\\A3\\EditorPreviews_F\\Data\\myObject.jpg\";\n```\n\n##### editorSubcategory\n\nEden Editor sub-category. See Eden Editor: Object Categorization for more details.\n\n```cpp\neditorSubcategory = \"EdSubcat_Drones\";\n```\n\n##### enableGPS\n\nBoolean: If enabled vehicle will allow crew to use Minimap even if they do not posses GPS terminal.\n\n```cpp\nenableGPS = 1;\n```\n\n##### ...Elev\n\nInteger: Degrees\n\n**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.\n\n```cpp\ninitElev = -80;\nminElev = -60;\nmaxElev = 10;\n```\n\npart of any #Turret Class (tanks eg)\n\n##### ejectDamageLimit\n\nFloat: If the damage value of the vehicle is higher than the ejectDamageLimit, AI will disembark the vehicle.\n\n```cpp\nejectDamageLimit = 0.75;\n```\n\n##### ejectDead...\n\nBoolean : Default false\n\n```cpp\nejectDeadGunner = false;\nejectDeadCargo = false;\nejectDeadDriver = false;\nejectDeadCommander = false;\n```\n\nCauses that unit to 'unmount' the vehicle. Such as an MG nest, or motorcycle.\n\n##### ejectSpeed\n\nArray: Speed vector of ejection seat. Therefore only applies to planes.\n\n```cpp\nejectSpeed[] = { 0, 0, 0 };    // cannot eject in a Cessna\n```\n\n##### Embedded ClassNames\n\nSome Token Names are encountered only within an embedded classname, rather than the main 'vehicle' body.\n\nAn embedded classname conveniently adds a unique feature to the 'vehicle'. Such as smoke, such as, a turret for a tank.\n\nEmbedded 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.\n\nBelow 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.\n\n###### Hatch... Class\n\n```cpp\nclass HatchDriver\n{\n    selection = \"poklop_driver\";\n    axis = \"osa_poklop_driver\";\n    angle = -100;\n};\n```\n\n###### Indicator... Class\n\n```cpp\nclass IndicatorSpeed\n{\n    selection = \"ukaz_rychlo\";\n    axis = \"osa_rychlo\";\n    angle = -240;\n    min = 0;\n    max = 60 / 3.6;\n};\n```\n\n###### Light Class\n\n```cpp\nclass Light\n{\n    ambient[] = { 0.3, 0.15, 0.0, 1.0 };\n    brightness = 0.08;\n    color[] = { 1.0, 0.5, 0.0, 1.0 };\n    position = \"ohniste\";\n    shape = \"koulesvetlo\";\n    size = 0.3;\n};\n```\n\n###### CargoLight Class\n\n```cpp\nclass CargoLight\n{\n    ambient[] = { 0.6, 0, 0.15, 1 };\n    brightness = 0.007;\n    color[] = { 0, 0, 0, 0 };\n};\n```\n\n###### Reflectors Class\n\n```cpp\nclass Reflectors : LandVehicle    // old\n{\n    ambient[] = { 0.1, 0.1, 0.1, 1.0 };\n    brightness = 0.25;\n    color[] = { 0.9, 0.8, 0.8, 1.0 };\n    position = \"L svetlo\";\n    size = 0.5;\n    direction = \"konec L svetla\";\n    hitpoint = \"L svetlo\";\n    selection = \"L svetlo\";\n};\n\nclass Reflectors                // new\n{\n    class Light_1\n    {\n        ambient[] = { 10, 10, 11 };\n        color[] = { 1000, 1000, 1100 };\n        size = 1;\n        dayLight = 1;\n        useFlare = 1;\n        intensity = 1;\n        coneFadeCoef = 2;\n        innerAngle = 89;\n        outerAngle = 90;\n        position = \"light_start_memoryPoint\";\n        direction = \"light_end_memoryPoint\";\n        hitpoint = \"\";\n        selection = \"\";\n\n        class Attenuation // see https://community.bistudio.com/wiki/setLightAttenuation\n        {\n            start = 0;\n            constant = 0;\n            linear = 0;\n            quadratic = 0;\n            hardLimitStart = 9;\n            hardLimitEnd = 10;\n        };\n    };\n};\n\n// Arma 3 example value\nclass Reflectors\n{\n    class Left // main landing light\n    {\n        position = \"L svetlo\";\n        direction = \"konec L svetla\";\n        hitpoint = \"L svetlo\";\n        selection = \"L svetlo\";\n        color[] = { 7000, 7500, 10000 }; // R, G, B\n        ambient[] = { 70, 75, 100 }; // R, G, B\n        intensity = 50;\n        size = 1;\n        innerAngle = 15;\n        outerAngle = 65;\n        coneFadeCoef = 10;\n        useFlare = 1;\n        flareSize = 10;\n        flareMaxDistance = 250;\n        dayLight = 0;\n        class Attenuation\n        {\n            start = 0;\n            constant = 0;\n            linear = 1;\n            quadratic = 1;\n            hardLimitStart = 100;\n            hardLimitEnd = 200;\n        };\n    };\n    class LG : Left // left door gunner searchlight\n    {\n        position = \"LG svetlo\";\n        direction = \"konec LG svetla\";\n        hitpoint = \"LG svetlo\";\n        selection = \"LG svetlo\";\n    };\n    class Right : Left // right door gunner searchlight\n    {\n        position = \"P svetlo\";\n        direction = \"konec P svetla\";\n        hitpoint = \"P svetlo\";\n        selection = \"P svetlo\";\n    };\n};\n\n// example red cabin light in helicopter\n\nclass Cabin\n{\n    position = \"cabin_light\";\n    direction = \"cabin_light_dir\";\n    hitpoint = \"cabin_light\";\n    selection = \"cabin_light\";\n    color[] = { 1000, 0, 0 };\n    ambient[] = { 100, 0, 0 };\n    intensity = 5;\n    size = 1;\n    innerAngle = 15;\n    outerAngle = 150;\n    coneFadeCoef = 1;\n    useFlare = 1;\n    flareSize = 0.1;\n    flareMaxDistance = 1;\n    dayLight = 0;\n\n    class Attenuation\n    {\n        start = 0;\n        constant = 0;\n        linear = 1;\n        quadratic = 1;\n        hardLimitStart = 1;\n        hardLimitEnd = 2;\n    };\n};\n```\n\nNotes for Arma 3:\n\nAdd a light to an object in class cfgvehicles.\nEach reflector requires a selection in relevant model vis LODs (e.g. \"L svetlo\") for the flare effect.\nRequires two memory points in memory LOD - light spawn position and direction e.g. position \"L svetlo\" and direction \"konec L svetla\".\n\nThe memory point you assign to position parameter is where the light source itself will be.\nThe one you put to direction is the way your light will shine.\nThe cone itself is set using innerAngle, outerAngle and coneFadeCoef.\ninnerAngle sets the cone in which the light has it is full intensity.\nouterAngle sets the cone outside of which the light has zero intensity.\nconeFadeCoef 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.\nNote 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.\nAs a spot light, reflectors are not made for cones above 180 degrees.\nSome 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.\ncolor[] and ambient[] seem to have changed from RGB from 0-1 to way higher values - see example.\n\nSee setLightAttenuation notes for explanation of attenuation values.\nSee also Arma 3 Cars Config Guidelines - Reflectors\naggregateReflectors are described here [link](https://manuals.bisimulations.com/vbs3/3-6/devref/Content/Config_Manual/CfgVehicles/A_cpp/cpp_aggregateReflectors.htm)\n\n###### Smoke Class\n\n```cpp\nclass Smoke\n{\n    density = 0.5;\n    deltaT = -500;\n    in = 0.0;\n    out = 0.0;\n    initT = 1000;\n    initYSpeed = 1.7;\n    interval = 0.01;\n    size = 0.1;\n    timeToLive = 100000002004087730000.0;\n\n    cloudletDuration = 0.9;\n    cloudletAnimPeriod = 1.0;\n    cloudletSize = 0.1;\n    cloudletAlpha = 0.8;\n    cloudletGrowUp = 0.4;\n    cloudletFadeIn = 0.0;\n    cloudletFadeOut = 5.0;\n    cloudletAccY = -0.1;\n    cloudletMinYSpeed = 0.3;\n    cloudletMaxYSpeed = 1.5;\n    cloudletShape = \"cl_basic\";\n    cloudletColor[] = { 1, 1, 1, 0 };\n\n    class Table\n    {\n        class T1\n        {\n            maxT = 0;\n            color[] = { 0.8, 0.8, 0.8, 1 };\n        };\n        class T2\n        {\n            maxT = 900;\n            color[] = { 0.3, 0.3, 0.3, 1 };\n        };\n        class T3\n        {\n            maxT = 1000;\n            color[] = { 1, 0.5, 0, 0.5 };\n        };\n    };\n};\n```\n\n##### Turret Class\n\n(Tanks eg)\n\n```cpp\nclass TurretBase\n{\n    body = \"OtocVez\";\n    gun = \"OtocHlaven\";\n    gunAxis = \"OsaHlavne\";\n    gunBeg = \"usti hlavne\";\n    gunEnd = \"konec hlavne\";\n    minElev = -4;\n    maxElev = 20;\n    minTurn = -360;\n    maxTurn = 360;\n    soundServo[] = { \"Vehicles\\gun_elevate\", 0.031623, 1.0 };\n    turretAxis = \"OsaVeze\";\n};\n```\n\nFor details see Turret Config Reference\n\n##### Embedded TokenNames\n\nsee #Embedded ClassNames\n\n##### enableSweep\n\nBoolean: Default true. Used by Helicopter class\n\n```cpp\nenableSweep = false;    // UH60MG\n```\n\nIs sweeping over the target a valid technique for given helicopter?\n\n##### envelope\n\nFloat Array\n\n```cpp\n// lift (G) based on speed\nenvelope[] = {\n    // speed relative to max. speed -> lift\n    // 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\n    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\n};\n```\n\nInfo by [RKSL-Rock](http://forums.bistudio.com/showpost.php?p=2037721&postcount=9):\n\nThe 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.\n\nThe config maxspeed value is only really used by the AI and the engine as a base variable in some calculations.\n\nYou can change the acceleration though by using the envelope command.\nThis will change the vertical speed relative to the maxspeed in the config in steps of 10% of the stated max speed.\n\nThis is the envelope from the RKSL Lynx AH7:\n\n```cpp\nenvelope[] = { 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 };\n```\n\nThere are normally 15 values representing the vertical lift in m/s at 10% steps from 0 to 140% of the max speed.\n\nSo, if the max speed is 500 and the first value is always 0:\n\n2nd value = 50kph and 2.5 m/s vertical speed\n3rd value = 100kph and 3.5 m/s vertical speed\n...\n11th value = 500kph and 4.15 m/s vertical speed\n...\n15th value = 700kph and 1.15 m/s vertical speed.\n\nYou wont affect the top speed but it will make it easier to handle.\n\n##### EventHandlers... Class\n\nPre-defined object Event Handlers. Property with class matches the handler name.\n\n```cpp\nclass EventHandlers\n{\n    init = \"myAddon_object = _this select 0;\";\n};\n```\n\nArma 3 v1.54\nArma 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.\n\n```cpp\nclass EventHandlers\n{\n    class MyAddon\n    {\n        init = \"myAddon_object = _this select 0;\";\n    };\n    class YourAddon\n    {\n        init = \"yourAddon_object = _this select 0;\";\n    };\n};\n```\n\n##### extCameraPosition[]\n\nfloat Array: { X, Z, Y }; Default { 0, 2, -20 };\n\nExternal (third-person) camera offset relative to the vehicle's `aimpoint` memory point, around which the camera orbits.\n\n```cpp\nextCameraPosition[] = { 0, 5, -30 };                // plane\nextCameraPosition[] = { 0, 1, -10 };                // cars\nextCameraPosition[] = { 0, 1.500000, -9 };            // tanks\nextCameraPosition[] = { 0, 0.300000, -3.500000 };    // man\n```\n\n##### extCameraParams[]\n\nfloat Array: Default { 0.5, 10, 50, 0.5, 1, 10, 30, 0, 1 };\n\nSmoothing of external camera movement\n\nextCameraParams[] = { multFactor, speedMin, speedMax, factorSpeeedMin, factorSpeeedMax, heightMin, heightMax, factorHeightMin, factorHeightMax };\n\nfactor = multFactor * interpolate(speed, speedMin, speedMax, factorSpeeedMin, factorSpeeedMax) * interpolate(heightAGL, heightMin, heightMax, factorHeightMin, factorHeightMax)\n\nfactor == 0 -> camera follow horizon\n\nfactor == 1 - > camera follow vehicle heading\n\nfactor (0, 1) interpolation between horizon and vehicle heading\n\n```cpp\nextCameraParams[] = { 0.5, 10, 50, 0.5, 1, 10, 30, 0, 1 }; // helicopters & UAV\n```\n\nto force the old external camera behavior\n\n```cpp\nextCameraParams[] = { -1 }\n```\n\n#### F\n\n##### featureType\n\nInteger: Default 0. 1 means the object is always visible within object view distance, 2 means always visible within terrain view distance. Same as setFeatureType.\n\n```cpp\nfeatureType = 2;\n```\n\n##### minFireTime\n\nInteger: Default 20 seconds\n\n```cpp\nminFireTime = 20;\n```\n\nMinimal time spent firing on single target.\n\n##### fired\n\nString: Event Handlers\n\n```cpp\nfired = \"_this exec \"\"\\AnyAddon\\AnySQS.sqs\"\"\";    // note the \"\"\n```\n\n##### flapsFrictionCoef\n\nFloat: Default 0.5\n\n```cpp\nflapsFrictionCoef = 2;    // can be integer too.\n```\n\n##### forceHide...\n\nBoolean : Default false\n\n```cpp\nforceHideDriver = true;    // shilka\nforceHideGunner = true;    // tank\nforceHideCommander = true;\n```\n\nDisables the turnout option for that particular crew member\n\n##### forceSupply\n\nBoolean : Default\n\n```cpp\nforceSupply = true;\n```\n\nFound only in Weapon holders. Is used to make the weaponholder disappear when empty.\n\n##### formation...\n\nInteger:\n\n```cpp\nformationX = 10;    // default meters\nformationZ = 20;    // default meters\nformationTime = 10;    // default seconds\n```\n\nOne or both X Z values are used to keep objects separated (in meters) depending on\nwedge, echelon, V, single line, formations.\n\n##### fov\n\nFloat\n\n```cpp\nfov = 0.85;    // Cessna\nfov = 0.85;    // man\nfov = 1.0;    // truck\n```\n\n##### ...Fov\n\nFloat\n\n```cpp\nminFov = 0.420000;    // man\nmaxFov = 0.850000;\nminFov = 0.600000;    // truck\nmaxFov = 1.400000;\n```\n\nalso used by ViewPilot Classes\n\n##### fuelCapacity\n\nFloat: Default Value 0. Has nothing to do with liters.\n\nArma 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.\n\nA2 examples:\n\n```cpp\nfuelCapacity = 50;    // motorcycle\nfuelCapacity = 100;    // car\nfuelCapacity = 700;    // tank\nfuelCapacity = 1000;// air\n```\n\nThe required fuelCapacity value to achieve a specific operation TIME (in seconds) at a specific engine RPM (revolution per minute) can be estimated with:\n\n```cpp\nfuelCapacity = (8E-7 * RPM + 0.001) * TIME\n```\n\n##### fuelConsumptionRate\n\nInteger: Default Value 0.01. Has no units. Works only on helicopters.\n\n#### G\n\n##### _generalMacro\n\nString: in Arma 3. Has no purpose whatsoever. It is generated automatically by BI developer tools for debugging.\n\n> « 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](https://forums.bohemia.net/forums/topic/179378-what-does-_generalmacro-do/))\n\n##### getIn....ActionNamedSel\n\nString: Named selection for get in actions working in same principle as actionNamedSel in UserActions. Available variants:\n\n```cpp\ngetInDriverActionNamedSel\ngetInGunnerActionNamedSel\ngetInCommanderActionNamedSel\ngetInCargoActionNamedSel\ngetInTurretActionNamedSel\ngetInUnitActionNamedSel\n```\n\n##### ...Gun...\n\nInteger:degrees\n\n```cpp\nminGunElev = -60;\nmaxGunElev = 60;\nminGunTurn = -5;\nmaxGunTurn = 5;\nminGunTurnAI = -30;\nmaxGunTurnAI = 30;\n```\n\n##### ...GunnerMayFire\n\nBoolean: Default false\n\n```cpp\noutGunnerMayFire = true;    // m113\ninGunnerMayFire = false;\n```\n\n##### ...GunClouds Class\n\nThis is a reference to the external WeaponCloudsGun classes\n\nmost models simply inherit the defaults\n\n```cpp\nclass GunClouds : WeaponCloudsGun {};\nclass MGunClouds : WeaponCloudsMGun {};\n```\n\nhere is an example of over-rides for class man\n\n```cpp\nclass GunClouds : WeaponCloudsGun\n{\n    cloudletGrowUp = 0.200000;\n    cloudletFadeIn = 0;\n    cloudletFadeOut = 0.400000;\n    cloudletDuration = 0.200000;\n    cloudletAlpha = 1;\n    cloudletAccY = 2;\n    cloudletMinYSpeed = -10;\n    cloudletMaxYSpeed = 10;\n    interval = 0.020000;\n    size = 0.300000;\n    sourceSize = 0.015000;\n};\n```\n\n##### ...GunFire Class\n\nThis is a reference to the external WeaponFireGun classes\n\nmost models simply inherit the defaults\n\n```cpp\nclass GunFire : WeaponFireGun {};\nclass MGunFire : WeaponFireMGun {};\n```\n\n##### gearbox[]\n\nArray\n\n**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.\n\n```cpp\ngearbox[] = { -18, 0, 110, 16.15, 14.44, 13.33 };\n```\n\n##### gearRetracting\n\nBoolean: Default true\n\n```cpp\ngearRetracting = false;    // Cessna\n```\n\nmore correctly viewed as HasRetractingGear.\n\n##### gestures\n\nString:\n\nSame as moves but refers to a gestures class\n\n```cpp\ngestures = \"CfgGesturesMale\";\n```\n\n##### gun\n\nString:\n\n```cpp\ngun = \"OtocHlaven\";\n```\n\nsee #Turret Class\n\n##### gunAimDown\n\nFloat\n\n**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).\n\n```cpp\ngunAimDown = 0.07;\n```\n\n##### gunAxis\n\n##### gunBeg\n\n##### gunEnd\n\nsee #Turret Class\n\n##### gunnerHasFlares\n\nBoolean\n\n```cpp\ngunnerHasFlares = false;\n```\n\n##### gunnerName\n\nString\n\n```cpp\ngunnerName = \"$STR_POSITION_CREWCHIEF\";\n```\n\n##### gunnerOutOptics...\n\nString\n\n```cpp\ngunnerOutOpticsModel = \"\";\n```\n\nArray\n\n```cpp\ngunnerOutOpticsColor[] = { 0, 0, 0, 1 };\n```\n\nBoolean\n\n```cpp\ngunnerOutForceOptics = false;\n```\n\nBoolean\n\n```cpp\ngunnerOutOpticsShowCursor = false;\n```\n\n##### gunnerType\n\nString\n\nPart of #Turret class.\n\nDefines 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.\n\n```cpp\nclass MyHelicopter : B_Heli_Transport_01_F\n{\n    class Turrets : Turrets\n    {\n        class MyTurret : MainTurret\n        {\n            gunnerType = \"B_RangeMaster_F\";\n        };\n    };\n};\n```\n\nBecause 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.\n\n#### H\n\n##### HeadAimDown\n\nFloat: Default: 0.\n\nHow much to tilt the driver's head forward in degrees.\n\n```cpp\nHeadAimDown = 10;    // tilt driver's head forward 10 degrees.\n```\n\n##### ...Height\n\nInteger:\n\n```cpp\nminHeight = 5;    // Min height in metres above sea-level.\nmaxHeight = 50;    // Max height above sea level.\navgHeight = 10;\n```\n\n##### has...\n\nBoolean:\n\n```cpp\nhasDriver = true;        // default\nhasGunner = false;        // default\nhasCommander = true;    // default\n```\n\nDepending on vehicle model.\n\nControls the \"get in\" commands.\n\nSince 1.82 there is alternative syntax available for hasDriver property\n\n```cpp\nhasDriver = -1;    // t80auto\n```\n\nThis will disable driver seat and add control ability to commander (turret with highest commanding value aka seat with highest effectiveCommander value)\n\nsee #driverIsCommander\n\n##### ...HeadTurnAI\n\nInteger Degrees\n\n```cpp\nminHeadTurnAI = -70;    // man class\nmaxHeadTurnAI = 70;\n```\n\n##### hiddenSelections\n\nString Array: Default none.\n\nHere 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):\n\nAside 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.\n\n```cpp\nhiddenSelections[] = { \"pruh\" }; // bmp/tank\n```\n\nTry `this setObjectTexture [0, \"\\data\\duha.pac\"];` in the initline of a BMP and you'll see which parts are meant by the selection \"pruh\".\n\nDon'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).\n\n##### hide...\n\nBoolean\n\n```cpp\nhideProxyInCombat        = false;    // default (true for tanks); if true, disables turn-in option for all crew\nhideUnitInfo            = false;    // default see [[#unitInfoType]]\nhideWeaponsCargo        = false;    // default\nhideWeaponsCommander    = true;        // default\nhideWeaponsDriver        = true;        // default\nhideWeaponsGunner        = true;        // default\n```\n\n##### hitpoint\n\nString:\n\n```cpp\nhitpoint = \"L svetlo\";\n```\n\nSee #Reflectors Class\n\n##### hitSound...\n\n```cpp\nhitSound1[] = { \"voices\\Hit11\", 0.056234, 1 };\n...\nhitSound20[] = { \"voices\\Hit30\", 0.056234, 1 };\n...\nhitSounds[] = { \"hitSound1\", 0.05, \"hitSound2\", 0.05, ...\n```\n\nhitSounds is used by the engine to reference user generated hitSound...s\n\nthere is no limit to the number of user-generated sounds.\n\n##### hour\n\npart of the IndicatorWatch class\n\n```cpp\nclass IndicatorWatch\n{\n    hour = \"hodinova\";\n    minute = \"minutova\";\n    axis = \"osa_time\";\n    reversed = 0;\n};\n```\n\n##### hullExplosionDelay\n\nArray: Time ranage when catastrophic explosion (when HitHull > 0.9 & hullDamageCauseExplosion is set to 1) happens. First number is minimum time in seconds & 2nd - maximum\n\n```cpp\nhullExplosionDelay[] = { 10, 20 };\n```\n\n##### hullDamageCauseExplosion\n\nInteger: Determines if vehicle explodes after HitHull is above 0.9\n\n```cpp\nhullDamageCauseExplosion = 1; // vehicle will explode if HitHull is above 0.9\n```\n\n#### I\n\n##### icon\n\nString: Default Value = \"unknown_object.paa\"\n\nThis 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)\n\nThe icon can be any jpg, paa, or pac file. paa is default. Note that Elite cannot handle jpegs.\n\n```cpp\nicon = \"\\AnyAddon\\AnyPAA(.paa)\";\n```\n\nRelated TokenName(s): #mapSize\n\n##### in/out\n\nFloat: These TokenNames are used inside the #Smoke Class\n\n```cpp\nin = 0.0;\nout = 0.0;\n```\n\n##### init\n\nString: Event Handlers\nThe 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).\n\n```cpp\ninit = \"[(_this select 0)] exec \"\"\\AnyAddon\\AnySqs.sqs\"\"\";\n```\n\n##### initT\n\nInteger: This TokenName is used inside the #Smoke Class\n\n```cpp\ninitT = 1000;\n```\n\n##### initYSpeed\n\nFloat: This TokenName is used inside the #Smoke Class\n\n```cpp\ninitYSpeed = 1.7;\n```\n\n##### insideSoundCoef\n\nFloat: default 0.5\n\n```cpp\ninsideSoundCoef = 0.05;    // air vehicles are 2%\n```\n\n##### interval\n\nFloat: This TokenName is used inside the #Smoke Class\n\n```cpp\ninterval = 0.01;\n```\n\n##### irScanGround\n\nBoolean: Default true.\n\nProbaly used to stop ai looking down\n\n```cpp\nirScanGround = false;    // tanks\n```\n\n##### irScanRange...\n\nInteger: Default 0\n\n```cpp\nirScanRange = 4000;        // outdated (since Resistance)\nirScanRangeMin = 500;    // tanks general\nirScanRangeMax = 4000;\nirScanRangeMin = 2000;    // air\nirScanRangeMax = 10000;\nirScanRangeMin = 4000;    // a vulcan\nirScanRangeMax = 10000;\n```\n\n##### irScanToEyeFactor\n\nInteger: Default 1\n\n```cpp\nirScanToEyeFactor = 2;    // air\nirScanToEyeFactor = 5;    // shilka\n```\n\n##### irTarget\n\nBoolean: Default true.\n\nUsed 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.\n\nDisabling 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.\n\n```cpp\nirTarget = false;    // man\n```\n\n##### isBicycle\n\nBoolean: Default false.\n\nthis value inside the motorcycle class is used to turn it on when inheriting to a real bicycle\n\n##### isMan\n\nBoolean: Default true.\n\n```cpp\nisMan = 1;\n```\n\nDefined within the man class\n\n#### K\n\n##### killed\n\nString: Event Handlers\n\n```cpp\nkilled = \"[(_this select 0), 1, 1, 0, 0] exec \"\"\\AnyAddon\\AnySQS.sqs\"\"\";    // note the \"\"\n```\n\n#### L\n\n##### ladders\n\nEmbedded Array: The ladders array is used to declare one or more ladder pairs inside the model.\n\n```cpp\nladders[] = { {\"start\", \"end\" } };                            // a building with one ladder\nladders[] = { {\"start1\", \"end1\" }, {\"start2\", \"end2\" } };    // two ladder building\n// ...etc\n```\n\nNote that unfortunately, the 'start' and 'end' labels are arbitrary for *each* model. You cannot have a generic ladder building as such.\n\nSince 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\n\n```cpp\n// { Starting point (memory LOD), Ending point (memory LOD), radius (in meters), Named Selection (geometry LOD) }\nladders[] = { { \"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\" } };\n```\n\n##### laser...\n\nBoolean: Default false\n\nDetermines if a vehicle has laser capability.\n\n```cpp\nlaserScanner = true;\nlaserTarget = true;    // used as a generic class of All {} to default things true\n```\n\n##### landingAoa\n\nMathFormula String Default 10*3.1415/180\n\nLanding Angle of Approach. Used by plane class\n\n```cpp\nlandingAoa = 7*3.1415/180;    // Cessna\n```\n\n##### landingSpeed\n\nInteger: Default 0 Kph.\n\n```cpp\nlandingSpeed = 75;    // plane vehicles\n```\n\n##### library\n\nString: 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:\n\n```cpp\nclass Library\n{\n    libTextDesc = \"$STR_LIB_AH1Z\";\n};\n```\n\n##### LODDriverTurnedIn\n\nInteger 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).\n\n```cpp\nLODDriverTurnedIn = -1\n```\n\nValue:\n\n- -1 = Default LOD\n- 1 = first resolution LOD\n- 1000 = Gunnerview\n- 1100 = Pilotview\n- 1200 = Cargoview.\n\n##### LODDriverTurnedOut\n\nInteger Defines the LOD that is to be used when the Driveris turned out. The same rules as with LODDriverTurnedIn apply.\n\n```cpp\nLODDriverTurnedOut = -1\n```\n\n#### M\n\n##### magazine\n\nArray: used in TransportMagazines class this specifies the type of ammo in the magazine and the amount.\n\n```cpp\n{\n    magazine = \"30Rnd_556x45_Stanag\";\n    count = \"30*1\";\n}\n```\n\nEach of these couplets are contained within a 'weapon' classname within the magazine*S* class itself. Example\n\n```cpp\nclass TransportMagazines\n{\n    class _xx_M16\n    {\n        magazine = \"M16\";\n        count = 30 * 1;\n    };\n    class _xx_M60\n    {\n        // ...\n    };\n    class _xx_PK\n    {\n        // ...\n    };\n    // ...\n};\n```\n\n##### magazines\n\nVariable string Array: default {}\n\nsee #weapons for proper description\n\n##### mapSize\n\nFloat: Default Value = 10 (meters).\n\nUsed for the map editor to show the icon associated with this model class.\n\nThere is no x y component to this, the measurement units are meters.\n\nTo create a circular, rectangular or other 'non square' image, you need to make a pac file for the icon with, a transparent layer.\n\n```cpp\nmapSize = 0.7;    // small object such as a tree\nmapSize = 4;    // a smallish building\n```\n\nThe 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 !!!\n\nLater Oem addons, *generally* are better and more specific in this regard, making position and fitting a little easier.\n\n##### marker\n\nString : used as a core for all other air craft when looking on map.\n\n```cpp\nmarker = \"\\AnyAddon\\AnyP3d.(p3d\")\";\n```\n\n##### material\n\nInteger:\n\nUsed in Hit... classes, eg HitTurret HitBody\n\n```cpp\nmaterial = 50;\n```\n\nRelated TokenNames: #armor (float), #material, #name, #passThrough\n\n##### maximumLoad\n\nThe maximumLoad value defines the number of units of cargo storage.\n\n```cpp\nmaximumLoad = 2000;\n```\n\nAn item's storage value (the amount of space it takes up) is defined by it is mass value. For example:\n\n```cpp\n// CfgMagazines >> \"Titan_AT\"\nmass = 100;\n```\n\nThe following parameter are used by just Eden:\n\n```cpp\ntransportMaxMagazines\ntransportMaxWeapons\ntransportMaxBackpacks\n```\n\n##### maxT\n\nInteger: This TokenName is used inside the #Smoke Class\n\n```cpp\nmaxT = 0;\n```\n\n##### min/max\n\nString Degrees Math Formula\n\n```cpp\nmin = 0;\nmax = 60 / 3.6;\n```\n\nNote for readability, these values are *normally* expressed as strings which the engine itself will convert.\n\nsee Indicator Class\n\n##### memoryPointExhaust...\n\nString:\n\n```cpp\nmemoryPointExhaust = \"exhaust_start\";\nmemoryPointExhaustDir = \"exhaust_end\";\n```\n\n##### memoryPointGun\n\nString:\n\n```cpp\nmemoryPointGun = \"machinegun\";\n```\n\n##### memoryPointGunnerOptics\n\nString\n\n```cpp\nmemoryPointGunnerOptics = \"gunnerview\";\n```\n\n##### memoryPointGunnerOutOptics\n\nString\n\n```cpp\nmemoryPointGunnerOutOptics = \"commander_weapon_view\";\n```\n\n##### memoryPoint...Missile\n\nString:\n\n```cpp\nmemoryPointLMissile = \"Missile_1\";\nmemoryPointRMissile = \"Missile_2\";\n```\n\n##### memoryPoint...Rocket\n\nString:\n\n```cpp\nmemoryPointLRocket = \"Rocket_1\";\nmemoryPointRRocket = \"Rocket_2\";\n```\n\n##### memoryPointsGetIn...\n\nString:\n\n```cpp\nmemoryPointsGetInCargo = \"pos_cargo\";\nmemoryPointsGetInCoDriver = \"pos_codriver\";\nmemoryPointsGetInCommander = \"pos_commander\";\nmemoryPointsGetInDriver = \"pos_driver\";\nmemoryPointsGetInGunner = \"pos gunner\";\n```\n\n###### memoryPointsGetIn...Dir\n\nString:\n\n```cpp\nmemoryPointsGetInCargoDir = \"pos_cargo_dir\";\nmemoryPointsGetInCoDriverDir = \"pos_codriver_dir\";\nmemoryPointsGetInCommanderDir = \"pos_commander_dir\";\nmemoryPointsGetInDriverDir = \"pos_driver_dir\";\nmemoryPointsGetInGunnerDir = \"pos gunner dir\";\n```\n\n##### memoryPointSupply\n\nString:\n\n```cpp\nmemoryPointSupply = \"supply\";\n```\n\n##### memoryPointTrack...\n\nString:\n\n```cpp\nmemoryPointTrackFLL = \"tyreTrack_1_1l\";\nmemoryPointTrackFLR = \"tyreTrack_1_1r\";\nmemoryPointTrackBLL = \"tyreTrack_1_2l\";\nmemoryPointTrackBLR = \"tyreTrack_1_2r\";\nmemoryPointTrackFRL = \"tyreTrack_2_1l\";\nmemoryPointTrackFRR = \"tyreTrack_2_1r\";\nmemoryPointTrackBRL = \"tyreTrack_2_2l\";\nmemoryPointTrackBRR = \"tyreTrack_2_2r\";\n```\n\n##### microMimics\n\nString: Man class\n\nThis token refers to the class within the external cfgMimics class\n\n```cpp\nmicroMimics = \"Micro\";\n```\n\n##### minute\n\npart of the IndicatorWatch class\n\nsee #hour\n\n##### model\n\nString: Default Value= \"empty.p3d\"\n\nLocation in the addon where the p3d model resides.\n\n```cpp\nmodel = \"\\AddonName\\anyp3d(.p3d)\";\n```\n\nWhere a class is not a visible 'object', such as a BaseClass. You can specify\n\n```cpp\nmodel = \"\";\n```\n\nthis cuts down on load and access.\n\nRelated TokenName: #simulation, #reversed\n\n##### moves\n\nString: Default = \"NoDefaultMoves\"\n\napplies to the man class and refers to a cfgMoves class\n\n```cpp\nmoves = \"CfgMovesMC\";    // civilian, in fact, there isn't another\n```\n\n#### N\n\n##### ...NightLights...\n\nFloat:\n\n```cpp\nspotableNightLightsOff = 0.05;    // default\nspotableNightLightsOn = 4;        // default\nvisibleNightLightsOff = 0.1;    // default\nvisibleNightLightsOn = 0.2;        // default\n```\n\n##### name\n\nString:\n\n```cpp\nname = \"motor\";\n```\n\nUsed in Hit... classes, eg HitTurret HitBody\n\nRelated TokenNames: #armor (float), #material, #name, #passThrough\n\n##### nameSound\n\nString: Default value: \"Target\"\n\nNamesound 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*.\n\n```cpp\nnameSound = \"rock\";\n```\n\nMany different nameSounds can be selected. Here are just a few.\n\n```cpp\nnameSound = \"crew\";\nnameSound = \"target\";\nnameSound = \"tank\";\nnameSound = \"house\";\n```\n\nThe actual descriptive text accompanying the 'sound' can be different see #displayName\n\nTypically, a collection of buildings (eg) will be configured as follows\n\n```cpp\nclass GenBuilding : NonStrategic\n{\n    scope = private; // internal use only\n    VehicleClass = \"Some Editor Group Name\";\n    nameSound = \"house\";\n};\nclass YellowBuilding : GenBuilding\n{\n    scope = public;\n    name = \"YellowBuilding\";\n    model = \"Some yellow building.p3d\";\n};\n```\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage\n\n##### noseDownCoef\n\nFloat: Default 1.0 used by Plane class\n\n```cpp\nnoseDownCoef = 0.025;    // Cessna\n```\n\nHow much the nose drops when banking.\n\n*Note: Not used in ArmA any more*\n\n##### nightVision\n\nBoolean: Default false\n\n```cpp\nnightVision = true;\n```\n\npresent in lawsoldier, sniper, saboteur, tank, and air crew\n\n*Note: obsolete, not used, NVG item is used instead*\n\n#### O\n\n##### ...OpticsColor\n\nFloat Array : Default {0, 0, 0, 1};\n\n```cpp\ndriverOpticsColor[] = { 0, 0, 0, 1 };\ngunnerOpticsColor[] = { 0.910000, 0.230000, 0.230000, 1 };\ncommanderOpticsColor[] = { 0.910000, 0.230000, 0.230000, 1 };\n```\n\n##### ...OpticsModel\n\nString: Default \"\"\n\n```cpp\ncommanderOpticsModel= \"\\AnyPbo\\AnyP3d(.p3d)\";\ndriverOpticsModel = \"\\AnyPbo\\AnyP3d(.p3d)\";\ngunnerOpticsModel= \"\\AnyPbo\\AnyP3d(.p3d)\";\n```\n\n##### gunnerOpticsShowCursor\n\nBoolean\n\n```cpp\ngunnerOpticsShowCursor = true;\n```\n\n#### P\n\n##### passThrough\n\nBoolean: Default true\n\nIf true, destroying this part of the vehicle will destroy the whole vehicle. If false, damage will only affect this part of the vehicle.\n\nThis value is only taken into account in Arma 2. It was ignored by the game engine in previous games (that includes OFP).\n\n```cpp\npassThrough = 1;\n```\n\nUsed in Hit... classes, eg HitTurret HitBody\n\nRelated TokenNames: #armor (float), #material, #name, #passThrough\n\n##### picture\n\nString: Default: iaston.paa\n\nI think this is for briefing Information icon click\n\n```cpp\npicture = \"\\AnyAddon\\AnyPAA(.paa)\";\n```\n\n\"Picture\" is used in config.cpp to display the 128 x 64\ngraphic file of the unit in the HUD and the bottom\nof the screen while in game. A .pac file can be used\nalso. If using a .pac make your alpha channel pink -\nRGB 255, 0, 255. Pink is invisible in .pac file.\n\n##### pilotLight\n\nBoolean: Default: false\n\nDefault state of headlights on vehicle.\n\n```cpp\npilotLight = true; // spawn vehicle with headlights on\n```\n\n##### position\n\nString:\n\n```cpp\nposition = \"ohniste\";\nposition = \"L svetlo\";\n```\n\nSee #Reflectors Class, #Light Class\n\n##### precision\n\n```cpp\nprecision = 1;        // man\nprecision = 200;    // air\nprecision = 50;        // boat\n```\n\n##### ...preciseGetInOut\n\nInteger: 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.\n\n```cpp\npreciseGetInOut = 0;        // for vehicle crew\ncargoPreciseGetInOut = 0;    // for passengers\n```\n\n##### preferRoads\n\nBoolean: Default false\n\n```cpp\npreferRoads = true;    // all vehicles\n```\n\n##### primary\n\nBoolean: 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.)\n\n```cpp\nprimary = true;\n```\n\n##### primary...\n\nBoolean 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.\n\n```cpp\nprimaryGunner = false;\nprimaryObserver = true;    // Commander\n```\n\n##### proxyIndex\n\nInteger\n\n```cpp\nproxyIndex = 2;\n```\n\n##### proxyType\n\nString\n\n```cpp\nproxyType = \"CPCommander\";\n```\n\n#### R\n\n##### ...Radius\n\nFloat:\n\nRepresents a circular area (radius in meters from **centre** of object for action to take place\n\n```cpp\ngetInRadius = 2.5;    // default\ngetInRadius = 3.5;    // tank\ngetInRadius = 10;    // ship\n\nsupplyRadius = 2.5;    // for fuel dumps ammo trucks etc\n```\n\n##### ...RotorSpeed\n\nFloat: Helicopters\n\n```cpp\nmainRotorSpeed = 1.0;    // default\nbackRotorSpeed = 1.5;    // default\n\nmainRotorSpeed = 1.0;    // ch47d\nbackRotorSpeed = -1.0;\n```\n\n##### ...RotorDive\n\nFloat: Helicopters, Default 0.0\n\n```cpp\nminMainRotorDive = -9;    // CH47D\nmaxMainRotorDive = 15;\nneutralMainRotorDive = -5;\nminBackRotorDive = -15;\nmaxBackRotorDive = 9;\nneutralBackRotorDive = -5;\n```\n\n##### ReloadAnimations Class\n\nGeneral useage in Helicopters, this class is 'looked for' by the engine. Various models, but normally only one, are specified as follows\n\n```cpp\nclass ReloadAnimations\n{\n    class SomeThingA\n    {\n        // ...\n    };\n    // ...\n    class SomeThingZ\n    {\n        // ...\n    };\n};\n```\n\nhere is an example for an Mi24 helicopter\n\n```cpp\nclass MachineGun30E\n{\n    weapon = \"MachineGun30E\";\n    angle0 = 0;\n    angle1 = -2 * 3.141592654;\n    multiplier = 500;\n    type = \"rotation\";\n    animPeriod = 0.500000;\n    selection = \"gatling\";\n    begin = \"usti hlavne\";\n    end = \"konec hlavne\";\n};\n```\n\n##### rotL/R\n\ndefined within a tank.Wheels class to describe the series of small wheels on each side\n\n```cpp\nrotR[] = { kolL1, kolL2, kolL3, kolL4, kolL5, kolL6, kolL7, kolL8 };\nrotL[] = { kolP1, kolP2, kolP3, kolP4, kolP5, kolP6, kolP7, kolP8 };\nupDownL[] = { koloP1, podkoloP1, koloP2, podkoloP2, koloP3, podkoloP3, koloP4, podkoloP4, koloP5, podkoloP5, koloP6, podkoloP6, koloP7, podkoloP7, koloP8, podkoloP8 };\nupDownR[] = { koloL1, podkoloL1, koloL2, podkoloL2, koloL3, podkoloL3, koloL4, podkoloL4, koloL5, podkoloL5, koloL6, podkoloL6, koloL7, podkoloL7, koloL8, podkoloL8 };\n```\n\n##### reversed\n\nBoolean: Default true\n\nNormally, 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\n\n```cpp\nreversed = false;    // class thing\n```\n\n##### rotor...\n\nString: Helicopters\n\n```cpp\nrotorBig = \"vrtule_velka\";    // cobra\nrotorBigBlend = \"vrtule_velka_bl\";\nrotorSmall = \"vrtule_mala\";\nrotorSmallBlend = \"vrtule_mala_bl\";\n```\n\n#### S\n\n##### ...Sensitivity\n\nFloat: Default 1.0 Used by Plane Class\n\n```cpp\naileronSensitivity = 0.33;        // Cessna\nelevatorSensitivity = 0.1;        // Cessna\nwheelSteeringSensitivity = 1.0;    // default\n```\n\n##### ...Simul/Plan\n\nFloat: in meters\n\n```cpp\nsteerAheadSimul = 0.5;    // default\nsteerAheadPlan = 0.35;    // default\nsteerAheadSimul = 0.2;    // man\nsteerAheadPlan = 0.2;\n\npredictTurnSimul = 1.2;    // default\npredictTurnPlan = 1.2;    // default\npredictTurnSimul = 3;    // ship\npredictTurnPlan = 3;\n```\n\n##### scope\n\nInteger: Default value is 0 (private).\n\n```cpp\nscope = 2;\n```\n\nScope 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).\n\nDefines normally exist at the top of a well written config.cpp to make meanings clearer.\n\n```cpp\n#define private 0\n#define protected 1\n#define public 2\n```\n\nThe meaning of each is as follows\n\n**private:**\n\nNo 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.\n\nprivate is a common method of grouping base characteristics together and inheriting all those common characteristics into a class that can be viewed or accessed.\n\n**public:**\n\nPublic classes are usable in scripting commands (such as createVehicle) and can be shown in the Mission Editor.\n\n**protected:**\n\nIdentical to public, except the class will not be listed in the Mission Editor. A very common form of use for this is\n\n```cpp\nclass Vegetables\n{\n    scope = protected;\n    VehicleClass = \"Fruit and Onions\";    // a generic group in mission editor\n    displayName = \"Generic Vegetable\";\n    namesound = \"whatever\";\n    icon = \"vegetableIcon.paa\";\n    // put any other common characteristics in here\n};\nclass GreenOnions : Vegetables\n{\n    scope = public;\n    displayName = \"Green Onion\";\n}\nclass PurpleOnion : Vegetables\n{\n    ....\n}\n```\n\nThe effect here is to reduce (considerably) not only the amount of typing, but memory storage too.\n\nIt is only the public classes that are listed in the Mission Editor.\n\nSo 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\"\n\nIn the above example, it is just as useful to declare the base class '*private*. But, see below, and see #accuracy\n\nProtected classes are CamCreatable in the mission.sqm.\n\nProtected 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\n\n```cpp\nclass OriginalThing\n{\n    scope = protected;\n    // ...\n    // lots of original things\n    // ...\n};\nclass ImprovedThing : OriginalThing // inherits it all\n{\n    scope = public;\n    // ...\n    // lots of new improved things\n    // ...\n};\n```\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage\n\n##### secondaryExplosion\n\nInteger: Default disabled (-1)\n\n```cpp\nsecondaryExplosion = -1;\n```\n\n##### sensitivity\n\nFloat: Default 1.0\n\n```cpp\nsensitivity = 0.6;    // cars\nsensitivity = 2;    // sniper\n```\n\nThe higher the sensitivity value for an unit, the better it can see.\n\nThe 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).\n\n1 equals roughly to 100 meters, 2.5 to 210m, 3 to 250m.\n\nOA 1.62 state:\n\n```cpp\nclass All\n    sensitivity = 2.5;\n    sensitivityEar = 0.0075;\nclass AllVehicles : All\nclass Land : AllVehicles\nclass LandVehicle : Land\nclass Car : LandVehicle\n    sensitivity = 3;\nclass Motorcycle : LandVehicle\n    sensitivity = 3;\nclass Bicycle : Motorcycle\nclass Tank : LandVehicle\n    sensitivityEar = \"0.0075 /3\";\nclass APC : Tank\nclass Man : Land\n    sensitivity = 3;\n    sensitivityEar = 0.5;\nclass Animal : Man\nclass Air : AllVehicles\nclass Helicopter : Air\nclass Plane : Air\nclass Ship : AllVehicles\nclass AH6X_EP1 : AH6_Base_EP1\n    sensitivity = 2;\nclass Ka137_Base_PMC : Helicopter\n    sensitivity = 2;\n```\n\n##### sensitivityEar\n\nFloat: Default 0.0075\n\nSets how well can the given unit hear others.\nThe bigger the value, the better the hearing.\n\n```cpp\nsensitivityEar = 0.13;    // man\n```\n\n##### selection\n\nString:\n\n```cpp\nselection = \"L svetlo\";\n```\n\nSee #Reflectors Class, #ReloadAnimations Class (Arma Only), #Hatch... Class, #Indicator Class\n\n##### selection...\n\nString:\n\n```cpp\nselectionBackLights = \"light_back\";\nselectionBrakeLights = \"light_brake\";\nselectionFireAnim = \"muzzleflash\";\nselectionHRotorStill= \"mainRotorStatic\";\nselectionHRotorMove = \"mainRotorBlurred\";\nselectionVRotorStill = \"tailRotorStatic\";\nselectionVRotorMove = \"tailRotorBlurred\";\nselectionFabric = \"latka\";\n```\n\nThe selections\n\n```cpp\nselectionLeftOffset = \"PasOffsetL\";\nselectionRightOffset = \"PasOffsetP\";\n```\n\nare 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.\n\n##### shape\n\nFloat: This TokenName is used inside the #Light Class\n\n```cpp\nshape = \"koulesvetlo\";\n```\n\nSee #Light Class, #Reflectors Class\n\n##### showgunneroptics\n\nBoolean:\n\n```cpp\nshowgunneroptics = 0;\n```\n\n##### showWeaponCargo\n\nBoolean:Default ?\n\n```cpp\nshowWeaponCargo = true;\n```\n\nFound inside weapon holders (ammo boxes)\nOFP: If it is set to true player won't be able to put weapons/magazines to container.\n\n##### sound\n\nString:\nUsed by animated objects (campfire eg) to give sound effect. Or, simply by ambients(wolves)\n\n```cpp\nsound = \"Fire\";\nsound = \"Fountain\";\nsound = \"OwlSfx\";\n```\n\n##### SoundEnvironExt Class\n\nclass SoundEnvironExt\n\nThis is a Class used within the man class. Some/ None, or all sections of it can (of course) be overridden by inheritance.\n\nThe external class **CfgManActions** accesses the **SoundEnvironExt** class defined (or inherited) for any 'man' (soldier eg).\n\nExternal class **CfgManActions** contains many clauses\n\n```cpp\nsoundOverride = \"fallbody\";    // e.g\n```\n\nfor instances of when it wants sounds for that 'action' to take place.\n\nthus, you can define none some or all arrays (within class with your SoundEnvironExt{}) for the following\n\n```cpp\nnormalExt[] =\nnormal[] =\nroad[] =\nrock[] =\nwater[] =\ngravel[] =\nsand[] =\ndrygrass[] =\ngrass[] =\nforest[] =\nmud[] =\nwood[] =\nmetal[] =\nsnow[] =\nhallway[] =\nfallbody[] =\nlaydown[] =\nstandup[] =\ncrawl[] =\n```\n\nExample\n\n```cpp\nsnow[] = {\n    { \"People\\snow_L\", 0.000032, 1 },\n    { \"People\\snow_R\", 0.000032, 1 }\n};\n```\n\nsnow is a Variable length Sound Array\n\nsee sounds[]\n\n##### Sounds Various\n\nComplex Array:\n\nAll the following use\n\n```cpp\nnameOfSound[] = { \"\\AddonName\\AnySound(.wss)\", 0.000000, 1, 1 };\n```\n\n- 1st parameter: Sound file (path). *.wss is default, *.ogg can be specified.\n- 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.\n- 3rd parameter: Speed of playing, 1 = normal speed/time of playing, 2 = 2 times slower, with half lower pitch.\n\n###### ...Sound\n\n```cpp\nflySound[] = { \"\\AddonName\\AnySound.wss\", 0.000000, 1, 1 };\nsingSound[] = { \"\\AddonName\\SoundFile.ogg\", 0.031623, 1, 1 };\nscudSound[] = { \"weapons\\rocketflying\", 316.227783, 0.200000 };\nscudSoundElevate[] = { \"vehicles\\gun_elevate\", 0.010000, 1 };\n```\n\n###### sound...\n\n```cpp\nsoundCrash[] = { \"\\AnyAddon\\AnySound(.wss)\", 0.010000, 1 };\nsoundSetSonicBoom[] = { \"Plane_Fighter_SonicBoom_SoundSet\" }; // Sonic Boom for jet fighters at supersonic speeds; defined in cfgSoundSets\n```\n\ndefault values\n\n```cpp\nsoundCrash[] = { \"Vehicles\\crash\", 0.316228, 1 };\nsoundDammage[] = { \"\", 1, 1 };\nsoundEngine[] = { \"\", 1, 1 };\nsoundEnviron[] = { \"\", 1, 1 };\nsoundLandCrash[] = { \"Explosions\\intoground\", 0.316228, 1 };\nsoundWaterCrash[] = { \"Explosions\\intowater\", 0.316228, 1 };\nsoundGetIn[] = { \"Vehicles\\get_in\", 0.000316, 1 };\nsoundGetOut[] = { \"Vehicles\\get_out\", 0.000316, 1 };\nsoundServo[] = { \"Vehicles\\gun_elevate\", 0.010000, 0.500000 };\nsoundGear[] = { \"\\AnyAddon\\AnySound(.wss)\", 0.316228, 1 };            // no default\nadditionalSound[] = { \"\\AnyAddon\\AnySound(.wss)\", 0.000000, 1 };    // man only\n```\n\n###### sound[]\n\nused by animations\n\n```cpp\nsound[] = { \"\\anyPbo\\AnySound(.wss)\", 10.000000, 1 };\n```\n\n##### side\n\nInteger: Default Value: NEUTRAL.\n\nThe 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.\n\nWell written missions (and configs) use defines at top of file to make this more legible.\n\n```cpp\n#define NO_SIDE -1\n#define EAST 0            // (Russian)\n#define WEST 1            // (NATO)\n#define RESISTANCE 2    // Guerilla\n#define CIVILIAN 3\n#define NEUTRAL 4\n#define ENEMY 5\n#define FRIENDLY 6\n#define LOGIC 7\n\nside = EAST;\n```\n\nNEUTRAL is the general case for all objects.\n\nNO_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.\n\n##### simulation\n\nString: Default value: invisible.\n\nThe engine behaviour with this #model.\n\n```cpp\nsimulation = \"SeaGull\";\nsimulation = \"thing\";\nsimulation = \"fire\";\nsimulation = \"flag\";\nsimulation = \"house\";\n// simulation = airplane, helicopter, tank\n```\n\nRelated TokenName: #model\n\n##### size\n\nFloat: This TokenName is used inside the Smoke class and Reflector class\n\n```cpp\nsize = 0.1;\n```\n\npart of Reflectors class\n\n##### source\n\nString: found in animationSources\n\n```cpp\nsource = \"reload\";\nsource = \"time\";\n```\n\n##### sourceAddress\n\nString: found in animationSources\n\n```cpp\nsourceAddress = \"loop\";\n```\n\n##### sourceSize\n\nFloat: This TokenName is used inside the #Light Class\n\n```cpp\nsourceSize = 0.015;\n```\n\n##### ...Speed\n\nFloat: In Kph.\n\nSetting 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).\n\n```cpp\nminSpeed = -0.5;    // range 0->1\nmaxSpeed = 80;        // default\nmaxSpeed = 30;        // tractor\nmaxSpeed = 60;        // boat\n```\n\n##### scud...\n\nString: Default \"\"\n\n```cpp\nscudLaunch = \"scudlunch.rtm\";\nscudStart = \"scudstart.rtm\";\nscudModel = \"scud_strela_proxy\";\nscudModelFire = \"scud_strela_ohen\";\n```\n\n##### straightDistance\n\nInteger:\n\n```cpp\nstraightDistance = 50;\n```\n\n##### submerged..\n\nFloat: default 0.0\n\nAlmost all 'objects' are **not** submerged. This parameter is used to hide objects such as effects\n\n```cpp\nsubmerged = -0.5;        // thing effect\nsubmergeSpeed = 0.25;    // positive value makes it go deeper (sound goes quieter)\n```\n\n#### T\n\n##### ...Turn\n\nInteger Degrees\n\n```cpp\ninitTurn = 90;\nminTurn = -70;\nmaxTurn = 70;\n```\n\npart of any Turret class (tanks eg)\n\nsee#gun\n\n##### TokenNames Embedded\n\nsee #Embedded ClassNames\n\n###### turning\n\nBoolean:\n\n```cpp\nturning = 1;\n```\n\n###### turnCoef\n\nFloat: Default 2.0\n\n```cpp\nturnCoef = 6.0;    // truck\nturnCoef = 9.0;    // tractor\n```\n\n##### terrainCoef\n\nFloat: Default 3.0\n\n- Pre A3: multiplier to torque and speed (pForce)\n- A3: multiplier to maxSpeedCoef (1 - maxSpeedCoef) [cfgSurfaces parameter] for speedCoef\n\n```cpp\nPre A3::\n        terrainCoef = 6.0;    // skoda\n---\nA3:\n    class Car_F : Car\n        terrainCoef = 2;\n\n    class MRAP_03_base_F : Car_F\n        terrainCoef = 1;\n    class UGV_01_base_F : Car_F\n        terrainCoef = 1.2;\n    class Quadbike_01_base_F : Car_F\n        terrainCoef = 1.4;\n    class MRAP_01_base_F : Car_F\n        terrainCoef = 1.5;\n    class MRAP_02_base_F : Car_F\n        terrainCoef = 1.5;\n    class SUV_01_base_F : Car_F\n        terrainCoef = 2.5;\n    class Hatchback_01_base_F : Car_F\n        terrainCoef = 4.5;\n    class Kart_01_Base_F : Car_F\n        terrainCoef = 5;\n\n    class Truck_F : Car_F\n        terrainCoef = 2.5;\n\n    class Truck_03_base_F : Truck_F\n        terrainCoef = 1.8;\n    class Truck_02_base_F : Truck_F\n        terrainCoef = 2;\n    class Van_02_base_F : Truck_F\n        terrainCoef = 3;\n\n    class Wheeled_APC_F : Car_F\n        terrainCoef = 1.5;\n```\n\n##### textureList[]\n\nComplex (string, float) Array\n\nIntroduced with Arma 3 v1.24, the Bootcamp Update, along with a lot of other randomization features.\n\nArray 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:\n\n```cpp\ntextureList[] = { \"texture1\", weight1, \"texture2\", weight2, etc. };\n```\n\nTextures must be classes from the vehicle's TextureSources. If all the weights are the same value, it functions as straight equal randomization.\n\nExample:\n\n```cpp\nclass MyPlane : C_Plane_Civil_01_F\n{\n    textureList[] = { \"Racer_1\", 0.5, \"Racer_2\", 1 };\n};\n```\n\n##### threat\n\nfloat Array: Default Value {0.700000, 0.500000, 0.300000};\n\nHow threatening you are to unit types {Soft, Armor, Air}, respectively.\n\nThe ai for this model selects targets of opportunity, based on these values.\n\n```cpp\nthreat[] = { 1, 0.0500000, 0.050000 };            // soldier\nthreat[] = { 1, 0.900000, 0.100000 };            // law soldier\nthreat[] = { 0.900000, 0.700000, 0.300000 };    // bmp\n```\n\nRelated TokenNames: type, #cost, #threat\n\n##### timeToLive\n\nFloat: Default 10 000 000 000.0; // seconds?\n\n```cpp\ntimeToLive = 20;    // thing effects (bullets)\ntimeToLive = 100000002004087730000.0;    // campfire\n```\n\nSee #Smoke Class\n\n##### transport...\n\n###### transportAmmo\n\nInteger: Used by supply 'vehicles' to determine total amount available for entire mission. Once depleted...\n\nA 'vehicle' in this case can be a genuine repair truck, or, a building.\n\n```cpp\ntransportAmmo = 300000;            // reammo truck\ntransportAmmo = 10000000;        // bigship\n\ntransportFuel = 3000;            // refueltruck\ntransportRepair = 200000000;    // repairtruck\n```\n\n###### transportMax...\n\nThese 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.\n\n```cpp\ntransportMaxMagazines = 50;        // car\ntransportMaxWeapons = 10;\ntransportMaxMagazines = 5;        // motorcycle\ntransportMaxWeapons = 0;\ntransportMaxMagazines = 50;        // tank\ntransportMaxWeapons = 10;\ntransportMaxMagazines = 20;        // air\ntransportMaxWeapons = 3;\ntransportMaxMagazines = 100;    // boat\ntransportMaxWeapons = 20;\ntransportMaxMagazines = 500;    // ship\ntransportMaxWeapons = 200;\ntransportMaxMagazines = 200;    // truck\ntransportMaxWeapons = 50;\ntransportMaxMagazines = 100;    // apc\ntransportMaxWeapons = 20;\ntransportMaxMagazines = 200;    // helicopter\ntransportMaxWeapons = 50;\ntransportMaxWeapons = 500;        // ammo boxes\ntransportMaxMagazines = 2000;\n```\n\nValues vary depending on exact type of 'boat' eg.\n\nThese TokenNames ate used to indicate how many units of each type an object can hold. Most objects can't hold anything.\n\n###### transportSoldier\n\nInteger: Default Value= 0.\n\nNumber 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.\n\n```cpp\ntransportSoldier = 3;        // jeep/car\ntransportSoldier = 50;        // large ship\ntransportSoldier = 6to10;    // SmallShip\ntransportSoldier = 3;        // a10\ntransportSoldier = 8to12;    // helicopters\ntransportSoldier = 2or3;    // ambulance\ntransportSoldier = 8;        // apc/bmp\ntransportSoldier = 12;        // truck\ntransportSoldier = 1;        // jeepmg\ntransportSoldier = 1or2;    // repair type truck\n```\n\nto make the game 'interesting', similar vehicles on different sides, can carry non equivalent numbers.\n\n##### transportVehiclesCount\n\nInteger : default 0\n\n```cpp\ntransportVehiclesCount = 15; // a Carrier (big ship)\n```\n\n##### TransportMagazines Class\n\n##### transportVehiclesMass\n\nInteger: Default 0\n\n```cpp\ntransportVehiclesMass = 0;    // not used by any model\n```\n\n##### TransportWeapons Class\n\n##### tracksSpeed\n\nInteger: Default 1\n\nSpeed of tracks UV animation. Use negative number to move tracks in opossite direction\n\n```cpp\ntracksSpeed = 1.4;\n```\n\n##### TransportWeapons Class\n\n##### turretAxis\n\nString:\n\n```cpp\nturretAxis = \"OsaVeze\";\n```\n\nsee #Turret Class\n\n##### type (threat)\n\nInteger: Default Value: Armored\n\nThis indicates the threat type of the 'vehicle'.\n\nIn well written configs, the 3 possible values are declared as defines at top of file for legibility\n\n```cpp\n#define VSoft 0\n#define VArmor 1\n#define VAir 2\n\ntype = VAir;\n```\n\nVehicles (and buildings) are armoured, humans are 'soft' and aircraft (obviously) are air\n\nRelated TokenNames: type, #cost, #threat\n\n##### type (animation)\n\n**old** Unknown: Default Value: rotation\n\nThis appears in the ReloadAnimations class\n\n```cpp\ntype = \"rotation\";\n```\n\n##### typicalCargo\n\nVariable 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.\n\nThis array can have zero or more strings.\n\n```cpp\ntypicalCargo[] = { \"Soldier\", \"Soldier\", \"SoldierLAW\", \"SoldierLAW\" };\n```\n\nNote that these are *ClassNames* of soldiers.\n\n#### U\n\n##### ...UsesPilotView\n\nBoolean: : Default false\n\n```cpp\ngunnerUsesPilotView = false;    // some choppers (mi17)\ncommanderUsesPilotView = true;\n```\n\n##### uavHacker\n\nBoolean\nAllows unit to hack UAVs. Used on UAV operators in vanilla (Arma 3)\n\n```cpp\nuavHacker = 1;\n```\n\n##### unitInfoType\n\nString\n\n```cpp\nunitInfoType = \"UnitInfoSoldier\";\n```\n\nCertain 'vehicles' hide this information.\n\nsee #hideUnitInfo\n\n##### unloadInCombat\n\nBoolean: default true\n\n```cpp\nunloadInCombat = false;\n```\n\nAll true vehicles will cause ai to disembark when in combat.\n\n##### upDownL/R\n\nwheels class\nsee #rotL/R\n\n#### V\n\n##### vehicleClass\n\nString: Default Value= \"Objects\"\n\nUsed for Mission Editor basic category selection\n\n```cpp\nvehicleClass = \"Air\";\nvehicleClass = \"Support\";\nvehicleClass = \"My Great Addon\";\n```\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage\n\n##### vehicleClass[]\n\nString Array:\n\n```cpp\nvehicleClass[] = { \"Men\", \"Car\", \"Armored\", \"Air\", \"Support\", \"Camera\", \"Objects\", \"Ammo\", \"Sounds\", \"Mines\" };\n```\n\n##### view...Shadow\n\nBoolean:\n\n```cpp\nviewCargoShadow = true;\nviewGunnerShadow = true;\n```\n\n##### viewDriverInExternal\n\nBoolean: default false\n\n```cpp\nviewDriverInExternal = true;    // Show the driver in third person view\n```\n\n##### viewGunnerInExternal\n\nBoolean: default false\n\n```cpp\nviewGunnerInExternal = true;    // for some turrets and M113\n```\n\n#### W\n\n##### ...WaterEffect\n\nString\n\nDefines the effect that will be spawned at the position of the LandContact points when vehicle is in/on the water.\n\n```cpp\nleftWaterEffect = \"vbs2_fx_lowWaterEffects\";\nrightWaterEffect = \"vbs2_fx_lowWaterEffects\";\n```\n\nsee #...DustEffect\n\n##### weapon\n\nString:\n\n```cpp\nweapon = \"M197\";\n```\n\nSelects a weapon from the CfgWeapons class\n\n##### weapons\n\nVariable String Array: default {};\n\nWeapons and Magazines contain individual description of what a 'vehicle' IS carrying.\n\n```cpp\nweapons[] = { \"FFARLauncher\", \"TwinM134\" };    // aircraft\nweapons[] = { \"CarHorn\" };    // truck\n\nweapons[] = { \"M21\", \"LAWLauncher\", \"Throw\", \"Put\" };    // soldier\nmagazines[] = { \"M21\", \"M21\", \"M21\", \"M21\", \"HandGrenade\", \"HandGrenade\", \"LAWLauncher\" };\n```\n\nThe amount of weapons (and magazines) that can be carried by the 'man' is determined by #weaponSlots\n\nThe names M21, Carhorn etc are external references to the cfgWeapons / cfgMagazines classes\n\n##### weaponsGroup\n\nInteger:\n\nThe weapons grouping for a vehicle, determined by enumerated weapon category definitions.\n\n```cpp\nweaponsGroup1 = WEAPONGROUP_CANNONS + WEAPONGROUP_MGUNS;                                // Adds Cannons and Machine Guns to Weapons Group 1\nweaponsGroup2 = WEAPONGROUP_ROCKETS;                                                    // Adds Rockets to Weapons Group 2\nweaponsGroup3 = WEAPONGROUP_AAMISSILES + WEAPONGROUP_ATMISSILES + WEAPONGROUP_MISSILES; // Adds All Missile types to Weapons Group 3\nweaponsGroup4 = WEAPONGROUP_BOMBS + WEAPONGROUP_SPECIAL;                                // Adds Bombs and Laser Designators to Weapons Group 4\n```\n\n```cpp\n#define WEAPONGROUP_CANNONS        1    // Cannons\n#define WEAPONGROUP_MGUNS        2    // Machine Guns\n#define WEAPONGROUP_ROCKETS        4    // Rockets\n#define WEAPONGROUP_AAMISSILES    8    // Anti-Air Missiles\n#define WEAPONGROUP_ATMISSILES    16    // Anti-Tank Missiles\n#define WEAPONGROUP_MISSILES    32    // All / Other Missiles\n#define WEAPONGROUP_BOMBS        64    // Bombs\n#define WEAPONGROUP_SPECIAL        128    // Laser Designator + Misc\n```\n\n##### weaponSlots\n\nInteger:\n\nWeaponslots apply to man class (soldier, civilian, etc)\n\nIt indicates the 'gear' capacity.\n\n```cpp\nweaponSlots = 1 + 4 + 12 * 256 + 2 * 4096 + 2 + 8 * 16;    // all soldiers/civilians\nweaponSlots = 1 + 4 + 8 * 256 + 2 * 4096 + 2 + 4 * 16;    // medics\n\n// 1 = primary weapon\n// 2 = handgun slot\n// 4 = secondary weapon (launcher)\n// 16 = handgun magazines (8x)(or grenades for M203/GP-25)\n// 256 = magazine slots (12x / 8x for medics)\n// 4096 = goggle slot (2x)\n// 131072 = ?\n```\n\n##### wheelCircumference\n\nFloat Default 2.513 meters\n\n```cpp\nwheelCircumference = 8;    // tractor\n```\n\n##### wounds\n\nstring Array:\n\n```cpp\nwounds[] = { \"xicht_a.paa\", \"xicht_a_zranen\", ... };\n```\n\nthis token is used in the man class to show a series of pac/paa files depending on damaged state of the body.","sections":[{"heading":"Introduction","level":3,"markdown":"TokenName Config.cpp Reference\n\nSimply put, Token Name & Value pairs are as follows\n\n```cpp\nSomeName = SomeValue;\n```\n\nToken Names are used extensively throughout Operation Flashpoint 'text' files.\n\nAn example is, when creating a model using class statements inside a Config.cpp, to access it later, via the mission editor\n\n```cpp\nscope = 2;\n```\n\nThis 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**.\n\nUnlike 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.\n\nThis article lists token names, their value ranges, and their type."},{"heading":"TokenTypes","level":4,"markdown":"| Token Type | Description | Example |\n|---|---|---|\n| Integer | A signed value that will be held in 4 bytes. | `token = 1;` |\n| Boolean | An 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**. | `token = true;` |\n| String | Any string value | `token = \"SomeString\";` |\n| Array | An array | `token[] = { ... };` |\n| Float Array | An array of floats | `token[] = { 0.5, 0.3, 0.05 };` |\n| String Array | An array of strings | `token[] = { \"String1\", \"String2\" };` |\n| Integer Array | An array of integers | `token[] = { 0, 1, 2 };` |\n| Complex Array | A mixture of multiple types, including embedded arrays. | `token[] = { \"String\", 1, 0.5, true };` |\n| Variable Array | The number of elements for **this** array in **this** class model can have a varying number of elements (depending on context) |  |"},{"heading":"Filenames and Paths","level":4,"markdown":"Filenames are case **in**sensitive."},{"heading":"Pbo File conventions","level":5,"markdown":"The root path of the filename is (generally) the name of the pbo\n\n```cpp\nmodel= \"\\anypbofile\\anywhere\\....\";\n```\n\nnote the pbo extension is inferred\n\n**anywhere** is an (optional) (series of) folder(s) INSIDE the pbo.\n\nDepending on the file referred to, eg a p3d file for a model, the extension (in this case .p3d) is not required."},{"heading":"p3d files","level":5,"markdown":"```cpp\nmodel = \"\\anypbofilename\\anyp3d(.p3d)\";\n```"},{"heading":"paa/pac","level":5,"markdown":"Wherever these file types are indicated, the default extension is paa\n\n```cpp\nicon = \"\\somepbo\\anyicon(.paa)\";\n```"},{"heading":"jpeg","level":5,"markdown":"jpeg pictures are usable anywhere a pac (or pac) file is indicated. It is never default.\n\nException: Operation Flashpoint: Elite specifically, cannot handle jpg.\n\n```cpp\npicture = \"\\AnyPbo\\AnyPicture.jpg\";\n```"},{"heading":"Sound files","level":5,"markdown":"wss is the default extension if not declared.\n\n```cpp\nsound = \"\\AnyPbo\\AnySoundFolder\\AnySound(.wss)\";\n```\n\nOtherwise use Ogg Vorbis format (extension .ogg)."},{"heading":"Vehicle vs 'Vehicle'","level":4,"markdown":"In this document. a vehicle, is a true vehicle of some kind. Be it a tank, or a car.\n\nA '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'"},{"heading":"Config.bin vs Config.cpp","level":4,"markdown":"By convention only, config.**cpp** is the humanly readable text equivalent of config.**bin**.\n\nThe engine will accept either or **both**.\n\nWhen 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).\n\nWhile 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."},{"heading":"raP files","level":4,"markdown":"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.\n\nBy 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.\n\nThe 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."},{"heading":"Alphabetical Order","level":3,"markdown":""},{"heading":"A","level":4,"markdown":""},{"heading":"...Action","level":5,"markdown":"String : defaults ManActCargo\n\n```cpp\ncommanderAction =    \"ManActM60CommanderOut\";\ndriverAction =        \"ManActShipDriver\";\ngunnerAction =        \"ManActJeepGunner\";\ncommanderInAction =    \"ManActTestDriver\";\ndriverInAction =    \"ManActM113Driver\";\ngunnerInAction =    \"ManActM1A1Gunner\";\ngetInAction =        ManActGetInTank;    // default\ngetOutAction =        ManActGetOutTank;    // default\n```"},{"heading":"cargoAction","level":6,"markdown":"Variable String Array: default {ManActCargo}\n\n```cpp\ncargoAction[] = { \"ManActM113Medic\", \"ManActM113Medic\", \"ManActM113Injured\" };\n```\n\n**Note** that unlike driverAction and gunnerAction this is an array. (for multiple positions)\n\nThe number of elements in this array correspond to the #transportSoldier value declared for this class.\n\nsee #cargoIsCoDriver"},{"heading":"...AngleX/Y","level":5,"markdown":"Float Degrees\n\n```cpp\ninitAngleX = 0;\nminAngleX = -30;\nmaxAngleX = 30;\n```\n\n```cpp\ninitAngleY = 0;\nminAngleY = -100;\nmaxAngleY = 100;\n```\n\n```cpp\ninitFov = 0.700000;\nminFov = 0.420000;\nmaxFov = 0.850000;\n```\n\nused by car.ViewPilot class"},{"heading":"angle","level":5,"markdown":"Float: Degrees\n\n```cpp\nangle = -240;\n```\n\nsee #Indicator... Class Or #Hatch... Class"},{"heading":"access","level":5,"markdown":"Integer: Determines the manipulability of the class.\n\n```cpp\naccess = 1;\n```\n\n0 ReadAndWrite additional values can be added\n1 ReadAndCreate only adding new class members is allowed\n2 ReadOnly no modifications enabled\n3 ReadOnlyVerified no modifications enabled, CRC test applied\n\nAll *BIS* classes are **ReadOnlyVerified** and can only be inherited into a new class"},{"heading":"accuracy","level":5,"markdown":"Float: Default value = 0.02.\n\nDetermines how easy an object is to identify. Smaller values are easier to detect.\n\nTypically, buildings are 0.2, vehicles, 0.5\n\n**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\n\n```cpp\naccuracy = 0.2;            // buildings\naccuracy = 0.5;            // small vehicles\naccuracy = 0.9;            // truck\naccuracy = 3.500000;    // sniper\naccuracy = 1.500000;    // lawsoldier\naccuracy = 1000;        // soldier - identify (most) soldiers as 'man'\n```\n\nRelationship to #camouflage:\n\n**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.\n\n**camouflage** defines how hard it is for the AI to *see* that the unit is there.\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage"},{"heading":"acceleration","level":5,"markdown":"Float: metres per second\n\n```cpp\nacceleration = 7;\n```"},{"heading":"airFriction","level":5,"markdown":"Array: 3 separate tokens, airFriction0[], airFriction1[], airFriction2[] that define the X Y and Z component respectively.\n\n```cpp\nairFriction2[] = { 25, 12, 2.500000 };\n```"},{"heading":"airFrictionCoefs...","level":5,"markdown":"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.\n\n```cpp\nairFrictionCoefs2[] = { 0.00100, 0.00050, 0.00006};\nairFrictionCoefs1[] = { 0.100, 0.050, 0.006 };\nairFrictionCoefs0[] = { 0.0, 0.0, 0.0 };\n```"},{"heading":"ambient","level":5,"markdown":"Float Array:\n\n```cpp\nambient[] = { 0.07, 0.07, 0.07, 1.0 };\n```\n\nSee #Reflectors Class, #Light Class, #CargoLight Class"},{"heading":"animated","level":5,"markdown":"Boolean : Default Value true\n\nUsed by class models that inherit an animated 'vehicle' to turn those aspects of the vehicle off.\n\n```cpp\nanimated = false;\n```\n\nmodel is animated, or not.\n\nwhen set true, the animation class, if any, happens, otherwise it doesn't\n\nsee animations class"},{"heading":"animPeriod","level":5,"markdown":"Float: Seconds.\n\nThis TokenName is generally used inside AnimationSources class (ArmA only). It's use in OFP:R is as follows\n\n```cpp\nanimPeriod = 1.33; // a fountain\n```"},{"heading":"animation...","level":5,"markdown":"String: These animation strings point to rtm files to create the movement.\n\n```cpp\nanimationFlag = \"\\AnyAddon\\AnyRTM(.rtm)\";    // to wiggle flag in wind\nanimationOpen = \"\\AnyAddon\\AnyRTM(.rtm)\";    // to open or close doors (eg)\nanimationDrop = \"\\AnyAddon\\AnyRTM(.rtm)\";\n```"},{"heading":"animationList[]","level":5,"markdown":"Array format [String, Float]\n\n(possibly introduced in Arma 3 v1.24 when other randomisation features were added)\n\nArray 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:\n\n```cpp\nanimationList[] = { \"animation1\", weight1, \"animation2\", weight2, etc. };\n```\n\nAnimations must be classes from the vehicle's AnimationSources. If all the weights are the same value, it functions as straight equal randomisation.\n\nExample:\n\n```cpp\nclass MyAPC : B_APC_Wheeled_01_cannon_F\n{\n    animationList[] = {\n        \"showBags\", 0,\n        \"showCamonetHull\", 0.5,\n        \"showCamonetCannon\", 0.75,\n        \"showCamonetTurret\", 1,\n        \"showSLATHull\", 1,\n        \"showSLATTurret\", 1\n    };\n};\n```"},{"heading":"animationSource...","level":5,"markdown":"String\n\n```cpp\nanimationSourceBody = \"Turret_2\";\nanimationSourceGun = \"Gun_2\";\nanimationSourceHatch = \"hatchCommander\";\nanimationSourceElevation = \"\"; // new in Arma 3\nanimationSourceCamElevation =\"\"; // new in Arma 3\n```"},{"heading":"armor (integer)","level":5,"markdown":"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.\n\n```cpp\napprox strength = (0.27/tgtRadius)^2 / armorInConfig\n\narmor = 3;            // man\narmor = 10;            // motorcycle\narmor = 20;            // a small car\narmor = 15..60;        // aircraft\narmor = 150;        // buildings\narmor = 150..300;    // bmp\narmor = 400...900;    // tank\narmor = 300;        // boat\narmor = 10000;        // ship\n```\n\nIf unspecified (or not inherited) the default value is 30\n\n- 1 bullet will kill armor <= 20\n- 2 bullets <= 40\n- 3 bullets 50"},{"heading":"armor (float)","level":5,"markdown":"Float: The floating version of armor type is only used in Hit... classes, eg HitTurret HitBody\n\n```cpp\narmor = 1.4;    // a bee\narmor = 0.8;    // a turret\n```\n\nRelated TokenNames: #armor (float), #material, #name, #passThrough"},{"heading":"armor...","level":5,"markdown":"Float:\n\n```cpp\n// for vehicles general\narmorStructural= 1;    // ranges between 1 and 4.0, default 1\narmorFuel = 1.4;    // default\narmorGlass = 0.5;    // default\narmorLights = 0.4;    // default 0.4 in all models.\narmorWheels = 0.05;    // default\n// for tanks\narmorHull = 1;\narmorTurret = 0.8;\narmorGun = 0.6;\narmorEngine = 0.8;\narmorTracks = 0.6;\n// for men\narmorHead = 0.7;\narmorHands = 0.5;\narmorLegs = 0.5;\n// helicopters\narmorHull = 0.5;\narmorEngine = 0.6;\narmorAvionics = 1.4;\narmorVRotor = 0.5;\narmorHRotor = 0.7;\narmorMissiles = 1.6;\narmorGlass = 0.5;\n```"},{"heading":"assembleInfo","level":5,"markdown":"Used for both vehicles that can be diassembled and backpacks that are assembled into vehicles (static guns, drones, etc.)\n\nClass values for backpacks, primary part:\n\n```cpp\nclass assembleInfo\n{\n    assembleTo = \"I_G_HMG_02_high_F\";    // Backpack assembles into this vehicle\n    primary = 1;                        // This backpack is main part, when assembly is done, its \"assembleTo\" class will be used for created vehicle\n    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\n    displayName = \"Static MG\";            // String that will be shown in \"Assemble X\" mouse wheel menu action\n    dissasembleTo[] = {};                // Backpacks are not disassembled futher, but empty array is required here anyways\n};\n```\n\nSecond part (tripod) only needs `primary = 0;`:\n\n```cpp\nclass assembleInfo\n{\n    assembleTo = \"\";\n    primary = 0;\n    base = \"\";\n    displayName = \"\";\n    dissasembleTo[] = {};\n};\n```\n\nIf no second part is needed for assembly, primary backpack's \"base\" have to be empty string: `base = \"\";`\n\nVehicles disassembly info:\n\n```cpp\nclass assembleInfo\n{\n    assembleTo = \"\";\n    primary = 0;\n    base = \"\";\n    displayName = \"\";\n    dissasembleTo[] = { \"B_HMG_02_high_weapon_F\", \"B_HMG_02_support_high_F\" }; // Vehicle will be disassembled into these backpacks. Max 2 allowed.\n};\n```\n\nNote the typo in \"dissasembleTo\" property, engine expects it like this. Empty values have to be provided to avoid missing config values errors.\n\nNote: Vehicle keeps track which second part (tripod) was used when it was assembled and its used again when you disassemble it back."},{"heading":"attendant","level":5,"markdown":"Boolean: Default false\n\nUsed for 'vehicles' to repair other 'vehicles'. Thus a hospital has an attendant that can repair soldiers. Adds the action \"Heal at XXX\"\n\n```cpp\nattendant = true;\n```\n\nRelated TokenNames: #hiddenSelections"},{"heading":"audible","level":5,"markdown":"Float: Default Value 1\n\n```cpp\naudible = .05;    // man\naudible = 3;    // motorcycle\naudible = 6;    // tank/ship\n```\n\nHow loud you are. The bigger value, the better the unit is heard.\n\nsee #camouflage"},{"heading":"autocenter","level":5,"markdown":"Boolean: Default true\n\n```cpp\nautocenter = false;    // man\n```"},{"heading":"axis","level":5,"markdown":"String:\n\n```cpp\naxis = \"osa_poklop_driver\";\n```\n\nsee #Indicator... Class Or #Hatch... Class, IndicatorWatch Class"},{"heading":"B","level":4,"markdown":""},{"heading":"body","level":5,"markdown":"String:\n\n```cpp\nbody = \"mainTurret\";\n```\n\nsee #Turret Class"},{"heading":"brakeDistance","level":5,"markdown":"Float: default 5 meters per sec\n\n```cpp\nbrakeDistance = 1;    // man\nbrakeDistance = 14;    // tank\nbrakeDistance = 500;// plane\nbrakeDistance = 50;    // boat\n```"},{"heading":"bounding","level":5,"markdown":"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.\n\n```cpp\nbounding = \"usti hlavne\";\n```"},{"heading":"brightness","level":5,"markdown":"Float:\n\n```cpp\nbrightness = 1.0;\n```\n\nSee #Reflectors Class, #Light Class, #CargoLight Class"},{"heading":"C","level":4,"markdown":""},{"heading":"...CanSee","level":5,"markdown":"Integer\n\nUsed to describe which sensory inputs are available to which crew members.\n\n| Numeric value | CanSee.. define | Description |\n|---|---|---|\n| 1 | Radar | Enables top left radar (OA) for a vehicle (top centre in arma and OFP). |\n| 2 | Eye | Effect unknown - maybe affects AI capabilities? |\n| 4 | Optics | Effect unknown - maybe affects AI capabilities? |\n| 8 | Ear | Effect unknown - maybe affects AI capabilities? |\n| 16 | Compass | Enables top centre compass bar and digital compass in A2/OA. |\n| 32 | Peripheral | Enables small colored blobs at the edge of the screen that indicate nearby units. |\n\nMultiple values can be added (or binary ored, giving the same result) together.\n\n```cpp\ncommanderCanSee = 31;        // default\ngunnerCanSee = 4 + 8 + 16;    // default\ndriverCanSee = 2 + 8 + 16;    // default\n```\n\n```cpp\n#define CanSeeRadar            1\n#define CanSeeEye            2\n#define CanSeeOptics        4\n#define CanSeeEar            8\n#define CanSeeCompass        16\n#define CanSeeAll            31\n#define CanSeePeripheral    32\n#define CanSeeRadarC        CanSeeRadar + CanSeeCompass\n```\n\n```cpp\ncommanderCanSee = CanSeeAll;\ngunnerCanSee = CanSeeOptics + CanSeeEar + CanSeeCompass;\ndriverCanSee = CanSeeEye + CanSeeEar + CanSeeCompass;\n```"},{"heading":"...CargoAngleY","level":5,"markdown":"Float Degrees\n\nFound within vehicle classes.\n\nOrientation of the man sitting in the cargo space.\n\n```cpp\ninitCargoAngleY = 185;    // Truck5t\ninitCargoAngleY = 90;    // M113\n```\n\n```cpp\ninitCargoAngleY = 10;    // UH60\nminCargoAngleY = -60;\nmaxCargoAngleY = 120;\n```"},{"heading":"camouflage","level":5,"markdown":"Float: Default Value = 2.\n\nhow difficult to spot. bigger = easier\n\n```cpp\ncamouflage = 0.6;    // snipers\ncamouflage = 1;        // man\ncamouflage = 4;        // trucks\ncamouflage = 8;        // tanks\n```\n\nRelationship to #accuracy:\n\n**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*.\n\n**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.\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage"},{"heading":"can...","level":5,"markdown":""},{"heading":"canBeShot","level":6,"markdown":"Boolean: Declares whether bullets have any effect\n\n```cpp\ncanBeShot = true;\n```"},{"heading":"canDeactivateMines","level":6,"markdown":"Boolean: Default false\n\npart of the man class.\n\n```cpp\ncanDeactivateMines= true;    // SoldierEngineer\n```"},{"heading":"canFloat","level":6,"markdown":"Boolean: Default value: false\n\nUsed to allow vehicles (such as BMP) not to sink !\n\n```cpp\ncanFloat = true;\n```"},{"heading":"canHideBodies","level":6,"markdown":"Boolean: Default false\n\npart of the man class.\n\n```cpp\ncanHideBodies = true;    // SoldierWSaboteur\n```"},{"heading":"cargoIsCoDriver","level":5,"markdown":"Variable Boolean Array : Default {false};\n\nThis token declares which (if any) cargo positions are 'in the front' (Ie front windscreen)\n\n```cpp\ncargoIsCoDriver[] = { true, true, false };    // 1st two passenger positions for a 5T truck\n```\n\nThe number of elements in **this** array correspond to the #transportSoldier value declared for **this** class model."},{"heading":"cargoReversedGetOut (Arma 3 v2.04)","level":5,"markdown":"Array\n**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.\n\n```cpp\ncargoReversedGetOut[] = { 0 };\n```"},{"heading":"cast...Shadow","level":5,"markdown":"Boolean: Default false\n\n```cpp\ncastCargoShadow = false;\ncastCommanderShadow = false;\ncastDriverShadow = false;\ncastGunnerShadow = true;\n```\n\nNormally used to shadow 'soldiers' standing up in vehicle objects, such as the MG Jeep and Machine Guns."},{"heading":"Classes Embedded","level":5,"markdown":"see #Embedded ClassNames"},{"heading":"cloud...","level":5,"markdown":"Various(Strings, Floats, Arrays)\n\n```cpp\ncloudletDuration = 0.9;\ncloudletAnimPeriod = 1.0;\ncloudletSize = 0.1;\ncloudletAlpha = 0.8;\ncloudletGrowUp = 0.4;\ncloudletFadeIn = 0.0;\ncloudletFadeOut = 5.0;\ncloudletAccY = -0.1;\ncloudletMinYSpeed = 0.3;\ncloudletMaxYSpeed = 1.5;\ncloudletShape = \"\\ca\\data\\cl_basic\";\ncloudletColor[] = { 1, 1, 1, 0 };\n```\n\nSee #Smoke Class"},{"heading":"cobraLight","level":5,"markdown":"String : Used as a core model for all other 'air' craft.\n\n```cpp\ncobraLight = \"AnyAddon\\AnyP3d(.p3d)\";\n```"},{"heading":"coefInside...","level":5,"markdown":"Float:\n\n```cpp\ncoefInside = 2;            // cost for movement inside buildings\ncoefInsideHeur = 4.3;    // estimation of cost based on in/out points\ncoefSpeedInside = 2; // we must go slowly inside houses\n```\n\nUsed by the static class for non moving objects such as buildings\n\n```cpp\ncoefInside = 1;    // forest\ncoefInsideHeur = 0.25;\n```"},{"heading":"collisionLight","level":5,"markdown":"Float Boolean: Default: false.\n\nDefault state of collision lights\n\n```cpp\ncollisionLight = true; // spawn vehicle with collision lights on\n```"},{"heading":"color","level":5,"markdown":"Float Array: of floats.\n\n```cpp\ncolor[] = { 0.8, 0.8, 1.0, 1.0 };\n```\n\nThis is a fixed four dimension array consisting of the color values for a RGBA model.\n\nSee #Reflectors Class, #Light Class, #CargoLight Class, #Smoke Class"},{"heading":"commanding","level":5,"markdown":"Integer: part of Turret class\n\n```cpp\ncommanding = -1;\n```"},{"heading":"cost","level":5,"markdown":"Float: Default Value 50.0000\n\nThis value reflects the attractiveness of the target to the enemy AI. When *all other considerations are equal*.\nA soldier eg is not interested in Air, despite it is highly attractive cost values.\nOn 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.\n\n```cpp\ncost = 10000000;    // an air vehicle is typically this value\ncost = 8;            // a medic;\ncost = 1;            // a grunt\ncost = 4;            // an officer\ncost = 0;            // most buildings;\n```\n\nRelated TokenNames: type, #cost, #threat"},{"heading":"count","level":5,"markdown":"String or Integer: (math formula).\n\n```cpp\nweapon = \"M60\";\ncount = \"30 * 1\"; // or 'count = 30 * 1;'\n```\n\nthis token is always associated in a weapon or magazine couplet, inside a TransportWeapons, or\nTransportMagazines class.\n\nThe value is mostly represented as a string as above (a math formula), or it can be (unusually)\n\n```cpp\ncount = 2;\n```\n\nSee At the End of the Day in the TokenNameValueTypes page for an explanation how this duality is possible."},{"heading":"crew","level":5,"markdown":"String: Default Civilian\n\nReflects whether vehicle is manned, and what with.\n\n```cpp\ncrew = <ClassName>\ncrew = \"SoldierWPilot\";\n```\n\n'SoldierWPilot' is a class declared in same file."},{"heading":"crewCrashProtection","level":5,"markdown":"Float\n\nMultiplier of damage to crew of the vehicle. Lower number means better protection.\n\n```cpp\ncrewCrashProtection = 0.05;\n```"},{"heading":"D","level":4,"markdown":""},{"heading":"dammage [sic]...","level":5,"markdown":"Variable String Array:\n\n```cpp\ndammageHalf[] = { \"\\AnyAddon\\AnyPAA.paa\", \"\\AnyAddon\\AnyOtherPAA.paa\", ... };\ndammageFull[] = { \"\\AnyAddon\\AnyPAA.paa\", \"\\AnyAddon\\AnyOtherPAA.paa\", ... };\n```\n\nWhen 'vehicle' is considered at least half way to destruction, the series of pictures is applied to the model."},{"heading":"damageResistance (Armed Assault v1.00)","level":6,"markdown":"Only for AI, to know when to shoot and when not.\n\n```cpp\ndamageResistance = 0.004;\n```\n\nIt 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\n\n```cpp\ndamageResistance = (HIT*HIT)/Armor*((0.27/tgtRadius)*(0.27/tgtRadius))\n```"},{"heading":"driveThroughEnabled","level":5,"markdown":"Determines if AI can decide to go through the object. This parameter skips regular mass checking if object can smashed through\n\n```cpp\ndriveThroughEnabled            = 1; // test parameter for AI knowing they can drive through the object\n```"},{"heading":"damper...","level":5,"markdown":"Float:\n\n```cpp\ndamperSize = 0.1;    // default\ndamperForce = 3;    // default\n```"},{"heading":"deltaT","level":5,"markdown":"Float\n\n```cpp\ndeltaT = -500;\n```\n\nSee #Smoke Class"},{"heading":"density","level":5,"markdown":"Float\n\n```cpp\ndensity = 0.5;\n```\n\nSee #Smoke Class"},{"heading":"destrType","level":5,"markdown":"String: Default Value = \"DestructDefault\"\n\nUsed for animation, sound, and final 'look' of vehicle. Since Arma 3 v2.22 Powerline colums and radio tower get new type of destruction \"DestructColumn\". The tall column leans 22.5 degrees, away from the source that caused damage (for example satchel charge). The lean direction is synced for JIP, the anchor supports and powerlines destruction is scripted and JIP synced as well.\n\n```cpp\ndestrType = \"DestructNo\";        // nothing happens\ndestrType = \"DestructBuilding\";    // smoke. explosion\ndestrType = \"DestructEngine\";    // smoke only\ndestrType = \"DestructTree\";        // smoke, crushing, falls over\ndestrType = \"DestructTent\";        // smoke, crushing, flattens\ndestrType = \"DestructMan\";\ndestrType = \"DestructDefault\";    // = building\ndestrType = \"DestructWreck\";\ndestrType = \"DestructColumn\"; // Power line columns, radio tower\n```\n\nTent and Tree are no longer identifiable when destroyed if not class 'things'"},{"heading":"disableDriverAttenuation","level":5,"markdown":"Number: Default 0;\n\nDisables attenuation for the driver.\n\n```cpp\ndisableDriverAttenuation = 1;\n```"},{"heading":"disappearAtContact","level":5,"markdown":"Boolean: Default false;\n\n```cpp\ndisappearAtContact = true;    // FxCartridge\n```"},{"heading":"direction","level":5,"markdown":"String:\n\n```cpp\ndirection = \"konec L svetla\";\n```\n\nsee #Reflectors Class"},{"heading":"displayName","level":5,"markdown":"String: Default value = \"Unknown\" or \"Vehicle\"\n\nSelects 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.\n\nIt is good practice to use a stringtable.csv that should accompany your addon so that\n\n1. All names and labels are in one place instead of hunting for them.\n1. For language differences\n\n```cpp\ndisplayName = \"$STR_DN_AH1Z\";\n```\n\nNote, 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.\n\nSee #nameSound for definition of what is actually 'said'\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage"},{"heading":"displayNameShort","level":6,"markdown":"String:\n\n```cpp\ndisplayNameShort = \"$STR_DN_UH60\";\n```"},{"heading":"driverIsCommander","level":5,"markdown":"Boolean : Default false. When not set, the turret commanding values are used to determine who is the commander. (*source* (dead link))\n\n```cpp\ndriverIsCommander = true;\n```\n\nFor boat, MG Jeep and helicopters\n\nsee #has..."},{"heading":"driverForceOptics","level":5,"markdown":"Boolean\n**Description:** Determines if the driver can freely look around inside the vehicle or if he is locked to looking forward through the hatch/optics.\n\n```cpp\ndriverForceOptics = true;\n```"},{"heading":"driverReversedGetOut (Arma 3 v2.04)","level":5,"markdown":"Integer\n\n**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.\n\n```cpp\ndriverReversedGetOut = 0;\n```"},{"heading":"...DustEffect","level":5,"markdown":"String\n\nDefines the effect that will be spawned at the position of the LandContact points.\n\n```cpp\nleftDustEffect = \"vbs2_fx_lowTrackDustEffects\";\nrightDustEffect = \"vbs2_fx_lowTrackDustEffects\";\n```\n\nsee #...WaterEffect"},{"heading":"E","level":4,"markdown":""},{"heading":"editorCategory","level":5,"markdown":"Eden Editor main category. See Eden Editor: Object Categorization for more details.\n\n```cpp\neditorCategory = \"EdCat_Structures\";\n```"},{"heading":"editorPreview","level":5,"markdown":"Eden Editor preview picture. See Configuring Asset Previews for more details.\n\n```cpp\neditorPreview = \"\\A3\\EditorPreviews_F\\Data\\myObject.jpg\";\n```"},{"heading":"editorSubcategory","level":5,"markdown":"Eden Editor sub-category. See Eden Editor: Object Categorization for more details.\n\n```cpp\neditorSubcategory = \"EdSubcat_Drones\";\n```"},{"heading":"enableGPS","level":5,"markdown":"Boolean: If enabled vehicle will allow crew to use Minimap even if they do not posses GPS terminal.\n\n```cpp\nenableGPS = 1;\n```"},{"heading":"...Elev","level":5,"markdown":"Integer: Degrees\n\n**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.\n\n```cpp\ninitElev = -80;\nminElev = -60;\nmaxElev = 10;\n```\n\npart of any #Turret Class (tanks eg)"},{"heading":"ejectDamageLimit","level":5,"markdown":"Float: If the damage value of the vehicle is higher than the ejectDamageLimit, AI will disembark the vehicle.\n\n```cpp\nejectDamageLimit = 0.75;\n```"},{"heading":"ejectDead...","level":5,"markdown":"Boolean : Default false\n\n```cpp\nejectDeadGunner = false;\nejectDeadCargo = false;\nejectDeadDriver = false;\nejectDeadCommander = false;\n```\n\nCauses that unit to 'unmount' the vehicle. Such as an MG nest, or motorcycle."},{"heading":"ejectSpeed","level":5,"markdown":"Array: Speed vector of ejection seat. Therefore only applies to planes.\n\n```cpp\nejectSpeed[] = { 0, 0, 0 };    // cannot eject in a Cessna\n```"},{"heading":"Embedded ClassNames","level":5,"markdown":"Some Token Names are encountered only within an embedded classname, rather than the main 'vehicle' body.\n\nAn embedded classname conveniently adds a unique feature to the 'vehicle'. Such as smoke, such as, a turret for a tank.\n\nEmbedded 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.\n\nBelow 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."},{"heading":"Hatch... Class","level":6,"markdown":"```cpp\nclass HatchDriver\n{\n    selection = \"poklop_driver\";\n    axis = \"osa_poklop_driver\";\n    angle = -100;\n};\n```"},{"heading":"Indicator... Class","level":6,"markdown":"```cpp\nclass IndicatorSpeed\n{\n    selection = \"ukaz_rychlo\";\n    axis = \"osa_rychlo\";\n    angle = -240;\n    min = 0;\n    max = 60 / 3.6;\n};\n```"},{"heading":"Light Class","level":6,"markdown":"```cpp\nclass Light\n{\n    ambient[] = { 0.3, 0.15, 0.0, 1.0 };\n    brightness = 0.08;\n    color[] = { 1.0, 0.5, 0.0, 1.0 };\n    position = \"ohniste\";\n    shape = \"koulesvetlo\";\n    size = 0.3;\n};\n```"},{"heading":"CargoLight Class","level":6,"markdown":"```cpp\nclass CargoLight\n{\n    ambient[] = { 0.6, 0, 0.15, 1 };\n    brightness = 0.007;\n    color[] = { 0, 0, 0, 0 };\n};\n```"},{"heading":"Reflectors Class","level":6,"markdown":"```cpp\nclass Reflectors : LandVehicle    // old\n{\n    ambient[] = { 0.1, 0.1, 0.1, 1.0 };\n    brightness = 0.25;\n    color[] = { 0.9, 0.8, 0.8, 1.0 };\n    position = \"L svetlo\";\n    size = 0.5;\n    direction = \"konec L svetla\";\n    hitpoint = \"L svetlo\";\n    selection = \"L svetlo\";\n};\n\nclass Reflectors                // new\n{\n    class Light_1\n    {\n        ambient[] = { 10, 10, 11 };\n        color[] = { 1000, 1000, 1100 };\n        size = 1;\n        dayLight = 1;\n        useFlare = 1;\n        intensity = 1;\n        coneFadeCoef = 2;\n        innerAngle = 89;\n        outerAngle = 90;\n        position = \"light_start_memoryPoint\";\n        direction = \"light_end_memoryPoint\";\n        hitpoint = \"\";\n        selection = \"\";\n\n        class Attenuation // see https://community.bistudio.com/wiki/setLightAttenuation\n        {\n            start = 0;\n            constant = 0;\n            linear = 0;\n            quadratic = 0;\n            hardLimitStart = 9;\n            hardLimitEnd = 10;\n        };\n    };\n};\n\n// Arma 3 example value\nclass Reflectors\n{\n    class Left // main landing light\n    {\n        position = \"L svetlo\";\n        direction = \"konec L svetla\";\n        hitpoint = \"L svetlo\";\n        selection = \"L svetlo\";\n        color[] = { 7000, 7500, 10000 }; // R, G, B\n        ambient[] = { 70, 75, 100 }; // R, G, B\n        intensity = 50;\n        size = 1;\n        innerAngle = 15;\n        outerAngle = 65;\n        coneFadeCoef = 10;\n        useFlare = 1;\n        flareSize = 10;\n        flareMaxDistance = 250;\n        dayLight = 0;\n        class Attenuation\n        {\n            start = 0;\n            constant = 0;\n            linear = 1;\n            quadratic = 1;\n            hardLimitStart = 100;\n            hardLimitEnd = 200;\n        };\n    };\n    class LG : Left // left door gunner searchlight\n    {\n        position = \"LG svetlo\";\n        direction = \"konec LG svetla\";\n        hitpoint = \"LG svetlo\";\n        selection = \"LG svetlo\";\n    };\n    class Right : Left // right door gunner searchlight\n    {\n        position = \"P svetlo\";\n        direction = \"konec P svetla\";\n        hitpoint = \"P svetlo\";\n        selection = \"P svetlo\";\n    };\n};\n\n// example red cabin light in helicopter\n\nclass Cabin\n{\n    position = \"cabin_light\";\n    direction = \"cabin_light_dir\";\n    hitpoint = \"cabin_light\";\n    selection = \"cabin_light\";\n    color[] = { 1000, 0, 0 };\n    ambient[] = { 100, 0, 0 };\n    intensity = 5;\n    size = 1;\n    innerAngle = 15;\n    outerAngle = 150;\n    coneFadeCoef = 1;\n    useFlare = 1;\n    flareSize = 0.1;\n    flareMaxDistance = 1;\n    dayLight = 0;\n\n    class Attenuation\n    {\n        start = 0;\n        constant = 0;\n        linear = 1;\n        quadratic = 1;\n        hardLimitStart = 1;\n        hardLimitEnd = 2;\n    };\n};\n```\n\nNotes for Arma 3:\n\nAdd a light to an object in class cfgvehicles.\nEach reflector requires a selection in relevant model vis LODs (e.g. \"L svetlo\") for the flare effect.\nRequires two memory points in memory LOD - light spawn position and direction e.g. position \"L svetlo\" and direction \"konec L svetla\".\n\nThe memory point you assign to position parameter is where the light source itself will be.\nThe one you put to direction is the way your light will shine.\nThe cone itself is set using innerAngle, outerAngle and coneFadeCoef.\ninnerAngle sets the cone in which the light has it is full intensity.\nouterAngle sets the cone outside of which the light has zero intensity.\nconeFadeCoef 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.\nNote 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.\nAs a spot light, reflectors are not made for cones above 180 degrees.\nSome 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.\ncolor[] and ambient[] seem to have changed from RGB from 0-1 to way higher values - see example.\n\nSee setLightAttenuation notes for explanation of attenuation values.\nSee also Arma 3 Cars Config Guidelines - Reflectors\naggregateReflectors are described here [link](https://manuals.bisimulations.com/vbs3/3-6/devref/Content/Config_Manual/CfgVehicles/A_cpp/cpp_aggregateReflectors.htm)"},{"heading":"Smoke Class","level":6,"markdown":"```cpp\nclass Smoke\n{\n    density = 0.5;\n    deltaT = -500;\n    in = 0.0;\n    out = 0.0;\n    initT = 1000;\n    initYSpeed = 1.7;\n    interval = 0.01;\n    size = 0.1;\n    timeToLive = 100000002004087730000.0;\n\n    cloudletDuration = 0.9;\n    cloudletAnimPeriod = 1.0;\n    cloudletSize = 0.1;\n    cloudletAlpha = 0.8;\n    cloudletGrowUp = 0.4;\n    cloudletFadeIn = 0.0;\n    cloudletFadeOut = 5.0;\n    cloudletAccY = -0.1;\n    cloudletMinYSpeed = 0.3;\n    cloudletMaxYSpeed = 1.5;\n    cloudletShape = \"cl_basic\";\n    cloudletColor[] = { 1, 1, 1, 0 };\n\n    class Table\n    {\n        class T1\n        {\n            maxT = 0;\n            color[] = { 0.8, 0.8, 0.8, 1 };\n        };\n        class T2\n        {\n            maxT = 900;\n            color[] = { 0.3, 0.3, 0.3, 1 };\n        };\n        class T3\n        {\n            maxT = 1000;\n            color[] = { 1, 0.5, 0, 0.5 };\n        };\n    };\n};\n```"},{"heading":"Turret Class","level":5,"markdown":"(Tanks eg)\n\n```cpp\nclass TurretBase\n{\n    body = \"OtocVez\";\n    gun = \"OtocHlaven\";\n    gunAxis = \"OsaHlavne\";\n    gunBeg = \"usti hlavne\";\n    gunEnd = \"konec hlavne\";\n    minElev = -4;\n    maxElev = 20;\n    minTurn = -360;\n    maxTurn = 360;\n    soundServo[] = { \"Vehicles\\gun_elevate\", 0.031623, 1.0 };\n    turretAxis = \"OsaVeze\";\n};\n```\n\nFor details see Turret Config Reference"},{"heading":"Embedded TokenNames","level":5,"markdown":"see #Embedded ClassNames"},{"heading":"enableSweep","level":5,"markdown":"Boolean: Default true. Used by Helicopter class\n\n```cpp\nenableSweep = false;    // UH60MG\n```\n\nIs sweeping over the target a valid technique for given helicopter?"},{"heading":"envelope","level":5,"markdown":"Float Array\n\n```cpp\n// lift (G) based on speed\nenvelope[] = {\n    // speed relative to max. speed -> lift\n    // 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\n    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\n};\n```\n\nInfo by [RKSL-Rock](http://forums.bistudio.com/showpost.php?p=2037721&postcount=9):\n\nThe 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.\n\nThe config maxspeed value is only really used by the AI and the engine as a base variable in some calculations.\n\nYou can change the acceleration though by using the envelope command.\nThis will change the vertical speed relative to the maxspeed in the config in steps of 10% of the stated max speed.\n\nThis is the envelope from the RKSL Lynx AH7:\n\n```cpp\nenvelope[] = { 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 };\n```\n\nThere are normally 15 values representing the vertical lift in m/s at 10% steps from 0 to 140% of the max speed.\n\nSo, if the max speed is 500 and the first value is always 0:\n\n2nd value = 50kph and 2.5 m/s vertical speed\n3rd value = 100kph and 3.5 m/s vertical speed\n...\n11th value = 500kph and 4.15 m/s vertical speed\n...\n15th value = 700kph and 1.15 m/s vertical speed.\n\nYou wont affect the top speed but it will make it easier to handle."},{"heading":"EventHandlers... Class","level":5,"markdown":"Pre-defined object Event Handlers. Property with class matches the handler name.\n\n```cpp\nclass EventHandlers\n{\n    init = \"myAddon_object = _this select 0;\";\n};\n```\n\nArma 3 v1.54\nArma 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.\n\n```cpp\nclass EventHandlers\n{\n    class MyAddon\n    {\n        init = \"myAddon_object = _this select 0;\";\n    };\n    class YourAddon\n    {\n        init = \"yourAddon_object = _this select 0;\";\n    };\n};\n```"},{"heading":"extCameraPosition[]","level":5,"markdown":"float Array: { X, Z, Y }; Default { 0, 2, -20 };\n\nExternal (third-person) camera offset relative to the vehicle's `aimpoint` memory point, around which the camera orbits.\n\n```cpp\nextCameraPosition[] = { 0, 5, -30 };                // plane\nextCameraPosition[] = { 0, 1, -10 };                // cars\nextCameraPosition[] = { 0, 1.500000, -9 };            // tanks\nextCameraPosition[] = { 0, 0.300000, -3.500000 };    // man\n```"},{"heading":"extCameraParams[]","level":5,"markdown":"float Array: Default { 0.5, 10, 50, 0.5, 1, 10, 30, 0, 1 };\n\nSmoothing of external camera movement\n\nextCameraParams[] = { multFactor, speedMin, speedMax, factorSpeeedMin, factorSpeeedMax, heightMin, heightMax, factorHeightMin, factorHeightMax };\n\nfactor = multFactor * interpolate(speed, speedMin, speedMax, factorSpeeedMin, factorSpeeedMax) * interpolate(heightAGL, heightMin, heightMax, factorHeightMin, factorHeightMax)\n\nfactor == 0 -> camera follow horizon\n\nfactor == 1 - > camera follow vehicle heading\n\nfactor (0, 1) interpolation between horizon and vehicle heading\n\n```cpp\nextCameraParams[] = { 0.5, 10, 50, 0.5, 1, 10, 30, 0, 1 }; // helicopters & UAV\n```\n\nto force the old external camera behavior\n\n```cpp\nextCameraParams[] = { -1 }\n```"},{"heading":"F","level":4,"markdown":""},{"heading":"featureType","level":5,"markdown":"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.\n\n```cpp\nfeatureType = 2;\n```"},{"heading":"minFireTime","level":5,"markdown":"Integer: Default 20 seconds\n\n```cpp\nminFireTime = 20;\n```\n\nMinimal time spent firing on single target."},{"heading":"fired","level":5,"markdown":"String: Event Handlers\n\n```cpp\nfired = \"_this exec \"\"\\AnyAddon\\AnySQS.sqs\"\"\";    // note the \"\"\n```"},{"heading":"flapsFrictionCoef","level":5,"markdown":"Float: Default 0.5\n\n```cpp\nflapsFrictionCoef = 2;    // can be integer too.\n```"},{"heading":"forceHide...","level":5,"markdown":"Boolean : Default false\n\n```cpp\nforceHideDriver = true;    // shilka\nforceHideGunner = true;    // tank\nforceHideCommander = true;\n```\n\nDisables the turnout option for that particular crew member"},{"heading":"forceSupply","level":5,"markdown":"Boolean : Default\n\n```cpp\nforceSupply = true;\n```\n\nFound only in Weapon holders. Is used to make the weaponholder disappear when empty."},{"heading":"formation...","level":5,"markdown":"Integer:\n\n```cpp\nformationX = 10;    // default meters\nformationZ = 20;    // default meters\nformationTime = 10;    // default seconds\n```\n\nOne or both X Z values are used to keep objects separated (in meters) depending on\nwedge, echelon, V, single line, formations."},{"heading":"fov","level":5,"markdown":"Float\n\n```cpp\nfov = 0.85;    // Cessna\nfov = 0.85;    // man\nfov = 1.0;    // truck\n```"},{"heading":"...Fov","level":5,"markdown":"Float\n\n```cpp\nminFov = 0.420000;    // man\nmaxFov = 0.850000;\nminFov = 0.600000;    // truck\nmaxFov = 1.400000;\n```\n\nalso used by ViewPilot Classes"},{"heading":"fuelCapacity","level":5,"markdown":"Float: Default Value 0. Has nothing to do with liters.\n\nArma 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.\n\nA2 examples:\n\n```cpp\nfuelCapacity = 50;    // motorcycle\nfuelCapacity = 100;    // car\nfuelCapacity = 700;    // tank\nfuelCapacity = 1000;// air\n```\n\nThe required fuelCapacity value to achieve a specific operation TIME (in seconds) at a specific engine RPM (revolution per minute) can be estimated with:\n\n```cpp\nfuelCapacity = (8E-7 * RPM + 0.001) * TIME\n```"},{"heading":"fuelConsumptionRate","level":5,"markdown":"Integer: Default Value 0.01. Has no units. Works only on helicopters."},{"heading":"G","level":4,"markdown":""},{"heading":"_generalMacro","level":5,"markdown":"String: in Arma 3. Has no purpose whatsoever. It is generated automatically by BI developer tools for debugging.\n\n> « 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](https://forums.bohemia.net/forums/topic/179378-what-does-_generalmacro-do/))"},{"heading":"getIn....ActionNamedSel","level":5,"markdown":"String: Named selection for get in actions working in same principle as actionNamedSel in UserActions. Available variants:\n\n```cpp\ngetInDriverActionNamedSel\ngetInGunnerActionNamedSel\ngetInCommanderActionNamedSel\ngetInCargoActionNamedSel\ngetInTurretActionNamedSel\ngetInUnitActionNamedSel\n```"},{"heading":"...Gun...","level":5,"markdown":"Integer:degrees\n\n```cpp\nminGunElev = -60;\nmaxGunElev = 60;\nminGunTurn = -5;\nmaxGunTurn = 5;\nminGunTurnAI = -30;\nmaxGunTurnAI = 30;\n```"},{"heading":"...GunnerMayFire","level":5,"markdown":"Boolean: Default false\n\n```cpp\noutGunnerMayFire = true;    // m113\ninGunnerMayFire = false;\n```"},{"heading":"...GunClouds Class","level":5,"markdown":"This is a reference to the external WeaponCloudsGun classes\n\nmost models simply inherit the defaults\n\n```cpp\nclass GunClouds : WeaponCloudsGun {};\nclass MGunClouds : WeaponCloudsMGun {};\n```\n\nhere is an example of over-rides for class man\n\n```cpp\nclass GunClouds : WeaponCloudsGun\n{\n    cloudletGrowUp = 0.200000;\n    cloudletFadeIn = 0;\n    cloudletFadeOut = 0.400000;\n    cloudletDuration = 0.200000;\n    cloudletAlpha = 1;\n    cloudletAccY = 2;\n    cloudletMinYSpeed = -10;\n    cloudletMaxYSpeed = 10;\n    interval = 0.020000;\n    size = 0.300000;\n    sourceSize = 0.015000;\n};\n```"},{"heading":"...GunFire Class","level":5,"markdown":"This is a reference to the external WeaponFireGun classes\n\nmost models simply inherit the defaults\n\n```cpp\nclass GunFire : WeaponFireGun {};\nclass MGunFire : WeaponFireMGun {};\n```"},{"heading":"gearbox[]","level":5,"markdown":"Array\n\n**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.\n\n```cpp\ngearbox[] = { -18, 0, 110, 16.15, 14.44, 13.33 };\n```"},{"heading":"gearRetracting","level":5,"markdown":"Boolean: Default true\n\n```cpp\ngearRetracting = false;    // Cessna\n```\n\nmore correctly viewed as HasRetractingGear."},{"heading":"gestures","level":5,"markdown":"String:\n\nSame as moves but refers to a gestures class\n\n```cpp\ngestures = \"CfgGesturesMale\";\n```"},{"heading":"gun","level":5,"markdown":"String:\n\n```cpp\ngun = \"OtocHlaven\";\n```\n\nsee #Turret Class"},{"heading":"gunAimDown","level":5,"markdown":"Float\n\n**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).\n\n```cpp\ngunAimDown = 0.07;\n```"},{"heading":"gunAxis","level":5,"markdown":""},{"heading":"gunBeg","level":5,"markdown":""},{"heading":"gunEnd","level":5,"markdown":"see #Turret Class"},{"heading":"gunnerHasFlares","level":5,"markdown":"Boolean\n\n```cpp\ngunnerHasFlares = false;\n```"},{"heading":"gunnerName","level":5,"markdown":"String\n\n```cpp\ngunnerName = \"$STR_POSITION_CREWCHIEF\";\n```"},{"heading":"gunnerOutOptics...","level":5,"markdown":"String\n\n```cpp\ngunnerOutOpticsModel = \"\";\n```\n\nArray\n\n```cpp\ngunnerOutOpticsColor[] = { 0, 0, 0, 1 };\n```\n\nBoolean\n\n```cpp\ngunnerOutForceOptics = false;\n```\n\nBoolean\n\n```cpp\ngunnerOutOpticsShowCursor = false;\n```"},{"heading":"gunnerType","level":5,"markdown":"String\n\nPart of #Turret class.\n\nDefines 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.\n\n```cpp\nclass MyHelicopter : B_Heli_Transport_01_F\n{\n    class Turrets : Turrets\n    {\n        class MyTurret : MainTurret\n        {\n            gunnerType = \"B_RangeMaster_F\";\n        };\n    };\n};\n```\n\nBecause 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."},{"heading":"H","level":4,"markdown":""},{"heading":"HeadAimDown","level":5,"markdown":"Float: Default: 0.\n\nHow much to tilt the driver's head forward in degrees.\n\n```cpp\nHeadAimDown = 10;    // tilt driver's head forward 10 degrees.\n```"},{"heading":"...Height","level":5,"markdown":"Integer:\n\n```cpp\nminHeight = 5;    // Min height in metres above sea-level.\nmaxHeight = 50;    // Max height above sea level.\navgHeight = 10;\n```"},{"heading":"has...","level":5,"markdown":"Boolean:\n\n```cpp\nhasDriver = true;        // default\nhasGunner = false;        // default\nhasCommander = true;    // default\n```\n\nDepending on vehicle model.\n\nControls the \"get in\" commands.\n\nSince 1.82 there is alternative syntax available for hasDriver property\n\n```cpp\nhasDriver = -1;    // t80auto\n```\n\nThis will disable driver seat and add control ability to commander (turret with highest commanding value aka seat with highest effectiveCommander value)\n\nsee #driverIsCommander"},{"heading":"...HeadTurnAI","level":5,"markdown":"Integer Degrees\n\n```cpp\nminHeadTurnAI = -70;    // man class\nmaxHeadTurnAI = 70;\n```"},{"heading":"hiddenSelections","level":5,"markdown":"String Array: Default none.\n\nHere 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):\n\nAside 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.\n\n```cpp\nhiddenSelections[] = { \"pruh\" }; // bmp/tank\n```\n\nTry `this setObjectTexture [0, \"\\data\\duha.pac\"];` in the initline of a BMP and you'll see which parts are meant by the selection \"pruh\".\n\nDon'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)."},{"heading":"hide...","level":5,"markdown":"Boolean\n\n```cpp\nhideProxyInCombat        = false;    // default (true for tanks); if true, disables turn-in option for all crew\nhideUnitInfo            = false;    // default see [[#unitInfoType]]\nhideWeaponsCargo        = false;    // default\nhideWeaponsCommander    = true;        // default\nhideWeaponsDriver        = true;        // default\nhideWeaponsGunner        = true;        // default\n```"},{"heading":"hitpoint","level":5,"markdown":"String:\n\n```cpp\nhitpoint = \"L svetlo\";\n```\n\nSee #Reflectors Class"},{"heading":"hitSound...","level":5,"markdown":"```cpp\nhitSound1[] = { \"voices\\Hit11\", 0.056234, 1 };\n...\nhitSound20[] = { \"voices\\Hit30\", 0.056234, 1 };\n...\nhitSounds[] = { \"hitSound1\", 0.05, \"hitSound2\", 0.05, ...\n```\n\nhitSounds is used by the engine to reference user generated hitSound...s\n\nthere is no limit to the number of user-generated sounds."},{"heading":"hour","level":5,"markdown":"part of the IndicatorWatch class\n\n```cpp\nclass IndicatorWatch\n{\n    hour = \"hodinova\";\n    minute = \"minutova\";\n    axis = \"osa_time\";\n    reversed = 0;\n};\n```"},{"heading":"hullExplosionDelay","level":5,"markdown":"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\n\n```cpp\nhullExplosionDelay[] = { 10, 20 };\n```"},{"heading":"hullDamageCauseExplosion","level":5,"markdown":"Integer: Determines if vehicle explodes after HitHull is above 0.9\n\n```cpp\nhullDamageCauseExplosion = 1; // vehicle will explode if HitHull is above 0.9\n```"},{"heading":"I","level":4,"markdown":""},{"heading":"icon","level":5,"markdown":"String: Default Value = \"unknown_object.paa\"\n\nThis 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)\n\nThe icon can be any jpg, paa, or pac file. paa is default. Note that Elite cannot handle jpegs.\n\n```cpp\nicon = \"\\AnyAddon\\AnyPAA(.paa)\";\n```\n\nRelated TokenName(s): #mapSize"},{"heading":"in/out","level":5,"markdown":"Float: These TokenNames are used inside the #Smoke Class\n\n```cpp\nin = 0.0;\nout = 0.0;\n```"},{"heading":"init","level":5,"markdown":"String: Event Handlers\nThe 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).\n\n```cpp\ninit = \"[(_this select 0)] exec \"\"\\AnyAddon\\AnySqs.sqs\"\"\";\n```"},{"heading":"initT","level":5,"markdown":"Integer: This TokenName is used inside the #Smoke Class\n\n```cpp\ninitT = 1000;\n```"},{"heading":"initYSpeed","level":5,"markdown":"Float: This TokenName is used inside the #Smoke Class\n\n```cpp\ninitYSpeed = 1.7;\n```"},{"heading":"insideSoundCoef","level":5,"markdown":"Float: default 0.5\n\n```cpp\ninsideSoundCoef = 0.05;    // air vehicles are 2%\n```"},{"heading":"interval","level":5,"markdown":"Float: This TokenName is used inside the #Smoke Class\n\n```cpp\ninterval = 0.01;\n```"},{"heading":"irScanGround","level":5,"markdown":"Boolean: Default true.\n\nProbaly used to stop ai looking down\n\n```cpp\nirScanGround = false;    // tanks\n```"},{"heading":"irScanRange...","level":5,"markdown":"Integer: Default 0\n\n```cpp\nirScanRange = 4000;        // outdated (since Resistance)\nirScanRangeMin = 500;    // tanks general\nirScanRangeMax = 4000;\nirScanRangeMin = 2000;    // air\nirScanRangeMax = 10000;\nirScanRangeMin = 4000;    // a vulcan\nirScanRangeMax = 10000;\n```"},{"heading":"irScanToEyeFactor","level":5,"markdown":"Integer: Default 1\n\n```cpp\nirScanToEyeFactor = 2;    // air\nirScanToEyeFactor = 5;    // shilka\n```"},{"heading":"irTarget","level":5,"markdown":"Boolean: Default true.\n\nUsed 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.\n\nDisabling 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.\n\n```cpp\nirTarget = false;    // man\n```"},{"heading":"isBicycle","level":5,"markdown":"Boolean: Default false.\n\nthis value inside the motorcycle class is used to turn it on when inheriting to a real bicycle"},{"heading":"isMan","level":5,"markdown":"Boolean: Default true.\n\n```cpp\nisMan = 1;\n```\n\nDefined within the man class"},{"heading":"K","level":4,"markdown":""},{"heading":"killed","level":5,"markdown":"String: Event Handlers\n\n```cpp\nkilled = \"[(_this select 0), 1, 1, 0, 0] exec \"\"\\AnyAddon\\AnySQS.sqs\"\"\";    // note the \"\"\n```"},{"heading":"L","level":4,"markdown":""},{"heading":"ladders","level":5,"markdown":"Embedded Array: The ladders array is used to declare one or more ladder pairs inside the model.\n\n```cpp\nladders[] = { {\"start\", \"end\" } };                            // a building with one ladder\nladders[] = { {\"start1\", \"end1\" }, {\"start2\", \"end2\" } };    // two ladder building\n// ...etc\n```\n\nNote that unfortunately, the 'start' and 'end' labels are arbitrary for *each* model. You cannot have a generic ladder building as such.\n\nSince 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\n\n```cpp\n// { Starting point (memory LOD), Ending point (memory LOD), radius (in meters), Named Selection (geometry LOD) }\nladders[] = { { \"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\" } };\n```"},{"heading":"laser...","level":5,"markdown":"Boolean: Default false\n\nDetermines if a vehicle has laser capability.\n\n```cpp\nlaserScanner = true;\nlaserTarget = true;    // used as a generic class of All {} to default things true\n```"},{"heading":"landingAoa","level":5,"markdown":"MathFormula String Default 10*3.1415/180\n\nLanding Angle of Approach. Used by plane class\n\n```cpp\nlandingAoa = 7*3.1415/180;    // Cessna\n```"},{"heading":"landingSpeed","level":5,"markdown":"Integer: Default 0 Kph.\n\n```cpp\nlandingSpeed = 75;    // plane vehicles\n```"},{"heading":"library","level":5,"markdown":"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:\n\n```cpp\nclass Library\n{\n    libTextDesc = \"$STR_LIB_AH1Z\";\n};\n```"},{"heading":"LODDriverTurnedIn","level":5,"markdown":"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).\n\n```cpp\nLODDriverTurnedIn = -1\n```\n\nValue:\n\n- -1 = Default LOD\n- 1 = first resolution LOD\n- 1000 = Gunnerview\n- 1100 = Pilotview\n- 1200 = Cargoview."},{"heading":"LODDriverTurnedOut","level":5,"markdown":"Integer Defines the LOD that is to be used when the Driveris turned out. The same rules as with LODDriverTurnedIn apply.\n\n```cpp\nLODDriverTurnedOut = -1\n```"},{"heading":"M","level":4,"markdown":""},{"heading":"magazine","level":5,"markdown":"Array: used in TransportMagazines class this specifies the type of ammo in the magazine and the amount.\n\n```cpp\n{\n    magazine = \"30Rnd_556x45_Stanag\";\n    count = \"30*1\";\n}\n```\n\nEach of these couplets are contained within a 'weapon' classname within the magazine*S* class itself. Example\n\n```cpp\nclass TransportMagazines\n{\n    class _xx_M16\n    {\n        magazine = \"M16\";\n        count = 30 * 1;\n    };\n    class _xx_M60\n    {\n        // ...\n    };\n    class _xx_PK\n    {\n        // ...\n    };\n    // ...\n};\n```"},{"heading":"magazines","level":5,"markdown":"Variable string Array: default {}\n\nsee #weapons for proper description"},{"heading":"mapSize","level":5,"markdown":"Float: Default Value = 10 (meters).\n\nUsed for the map editor to show the icon associated with this model class.\n\nThere is no x y component to this, the measurement units are meters.\n\nTo create a circular, rectangular or other 'non square' image, you need to make a pac file for the icon with, a transparent layer.\n\n```cpp\nmapSize = 0.7;    // small object such as a tree\nmapSize = 4;    // a smallish building\n```\n\nThe 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 !!!\n\nLater Oem addons, *generally* are better and more specific in this regard, making position and fitting a little easier."},{"heading":"marker","level":5,"markdown":"String : used as a core for all other air craft when looking on map.\n\n```cpp\nmarker = \"\\AnyAddon\\AnyP3d.(p3d\")\";\n```"},{"heading":"material","level":5,"markdown":"Integer:\n\nUsed in Hit... classes, eg HitTurret HitBody\n\n```cpp\nmaterial = 50;\n```\n\nRelated TokenNames: #armor (float), #material, #name, #passThrough"},{"heading":"maximumLoad","level":5,"markdown":"The maximumLoad value defines the number of units of cargo storage.\n\n```cpp\nmaximumLoad = 2000;\n```\n\nAn item's storage value (the amount of space it takes up) is defined by it is mass value. For example:\n\n```cpp\n// CfgMagazines >> \"Titan_AT\"\nmass = 100;\n```\n\nThe following parameter are used by just Eden:\n\n```cpp\ntransportMaxMagazines\ntransportMaxWeapons\ntransportMaxBackpacks\n```"},{"heading":"maxT","level":5,"markdown":"Integer: This TokenName is used inside the #Smoke Class\n\n```cpp\nmaxT = 0;\n```"},{"heading":"min/max","level":5,"markdown":"String Degrees Math Formula\n\n```cpp\nmin = 0;\nmax = 60 / 3.6;\n```\n\nNote for readability, these values are *normally* expressed as strings which the engine itself will convert.\n\nsee Indicator Class"},{"heading":"memoryPointExhaust...","level":5,"markdown":"String:\n\n```cpp\nmemoryPointExhaust = \"exhaust_start\";\nmemoryPointExhaustDir = \"exhaust_end\";\n```"},{"heading":"memoryPointGun","level":5,"markdown":"String:\n\n```cpp\nmemoryPointGun = \"machinegun\";\n```"},{"heading":"memoryPointGunnerOptics","level":5,"markdown":"String\n\n```cpp\nmemoryPointGunnerOptics = \"gunnerview\";\n```"},{"heading":"memoryPointGunnerOutOptics","level":5,"markdown":"String\n\n```cpp\nmemoryPointGunnerOutOptics = \"commander_weapon_view\";\n```"},{"heading":"memoryPoint...Missile","level":5,"markdown":"String:\n\n```cpp\nmemoryPointLMissile = \"Missile_1\";\nmemoryPointRMissile = \"Missile_2\";\n```"},{"heading":"memoryPoint...Rocket","level":5,"markdown":"String:\n\n```cpp\nmemoryPointLRocket = \"Rocket_1\";\nmemoryPointRRocket = \"Rocket_2\";\n```"},{"heading":"memoryPointsGetIn...","level":5,"markdown":"String:\n\n```cpp\nmemoryPointsGetInCargo = \"pos_cargo\";\nmemoryPointsGetInCoDriver = \"pos_codriver\";\nmemoryPointsGetInCommander = \"pos_commander\";\nmemoryPointsGetInDriver = \"pos_driver\";\nmemoryPointsGetInGunner = \"pos gunner\";\n```"},{"heading":"memoryPointsGetIn...Dir","level":6,"markdown":"String:\n\n```cpp\nmemoryPointsGetInCargoDir = \"pos_cargo_dir\";\nmemoryPointsGetInCoDriverDir = \"pos_codriver_dir\";\nmemoryPointsGetInCommanderDir = \"pos_commander_dir\";\nmemoryPointsGetInDriverDir = \"pos_driver_dir\";\nmemoryPointsGetInGunnerDir = \"pos gunner dir\";\n```"},{"heading":"memoryPointSupply","level":5,"markdown":"String:\n\n```cpp\nmemoryPointSupply = \"supply\";\n```"},{"heading":"memoryPointTrack...","level":5,"markdown":"String:\n\n```cpp\nmemoryPointTrackFLL = \"tyreTrack_1_1l\";\nmemoryPointTrackFLR = \"tyreTrack_1_1r\";\nmemoryPointTrackBLL = \"tyreTrack_1_2l\";\nmemoryPointTrackBLR = \"tyreTrack_1_2r\";\nmemoryPointTrackFRL = \"tyreTrack_2_1l\";\nmemoryPointTrackFRR = \"tyreTrack_2_1r\";\nmemoryPointTrackBRL = \"tyreTrack_2_2l\";\nmemoryPointTrackBRR = \"tyreTrack_2_2r\";\n```"},{"heading":"microMimics","level":5,"markdown":"String: Man class\n\nThis token refers to the class within the external cfgMimics class\n\n```cpp\nmicroMimics = \"Micro\";\n```"},{"heading":"minute","level":5,"markdown":"part of the IndicatorWatch class\n\nsee #hour"},{"heading":"model","level":5,"markdown":"String: Default Value= \"empty.p3d\"\n\nLocation in the addon where the p3d model resides.\n\n```cpp\nmodel = \"\\AddonName\\anyp3d(.p3d)\";\n```\n\nWhere a class is not a visible 'object', such as a BaseClass. You can specify\n\n```cpp\nmodel = \"\";\n```\n\nthis cuts down on load and access.\n\nRelated TokenName: #simulation, #reversed"},{"heading":"moves","level":5,"markdown":"String: Default = \"NoDefaultMoves\"\n\napplies to the man class and refers to a cfgMoves class\n\n```cpp\nmoves = \"CfgMovesMC\";    // civilian, in fact, there isn't another\n```"},{"heading":"N","level":4,"markdown":""},{"heading":"...NightLights...","level":5,"markdown":"Float:\n\n```cpp\nspotableNightLightsOff = 0.05;    // default\nspotableNightLightsOn = 4;        // default\nvisibleNightLightsOff = 0.1;    // default\nvisibleNightLightsOn = 0.2;        // default\n```"},{"heading":"name","level":5,"markdown":"String:\n\n```cpp\nname = \"motor\";\n```\n\nUsed in Hit... classes, eg HitTurret HitBody\n\nRelated TokenNames: #armor (float), #material, #name, #passThrough"},{"heading":"nameSound","level":5,"markdown":"String: Default value: \"Target\"\n\nNamesound 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*.\n\n```cpp\nnameSound = \"rock\";\n```\n\nMany different nameSounds can be selected. Here are just a few.\n\n```cpp\nnameSound = \"crew\";\nnameSound = \"target\";\nnameSound = \"tank\";\nnameSound = \"house\";\n```\n\nThe actual descriptive text accompanying the 'sound' can be different see #displayName\n\nTypically, a collection of buildings (eg) will be configured as follows\n\n```cpp\nclass GenBuilding : NonStrategic\n{\n    scope = private; // internal use only\n    VehicleClass = \"Some Editor Group Name\";\n    nameSound = \"house\";\n};\nclass YellowBuilding : GenBuilding\n{\n    scope = public;\n    name = \"YellowBuilding\";\n    model = \"Some yellow building.p3d\";\n};\n```\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage"},{"heading":"noseDownCoef","level":5,"markdown":"Float: Default 1.0 used by Plane class\n\n```cpp\nnoseDownCoef = 0.025;    // Cessna\n```\n\nHow much the nose drops when banking.\n\n*Note: Not used in ArmA any more*"},{"heading":"nightVision","level":5,"markdown":"Boolean: Default false\n\n```cpp\nnightVision = true;\n```\n\npresent in lawsoldier, sniper, saboteur, tank, and air crew\n\n*Note: obsolete, not used, NVG item is used instead*"},{"heading":"O","level":4,"markdown":""},{"heading":"...OpticsColor","level":5,"markdown":"Float Array : Default {0, 0, 0, 1};\n\n```cpp\ndriverOpticsColor[] = { 0, 0, 0, 1 };\ngunnerOpticsColor[] = { 0.910000, 0.230000, 0.230000, 1 };\ncommanderOpticsColor[] = { 0.910000, 0.230000, 0.230000, 1 };\n```"},{"heading":"...OpticsModel","level":5,"markdown":"String: Default \"\"\n\n```cpp\ncommanderOpticsModel= \"\\AnyPbo\\AnyP3d(.p3d)\";\ndriverOpticsModel = \"\\AnyPbo\\AnyP3d(.p3d)\";\ngunnerOpticsModel= \"\\AnyPbo\\AnyP3d(.p3d)\";\n```"},{"heading":"gunnerOpticsShowCursor","level":5,"markdown":"Boolean\n\n```cpp\ngunnerOpticsShowCursor = true;\n```"},{"heading":"P","level":4,"markdown":""},{"heading":"passThrough","level":5,"markdown":"Boolean: Default true\n\nIf true, destroying this part of the vehicle will destroy the whole vehicle. If false, damage will only affect this part of the vehicle.\n\nThis value is only taken into account in Arma 2. It was ignored by the game engine in previous games (that includes OFP).\n\n```cpp\npassThrough = 1;\n```\n\nUsed in Hit... classes, eg HitTurret HitBody\n\nRelated TokenNames: #armor (float), #material, #name, #passThrough"},{"heading":"picture","level":5,"markdown":"String: Default: iaston.paa\n\nI think this is for briefing Information icon click\n\n```cpp\npicture = \"\\AnyAddon\\AnyPAA(.paa)\";\n```\n\n\"Picture\" is used in config.cpp to display the 128 x 64\ngraphic file of the unit in the HUD and the bottom\nof the screen while in game. A .pac file can be used\nalso. If using a .pac make your alpha channel pink -\nRGB 255, 0, 255. Pink is invisible in .pac file."},{"heading":"pilotLight","level":5,"markdown":"Boolean: Default: false\n\nDefault state of headlights on vehicle.\n\n```cpp\npilotLight = true; // spawn vehicle with headlights on\n```"},{"heading":"position","level":5,"markdown":"String:\n\n```cpp\nposition = \"ohniste\";\nposition = \"L svetlo\";\n```\n\nSee #Reflectors Class, #Light Class"},{"heading":"precision","level":5,"markdown":"```cpp\nprecision = 1;        // man\nprecision = 200;    // air\nprecision = 50;        // boat\n```"},{"heading":"...preciseGetInOut","level":5,"markdown":"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.\n\n```cpp\npreciseGetInOut = 0;        // for vehicle crew\ncargoPreciseGetInOut = 0;    // for passengers\n```"},{"heading":"preferRoads","level":5,"markdown":"Boolean: Default false\n\n```cpp\npreferRoads = true;    // all vehicles\n```"},{"heading":"primary","level":5,"markdown":"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.)\n\n```cpp\nprimary = true;\n```"},{"heading":"primary...","level":5,"markdown":"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.\n\n```cpp\nprimaryGunner = false;\nprimaryObserver = true;    // Commander\n```"},{"heading":"proxyIndex","level":5,"markdown":"Integer\n\n```cpp\nproxyIndex = 2;\n```"},{"heading":"proxyType","level":5,"markdown":"String\n\n```cpp\nproxyType = \"CPCommander\";\n```"},{"heading":"R","level":4,"markdown":""},{"heading":"...Radius","level":5,"markdown":"Float:\n\nRepresents a circular area (radius in meters from **centre** of object for action to take place\n\n```cpp\ngetInRadius = 2.5;    // default\ngetInRadius = 3.5;    // tank\ngetInRadius = 10;    // ship\n\nsupplyRadius = 2.5;    // for fuel dumps ammo trucks etc\n```"},{"heading":"...RotorSpeed","level":5,"markdown":"Float: Helicopters\n\n```cpp\nmainRotorSpeed = 1.0;    // default\nbackRotorSpeed = 1.5;    // default\n\nmainRotorSpeed = 1.0;    // ch47d\nbackRotorSpeed = -1.0;\n```"},{"heading":"...RotorDive","level":5,"markdown":"Float: Helicopters, Default 0.0\n\n```cpp\nminMainRotorDive = -9;    // CH47D\nmaxMainRotorDive = 15;\nneutralMainRotorDive = -5;\nminBackRotorDive = -15;\nmaxBackRotorDive = 9;\nneutralBackRotorDive = -5;\n```"},{"heading":"ReloadAnimations Class","level":5,"markdown":"General useage in Helicopters, this class is 'looked for' by the engine. Various models, but normally only one, are specified as follows\n\n```cpp\nclass ReloadAnimations\n{\n    class SomeThingA\n    {\n        // ...\n    };\n    // ...\n    class SomeThingZ\n    {\n        // ...\n    };\n};\n```\n\nhere is an example for an Mi24 helicopter\n\n```cpp\nclass MachineGun30E\n{\n    weapon = \"MachineGun30E\";\n    angle0 = 0;\n    angle1 = -2 * 3.141592654;\n    multiplier = 500;\n    type = \"rotation\";\n    animPeriod = 0.500000;\n    selection = \"gatling\";\n    begin = \"usti hlavne\";\n    end = \"konec hlavne\";\n};\n```"},{"heading":"rotL/R","level":5,"markdown":"defined within a tank.Wheels class to describe the series of small wheels on each side\n\n```cpp\nrotR[] = { kolL1, kolL2, kolL3, kolL4, kolL5, kolL6, kolL7, kolL8 };\nrotL[] = { kolP1, kolP2, kolP3, kolP4, kolP5, kolP6, kolP7, kolP8 };\nupDownL[] = { koloP1, podkoloP1, koloP2, podkoloP2, koloP3, podkoloP3, koloP4, podkoloP4, koloP5, podkoloP5, koloP6, podkoloP6, koloP7, podkoloP7, koloP8, podkoloP8 };\nupDownR[] = { koloL1, podkoloL1, koloL2, podkoloL2, koloL3, podkoloL3, koloL4, podkoloL4, koloL5, podkoloL5, koloL6, podkoloL6, koloL7, podkoloL7, koloL8, podkoloL8 };\n```"},{"heading":"reversed","level":5,"markdown":"Boolean: Default true\n\nNormally, 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\n\n```cpp\nreversed = false;    // class thing\n```"},{"heading":"rotor...","level":5,"markdown":"String: Helicopters\n\n```cpp\nrotorBig = \"vrtule_velka\";    // cobra\nrotorBigBlend = \"vrtule_velka_bl\";\nrotorSmall = \"vrtule_mala\";\nrotorSmallBlend = \"vrtule_mala_bl\";\n```"},{"heading":"S","level":4,"markdown":""},{"heading":"...Sensitivity","level":5,"markdown":"Float: Default 1.0 Used by Plane Class\n\n```cpp\naileronSensitivity = 0.33;        // Cessna\nelevatorSensitivity = 0.1;        // Cessna\nwheelSteeringSensitivity = 1.0;    // default\n```"},{"heading":"...Simul/Plan","level":5,"markdown":"Float: in meters\n\n```cpp\nsteerAheadSimul = 0.5;    // default\nsteerAheadPlan = 0.35;    // default\nsteerAheadSimul = 0.2;    // man\nsteerAheadPlan = 0.2;\n\npredictTurnSimul = 1.2;    // default\npredictTurnPlan = 1.2;    // default\npredictTurnSimul = 3;    // ship\npredictTurnPlan = 3;\n```"},{"heading":"scope","level":5,"markdown":"Integer: Default value is 0 (private).\n\n```cpp\nscope = 2;\n```\n\nScope 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).\n\nDefines normally exist at the top of a well written config.cpp to make meanings clearer.\n\n```cpp\n#define private 0\n#define protected 1\n#define public 2\n```\n\nThe meaning of each is as follows\n\n**private:**\n\nNo 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.\n\nprivate is a common method of grouping base characteristics together and inheriting all those common characteristics into a class that can be viewed or accessed.\n\n**public:**\n\nPublic classes are usable in scripting commands (such as createVehicle) and can be shown in the Mission Editor.\n\n**protected:**\n\nIdentical to public, except the class will not be listed in the Mission Editor. A very common form of use for this is\n\n```cpp\nclass Vegetables\n{\n    scope = protected;\n    VehicleClass = \"Fruit and Onions\";    // a generic group in mission editor\n    displayName = \"Generic Vegetable\";\n    namesound = \"whatever\";\n    icon = \"vegetableIcon.paa\";\n    // put any other common characteristics in here\n};\nclass GreenOnions : Vegetables\n{\n    scope = public;\n    displayName = \"Green Onion\";\n}\nclass PurpleOnion : Vegetables\n{\n    ....\n}\n```\n\nThe effect here is to reduce (considerably) not only the amount of typing, but memory storage too.\n\nIt is only the public classes that are listed in the Mission Editor.\n\nSo 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\"\n\nIn the above example, it is just as useful to declare the base class '*private*. But, see below, and see #accuracy\n\nProtected classes are CamCreatable in the mission.sqm.\n\nProtected 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\n\n```cpp\nclass OriginalThing\n{\n    scope = protected;\n    // ...\n    // lots of original things\n    // ...\n};\nclass ImprovedThing : OriginalThing // inherits it all\n{\n    scope = public;\n    // ...\n    // lots of new improved things\n    // ...\n};\n```\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage"},{"heading":"secondaryExplosion","level":5,"markdown":"Integer: Default disabled (-1)\n\n```cpp\nsecondaryExplosion = -1;\n```"},{"heading":"sensitivity","level":5,"markdown":"Float: Default 1.0\n\n```cpp\nsensitivity = 0.6;    // cars\nsensitivity = 2;    // sniper\n```\n\nThe higher the sensitivity value for an unit, the better it can see.\n\nThe 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).\n\n1 equals roughly to 100 meters, 2.5 to 210m, 3 to 250m.\n\nOA 1.62 state:\n\n```cpp\nclass All\n    sensitivity = 2.5;\n    sensitivityEar = 0.0075;\nclass AllVehicles : All\nclass Land : AllVehicles\nclass LandVehicle : Land\nclass Car : LandVehicle\n    sensitivity = 3;\nclass Motorcycle : LandVehicle\n    sensitivity = 3;\nclass Bicycle : Motorcycle\nclass Tank : LandVehicle\n    sensitivityEar = \"0.0075 /3\";\nclass APC : Tank\nclass Man : Land\n    sensitivity = 3;\n    sensitivityEar = 0.5;\nclass Animal : Man\nclass Air : AllVehicles\nclass Helicopter : Air\nclass Plane : Air\nclass Ship : AllVehicles\nclass AH6X_EP1 : AH6_Base_EP1\n    sensitivity = 2;\nclass Ka137_Base_PMC : Helicopter\n    sensitivity = 2;\n```"},{"heading":"sensitivityEar","level":5,"markdown":"Float: Default 0.0075\n\nSets how well can the given unit hear others.\nThe bigger the value, the better the hearing.\n\n```cpp\nsensitivityEar = 0.13;    // man\n```"},{"heading":"selection","level":5,"markdown":"String:\n\n```cpp\nselection = \"L svetlo\";\n```\n\nSee #Reflectors Class, #ReloadAnimations Class (Arma Only), #Hatch... Class, #Indicator Class"},{"heading":"selection...","level":5,"markdown":"String:\n\n```cpp\nselectionBackLights = \"light_back\";\nselectionBrakeLights = \"light_brake\";\nselectionFireAnim = \"muzzleflash\";\nselectionHRotorStill= \"mainRotorStatic\";\nselectionHRotorMove = \"mainRotorBlurred\";\nselectionVRotorStill = \"tailRotorStatic\";\nselectionVRotorMove = \"tailRotorBlurred\";\nselectionFabric = \"latka\";\n```\n\nThe selections\n\n```cpp\nselectionLeftOffset = \"PasOffsetL\";\nselectionRightOffset = \"PasOffsetP\";\n```\n\nare 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."},{"heading":"shape","level":5,"markdown":"Float: This TokenName is used inside the #Light Class\n\n```cpp\nshape = \"koulesvetlo\";\n```\n\nSee #Light Class, #Reflectors Class"},{"heading":"showgunneroptics","level":5,"markdown":"Boolean:\n\n```cpp\nshowgunneroptics = 0;\n```"},{"heading":"showWeaponCargo","level":5,"markdown":"Boolean:Default ?\n\n```cpp\nshowWeaponCargo = true;\n```\n\nFound inside weapon holders (ammo boxes)\nOFP: If it is set to true player won't be able to put weapons/magazines to container."},{"heading":"sound","level":5,"markdown":"String:\nUsed by animated objects (campfire eg) to give sound effect. Or, simply by ambients(wolves)\n\n```cpp\nsound = \"Fire\";\nsound = \"Fountain\";\nsound = \"OwlSfx\";\n```"},{"heading":"SoundEnvironExt Class","level":5,"markdown":"class SoundEnvironExt\n\nThis is a Class used within the man class. Some/ None, or all sections of it can (of course) be overridden by inheritance.\n\nThe external class **CfgManActions** accesses the **SoundEnvironExt** class defined (or inherited) for any 'man' (soldier eg).\n\nExternal class **CfgManActions** contains many clauses\n\n```cpp\nsoundOverride = \"fallbody\";    // e.g\n```\n\nfor instances of when it wants sounds for that 'action' to take place.\n\nthus, you can define none some or all arrays (within class with your SoundEnvironExt{}) for the following\n\n```cpp\nnormalExt[] =\nnormal[] =\nroad[] =\nrock[] =\nwater[] =\ngravel[] =\nsand[] =\ndrygrass[] =\ngrass[] =\nforest[] =\nmud[] =\nwood[] =\nmetal[] =\nsnow[] =\nhallway[] =\nfallbody[] =\nlaydown[] =\nstandup[] =\ncrawl[] =\n```\n\nExample\n\n```cpp\nsnow[] = {\n    { \"People\\snow_L\", 0.000032, 1 },\n    { \"People\\snow_R\", 0.000032, 1 }\n};\n```\n\nsnow is a Variable length Sound Array\n\nsee sounds[]"},{"heading":"Sounds Various","level":5,"markdown":"Complex Array:\n\nAll the following use\n\n```cpp\nnameOfSound[] = { \"\\AddonName\\AnySound(.wss)\", 0.000000, 1, 1 };\n```\n\n- 1st parameter: Sound file (path). *.wss is default, *.ogg can be specified.\n- 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.\n- 3rd parameter: Speed of playing, 1 = normal speed/time of playing, 2 = 2 times slower, with half lower pitch."},{"heading":"...Sound","level":6,"markdown":"```cpp\nflySound[] = { \"\\AddonName\\AnySound.wss\", 0.000000, 1, 1 };\nsingSound[] = { \"\\AddonName\\SoundFile.ogg\", 0.031623, 1, 1 };\nscudSound[] = { \"weapons\\rocketflying\", 316.227783, 0.200000 };\nscudSoundElevate[] = { \"vehicles\\gun_elevate\", 0.010000, 1 };\n```"},{"heading":"sound...","level":6,"markdown":"```cpp\nsoundCrash[] = { \"\\AnyAddon\\AnySound(.wss)\", 0.010000, 1 };\nsoundSetSonicBoom[] = { \"Plane_Fighter_SonicBoom_SoundSet\" }; // Sonic Boom for jet fighters at supersonic speeds; defined in cfgSoundSets\n```\n\ndefault values\n\n```cpp\nsoundCrash[] = { \"Vehicles\\crash\", 0.316228, 1 };\nsoundDammage[] = { \"\", 1, 1 };\nsoundEngine[] = { \"\", 1, 1 };\nsoundEnviron[] = { \"\", 1, 1 };\nsoundLandCrash[] = { \"Explosions\\intoground\", 0.316228, 1 };\nsoundWaterCrash[] = { \"Explosions\\intowater\", 0.316228, 1 };\nsoundGetIn[] = { \"Vehicles\\get_in\", 0.000316, 1 };\nsoundGetOut[] = { \"Vehicles\\get_out\", 0.000316, 1 };\nsoundServo[] = { \"Vehicles\\gun_elevate\", 0.010000, 0.500000 };\nsoundGear[] = { \"\\AnyAddon\\AnySound(.wss)\", 0.316228, 1 };            // no default\nadditionalSound[] = { \"\\AnyAddon\\AnySound(.wss)\", 0.000000, 1 };    // man only\n```"},{"heading":"sound[]","level":6,"markdown":"used by animations\n\n```cpp\nsound[] = { \"\\anyPbo\\AnySound(.wss)\", 10.000000, 1 };\n```"},{"heading":"side","level":5,"markdown":"Integer: Default Value: NEUTRAL.\n\nThe 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.\n\nWell written missions (and configs) use defines at top of file to make this more legible.\n\n```cpp\n#define NO_SIDE -1\n#define EAST 0            // (Russian)\n#define WEST 1            // (NATO)\n#define RESISTANCE 2    // Guerilla\n#define CIVILIAN 3\n#define NEUTRAL 4\n#define ENEMY 5\n#define FRIENDLY 6\n#define LOGIC 7\n\nside = EAST;\n```\n\nNEUTRAL is the general case for all objects.\n\nNO_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."},{"heading":"simulation","level":5,"markdown":"String: Default value: invisible.\n\nThe engine behaviour with this #model.\n\n```cpp\nsimulation = \"SeaGull\";\nsimulation = \"thing\";\nsimulation = \"fire\";\nsimulation = \"flag\";\nsimulation = \"house\";\n// simulation = airplane, helicopter, tank\n```\n\nRelated TokenName: #model"},{"heading":"size","level":5,"markdown":"Float: This TokenName is used inside the Smoke class and Reflector class\n\n```cpp\nsize = 0.1;\n```\n\npart of Reflectors class"},{"heading":"source","level":5,"markdown":"String: found in animationSources\n\n```cpp\nsource = \"reload\";\nsource = \"time\";\n```"},{"heading":"sourceAddress","level":5,"markdown":"String: found in animationSources\n\n```cpp\nsourceAddress = \"loop\";\n```"},{"heading":"sourceSize","level":5,"markdown":"Float: This TokenName is used inside the #Light Class\n\n```cpp\nsourceSize = 0.015;\n```"},{"heading":"...Speed","level":5,"markdown":"Float: In Kph.\n\nSetting 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).\n\n```cpp\nminSpeed = -0.5;    // range 0->1\nmaxSpeed = 80;        // default\nmaxSpeed = 30;        // tractor\nmaxSpeed = 60;        // boat\n```"},{"heading":"scud...","level":5,"markdown":"String: Default \"\"\n\n```cpp\nscudLaunch = \"scudlunch.rtm\";\nscudStart = \"scudstart.rtm\";\nscudModel = \"scud_strela_proxy\";\nscudModelFire = \"scud_strela_ohen\";\n```"},{"heading":"straightDistance","level":5,"markdown":"Integer:\n\n```cpp\nstraightDistance = 50;\n```"},{"heading":"submerged..","level":5,"markdown":"Float: default 0.0\n\nAlmost all 'objects' are **not** submerged. This parameter is used to hide objects such as effects\n\n```cpp\nsubmerged = -0.5;        // thing effect\nsubmergeSpeed = 0.25;    // positive value makes it go deeper (sound goes quieter)\n```"},{"heading":"T","level":4,"markdown":""},{"heading":"...Turn","level":5,"markdown":"Integer Degrees\n\n```cpp\ninitTurn = 90;\nminTurn = -70;\nmaxTurn = 70;\n```\n\npart of any Turret class (tanks eg)\n\nsee#gun"},{"heading":"TokenNames Embedded","level":5,"markdown":"see #Embedded ClassNames"},{"heading":"turning","level":6,"markdown":"Boolean:\n\n```cpp\nturning = 1;\n```"},{"heading":"turnCoef","level":6,"markdown":"Float: Default 2.0\n\n```cpp\nturnCoef = 6.0;    // truck\nturnCoef = 9.0;    // tractor\n```"},{"heading":"terrainCoef","level":5,"markdown":"Float: Default 3.0\n\n- Pre A3: multiplier to torque and speed (pForce)\n- A3: multiplier to maxSpeedCoef (1 - maxSpeedCoef) [cfgSurfaces parameter] for speedCoef\n\n```cpp\nPre A3::\n        terrainCoef = 6.0;    // skoda\n---\nA3:\n    class Car_F : Car\n        terrainCoef = 2;\n\n    class MRAP_03_base_F : Car_F\n        terrainCoef = 1;\n    class UGV_01_base_F : Car_F\n        terrainCoef = 1.2;\n    class Quadbike_01_base_F : Car_F\n        terrainCoef = 1.4;\n    class MRAP_01_base_F : Car_F\n        terrainCoef = 1.5;\n    class MRAP_02_base_F : Car_F\n        terrainCoef = 1.5;\n    class SUV_01_base_F : Car_F\n        terrainCoef = 2.5;\n    class Hatchback_01_base_F : Car_F\n        terrainCoef = 4.5;\n    class Kart_01_Base_F : Car_F\n        terrainCoef = 5;\n\n    class Truck_F : Car_F\n        terrainCoef = 2.5;\n\n    class Truck_03_base_F : Truck_F\n        terrainCoef = 1.8;\n    class Truck_02_base_F : Truck_F\n        terrainCoef = 2;\n    class Van_02_base_F : Truck_F\n        terrainCoef = 3;\n\n    class Wheeled_APC_F : Car_F\n        terrainCoef = 1.5;\n```"},{"heading":"textureList[]","level":5,"markdown":"Complex (string, float) Array\n\nIntroduced with Arma 3 v1.24, the Bootcamp Update, along with a lot of other randomization features.\n\nArray 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:\n\n```cpp\ntextureList[] = { \"texture1\", weight1, \"texture2\", weight2, etc. };\n```\n\nTextures must be classes from the vehicle's TextureSources. If all the weights are the same value, it functions as straight equal randomization.\n\nExample:\n\n```cpp\nclass MyPlane : C_Plane_Civil_01_F\n{\n    textureList[] = { \"Racer_1\", 0.5, \"Racer_2\", 1 };\n};\n```"},{"heading":"threat","level":5,"markdown":"float Array: Default Value {0.700000, 0.500000, 0.300000};\n\nHow threatening you are to unit types {Soft, Armor, Air}, respectively.\n\nThe ai for this model selects targets of opportunity, based on these values.\n\n```cpp\nthreat[] = { 1, 0.0500000, 0.050000 };            // soldier\nthreat[] = { 1, 0.900000, 0.100000 };            // law soldier\nthreat[] = { 0.900000, 0.700000, 0.300000 };    // bmp\n```\n\nRelated TokenNames: type, #cost, #threat"},{"heading":"timeToLive","level":5,"markdown":"Float: Default 10 000 000 000.0; // seconds?\n\n```cpp\ntimeToLive = 20;    // thing effects (bullets)\ntimeToLive = 100000002004087730000.0;    // campfire\n```\n\nSee #Smoke Class"},{"heading":"transport...","level":5,"markdown":""},{"heading":"transportAmmo","level":6,"markdown":"Integer: Used by supply 'vehicles' to determine total amount available for entire mission. Once depleted...\n\nA 'vehicle' in this case can be a genuine repair truck, or, a building.\n\n```cpp\ntransportAmmo = 300000;            // reammo truck\ntransportAmmo = 10000000;        // bigship\n\ntransportFuel = 3000;            // refueltruck\ntransportRepair = 200000000;    // repairtruck\n```"},{"heading":"transportMax...","level":6,"markdown":"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.\n\n```cpp\ntransportMaxMagazines = 50;        // car\ntransportMaxWeapons = 10;\ntransportMaxMagazines = 5;        // motorcycle\ntransportMaxWeapons = 0;\ntransportMaxMagazines = 50;        // tank\ntransportMaxWeapons = 10;\ntransportMaxMagazines = 20;        // air\ntransportMaxWeapons = 3;\ntransportMaxMagazines = 100;    // boat\ntransportMaxWeapons = 20;\ntransportMaxMagazines = 500;    // ship\ntransportMaxWeapons = 200;\ntransportMaxMagazines = 200;    // truck\ntransportMaxWeapons = 50;\ntransportMaxMagazines = 100;    // apc\ntransportMaxWeapons = 20;\ntransportMaxMagazines = 200;    // helicopter\ntransportMaxWeapons = 50;\ntransportMaxWeapons = 500;        // ammo boxes\ntransportMaxMagazines = 2000;\n```\n\nValues vary depending on exact type of 'boat' eg.\n\nThese TokenNames ate used to indicate how many units of each type an object can hold. Most objects can't hold anything."},{"heading":"transportSoldier","level":6,"markdown":"Integer: Default Value= 0.\n\nNumber 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.\n\n```cpp\ntransportSoldier = 3;        // jeep/car\ntransportSoldier = 50;        // large ship\ntransportSoldier = 6to10;    // SmallShip\ntransportSoldier = 3;        // a10\ntransportSoldier = 8to12;    // helicopters\ntransportSoldier = 2or3;    // ambulance\ntransportSoldier = 8;        // apc/bmp\ntransportSoldier = 12;        // truck\ntransportSoldier = 1;        // jeepmg\ntransportSoldier = 1or2;    // repair type truck\n```\n\nto make the game 'interesting', similar vehicles on different sides, can carry non equivalent numbers."},{"heading":"transportVehiclesCount","level":5,"markdown":"Integer : default 0\n\n```cpp\ntransportVehiclesCount = 15; // a Carrier (big ship)\n```"},{"heading":"TransportMagazines Class","level":5,"markdown":""},{"heading":"transportVehiclesMass","level":5,"markdown":"Integer: Default 0\n\n```cpp\ntransportVehiclesMass = 0;    // not used by any model\n```"},{"heading":"TransportWeapons Class","level":5,"markdown":""},{"heading":"tracksSpeed","level":5,"markdown":"Integer: Default 1\n\nSpeed of tracks UV animation. Use negative number to move tracks in opossite direction\n\n```cpp\ntracksSpeed = 1.4;\n```"},{"heading":"TransportWeapons Class","level":5,"markdown":""},{"heading":"turretAxis","level":5,"markdown":"String:\n\n```cpp\nturretAxis = \"OsaVeze\";\n```\n\nsee #Turret Class"},{"heading":"type (threat)","level":5,"markdown":"Integer: Default Value: Armored\n\nThis indicates the threat type of the 'vehicle'.\n\nIn well written configs, the 3 possible values are declared as defines at top of file for legibility\n\n```cpp\n#define VSoft 0\n#define VArmor 1\n#define VAir 2\n\ntype = VAir;\n```\n\nVehicles (and buildings) are armoured, humans are 'soft' and aircraft (obviously) are air\n\nRelated TokenNames: type, #cost, #threat"},{"heading":"type (animation)","level":5,"markdown":"**old** Unknown: Default Value: rotation\n\nThis appears in the ReloadAnimations class\n\n```cpp\ntype = \"rotation\";\n```"},{"heading":"typicalCargo","level":5,"markdown":"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.\n\nThis array can have zero or more strings.\n\n```cpp\ntypicalCargo[] = { \"Soldier\", \"Soldier\", \"SoldierLAW\", \"SoldierLAW\" };\n```\n\nNote that these are *ClassNames* of soldiers."},{"heading":"U","level":4,"markdown":""},{"heading":"...UsesPilotView","level":5,"markdown":"Boolean: : Default false\n\n```cpp\ngunnerUsesPilotView = false;    // some choppers (mi17)\ncommanderUsesPilotView = true;\n```"},{"heading":"uavHacker","level":5,"markdown":"Boolean\nAllows unit to hack UAVs. Used on UAV operators in vanilla (Arma 3)\n\n```cpp\nuavHacker = 1;\n```"},{"heading":"unitInfoType","level":5,"markdown":"String\n\n```cpp\nunitInfoType = \"UnitInfoSoldier\";\n```\n\nCertain 'vehicles' hide this information.\n\nsee #hideUnitInfo"},{"heading":"unloadInCombat","level":5,"markdown":"Boolean: default true\n\n```cpp\nunloadInCombat = false;\n```\n\nAll true vehicles will cause ai to disembark when in combat."},{"heading":"upDownL/R","level":5,"markdown":"wheels class\nsee #rotL/R"},{"heading":"V","level":4,"markdown":""},{"heading":"vehicleClass","level":5,"markdown":"String: Default Value= \"Objects\"\n\nUsed for Mission Editor basic category selection\n\n```cpp\nvehicleClass = \"Air\";\nvehicleClass = \"Support\";\nvehicleClass = \"My Great Addon\";\n```\n\nRelated TokenNames\n#scope, #accuracy, #displayName, #vehicleClass, #nameSound, #camouflage"},{"heading":"vehicleClass[]","level":5,"markdown":"String Array:\n\n```cpp\nvehicleClass[] = { \"Men\", \"Car\", \"Armored\", \"Air\", \"Support\", \"Camera\", \"Objects\", \"Ammo\", \"Sounds\", \"Mines\" };\n```"},{"heading":"view...Shadow","level":5,"markdown":"Boolean:\n\n```cpp\nviewCargoShadow = true;\nviewGunnerShadow = true;\n```"},{"heading":"viewDriverInExternal","level":5,"markdown":"Boolean: default false\n\n```cpp\nviewDriverInExternal = true;    // Show the driver in third person view\n```"},{"heading":"viewGunnerInExternal","level":5,"markdown":"Boolean: default false\n\n```cpp\nviewGunnerInExternal = true;    // for some turrets and M113\n```"},{"heading":"W","level":4,"markdown":""},{"heading":"...WaterEffect","level":5,"markdown":"String\n\nDefines the effect that will be spawned at the position of the LandContact points when vehicle is in/on the water.\n\n```cpp\nleftWaterEffect = \"vbs2_fx_lowWaterEffects\";\nrightWaterEffect = \"vbs2_fx_lowWaterEffects\";\n```\n\nsee #...DustEffect"},{"heading":"weapon","level":5,"markdown":"String:\n\n```cpp\nweapon = \"M197\";\n```\n\nSelects a weapon from the CfgWeapons class"},{"heading":"weapons","level":5,"markdown":"Variable String Array: default {};\n\nWeapons and Magazines contain individual description of what a 'vehicle' IS carrying.\n\n```cpp\nweapons[] = { \"FFARLauncher\", \"TwinM134\" };    // aircraft\nweapons[] = { \"CarHorn\" };    // truck\n\nweapons[] = { \"M21\", \"LAWLauncher\", \"Throw\", \"Put\" };    // soldier\nmagazines[] = { \"M21\", \"M21\", \"M21\", \"M21\", \"HandGrenade\", \"HandGrenade\", \"LAWLauncher\" };\n```\n\nThe amount of weapons (and magazines) that can be carried by the 'man' is determined by #weaponSlots\n\nThe names M21, Carhorn etc are external references to the cfgWeapons / cfgMagazines classes"},{"heading":"weaponsGroup","level":5,"markdown":"Integer:\n\nThe weapons grouping for a vehicle, determined by enumerated weapon category definitions.\n\n```cpp\nweaponsGroup1 = WEAPONGROUP_CANNONS + WEAPONGROUP_MGUNS;                                // Adds Cannons and Machine Guns to Weapons Group 1\nweaponsGroup2 = WEAPONGROUP_ROCKETS;                                                    // Adds Rockets to Weapons Group 2\nweaponsGroup3 = WEAPONGROUP_AAMISSILES + WEAPONGROUP_ATMISSILES + WEAPONGROUP_MISSILES; // Adds All Missile types to Weapons Group 3\nweaponsGroup4 = WEAPONGROUP_BOMBS + WEAPONGROUP_SPECIAL;                                // Adds Bombs and Laser Designators to Weapons Group 4\n```\n\n```cpp\n#define WEAPONGROUP_CANNONS        1    // Cannons\n#define WEAPONGROUP_MGUNS        2    // Machine Guns\n#define WEAPONGROUP_ROCKETS        4    // Rockets\n#define WEAPONGROUP_AAMISSILES    8    // Anti-Air Missiles\n#define WEAPONGROUP_ATMISSILES    16    // Anti-Tank Missiles\n#define WEAPONGROUP_MISSILES    32    // All / Other Missiles\n#define WEAPONGROUP_BOMBS        64    // Bombs\n#define WEAPONGROUP_SPECIAL        128    // Laser Designator + Misc\n```"},{"heading":"weaponSlots","level":5,"markdown":"Integer:\n\nWeaponslots apply to man class (soldier, civilian, etc)\n\nIt indicates the 'gear' capacity.\n\n```cpp\nweaponSlots = 1 + 4 + 12 * 256 + 2 * 4096 + 2 + 8 * 16;    // all soldiers/civilians\nweaponSlots = 1 + 4 + 8 * 256 + 2 * 4096 + 2 + 4 * 16;    // medics\n\n// 1 = primary weapon\n// 2 = handgun slot\n// 4 = secondary weapon (launcher)\n// 16 = handgun magazines (8x)(or grenades for M203/GP-25)\n// 256 = magazine slots (12x / 8x for medics)\n// 4096 = goggle slot (2x)\n// 131072 = ?\n```"},{"heading":"wheelCircumference","level":5,"markdown":"Float Default 2.513 meters\n\n```cpp\nwheelCircumference = 8;    // tractor\n```"},{"heading":"wounds","level":5,"markdown":"string Array:\n\n```cpp\nwounds[] = { \"xicht_a.paa\", \"xicht_a_zranen\", ... };\n```\n\nthis token is used in the man class to show a series of pac/paa files depending on damaged state of the body."}],"categories":["ArmA: Armed Assault: Addon Configuration","Arma 3: Vehicle Configuration","Operation Flashpoint: Editing","Operation Flashpoint: Modelling","Operation Flashpoint: Reference Lists"],"groups":["Tools and File Formats"]}