CfgVehicleClasses
Jump to navigation
Jump to search
CfgVehicleClasses is the new way of using custom vehicle classes in ArmA: Armed Assault.
The CfgVehicleClasses entry
The way this functions is by a separate CfgVehicleClasses entry, somewhere before the cfgVehicles.
It would appear like so:
class CfgVehicleClasses
{
class MyClass
{
displayName = "My Addons";
};
};
The vehicleClass entry
In the CfgVehicleClasses entry for your addon, you would insert the following:
vehicleClass = "MyClass";
Example Config
Here is an example config.cpp with correct use of cfgVehicleClasses:
// some basic defines
#define TEast 0
#define TWest 1
#define TGuerrila 2
#define TCivilian 3
#define TSideUnknown 4
#define TEnemy 5
#define TFriendly 6
#define TLogic 7
#define true 1
#define false 0
// type scope
#define private 0
#define protected 1
#define public 2
#define WeaponNoSlot 0 // dummy weapons
#define WeaponSlotPrimary 1 // primary weapons
#define WeaponSlotSecondary 16 // secondary weapons
#define WeaponSlotItem 256 // items
#define WeaponSlotBinocular 4096 // binocular
#define WeaponHardMounted 65536
class CfgPatches
{
class MySoldier
{
units[] = { "MySoldier" };
requiredAddons[] = {};
weapons[] = {};
requiredVersion = 1.00;
};
};
class CfgVehicleClasses
{
class MySoldierClass
{
displayName = "My Soldiers";
};
};
class CfgVehicles
{
class All {};
class AllVehicles : All {};
class Land : AllVehicles {};
class Man : Land {};
class CAManBase : Man {};
class SoldierWB : CAManBase {};
class MySoldier : SoldierWB
{
displayName = "My Soldier";
vehicleClass = "MySoldierClass";
weapons[] = { "M4AIM", "M9", "Throw", "Put" };
magazines[] = { "30Rnd_556x45_Stanag", "15Rnd_9x19_M9", "15Rnd_9x19_M9" };
};
};
Here is an example config.cpp with a simplified and safer use of CfgVehicleClasses:
// some basic defines
#define TEast 0
#define TWest 1
#define TGuerrila 2
#define TCivilian 3
#define TSideUnknown 4
#define TEnemy 5
#define TFriendly 6
#define TLogic 7
#define true 1
#define false 0
// type scope
#define private 0
#define protected 1
#define public 2
#define WeaponNoSlot 0 // dummy weapons
#define WeaponSlotPrimary 1 // primary weapons
#define WeaponSlotSecondary 16 // secondary weapons
#define WeaponSlotItem 256 // items
#define WeaponSlotBinocular 4096 // binocular
#define WeaponHardMounted 65536
class CfgPatches
{
class MySoldier
{
units[] = { "MySoldier" };
requiredAddons[] = { "CACharacters" }; // to avoid enlisting addon in every new mission
weapons[] = {};
requiredVersion = 1.00;
};
};
class CfgVehicleClasses
{
class MySoldierClass
{
displayName = "My Soldiers";
};
};
class CfgVehicles
{
class SoldierWB; // ArmA addonmaker doesn't need to know whole parency tree
class MySoldier : SoldierWB
{
displayName = "My Soldier";
vehicleClass = "MySoldierClass";
weapons[] = { "M4AIM", "M9", "Throw", "Put" };
magazines[] = { "30Rnd_556x45_Stanag", "15Rnd_9x19_M9", "15Rnd_9x19_M9" };
};
};
Second example shows safer and easier way to describe parent class in vehicle config.
Result
The end result would appear somewhat like this: