CfgWeapons Config Reference: Difference between revisions
mNo edit summary |
No edit summary |
||
Line 67: | Line 67: | ||
*The inherited tree structure for weapons vs their magazines, vs their ammo, is not always logical. This is a throwback to OFP which (for instance) inherited RPG Ammo from an AT3, but inherited the RPG weapon from a CarlGustav, and so on. The end result being identical and good, since offending paramaters were altered as necessary, but it does confuse what a HellFireHind really is, depending on who you are (ammo vs mag vs weapon) | *The inherited tree structure for weapons vs their magazines, vs their ammo, is not always logical. This is a throwback to OFP which (for instance) inherited RPG Ammo from an AT3, but inherited the RPG weapon from a CarlGustav, and so on. The end result being identical and good, since offending paramaters were altered as necessary, but it does confuse what a HellFireHind really is, depending on who you are (ammo vs mag vs weapon) | ||
==Modes== | |||
Some TokenNames are relevent only within a mode class (sound[]= eg), and stated as such. | |||
'''All''' weapons, without exception, have at least one mode class. | |||
By default, the inherited mode for a weapon is | |||
modes[]= {"this"}; | |||
Which means the engine will treat the main body as also being a mode class unless over-ridden. | |||
Some weapons do not have a modes class specified, nor do they inherit a specified modes class via their parent(s). Under these circumstances, TokenNames stated to be ModeClass only must occur in the main body of that weapon (or it's parents) instead. The TokenNames themselves, remain, accurately described, as being mode class only. | |||
Line 76: | Line 90: | ||
TokenNames marked '''[[ArmaTokenNames|ArmA]]''' were introduced from Xbox Elite and beyond. | TokenNames marked '''[[ArmaTokenNames|ArmA]]''' were introduced from Xbox Elite and beyond. | ||
==access=3== | |||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
'''Description:''' | '''Description:''' | ||
Line 86: | Line 99: | ||
#define ReadOnlyVerified 3 //! no modifications enabled, CRC test applied | #define ReadOnlyVerified 3 //! no modifications enabled, CRC test applied | ||
==aiDispersionCoefX=1.0== | |||
[[TokenNameValueTypes|Float]]<br> | [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' Dispersion multiplier for Ai units (axis X - left to right) | '''Description:''' Dispersion multiplier for Ai units (axis X - left to right) | ||
Line 92: | Line 105: | ||
aiDispersionCoefX = 7.1; | aiDispersionCoefX = 7.1; | ||
==aiDispersionCoefY=1.0== | |||
[[TokenNameValueTypes|Float]]<br> | [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' Dispersion multiplier for Ai units (axis Y - top-down) | '''Description:''' Dispersion multiplier for Ai units (axis Y - top-down) | ||
Line 98: | Line 111: | ||
aiDispersionCoefY = 2.1; | aiDispersionCoefY = 2.1; | ||
==aiRateOfFire=5.0== | |||
[[TokenNameValueTypes|Float]]<br> | [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' delay between shots at given distance (aiRateOfFireDistance) | '''Description:''' delay between shots at given distance (aiRateOfFireDistance) | ||
Line 104: | Line 117: | ||
aiRateOfFire = 0.3; | aiRateOfFire = 0.3; | ||
==aiRateOfFireDistance=500== | |||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
'''Description:''' at shorter distance delay (aiRateOfFire) goes lineary to zero | '''Description:''' at shorter distance delay (aiRateOfFire) goes lineary to zero | ||
Line 110: | Line 123: | ||
aiRateOfFireDistance = 600; | aiRateOfFireDistance = 600; | ||
==ammo=""(ofp)== | |||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
'''Description:''' | '''Description:''' CfgAmmo class that this weapon fires. Note this is declared within the modes classes. | ||
Moved to [[CfgMagazines Config Reference|cfgMagazines]] in Arma. | |||
ammo = "TimeBomb"; | ammo = "TimeBomb"; | ||
==autoAimEnabled=true== | |||
[[TokenNameValueTypes|Boolean]]<br> | [[TokenNameValueTypes|Boolean]]<br> | ||
'''Description:''' FALSE for all standard weapons | '''Description:''' FALSE for all standard weapons | ||
==autoFire=false== | |||
[[TokenNameValueTypes|Boolean]]<br> | [[TokenNameValueTypes|Boolean]]<br> | ||
'''Description:''' If true weapon will continue firing once you press fire button once until you release it. | '''Description:''' If true weapon will continue firing once you press fire button once until you release it. | ||
==autoReload=true== | |||
[[TokenNameValueTypes|Boolean]]<br> | [[TokenNameValueTypes|Boolean]]<br> | ||
'''Description:''' if true weapon will be reloaded automaticly once magazine is empty | '''Description:''' if true weapon will be reloaded automaticly once magazine is empty | ||
==backgroundReload=false== | |||
[[TokenNameValueTypes|Boolean]]<br> | [[TokenNameValueTypes|Boolean]]<br> | ||
'''Description:''' Weapon automatically reloads magazines without player intervention or animation. | '''Description:''' Weapon automatically reloads magazines without player intervention or animation. | ||
==ballisticsComputer=false== | |||
'''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Boolean]]<br> | '''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Boolean]]<br> | ||
'''Description:''' Weapon attempts to calculate and shift the aimpoint to hit a locked target based on range, target movement, own movement, and ballistics of selected ammo type. | '''Description:''' Weapon attempts to calculate and shift the aimpoint to hit a locked target based on range, target movement, own movement, and ballistics of selected ammo type. | ||
==burst=1== | |||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
'''Description:''' Number of shots actually fired each time the weapon is fired. | '''Description:''' Number of shots actually fired each time the weapon is fired. | ||
burst = 5; | burst = 5; | ||
==cameraDir== | |||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
'''Description:''' | '''Description:''' | ||
cameraDir = "GL look"; | cameraDir = "GL look"; | ||
==canDrop=true== | |||
[[TokenNameValueTypes|Boolean]]<br> | [[TokenNameValueTypes|Boolean]]<br> | ||
'''Description:''' Weapon cannot be dropped from Inventory Menu with this set to '''false'''. | '''Description:''' Weapon cannot be dropped from Inventory Menu with this set to '''false'''. | ||
==canLock=2== | |||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
'''Description:''' Defines if weapon can be locked on the target (white box appears) | '''Description:''' Defines if weapon can be locked on the target (white box appears) | ||
Line 167: | Line 165: | ||
#define LockCadet 1 | #define LockCadet 1 | ||
#define LockYes 2 | #define LockYes 2 | ||
==cartridgePos="nabojnicestart"== | |||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
'''Description:''' | '''Description:''' | ||
==cartridgeVel="nabojniceend"== | |||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
'''Description:''' | '''Description:''' | ||
==count=0== | |||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
'''Description:''' Number of shots weapon starts with. In ArmA, it is standard to define this in [[CfgMagazines]] instead. | '''Description:''' Number of shots weapon starts with. In ArmA, it is standard to define this in [[CfgMagazines]] instead. | ||
count = 8; | count = 8; | ||
==cursor== | |||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
'''Description:''' | '''Description:''' | ||
Line 188: | Line 181: | ||
cursor = ""; //arma | cursor = ""; //arma | ||
==cursorAim== | |||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
'''Description:''' | '''Description:''' | ||
Line 195: | Line 188: | ||
cursorAim = "\ca\Weapons\Data\cursor_target_locked_ca.paa"; | cursorAim = "\ca\Weapons\Data\cursor_target_locked_ca.paa"; | ||
==cursorAimOn=""== | |||
'''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|String]]<br> | '''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|String]]<br> | ||
'''Description:''' | '''Description:''' | ||
==cursorSize=1.0== | |||
'''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Float]]<br> | '''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' | '''Description:''' | ||
cursorSize = 4; | cursorSize = 4; | ||
==D== | ==D== | ||
==dexterity??== | |||
[[TokenNameValueTypes|Float]]<br> | [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' Ingame weapon handling value, lower value = takes more time to traverse a weapon | '''Description:''' Ingame weapon handling value, lower value = takes more time to traverse a weapon | ||
Line 214: | Line 205: | ||
dexterity = 3.1; | dexterity = 3.1; | ||
==dispersion=0.002== | |||
[[TokenNameValueTypes|Float]]<br> | [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' Ingame weapon dispersion. Bigger value - more dispersion | '''Description:''' Ingame weapon dispersion. Bigger value - more dispersion | ||
==displayName=""== | |||
[[TokenNameValueTypes|String]] | [[TokenNameValueTypes|String]] | ||
*Name of the WEAPON | *Name of the WEAPON | ||
Line 229: | Line 220: | ||
A weapon that only has a single mode *normally* has the same displayname, repeated in the mode class. | A weapon that only has a single mode *normally* has the same displayname, repeated in the mode class. | ||
===displayNameMagazine=""(ofp)=== | |||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
As the name implies, it is the 'displayname' of the magazine and shown when a) reloading a magazine, b) in gear selection. | As the name implies, it is the 'displayname' of the magazine and shown when a) reloading a magazine, b) in gear selection. | ||
Line 236: | Line 226: | ||
replaced in Arma via the [[CfgMagazines Config Reference|cfgMagazines Class]] | replaced in Arma via the [[CfgMagazines Config Reference|cfgMagazines Class]] | ||
===shortNameMagazine=""(ofp)=== | |||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
The ammo descriptive name in cfgAmmo. Replaced in Arma by ShortName in the [[CfgMagazines Config Reference|cfgMagazines Class]] | The ammo descriptive name in cfgAmmo. Replaced in Arma by ShortName in the [[CfgMagazines Config Reference|cfgMagazines Class]] | ||
==distanceZoomMax=400== | |||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
'''Description:''' | '''Description:''' | ||
Line 250: | Line 238: | ||
'''Description:''' | '''Description:''' | ||
==descriptionShort=""== | |||
'''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|String]]<br> | '''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|String]]<br> | ||
This is the equivalent of ofp's ammunition label (shortNameMagazine) and is, strangely, declared in weapons?? | This is the equivalent of ofp's ammunition label (shortNameMagazine) and is, strangely, declared in weapons?? | ||
==drySound[]={"",1,1}== | |||
see Sounds | |||
==E== | ==E== | ||
==enableAttack=true== | |||
[[TokenNameValueTypes|Boolean]]<br> | [[TokenNameValueTypes|Boolean]]<br> | ||
'''Description:''' | '''Description:''' | ||
==emptySound[]={"",1,1}== | |||
'''[[ArmaTokenNames|ArmA]]''' | '''[[ArmaTokenNames|ArmA]]''' | ||
==F== | ==F== | ||
==ffCount=1== | |||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
'''Description:''' | '''Description:''' | ||
Line 279: | Line 264: | ||
ffCount = 6; | ffCount = 6; | ||
==ffFrequency=1== | |||
[[TokenNameValueTypes|Float]]<br> | [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' | '''Description:''' | ||
Line 285: | Line 270: | ||
ffFrequency = 11; | ffFrequency = 11; | ||
==ffMagnitude=0== | |||
[[TokenNameValueTypes|Float]]<br> | [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' | '''Description:''' | ||
Line 291: | Line 276: | ||
ffMagnitude = 0.5; | ffMagnitude = 0.5; | ||
==fireLightDuration=0.05== | |||
'''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Float]]<br> | '''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' | '''Description:''' | ||
==fireLightIntensity=0.012== | |||
'''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Float]]<br> | '''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' | '''Description:''' | ||
==flash=""== | |||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
'''Description:''' | '''Description:''' | ||
Line 305: | Line 289: | ||
flash = "gunfire"; | flash = "gunfire"; | ||
==flashSize=0== | |||
[[TokenNameValueTypes|Float]]<br> | [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' | '''Description:''' | ||
Line 311: | Line 295: | ||
flashSize = 1.2; | flashSize = 1.2; | ||
==forceOptics=0== | |||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
'''Description:''' Valid values: 0, 1, 2 | '''Description:''' Valid values: 0, 1, 2 | ||
Line 318: | Line 302: | ||
==G== | ==G== | ||
==H== | |||
=H= | |||
==handAnim[] = {}== | ==handAnim[] = {}== | ||
'''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Array]]<br> | '''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Array]]<br> | ||
=I= | ==I== | ||
==initSpeed=0== | ==initSpeed=0== | ||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
Line 332: | Line 314: | ||
initSpeed = 900; | initSpeed = 900; | ||
=J= | ==J== | ||
==K== | |||
=K= | ==L== | ||
=L= | |||
==laser=false== | ==laser=false== | ||
'''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Boolean]]<br> | '''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Boolean]]<br> | ||
'''Description:''' | '''Description:''' | ||
==libTextDesc== | ==libTextDesc== | ||
Line 357: | Line 336: | ||
=M= | ==M== | ||
==magazineReloadTime=0== | ==magazineReloadTime=0== | ||
Line 376: | Line 355: | ||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
'''Description:''' Maximimum speed of the target that can be shot with this weapon by AI. For OFP only, in ArmA this command has only effect in CfgMagazines. | '''Description:''' Maximimum speed of the target that can be shot with this weapon by AI. For OFP only, in ArmA this command has only effect in CfgMagazines. | ||
==min/mid/maxRange...== | ==min/mid/maxRange...== | ||
Line 410: | Line 390: | ||
model = "\ca\a10\AGM65"; | model = "\ca\a10\AGM65"; | ||
==modelMagazine="[.p3d]"== | ==modelMagazine="[.p3d]"== | ||
Line 424: | Line 403: | ||
modelOptics = "\ca\Weapons\G36_optics"; | modelOptics = "\ca\Weapons\G36_optics"; | ||
modelOptics = "-"; | modelOptics = "-"; | ||
==modelSpecial=""== | ==modelSpecial=""== | ||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
Line 432: | Line 412: | ||
'''Description:''' | '''Description:''' | ||
modes[] = {" | modes[] = {"single","burst","auto"};// or anything you care to claim as a class xxx | ||
if not specified, (modes[]= {"this"};) the engine assumes all parms necessary for | if not specified, (modes[]= {"this"};) the engine assumes all parms necessary for mode, are declared within the main body | ||
==multiplier=1== | ==multiplier=1== | ||
Line 457: | Line 437: | ||
=N= | ==N== | ||
==nameSound== | ==nameSound== | ||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
'''Description:''' | '''Description:''' classname of sound played when vehicle commander switches to this weapon? | ||
nameSound = "weapon";//ofp | nameSound = "weapon";//ofp | ||
nameSound = "";//arma | nameSound = "";//arma | ||
Line 467: | Line 447: | ||
nameSound = "smokeshell"; | nameSound = "smokeshell"; | ||
=O= | ==O== | ||
==optics=true== | ==optics=true== | ||
Line 494: | Line 474: | ||
'''Description:''' | '''Description:''' | ||
=P= | ==P== | ||
==picture="[\][.pac]"== | ==picture="[\][.pac]"== | ||
Line 511: | Line 491: | ||
'''Description:''' | '''Description:''' | ||
=Q= | ==Q== | ||
=R= | ==R== | ||
==recoil="Empty"== | ==recoil="Empty"===- | ||
[[TokenNameValueTypes|String]]<br> | [[TokenNameValueTypes|String]]<br> | ||
'''Description:''' Selects recoil defined in cfgRecoils class | '''Description:''' Selects recoil defined in cfgRecoils class | ||
Line 536: | Line 516: | ||
reloadAction = "";//arma | reloadAction = "";//arma | ||
== | ==reloadTime=1.0=== | ||
[[TokenNameValueTypes|Float]]<br> | [[TokenNameValueTypes|Float]]<br> | ||
'''Description:''' Time delay between each individual shot. | '''Description:''' Time delay between each individual shot. | ||
==S== | |||
=S= | |||
==scope=0== | ==scope=0== | ||
Line 562: | Line 529: | ||
OFP had no scope token. Instead, it used scopeWeapon and ScopeMagazine to distinction who was what and when used. | OFP had no scope token. Instead, it used scopeWeapon and ScopeMagazine to distinction who was what and when used. | ||
==scopeWeapon=0== | ===scopeWeapon=0(ofp)=== | ||
==scopeMagazine=0== | ===scopeMagazine=0(ofp)=== | ||
OFP only used as couplets instead of scope | OFP only used as couplets instead of scope | ||
Line 590: | Line 557: | ||
'''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Boolean]]<br> | '''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Boolean]]<br> | ||
'''Description:''' | '''Description:''' | ||
==showToPlayer=true== | ==showToPlayer=true== | ||
Line 596: | Line 562: | ||
'''Description:''' Some modes defined for Ai usage (ex. burst modes for full auto weapons) can be hidden from player with this parameter | '''Description:''' Some modes defined for Ai usage (ex. burst modes for full auto weapons) can be hidden from player with this parameter | ||
==simulation="Weapon"== | |||
'''[[ArmaTokenNames|ArmA]]''' | |||
==Sounds== | |||
== | There are several sound '''types''' | ||
'''[[ | |||
Most are relevent to the weapon overall and specified in the main body, sound[]= is specific to each mode. | |||
==drySound[]={"",1,1}== | |||
[[TokenNameValueTypes|Array]]<br> | |||
'''Description:''' click Sound when empty weapon fired | |||
drySound[] = {"\ca\Weapons\Data\Sound\XMS_dry_v2",0.000316228,1}; | |||
===reloadMagazineSound[]={"",1,1}=== | |||
[[TokenNameValueTypes|Array]]<br> | |||
'''Description:''' Sound played while changing magazines. | |||
reloadMagazineSound[] = {"\ca\Weapons\Data\Sound\flare_reload",0.000316228,1}; | |||
===reloadSound[]={"",1,1}=== | |||
[[TokenNameValueTypes|Array]]<br> | |||
'''Description:''' Sound played after each shot. | |||
reloadSound[] = {"\ca\Weapons\Data\Sound\gun125reload",1,1}; | |||
==sound[]={"",1,1}== | ===sound[]={"",1,1}=== | ||
[[TokenNameValueTypes|Array]]<br> | [[TokenNameValueTypes|Array]]<br> | ||
'''Description:''' | '''Description:''' This is a ModeClass TokenName. It must be stated for each mode defined since it is the different sounds the weapon makes for each mode. | ||
sound[] = {"\ca\Weapons\Data\Sound\AGS30_shot1",10,1}; | sound[] = {"\ca\Weapons\Data\Sound\AGS30_shot1",10,1}; | ||
The last parameter defines how fast the sound should be played. 1 means normal speed. | |||
==soundBurst=true== | ==soundBurst=true== | ||
'''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Boolean]]<br> | '''[[ArmaTokenNames|ArmA]]''' [[TokenNameValueTypes|Boolean]]<br> | ||
'''Description:''' When set to false single shot sound can be used with burst mode - it will be played several times | '''Description:''' When set to false single shot sound can be used with burst mode - it will be played several times | ||
==soundContinuous=false== | ==soundContinuous=false== | ||
Line 645: | Line 635: | ||
==T== | ==T== | ||
==type=WeaponHardMounted(ArmaOnly)== | |||
===magazineType=0(OfpOnly)=== | |||
===weaponType=WeaponHardMounted(OfpOnly)=== | |||
[[TokenNameValueTypes|Integer]]<br> | [[TokenNameValueTypes|Integer]]<br> | ||
'''Description:''' Defines the equipment slots this ' | '''Description:''' Defines the equipment slots this '''WEAPON''' or '''MAGAZINE''' will occupy. | ||
A magazine is defined as being a true magazine, or shell. Bi refer to this as an 'item'. | |||
OFP does not have a 'Type='. Instead, it uses WeaponType= and MagazineType= couplets. The end result, and the intent, is identical. | OFP does not have a 'Type='. Instead, it uses WeaponType= and MagazineType= couplets. The end result, and the intent, is identical. | ||
Line 673: | Line 665: | ||
*Note the quite serious | *Note the quite serious alteration to SecondaryWeapon and Handgun mags that occurred in arma. This to allow for an expanded count field in the magazine types. | ||
----- | ----- | ||
Line 679: | Line 672: | ||
|Slot:|| ||OFP||ARMA||Example | |Slot:|| ||OFP||ARMA||Example | ||
|- | |- | ||
|either:||NoSlot||0|| | |either:||NoSlot||0|| same ||dummy weapon or mag 'stroke' eg | ||
|- | |- | ||
|Weapon:||PrimaryWeapon|| | |Weapon:||PrimaryWeapon||same || 1 ||AK47 | ||
|- | |- | ||
|Weapon:||HandGun||2|| | |Weapon:||HandGun||2|| same ||CZ75 | ||
|- | |- | ||
|Weapon:||SecondaryWeapon||16|| '''4''' ||Law | |Weapon:||SecondaryWeapon||16|| '''4''' ||Law | ||
|- | |- | ||
|Mag:||HandGunMagazines||32|| '''16''' ||CZ75Mag or GLMag | |Mag:||HandGunMagazines||32 see note|| '''16''' ||CZ75Mag or GLMag | ||
|- | |- | ||
|Mag:||MainMagazines||256|| | |Mag:||MainMagazines||256 see note||same ||AK47Mag or explosives | ||
|- | |- | ||
|Weapon:||BinocularSlot||4096|| | |Weapon:||BinocularSlot||4096|| same ||or NVG, LD,etc | ||
|- | |- | ||
|Weapon:||HardMounted||65536|| | |Weapon:||HardMounted||65536|| same | ||
|- | |- | ||
|Mag:||SmallItems|| || 131072||||(Arma 2) map, compass, small items (derived from ItemCore) | |Mag:||SmallItems|| || 131072||||(Arma 2) map, compass, small items (derived from ItemCore) | ||
Line 699: | Line 692: | ||
---- | ---- | ||
=== | ===MainMagazines=== | ||
specific bit-field identities between 256 and 4096 are frequently represented textually as | |||
Main and Handgun Magazines are bitwise 'count' fields. Either field can potentially have have up to 31 'slots'. | |||
Most weapons use a single slot to declare a single magazine. | |||
Some weapons such as the RPG require two slots to hold the 'magazine', ie the shell itself. Ofp presented this by filling those slots with the image. Arma makes a mess of it with a somewhat ugly blank between slots. You are supposed to guess why it's blank. | |||
For MainWeapon Magazines, specific bit-field identities between 256 and 4096 are frequently represented textually as | |||
"1 * 256" // main mags | "1 * 256" // main mags | ||
"2 * 256" // m60,pk,mortars,law | "2 * 256" // m60,pk,mortars,law 2 slots needed | ||
"4 * 256" // 6g30 | "4 * 256" // 6g30 4 slots needed | ||
"6 * 256" // carlgustav,stinger | "6 * 256" // carlgustav,stinger 6 slots needed | ||
"8 * 256" // mm1 | "8 * 256" // mm1 all slots needed | ||
=U= | ==U== | ||
==UiPicture== | ==UiPicture== | ||
Line 733: | Line 733: | ||
=V= | ==V== | ||
==value=2== | ==value=2== | ||
Line 743: | Line 743: | ||
ofp only as above | ofp only as above | ||
==X== | |||
==Y== | |||
=X= | ==Z== | ||
=Y= | |||
=Z= | |||
[[category:Operation Flashpoint: Editing]] | [[category:Operation Flashpoint: Editing]] | ||
[[Category:ArmA: Addon Configuration]] | [[Category:ArmA: Addon Configuration]] |
Revision as of 01:48, 16 August 2010
Introduction
CfgAmmo, cfgMagazines, cfgWeapons and cfgVehicles are root classes defined in the engine's config.bin.
These classes can be subsequently added to by addons inherit in the game or provided by oem.
CfgAmmo defines the missile characterstics for ammunition held in a cfgMagazine which, in turn, is used by a cfgWeapon, which, in turn, is selected for use in a (series of) cfgVehicles. The same ammunition can be, and generally is, used by multiple magazines. The same magazine, can be, and generally is, used by multiple weapons. And so on.
cfgWepaons define the rifle (eg) characterstics. What muzzles it has, how many 'modes' (if any) it can use. What magazines are selectable.
Arma Enhancement
Arma introduced a new root class, cfgMagazines.
In contrast, OFP uses a rather tedious construct in it's cfgWeapons class to distinguish between weapon and magazine paramaters.
The major alterations here are:
OFP ARMA ammo= moved to cfgMagazines cost= moved to cfgMagazines displayNameMagazine= moved to cfgMagazines and renamed DisplayName (of course) magazines[] = {"this"};magazines[] = {}; magazineType= moved to cfgMagazines and rennamed Type maxLeadSpeed= moved to cfgMagazines minRange = moved FROM cfgAmmo minRangeProbab = midRange = midRangeProbab = maxRange = maxRangeProbab = scopeWeapon= renamed scope scopeMagazine= moved to cfgMagazines and rennamed scope shortNameMagazine= moved to cfgMagazines and rennamed descriptionShort?
Modifications
cfgWeapons { access=1;
- Weapon classes can be added.
default { access=3;
- Existing classes can (rarely) be altered.
The default class of cfgWeapons specifies access=3; Almost all subsequent classes inherit this value, which means they cannot be altered in any way.
To allow YOUR addon to subsequently modify YOUR weapon (should you wish to with other addons), you must change the access= in YOUR Weapon.
CfgWeapons can be a puzzling mess to the un-initiated.
The tokenpairs, their placement, and their constructs can be befuddled. This is not a reflection on bi, the ultimate class structure is very, very, adaptive, but, it does confuse.
- Essentially, Arma did open heart, and excellent, surgery to this class to distinguish between weapons and their magazines. Ofp had a common weapon/magazine class with variables declaring what to use, when. Variables only relevent to ofp, are sometimes still encountered in arma, simply because, they do no harm.
- Weapons come in two major flavors (with plenty of subthemes). A weapon either has, or does not have, a modes[] class or classes adding different behaviour like autofire, burst, single shot. Confusingly, a weapon with only one mode, is, equivalent to not declaring it at all. The tokens that would normally be in a modes class, are declared in the main body instead. This obfuscates what-goes-where.
- Weapons can have different muzzles. adding a further layer of modelling.
- The inherited tree structure for weapons vs their magazines, vs their ammo, is not always logical. This is a throwback to OFP which (for instance) inherited RPG Ammo from an AT3, but inherited the RPG weapon from a CarlGustav, and so on. The end result being identical and good, since offending paramaters were altered as necessary, but it does confuse what a HellFireHind really is, depending on who you are (ammo vs mag vs weapon)
Modes
Some TokenNames are relevent only within a mode class (sound[]= eg), and stated as such.
All weapons, without exception, have at least one mode class.
By default, the inherited mode for a weapon is
modes[]= {"this"};
Which means the engine will treat the main body as also being a mode class unless over-ridden.
Some weapons do not have a modes class specified, nor do they inherit a specified modes class via their parent(s). Under these circumstances, TokenNames stated to be ModeClass only must occur in the main body of that weapon (or it's parents) instead. The TokenNames themselves, remain, accurately described, as being mode class only.
TokenNames
Default values are shown in the legend.
Note that engines will accept integer values (or math strings) where a float would normally be expected.
TokenNames marked ArmA were introduced from Xbox Elite and beyond.
access=3
Integer
Description:
- define ReadAndWrite 0 //! any modifications enabled
- define ReadAndCreate 1 //! only adding new class members is allowed
- define ReadOnly 2 //! no modifications enabled
- define ReadOnlyVerified 3 //! no modifications enabled, CRC test applied
aiDispersionCoefX=1.0
Float
Description: Dispersion multiplier for Ai units (axis X - left to right)
aiDispersionCoefX = 7.1;
aiDispersionCoefY=1.0
Float
Description: Dispersion multiplier for Ai units (axis Y - top-down)
aiDispersionCoefY = 2.1;
aiRateOfFire=5.0
Float
Description: delay between shots at given distance (aiRateOfFireDistance)
aiRateOfFire = 0.3;
aiRateOfFireDistance=500
Integer
Description: at shorter distance delay (aiRateOfFire) goes lineary to zero
aiRateOfFireDistance = 600;
ammo=""(ofp)
String
Description: CfgAmmo class that this weapon fires. Note this is declared within the modes classes.
Moved to cfgMagazines in Arma.
ammo = "TimeBomb";
autoAimEnabled=true
Boolean
Description: FALSE for all standard weapons
autoFire=false
Boolean
Description: If true weapon will continue firing once you press fire button once until you release it.
autoReload=true
Boolean
Description: if true weapon will be reloaded automaticly once magazine is empty
backgroundReload=false
Boolean
Description: Weapon automatically reloads magazines without player intervention or animation.
ballisticsComputer=false
ArmA Boolean
Description: Weapon attempts to calculate and shift the aimpoint to hit a locked target based on range, target movement, own movement, and ballistics of selected ammo type.
burst=1
Integer
Description: Number of shots actually fired each time the weapon is fired.
burst = 5;
cameraDir
String
Description:
cameraDir = "GL look";
canDrop=true
Boolean
Description: Weapon cannot be dropped from Inventory Menu with this set to false.
canLock=2
Integer
Description: Defines if weapon can be locked on the target (white box appears)
Valid values: 0, 1, 2
- define LockNo 0
- define LockCadet 1
- define LockYes 2
cartridgePos="nabojnicestart"
String
Description:
cartridgeVel="nabojniceend"
String
Description:
count=0
Integer
Description: Number of shots weapon starts with. In ArmA, it is standard to define this in CfgMagazines instead.
count = 8;
cursor
String
Description:
cursor="w_weapon";// ofp cursor = ""; //arma
cursorAim
String
Description:
cursorAim = "w_lock";//ofp cursorAim = "";//arma
cursorAim = "\ca\Weapons\Data\cursor_target_locked_ca.paa";
cursorAimOn=""
cursorSize=1.0
cursorSize = 4;
D
dexterity??
Float
Description: Ingame weapon handling value, lower value = takes more time to traverse a weapon
dexterity = 3.1;
dispersion=0.002
Float
Description: Ingame weapon dispersion. Bigger value - more dispersion
displayName=""
- Name of the WEAPON
- Name of the MODE
A 'displayname' exists for the weapon and is shown in a)gear selection and b) when selecting the weapon in game.
A separate 'displayname' exists for each of the weapon's modes (if any)
A weapon that only has a single mode *normally* has the same displayname, repeated in the mode class.
displayNameMagazine=""(ofp)
String
As the name implies, it is the 'displayname' of the magazine and shown when a) reloading a magazine, b) in gear selection.
replaced in Arma via the cfgMagazines Class
shortNameMagazine=""(ofp)
The ammo descriptive name in cfgAmmo. Replaced in Arma by ShortName in the cfgMagazines Class
distanceZoomMax=400
Integer
Description:
distanceZoomMin=400
Integer
Description:
descriptionShort=""
This is the equivalent of ofp's ammunition label (shortNameMagazine) and is, strangely, declared in weapons??
drySound[]={"",1,1}
see Sounds
E
enableAttack=true
Boolean
Description:
emptySound[]={"",1,1}
F
ffCount=1
Integer
Description:
ffCount = 6;
ffFrequency=1
Float
Description:
ffFrequency = 11;
ffMagnitude=0
Float
Description:
ffMagnitude = 0.5;
fireLightDuration=0.05
fireLightIntensity=0.012
flash=""
String
Description:
ofp only?
flash = "gunfire";
flashSize=0
Float
Description:
ofp only?
flashSize = 1.2;
forceOptics=0
Integer
Description: Valid values: 0, 1, 2
forceOptics = 2;
G
H
handAnim[] = {}
I
initSpeed=0
Integer
Description: Initial speed of shot.
initSpeed = 900;
J
K
L
laser=false
libTextDesc
libTextDesc = "$STR_LIB_SVD";
Library
class Library { libTextDesc = ""; };
M
magazineReloadTime=0
Float
Description: Time delay when reloading the weapon (changing magazines).
magazineReloadTime = 0.1;
magazines[]
Array
Description: Array of magazines compatible with this weapon. In ArmA, these are defined in CfgMagazines. In OFP they are (generally) the same Weapon class.
magazines[] = {"this"};//ofp magazines[] = {};//arma
maxLeadSpeed=50
Integer
Description: Maximimum speed of the target that can be shot with this weapon by AI. For OFP only, in ArmA this command has only effect in CfgMagazines.
min/mid/maxRange...
Description: Together with *Range and *RangeProbab values defines probability to use this weapon for Ai units at given distance. For OFP these paramaters were specified in cfgAmmo, rendering all rifles the same.
minRange=1
Integer
Description:
minRangeProbab=0.3
Float
Description:
midRange=150
Integer
Description:
midRangeProbab= 0.58
Float
Description:
maxRange=500
maxRangeProbab=0.04
Float
Description:
memoryPointCamera="eye"
memoryPointCamera = "GL eye";
model="[.p3d]"
String
Description:
model = "\ca\a10\AGM65";
modelMagazine="[.p3d]"
String
Description:
modelMagazine = "\misc\mag_univ.p3d";// ofp modelMagazine = "";//arma
modelOptics="[.p3d]"
String
Description: Optic model used in game. "-" defines 3d view from the model (point "eye")
modelOptics = "\ca\Weapons\G36_optics"; modelOptics = "-";
modelSpecial=""
modes[]= {"this"}
Array
Description:
modes[] = {"single","burst","auto"};// or anything you care to claim as a class xxx
if not specified, (modes[]= {"this"};) the engine assumes all parms necessary for mode, are declared within the main body
multiplier=1
Integer
Description: Ammunition used per shot.
multiplier = 5;
muzzleEnd="konec hlavne"
String
Description:
muzzlePos="usti hlavne"
String
Description:
muzzles[]={"this"}
Array
Description: similar to modes, if not declared, assumed muzzel is 'this'
muzzles[] = {"TimeBombMuzzle","PipeBombMuzzle","MineMuzzle","MineEMuzzle"};
N
nameSound
String
Description: classname of sound played when vehicle commander switches to this weapon?
nameSound = "weapon";//ofp nameSound = "";//arma
nameSound = "smokeshell";
O
optics=true
Boolean
Description:
opticsDisablePeripherialVision=0.67
opticsFlare=true
Boolean
Description:
opticsPPEffects[] = {}
opticsZoomInit= 0.35
Float
Description:
opticsZoomMax=0.35
Float
Description:
opticsZoomMin=0.35
Float
Description:
P
picture="[\][.pac]"
String
Description:
Note that this is one of those irritating bis path snafu's. (when if ever will they start using relative addressing?). The following notes apply to ALL picture= references. Not just cfgWeapons.
- Firstly, the DEFAULT extension is .pac. (There is not intended to be 'pac' in arma), a .paa must be explicitly declared.
- Secondly, it must explicitly have a \leading. This, possibly in an attempt by bis to start using relative addressing. Without which, textures are presumed to be in \w_equip\neverland.
primary=10
Integer
Description:
Q
R
==recoil="Empty"===-
String
Description: Selects recoil defined in cfgRecoils class
ArmA differs substantially in Recoil ability. Much more of them, and very different names.
recoil = "AK74Recoil";
recoilProne=""
ArmA String
Description: When prone, recoil can be set to slower values
recoilProne = "AK74Recoil";
reloadAction
Stringenumerated list
Description:
reloadAction = ManActReloadMagazine;//ofp reloadAction = "";//arma
reloadTime=1.0=
Float
Description: Time delay between each individual shot.
S
scope=0
Note: Refers to the accessibility of the variable, not a rifle scope.
OFP had no scope token. Instead, it used scopeWeapon and ScopeMagazine to distinction who was what and when used.
scopeWeapon=0(ofp)
scopeMagazine=0(ofp)
OFP only used as couplets instead of scope
selectionFireAnim="zasleh"
shotFromTurret???
ArmA Boolean
Description: meaning unknown. But "zasleh" animation is not working if set to 1
shotFromTurret = 1;
showAimCursorInternal=true
showEmpty=true
Boolean
Description: If false weapon gets hidden from the player once there's no ammo left for it
showSwitchAction=false
showToPlayer=true
ArmA Boolean
Description: Some modes defined for Ai usage (ex. burst modes for full auto weapons) can be hidden from player with this parameter
simulation="Weapon"
Sounds
There are several sound types
Most are relevent to the weapon overall and specified in the main body, sound[]= is specific to each mode.
drySound[]={"",1,1}
Array
Description: click Sound when empty weapon fired
drySound[] = {"\ca\Weapons\Data\Sound\XMS_dry_v2",0.000316228,1};
reloadMagazineSound[]={"",1,1}
Array
Description: Sound played while changing magazines.
reloadMagazineSound[] = {"\ca\Weapons\Data\Sound\flare_reload",0.000316228,1};
reloadSound[]={"",1,1}
Array
Description: Sound played after each shot.
reloadSound[] = {"\ca\Weapons\Data\Sound\gun125reload",1,1};
sound[]={"",1,1}
Array
Description: This is a ModeClass TokenName. It must be stated for each mode defined since it is the different sounds the weapon makes for each mode.
sound[] = {"\ca\Weapons\Data\Sound\AGS30_shot1",10,1};
The last parameter defines how fast the sound should be played. 1 means normal speed.
soundBurst=true
ArmA Boolean
Description: When set to false single shot sound can be used with burst mode - it will be played several times
soundContinuous=false
Boolean
Description: If true sound for the next shot won't start before previous oe ends. Thus you can prevent sound overlapping.
soundBegin[]={"sound",1}
soundBullet[]={"emptySound",1}
soundEnd[]={"sound",1}
soundLoop[]={"sound",1}
note that there is extensive use of soundloops in arma. Most weapons elaborate on this basic, essentially ofp, structure with begin1,2,3 loops etc.
soundFly[]??
Array
Description:
soundFly[] = {"\ca\Weapons\Data\Sound\rocket_fly1",25.1189,0.8};
soundServo[]??
Array
Description:
soundServo[] = {"",0.0001,1};
T
type=WeaponHardMounted(ArmaOnly)
magazineType=0(OfpOnly)
weaponType=WeaponHardMounted(OfpOnly)
Description: Defines the equipment slots this WEAPON or MAGAZINE will occupy.
A magazine is defined as being a true magazine, or shell. Bi refer to this as an 'item'.
OFP does not have a 'Type='. Instead, it uses WeaponType= and MagazineType= couplets. The end result, and the intent, is identical.
The naming conventions for this token is misleading. In all cases we are talking about slots available in the equipment (gear) selection. OFP Commented Config confused the issue further by #definining 'types' as weaponslots. They are Weapon, equipment and Magazine slots.
A 'vehicle', in this case a human, has it's equipment slots defined in the cfgVehicles Class. In general it consists of placements for:
- A 'slot' for a Primary Weapon (rifle eg)
- A 'slot' for a Secondary Weapon (Law Launcher)
- Magazine slots for these weapons (AK47Mag)
- A Handgun slot (Berreta eg)
- Magazine slots for this weapon (CZ75Mag)
- Equipment slots (binoculars)
For arma, Magazine 'slots' and Weapon 'slots' are mutually exclusive. They only occur in the cfgWeapons or cfgMagazines respectively
The specific combination for machine guns normally occupy both weapon slots (PrimaryWeapon+SecondaryWeapon)
Some humans have less slots than others. Arma1 seriously degraded this distinction and destroyed it, An ofp medic (or civilian) cannot hope to carry as much 'equipment'. Many well crafted missions rely on the fact that civilans are not, a 4th army grouping by another name but have distinct (and unique) characterstics.
- Note the quite serious alteration to SecondaryWeapon and Handgun mags that occurred in arma. This to allow for an expanded count field in the magazine types.
Slot: | OFP | ARMA | Example | ||
either: | NoSlot | 0 | same | dummy weapon or mag 'stroke' eg | |
Weapon: | PrimaryWeapon | same | 1 | AK47 | |
Weapon: | HandGun | 2 | same | CZ75 | |
Weapon: | SecondaryWeapon | 16 | 4 | Law | |
Mag: | HandGunMagazines | 32 see note | 16 | CZ75Mag or GLMag | |
Mag: | MainMagazines | 256 see note | same | AK47Mag or explosives | |
Weapon: | BinocularSlot | 4096 | same | or NVG, LD,etc | |
Weapon: | HardMounted | 65536 | same | ||
Mag: | SmallItems | 131072 | (Arma 2) map, compass, small items (derived from ItemCore) |
MainMagazines
Main and Handgun Magazines are bitwise 'count' fields. Either field can potentially have have up to 31 'slots'.
Most weapons use a single slot to declare a single magazine.
Some weapons such as the RPG require two slots to hold the 'magazine', ie the shell itself. Ofp presented this by filling those slots with the image. Arma makes a mess of it with a somewhat ugly blank between slots. You are supposed to guess why it's blank.
For MainWeapon Magazines, specific bit-field identities between 256 and 4096 are frequently represented textually as
"1 * 256" // main mags "2 * 256" // m60,pk,mortars,law 2 slots needed "4 * 256" // 6g30 4 slots needed "6 * 256" // carlgustav,stinger 6 slots needed "8 * 256" // mm1 all slots needed
U
UiPicture
String
Description:
uiPicture = "ivojak";//ofp uiPicture = "";//arma UiPicture = "\CA\weapons\data\Ico\i_aa_CA.paa";
useAction=false
Boolean
Description:
useActionTitle=""
String
Description:
useActionTitle = "$STR_ACTION_PUTBOMB";
useAsBinocular=false
Boolean
Description:
V
value=2
valueMagazine = 2
valueWeapon = 2
ofp only as above