CfgVehicleClasses: Difference between revisions
Category: ArmA: Armed Assault: Addon Configuration
Lou Montana (talk | contribs) m (Text replacement - "y[ _]*\|[ _]*(arma[0-9]+)[ _]*\|[ _]+" to "y|$1|")  | 
				Lou Montana (talk | contribs)  m (Some wiki formatting)  | 
				||
| (6 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
{{TOC|side}}  | |||
'''CfgVehicleClasses''' is the new way of using custom vehicle classes in {{GameCategory|arma1|link= y}}.  | |||
The way this functions is by a   | == The CfgVehicleClasses entry ==  | ||
The way this functions is by a separate {{hl|CfgVehicleClasses}} entry, somewhere before the cfgVehicles.  | |||
It would appear like so:  | It would appear like so:  | ||
<  | <syntaxhighlight lang="cpp">  | ||
class CfgVehicleClasses  | |||
{  | {  | ||
	class MyClass  | 	class MyClass  | ||
| Line 13: | Line 16: | ||
		displayName = "My Addons";  | 		displayName = "My Addons";  | ||
	};  | 	};  | ||
};</  | };  | ||
</syntaxhighlight>  | |||
== The vehicleClass entry ==  | == The vehicleClass entry ==  | ||
In the   | In the {{hl|CfgVehicleClasses}} entry for your addon, you would insert the following:  | ||
<syntaxhighlight lang="cpp">vehicleClass = "MyClass";</syntaxhighlight>  | |||
<  | |||
== Example Config ==  | == Example Config ==  | ||
Here is an example config.cpp with correct use of cfgVehicleClasses:  | Here is an example config.cpp with correct use of {{hl|cfgVehicleClasses}}:  | ||
<  | <syntaxhighlight lang="cpp"  | ||
>// some basic defines  | |||
#define TEast 0  | #define TEast 0  | ||
#define TWest 1  | #define TWest 1  | ||
| Line 45: | Line 50: | ||
#define public 2  | #define public 2  | ||
#define WeaponNoSlot				0// dummy weapons  | #define WeaponNoSlot				0		// dummy weapons  | ||
#define WeaponSlotPrimary		  | #define WeaponSlotPrimary			1		// primary weapons  | ||
#define WeaponSlotSecondary	16// secondary weapons  | #define WeaponSlotSecondary			16		// secondary weapons  | ||
#define WeaponSlotItem	  | #define WeaponSlotItem				256		// items  | ||
#define WeaponSlotBinocular	4096// binocular  | #define WeaponSlotBinocular			4096	// binocular  | ||
#define WeaponHardMounted	  | #define WeaponHardMounted			65536  | ||
class CfgPatches  | class CfgPatches  | ||
| Line 56: | Line 61: | ||
	class MySoldier  | 	class MySoldier  | ||
	{  | 	{  | ||
		units[] = {"MySoldier"};  | 		units[] = { "MySoldier" };  | ||
		requiredAddons[] = {};  | 		requiredAddons[] = {};  | ||
		weapons[] = {};  | 		weapons[] = {};  | ||
| Line 62: | Line 67: | ||
	};  | 	};  | ||
};  | };  | ||
class CfgVehicleClasses  | class CfgVehicleClasses  | ||
{  | {  | ||
| Line 70: | Line 76: | ||
};  | };  | ||
class   | class CfgVehicles  | ||
{  | {  | ||
	class All {};  | 	class All {};  | ||
	class AllVehicles: All {};  | 	class AllVehicles : All {};  | ||
	class Land: AllVehicles {};  | 	class Land : AllVehicles {};  | ||
	class Man:Land {};  | 	class Man : Land {};  | ||
	class CAManBase: Man {};  | 	class CAManBase : Man {};  | ||
	class SoldierWB: CAManBase {};  | 	class SoldierWB : CAManBase {};  | ||
	class MySoldier: SoldierWB  | 	class MySoldier : SoldierWB  | ||
	{  | 	{  | ||
		displayName="My Soldier";  | 		displayName = "My Soldier";  | ||
		vehicleClass = "MySoldierClass";  | 		vehicleClass = "MySoldierClass";  | ||
		weapons[]={"M4AIM","M9","Throw","Put"};  | 		weapons[] = { "M4AIM", "M9", "Throw", "Put" };  | ||
		magazines[]={"30Rnd_556x45_Stanag","15Rnd_9x19_M9","15Rnd_9x19_M9"};  | 		magazines[] = { "30Rnd_556x45_Stanag", "15Rnd_9x19_M9", "15Rnd_9x19_M9" };  | ||
	};  | 	};  | ||
};</  | };  | ||
</syntaxhighlight>  | |||
Here is an example {{hl|config.cpp}} with a simplified and safer use of {{hl|CfgVehicleClasses}}:  | |||
<syntaxhighlight lang="cpp">  | |||
// some basic defines  | |||
#define TEast 0  | #define TEast 0  | ||
#define TWest 1  | #define TWest 1  | ||
| Line 110: | Line 117: | ||
#define public 2  | #define public 2  | ||
#define WeaponNoSlot				0// dummy weapons  | #define WeaponNoSlot				0		// dummy weapons  | ||
#define WeaponSlotPrimary		  | #define WeaponSlotPrimary			1		// primary weapons  | ||
#define WeaponSlotSecondary	16// secondary weapons  | #define WeaponSlotSecondary			16		// secondary weapons  | ||
#define WeaponSlotItem	  | #define WeaponSlotItem				256		// items  | ||
#define WeaponSlotBinocular	4096// binocular  | #define WeaponSlotBinocular			4096	// binocular  | ||
#define WeaponHardMounted	  | #define WeaponHardMounted			65536  | ||
class CfgPatches  | class CfgPatches  | ||
| Line 121: | Line 128: | ||
	class MySoldier  | 	class MySoldier  | ||
	{  | 	{  | ||
		units[] = {"MySoldier"};  | 		units[] = { "MySoldier" };  | ||
		requiredAddons[] = {"CACharacters"};  //to avoid enlisting addon in every new mission  | 		requiredAddons[] = { "CACharacters" };  // to avoid enlisting addon in every new mission  | ||
		weapons[] = {};  | 		weapons[] = {};  | ||
		requiredVersion = 1.00;  | 		requiredVersion = 1.00;  | ||
	};  | 	};  | ||
};  | };  | ||
class CfgVehicleClasses  | class CfgVehicleClasses  | ||
{  | {  | ||
| Line 135: | Line 143: | ||
};  | };  | ||
class   | class CfgVehicles  | ||
{  | {  | ||
	class SoldierWB; //ArmA addonmaker doesn't need to know whole parency tree  | 	class SoldierWB; // ArmA addonmaker doesn't need to know whole parency tree  | ||
	class MySoldier: SoldierWB  | 	class MySoldier : SoldierWB  | ||
	{  | 	{  | ||
		displayName="My Soldier";  | 		displayName = "My Soldier";  | ||
		vehicleClass = "MySoldierClass";  | 		vehicleClass = "MySoldierClass";  | ||
		weapons[]={"M4AIM","M9","Throw","Put"};  | 		weapons[] = { "M4AIM", "M9", "Throw", "Put" };  | ||
		magazines[]={"30Rnd_556x45_Stanag","15Rnd_9x19_M9","15Rnd_9x19_M9"};  | 		magazines[] = { "30Rnd_556x45_Stanag", "15Rnd_9x19_M9", "15Rnd_9x19_M9" };  | ||
	};  | 	};  | ||
};</  | };  | ||
</syntaxhighlight>  | |||
Second example shows safer and easier way to describe parent class in vehicle config.  | Second example shows safer and easier way to describe parent class in vehicle config.  | ||
== Result ==  | == Result ==  | ||
| Line 154: | Line 164: | ||
The end result would appear somewhat like this:  | The end result would appear somewhat like this:  | ||
[[  | [[File:Cfgvehicleclasses_result.jpg|thumb|400px|left|{{hl|CfgVehicleClasses}} result]]  | ||
{{GameCategory|arma1|Addon Configuration}}  | {{GameCategory|arma1|Addon Configuration}}  | ||
Latest revision as of 00:22, 25 March 2024
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: