CfgVehicleClasses

From Bohemia Interactive Community
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:

CfgVehicleClasses result