CfgWeapons Config Reference: Difference between revisions
(→Types) |
|||
Line 381: | Line 381: | ||
==Types== | ==Types== | ||
===type=WeaponHardMounted(ArmaOnly)=== | ===type=WeaponHardMounted (ArmaOnly)=== | ||
===magazineType= | ===magazineType=None (OfpOnly)=== | ||
===weaponType=WeaponHardMounted(OfpOnly)=== | ===weaponType=WeaponHardMounted (OfpOnly)=== | ||
[[TokenNameValueTypes| | [[TokenNameValueTypes|Integers]] (Note this value is often held as a math [[TokenNameValueTypes|String]]) | ||
'' | Gear (equipment) selection consists of ''SlotTypes'' and one of more ''slot positions'' '''of that type''' | ||
This integer is a bitfield containing SlotType '''and count''' which defines which SlotType this 'item' will occupy in gear selection and how many slots '''of that type''' it requires. It does NOT define which slot ''position'' to occupy, only the Type of Slot. Various engines will show this item in positions of their own choosing. | |||
*An 'item' is defined as being a weapon, magazine, or 'equipment'. | |||
**A 'weapon' is rifle, handgun, law launcher | |||
**A 'magazine' is a magazine, a shell ,a Law, a PipeBomb, a grenade. Ie a housing for the cfgAmmo explosive(s) | |||
**'equipment' are binoculars, nvg, etc. | |||
The | For ArmA, MagazineSlots and WeaponSlots are mutually exclusive. The classes occur in the cfgWeapons or cfgMagazines respectively. In ofp both types of class exist in cfgWeapons, and are often the same class. OFP does not have a 'Type='. Instead, it uses WeaponType= and MagazineType= couplets. The end result, and the intent, is identical. | ||
*Note the quite serious alteration to SecondaryWeapon and Handgun mags that occurred in arma. This to allow for an increased count field in Handgun Magazines. | |||
*Note the quite serious alteration to SecondaryWeapon and Handgun mags that occurred in arma. This to allow for an | |||
----- | ----- | ||
{| | {| | ||
|Slot:|| || | |Slot:||SlotType||value/nbits||||Example | ||
|- | |- | ||
| | ||| ||OFP||ArmA | ||
|- | |- | ||
| | |either:||NoSlot||0/0||same ||'stroke' is a weapon, but it occupies no slots | ||
|- | |- | ||
|Weapon:|| | |Weapon:||PrimaryWeapon||1/1|| same ||AK47 | ||
|- | |- | ||
|Weapon:|| | |Weapon:||HandGun||2/1|| same ||CZ75 | ||
|- | |- | ||
| | |Weapon:||SecondaryWeapon||16/1|| '''4'''/1 ||Law | ||
|- | |- | ||
|Mag:|| | |Mag:||HandGunMagazines||32/3|| '''16/4''' ||CZ75Mag or GLMag | ||
|- | |- | ||
| | |Mag:||MainMagazines||256/4||same ||AK47Mag or explosives | ||
|- | |- | ||
|Weapon:|| | |Weapon:||BinocularSlot||4096/4|| same ||or NVG, LD,etc | ||
|- | |- | ||
|Mag:||SmallItems|| || 131072 | |Weapon:||HardMounted||65536/1||same | ||
|- | |||
|Mag:||SmallItems||||131072/4||(Arma 2) map, compass, small items (derived from ItemCore) | |||
|} | |} | ||
The specific combination for machine guns normally occupy both weapon slots (PrimaryWeapon+SecondaryWeapon) | |||
---- | ---- | ||
=== | ===Magazine Sizes=== | ||
Architecturally, '''all''' bitfields are counts. The fact that a PrimaryWeapon can only be '1', still makes it a count of that SlotType. | |||
In practical terms magazines are the only 'item' (warning, currently) to have bitfields > 1. | |||
Most weapons use a single slot to declare a single magazine. | Most weapons use a single slot to declare a single magazine. | ||
Shell weapons such as the RPG require three slots to hold the 'magazine'. 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. | |||
No handgun magazine (currently) has a size > 1. This could change on say a remote controlled explosive (eg). The bitfield is larger for reasons explained in 'putting it all together'. | |||
For MainWeapon Magazines, specific bit-field identities between 256 and 4096 are frequently represented textually as | 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, | "2 * 256" // m60,pk,mortars | ||
"3 * 256" // law , rpg | |||
"4 * 256" // 6g30 4 slots needed | "4 * 256" // 6g30 4 slots needed | ||
"6 * 256" // carlgustav,stinger 6 slots needed | "6 * 256" // carlgustav,stinger 6 slots needed | ||
"8 * 256" // mm1 all slots needed | "8 * 256" // mm1 all slots needed | ||
And, of course, in Arma, these 'fields' are only relevent in it's CfgWeapons. | |||
===CfgVehicles Joining the dots=== | |||
A 'vehicle', in this case a human or parachute, has it's equipment slots defined in it's cfgVehicles Class. The weaponslots= bitfield declares whether or not a piece of equipment can be carried at all, and if so, how much, or max size of that equipment, measured in 'slots'. | |||
cfgVehicles.Weaponslots= is deceptively similar to CfgWeapons.Type= (and vice versa). Weaponslots= defines the carrying capacity for equipment, type= defines the size of of that equipment. | |||
Different humans have less slots than others. Clearly, medics, police, civilians and some resistance fighters, cannot carry heavy armament. They're either not trained to, or, they're already implictly carrying medical packs. The disastrous ArmA1 completely destroyed this distinction. ArmA2 enhances the distinction a little more than ofp. | |||
A generalised ''capacity'' declaration for humans is | |||
{| | |||
|weaponSlots=||PrimaryWeapon+||Can carry a Primary Weapon | |||
|- | |||
|||SecondaryWeapon+||Sometimes able to carry a Secondary or even heavier Weapon (Law,mg,stinger) | |||
|- | |||
|||(4+6)*MainMagazines+||Can carry nMagazines for these weapons (AK47Mag) (or max size of shell eg) | |||
|- | |||
|||HandGun+||Can carry a Handgun (Berreta eg) | |||
|- | |||
|||2*WeaponSlotBinocular+||Can carry nslots of equipment | |||
|- | |||
|||4*HandGunMagazines+||Can carry nHandgun Magazines (CZ75Mag) | |||
|- | |||
|||12*SmallItems||can carry nslots of SmallItems (Arma2) | |||
|- | |||
|} | |||
-- | |||
These will later be filled out with specific weapons in the human's weapons[]= and magazines[]=arrays. Placing too many causes a ctd. | |||
Note that specific ArmA2 women can only carry magazines and smallequipment (for their boyfriends?) and nothing else. | |||
---- | |||
Magazine carrying ability altered markedly for ArmA2 vs ofp, is the reason for the nasty change to the bitfield, and is as follows | |||
OFP ARMA | |||
Rifle Potential : 15 15 | |||
Actual : 4 to 10 2 to 12 | |||
Handgun Potential: 7 '''15''' | |||
Actual : 4 4 or 8 | |||
'Binoculars' : 1 or 2 0 to 2 | |||
Revision as of 13:05, 17 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
- All engines accept integer values (or math strings) where a float would normally be expected.
- Default values are shown in the legend.
- OFP default values, if different, are shown in examples
- Usage
- OFP moved to ArmA's cfgMagazines Class and generally renamed.
- ArmA Introduced from Xbox Elite and beyond.
- ModesClass. Any item marked as a ModesClass lives in a class Mode... body. It must be declared (or inherited) for each class.
- Blank: used as described in both OFP, and, ArmA
- Dual Use TokenNames (such as picture=) moved to ArmA's cfgMagazines Class as appropriate.
Type | Usage | Desc | Example | |
access=3 | Integer |
#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 | Dispersion multiplier for Ai units (axis X - left to right) | ||
aiDispersionCoefY=1.0 | Float | Dispersion multiplier for Ai units (axis Y - top-down) | ||
aiRateOfFire=5.0 | Float | ModeClass | delay between shots at given aiRateOfFireDistance | |
aiRateOfFireDistance=500 | Integer | ModeClass | at shorter distance delay (aiRateOfFire) goes lineary to zero | |
ammo="" | String | OFPModeClass | CfgAmmo class that this weapon fires. Moved to cfgMagazines in Arma. | ammo = "TimeBomb"; |
autoAimEnabled=true | Boolean | FALSE for all standard weapons | ||
autoFire=false | Boolean | ModeClass | If true weapon will continue firing once you press fire button once until you release it. | |
autoReload=true | Boolean | if true weapon will be reloaded automaticly once magazine is empty | ||
backgroundReload=false | Boolean | Weapon automatically reloads magazines without player intervention or animation. | ||
ballisticsComputer=false | Boolean | ArmA | 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 | ModeClass | Number of shots actually fired each time the weapon is fired. | |
cameraDir | String | cameraDir = "GL look"; | ||
canDrop=true | Boolean | Weapon can/not be dropped from Inventory Menu . | ||
canLock=2 | Integer | Defines if weapon can be locked on the target (white box appears)
#define LockNo 0 #define LockCadet 1 #define LockYes 2 | ||
cartridgePos="nabojnicestart" | String | |||
cartridgeVel="nabojniceend" | String | |||
count=0 | Integer | OFP | Number of shots weapon starts with. Moved to CfgMagazines in ArmA | |
cursor="" | String | cursor="w_weapon";// ofp default | ||
cursorAim="" | String | cursorAim = "w_lock";//ofp default cursorAim = "\ca\Weapons\Data\cursor_target_locked_ca.paa"; | ||
cursorAimOn="" | String | Arma | ||
cursorSize=1.0 | Float | Arma | ||
dexterity?? | Float | Ingame weapon handling value, lower value = takes more time to traverse a weapon | dexterity = 3.1; | |
dispersion=0.002 | Float | ModeClass | Ingame weapon dispersion. Bigger value - more dispersion | |
displayName="" | String | *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="" | String | OFP |
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="" | String | OFP | The ammo descriptive name in cfgAmmo. Replaced in Arma by ShortName in the cfgMagazines Class | |
distanceZoomMax=400 | Integer | |||
distanceZoomMin=400 | Integer | |||
descriptionShort="" | String | ArmA | This is the equivalent of ofp's ammunition label (shortNameMagazine) and is, strangely, declared in weapons | |
drySound[]={"",1,1} | Array | click Sound when empty weapon fired | drySound[] = {"\ca\Weapons\Data\Sound\XMS_dry_v2",0.000316228,1}; | |
enableAttack=true | Boolean | |||
emptySound[]={"",1,1} | Array | Arma | ||
ffCount=1 | Integer | ModeClass | ||
ffFrequency=1 | Float | ModeClass | ||
ffMagnitude=0.0 | Float | ModeClass | ||
fireLightDuration=0.05 | Float | Arma | ||
fireLightIntensity=0.012 | Float | Arma | ||
flashSize=0.0 | Float | ModeClass | ofp only? | |
forceOptics=0 | Integer | Valid values: 0, 1, 2, as per canLock | ||
handAnim[]={} | Array | Arma | ||
initSpeed=0 | Integer | Initial speed of shot.Also present in cfgMagazines | initSpeed = 900; | |
laser=false | Boolean | Arma | ||
Library | Class | Arma |
class Library { libTextDesc = ""; }; | |
libTextDesc | String | ArmaClass | libTextDesc = "$STR_LIB_SVD";//eg | |
magazineReloadTime=0 | Float | Time delay when reloading the weapon (changing magazines). | ||
magazines[]={} | StringArray |
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 default | ||
maxLeadSpeed=50 | Integer | Ofp | Maximimum speed of the target that can be shot with this weapon by AI. Moved to CfgMagazines in ArmA. | |
min/mid/maxRange... | Integer | ArmAModeClass | 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. | |
magazineType=0 | Integer | ofp | See Types below | |
minRange=1 | Integer | |||
minRangeProbab=0.3 | Float | |||
midRange=150 | Integer | |||
midRangeProbab= 0.58 | Float | |||
maxRange=500 | Integer | |||
maxRangeProbab=0.04 | Float | |||
memoryPointCamera="eye" | String | Arma | memoryPointCamera = "GL eye"; | |
model="[.p3d]" | String | model = "\ca\a10\AGM65"; | ||
modelMagazine="[.p3d]" | String |
modelMagazine = "\misc\mag_univ.p3d";// ofp default | ||
modelOptics="[.p3d]" | String | Optic model used in game. "-" defines 3d view from the model (point "eye") |
modelOptics = "\ca\Weapons\G36_optics"; modelOptics = "-"; | |
modelSpecial=[.p3d]"" | String | |||
modes[]= {"this"} | StringArray | 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 | modes[] = {"single","burst","auto"}; | |
multiplier=1 | Integer | ModeClass | Ammunition used per shot. | |
muzzleEnd="konec hlavne" | String | |||
muzzlePos="usti hlavne" | String | |||
muzzles[]={"this"} | Array | similar to modes, if not declared, assumed muzzle is 'this' | muzzles[] = {"TimeBombMuzzle","PipeBombMuzzle","MineMuzzle","MineEMuzzle"}; | |
nameSound="" | String | Classname of sound played when vehicle commander switches to this weapon? |
nameSound = "weapon";//ofp default nameSound = "smokeshell"; | |
optics=true | Boolean | |||
opticsDisablePeripherialVision=0.67 | Float | ArmA | ||
opticsFlare=true | Boolean | |||
opticsPPEffects[] = {} | Array | Arma | ||
opticsZoomInit= 0.35 | Float | |||
opticsZoomMax=0.35 | Float | |||
opticsZoomMin=0.35 | Float | |||
picture="[\][.pac]" | String | Defines weapon and magazine. See below | ||
primary=10 | Integer | |||
recoil="Empty" | String | ModeClass | Selects recoil defined in cfgRecoils class. ArmA differs substantially in Recoil ability. Much more of them, and very different names. | recoil="AK74Recoil" |
recoilProne="" | String | ArmAModeClass | When prone, recoil can be set to slower values | recoilProne = "AK74Recoil" |
reloadAction="" | String | enumerated list | desc |
reloadAction = ManActReloadMagazine;//ofp default |
reloadMagazineSound[]={"",1,1} | Array | Sound played while changing magazines. | reloadMagazineSound[] = {"\ca\Weapons\Data\Sound\flare_reload",0.000316228,1}; | |
reloadSound[]={"",1,1} | Array | Sound played after each shot. | reloadSound[] = {"\ca\Weapons\Data\Sound\gun125reload",1,1}; | |
reloadTime=1.0 | Float | ModeClass | Time delay between each individual shot. | |
scope=0 | Integer | ArmA | OFP had no scope token. Instead, it used scopeWeapon and ScopeMagazine to distinguish who was what and when used. | |
scopeWeapon=0 | Integer | Ofp | ||
scopeMagazine=0 | Integer | Ofp | used as couplets instead of scope | |
selectionFireAnim="zasleh" | String | Arma | ||
shotFromTurret??? | Boolean | ArmA | meaning unknown. But "zasleh" animation is not working if set to 1 | |
showAimCursorInternal=true | Boolean | ArmA | ||
showEmpty=true | Boolean | If false weapon gets hidden from the player once there's no ammo left for it | ||
showToPlayer=true | Boolean | ModeClass | Some modes defined for Ai usage (ex. burst modes for full auto weapons) can be hidden from player with this parameter | |
simulation="Weapon" | String | ArmA | ||
sound[]={"",1,1} | Array | ModeClass | There are several sound types Most are relevent to the weapon overall and specified in the main body, sound[]= is specific to 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 | Boolean | ArmaModeClass |
When set to false single shot sound can be used with burst mode - it will be played several times | |
soundContinuous=false | Boolean | ModeClass | If true sound for the next shot won't start before previous oe ends. Thus you can prevent sound overlapping. | |
soundBegin[]={"sound",1} | Array | ArmaModeClass | ||
soundBullet[]={"emptySound",1} | Array | ArmaModeClass | ||
soundEnd[]={"sound",1} | Array | ArmAModeClass | ||
soundLoop[]={"sound",1} | Array | ArmaModeClass | 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. | |
soundServo[] | Array | soundServo[] = {"",0.0001,1}; | ||
Type=WeaponHardMounted | Integer | Arma | Defines the equipment slots this WEAPON or MAGAZINE will occupy. See Types below | |
UiPicture="[\][.pac]" | String | ArmA | \CA\weapons\data\Ico\i_aa_CA.paa"; | |
uiPicture="ivojak" | ofp | |||
useAction=false | Boolean | ModeClass | ||
useActionTitle="" | String | ModeClass | useActionTitle = "$STR_ACTION_PUTBOMB"; | |
useAsBinocular=false | Boolean | |||
value=2 | Integer | ArmA | ||
valueMagazine=2 | Integer | ofp | ||
valueWeapon=2 | Integer | ofp | ||
weaponType=WeaponHardMounted | Integer | ofp | See Types below |
Picture="[\][.p3d]"
Defines WEAPON Picture and separately MAGAZINE Picture. OFP generally created TWO cfgWeapon classes. One for the weapon, one for the magazine. picture= was declared in each. In Arma, the picture name has been moved to the cfgMagazines class proper.
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.
Types
type=WeaponHardMounted (ArmaOnly)
magazineType=None (OfpOnly)
weaponType=WeaponHardMounted (OfpOnly)
Integers (Note this value is often held as a math String)
Gear (equipment) selection consists of SlotTypes and one of more slot positions of that type
This integer is a bitfield containing SlotType and count which defines which SlotType this 'item' will occupy in gear selection and how many slots of that type it requires. It does NOT define which slot position to occupy, only the Type of Slot. Various engines will show this item in positions of their own choosing.
- An 'item' is defined as being a weapon, magazine, or 'equipment'.
- A 'weapon' is rifle, handgun, law launcher
- A 'magazine' is a magazine, a shell ,a Law, a PipeBomb, a grenade. Ie a housing for the cfgAmmo explosive(s)
- 'equipment' are binoculars, nvg, etc.
For ArmA, MagazineSlots and WeaponSlots are mutually exclusive. The classes occur in the cfgWeapons or cfgMagazines respectively. In ofp both types of class exist in cfgWeapons, and are often the same class. OFP does not have a 'Type='. Instead, it uses WeaponType= and MagazineType= couplets. The end result, and the intent, is identical.
- Note the quite serious alteration to SecondaryWeapon and Handgun mags that occurred in arma. This to allow for an increased count field in Handgun Magazines.
Slot: | SlotType | value/nbits | Example | |
OFP | ArmA | |||
either: | NoSlot | 0/0 | same | 'stroke' is a weapon, but it occupies no slots |
Weapon: | PrimaryWeapon | 1/1 | same | AK47 |
Weapon: | HandGun | 2/1 | same | CZ75 |
Weapon: | SecondaryWeapon | 16/1 | 4/1 | Law |
Mag: | HandGunMagazines | 32/3 | 16/4 | CZ75Mag or GLMag |
Mag: | MainMagazines | 256/4 | same | AK47Mag or explosives |
Weapon: | BinocularSlot | 4096/4 | same | or NVG, LD,etc |
Weapon: | HardMounted | 65536/1 | same | |
Mag: | SmallItems | 131072/4 | (Arma 2) map, compass, small items (derived from ItemCore) |
The specific combination for machine guns normally occupy both weapon slots (PrimaryWeapon+SecondaryWeapon)
Magazine Sizes
Architecturally, all bitfields are counts. The fact that a PrimaryWeapon can only be '1', still makes it a count of that SlotType.
In practical terms magazines are the only 'item' (warning, currently) to have bitfields > 1.
Most weapons use a single slot to declare a single magazine.
Shell weapons such as the RPG require three slots to hold the 'magazine'. 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.
No handgun magazine (currently) has a size > 1. This could change on say a remote controlled explosive (eg). The bitfield is larger for reasons explained in 'putting it all together'.
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 "3 * 256" // law , rpg "4 * 256" // 6g30 4 slots needed "6 * 256" // carlgustav,stinger 6 slots needed "8 * 256" // mm1 all slots needed
And, of course, in Arma, these 'fields' are only relevent in it's CfgWeapons.
CfgVehicles Joining the dots
A 'vehicle', in this case a human or parachute, has it's equipment slots defined in it's cfgVehicles Class. The weaponslots= bitfield declares whether or not a piece of equipment can be carried at all, and if so, how much, or max size of that equipment, measured in 'slots'.
cfgVehicles.Weaponslots= is deceptively similar to CfgWeapons.Type= (and vice versa). Weaponslots= defines the carrying capacity for equipment, type= defines the size of of that equipment.
Different humans have less slots than others. Clearly, medics, police, civilians and some resistance fighters, cannot carry heavy armament. They're either not trained to, or, they're already implictly carrying medical packs. The disastrous ArmA1 completely destroyed this distinction. ArmA2 enhances the distinction a little more than ofp.
A generalised capacity declaration for humans is
weaponSlots= | PrimaryWeapon+ | Can carry a Primary Weapon |
SecondaryWeapon+ | Sometimes able to carry a Secondary or even heavier Weapon (Law,mg,stinger) | |
(4+6)*MainMagazines+ | Can carry nMagazines for these weapons (AK47Mag) (or max size of shell eg) | |
HandGun+ | Can carry a Handgun (Berreta eg) | |
2*WeaponSlotBinocular+ | Can carry nslots of equipment | |
4*HandGunMagazines+ | Can carry nHandgun Magazines (CZ75Mag) | |
12*SmallItems | can carry nslots of SmallItems (Arma2) |
--
These will later be filled out with specific weapons in the human's weapons[]= and magazines[]=arrays. Placing too many causes a ctd.
Note that specific ArmA2 women can only carry magazines and smallequipment (for their boyfriends?) and nothing else.
Magazine carrying ability altered markedly for ArmA2 vs ofp, is the reason for the nasty change to the bitfield, and is as follows
OFP ARMA Rifle Potential : 15 15 Actual : 4 to 10 2 to 12 Handgun Potential: 7 15 Actual : 4 4 or 8 'Binoculars' : 1 or 2 0 to 2