CfgVehicleClasses

From Bohemia Interactive Community
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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