Replacement Config Tutorial – Arma 3
Categories:
Introduction
Anyone is welcome to improve this guide by any means. Be it making it easier to understand or more comprehensive.
Required tools
- A good text editor; best with regular expression support. Recommended: EditPadPro (and/or PowerGREP)
- Ability to create a config dump from system memory while the game is running
- A tool to create pbos. Recommended: mikero's tool suite (makePbo)
Overall process
Basic preparation
- Download the desired addon(s) you want to use for the replacement
- Load it/them via a modfolder
- Make a config overview for the above mentioned config dump mission in the editor; cfgVehicles for infantry or vehicles, cfgWeapons for weapons (or make subsets like CAManBase, AllVehicles, Tank, Cars, etc)
- Extract the classes of the desired vehicles/infantry/weapons to replace
- Extract the classes of the replacements
- Clean both their content for all but the relevant parameters (see below for more information); this regex will remove all but the mentioned parameters:
^(?!.*?(^\tclass|parameterA|parameterB|etc)).*\r\n
Preparing the addon
- Create a new folder in your @test\addons modfolder
- Give the folder a descriptive name like YourTAG_ReplacementSet_With_AddonName
- Create an empty text file
- Rename it to config.cpp (make sure to have windows show file extensions)
- Add a cfgPatches header - see sample below
- Give it the same name as the folder
- Add the cfgPatches class dependency of the addon used for the replacement in requiredAddons definition
- Add the cfgWeapons/cfgVehicles body
- Add the desired vehicles/infantry/weapons classes you want to replace
- It should include the base class
- The definitions should be strip of all unnecessary parameters at this point
- Disable all the remaining parameters - they only serve as a reminder what you have to replace for a given class
Sample config:
class CfgPatches
{
class YourTAG_ReplacementSet_With_AddonName
{
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
requiredAddons[] = {"DependencyToAddonsCfgPatchesClass"};
};
};
class CfgVehicles
{
class SoldierWB;
class B_Soldier_base_F: SoldierWB
{
// model = "\A3\characters_F\BLUFOR\b_soldier_01.p3d";
// nakedUniform = "U_BasicBody";
// uniformClass = "U_B_CombatUniform_mcam";
// hiddenSelections[] = {"Camo"};
// hiddenSelectionsTextures[] = {"\a3\characters_f\blufor\data\clothing1_co.paa"};
// linkedItems[] = {"V_PlateCarrier1_rgr","H_HelmetB","ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"};
// respawnLinkedItems[] = {"V_PlateCarrier1_rgr","H_HelmetB","ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"};
// class Wounds
// {
// tex[] = {};
// mat[] = {"A3\Characters_F\BLUFOR\Data\clothing1.rvmat",...};
// };
};
class B_Soldier_F: B_Soldier_base_F
{
// nakedUniform = "U_BasicBody";
// uniformClass = "U_B_CombatUniform_mcam";
};