Unit Mod Config Standardisation

From ALiVE Wiki
Revision as of 18:02, 5 November 2014 by Tupolovs (Talk | contribs)

Jump to: navigation, search

Structure

To assist unit modders to enable your units to be easily used by ALiVE - and other modders in the future. We get a lot of requests for getting x unit mod to work with ALiVE's placement and AI command setup. To make this easy for us (and others) can I ask that you implement the following config settings. If we could get these done as a community standard it would interoperability between mods much easier.

Obviously making configs is a bit of a dark art, but if in doubt people should follow what BIS have in theirs.. so lets look at a config that works - BLU_F..


CfgFactionClasses

  • BLU_F
    • displayName = "NATO";
    • flag = "\a3\Data_f\Flags\flag_nato_co.paa";
    • icon = "\a3\Data_f\cfgFactionClasses_BLU_ca.paa";
    • priority = 1;
    • side = 1; // Important that this side number matches the side in the CfgGroups


Now lets look at the group definitions for BLU_F faction in CfgGroups


CfgGroups

  • West // Note side number 1 == West
    • BLU_F // Note faction name matches the name in CfgFactionClasses
      • Armored // Note all these group categories are using standard naming convention
      • Infantry
        • BUS_InfSquad
          • faction = "BLU_F";
          • name = "Rifle Squad";
          • side = 1; // Note this is important
      • Mechanized
      • Motorized
      • SpecOps
      • Support
      • Air


Please don't make custom CfgGroups categories, try to fit your units in one of Armored,Infantry,Mechanised,Motorized,SpecOps,Support if at all possible.

Config Sample

Here is an example config we used to get the OPFOR Guerilla faction to work. Note that we are using a stringtable to define group names.

class CfgGroups
{
    class East
    {
        class OPF_G_F
        {
            name = "OPFIA";
            class Infantry
            {
                name = "Infantry";
                class ORG_InfSentry
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_InfSentry0";  // name = "Sentry";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.3;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_GL_F";
                        rank = "CORPORAL";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "PRIVATE";
                        position[] = {5,-5,0};
                    };
                };
                class ORG_InfSquad
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_InfSquad0";  // name = "Rifle Squad";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.3;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_SL_F";
                        rank = "SERGEANT";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {5,-5,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_AR_F";
                        rank = "CORPORAL";
                        position[] = {-5,-5,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_LAT_F";
                        rank = "PRIVATE";
                        position[] = {10,-10,0};
                    };
                    class Unit4
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_A_F";
                        rank = "PRIVATE";
                        position[] = {-10,-10,0};
                    };
                    class Unit5
                    {
                        side = 0;
                        vehicle = "O_G_medic_F";
                        rank = "CORPORAL";
                        position[] = {15,-15,0};
                    };
                    class Unit6
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "PRIVATE";
                        position[] = {-15,-15,0};
                    };
                    class Unit7
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "PRIVATE";
                        position[] = {20,-20,0};
                    };
                };
                class ORG_InfSquad_Weapons
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_InfSquad_Weapons0";  // name = "Weapons Squad";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.3;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_SL_F";
                        rank = "SERGEANT";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_AR_F";
                        rank = "SERGEANT";
                        position[] = {5,-5,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_AR_F";
                        rank = "CORPORAL";
                        position[] = {-5,-5,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_LAT_F";
                        rank = "SERGEANT";
                        position[] = {10,-10,0};
                    };
                    class Unit4
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_LAT_F";
                        rank = "CORPORAL";
                        position[] = {-10,-10,0};
                    };
                    class Unit5
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "PRIVATE";
                        position[] = {-15,-15,0};
                    };
                    class Unit6
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_A_F";
                        rank = "PRIVATE";
                        position[] = {15,-15,0};
                    };
                    class Unit7
                    {
                        side = 0;
                        vehicle = "O_G_medic_F";
                        rank = "PRIVATE";
                        position[] = {20,-20,0};
                    };
                };
                class ORG_InfTeam
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_InfTeam0";  // name = "Fire Team";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.3;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_AR_F";
                        rank = "CORPORAL";
                        position[] = {5,-5,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_GL_F";
                        rank = "PRIVATE";
                        position[] = {-5,-5,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_LAT_F";
                        rank = "PRIVATE";
                        position[] = {10,-10,0};
                    };
                };    
                class ORG_InfTeam_AA
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_InfTeam_AA0";  // name = "Air-defense Team";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.3;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_AR_F";
                        rank = "CORPORAL";
                        position[] = {5,-5,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_LAT_F";
                        rank = "PRIVATE";
                        position[] = {-5,-5,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_A_F";
                        rank = "PRIVATE";
                        position[] = {10,-10,0};
                    };
                };
                class ORG_InfTeam_AT
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_InfTeam_AT0";  // name = "Anti-armor Team";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.3;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_LAT_F";
                        rank = "CORPORAL";
                        position[] = {5,-5,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_LAT_F";
                        rank = "PRIVATE";
                        position[] = {-5,-5,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_A_F";
                        rank = "PRIVATE";
                        position[] = {10,-10,0};
                    };
                };
                class ORG_InfWepTeam
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_InfWepTeam0";  // name = "Weapons Team";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.3;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {0,5,0};
                    };
                    class Unit1 // TODO - Should be Heavy MG
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_AR_F";
                        rank = "CORPORAL";
                        position[] = {3,0,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_LAT_F";
                        rank = "PRIVATE";
                        position[] = {5,0,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "PRIVATE";
                        position[] = {7,0,0};
                    };
                };
                class ORG_InfSupTeam
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_InfSupTeam0"; // name = "Support Team";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.3;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {0,5,0};
                    };
                    class Unit1 // TODO - Should be Heavy AT
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_LAT_F";
                        rank = "CORPORAL";
                        position[] = {3,0,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_medic_F";
                        rank = "PRIVATE";
                        position[] = {5,0,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_M_F";
                        rank = "PRIVATE";
                        position[] = {7,0,0};
                    };
                };
                class ORG_InfHQ
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_InfHQ0";  // name = "Infantry HQ";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_SL_F";
                        rank = "LIEUTENANT";
                        position[] = {0,5,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {3,0,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_medic_F";
                        rank = "CORPORAL";
                        position[] = {5,0,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_engineer_F";
                        rank = "PRIVATE";
                        position[] = {7,0,0};
                    };
                    class Unit4
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "PRIVATE";
                        position[] = {9,0,0};
                    };
                };
                class ORG_ReconSentry
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_ReconSentry0"; // name = "Recon Sentry";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "CORPORAL";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "PRIVATE";
                        position[] = {5,-5,0};
                    };
                };
            };
            class Motorized
            {
                name = "Motorized Infantry";
                class ORG_MotInf_Team
                {
                    name = "$STR_A3_CfgGroups_East_OPF_F_Motorized_MTP_ORG_MotInf_Team0"; // name = "Motorized Patrol";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.2;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Offroad_01_F";
                        rank = "SERGEANT";
                        position[] = {0,-10,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_AR_F";
                        rank = "CORPORAL";
                        position[] = {5,-5,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_LAT_F";
                        rank = "CORPORAL";
                        position[] = {-5,-5,0};
                    };
                    class Unit4
                    {
                        side = 0;
                        vehicle = "O_G_medic_F";
                        rank = "CORPORAL";
                        position[] = {10,-10,0};
                    };
                    class Unit5
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "CORPORAL";
                        position[] = {-10,-10,0};
                    };
                };
                class ORG_Technicals
                {
                    name = "$STR_A3_CfgGroups_East_OPF_F_Motorized_MTP_ORG_Technicals0"; // name = "Technicals";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.2;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Offroad_01_armed_F";
                        rank = "SERGEANT";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Offroad_01_armed_F";
                        rank = "SERGEANT";
                        position[] = {10,-10,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_Offroad_01_armed_F";
                        rank = "CORPORAL";
                        position[] = {-10,-10,0};
                    };
                };
            };
            class Support
            {
                name = "Support Infantry";
                class ORG_Support_CLS
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_Support_CLS0";  // name = "Support Team (CLS)";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.1;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_AR_F";
                        rank = "CORPORAL";
                        position[] = {5,-5,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_medic_F";
                        rank = "PRIVATE";
                        position[] = {-5,-5,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_medic_F";
                        rank = "PRIVATE";
                        position[] = {10,-10,0};
                    };
                };
                class ORG_Support_ENG
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_Support_ENG0";  // name = "Support Team (Engineer)";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.1;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "CORPORAL";
                        position[] = {5,-5,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_engineer_F";
                        rank = "PRIVATE";
                        position[] = {-5,-5,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_engineer_F";
                        rank = "PRIVATE";
                        position[] = {10,-10,0};
                    };
                };
                class ORG_Support_EOD
                {
                    name = "$STR_A3_CfgGroups_East_OPF_G_F_Infantry_ORG_Support_EOD0";  // name = "Support Team (EOD)";
                    side = 0;
                    faction = "OPF_G_F";
                    rarityGroup = 0.1;
                    class Unit0
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_TL_F";
                        rank = "SERGEANT";
                        position[] = {0,0,0};
                    };
                    class Unit1
                    {
                        side = 0;
                        vehicle = "O_G_Soldier_F";
                        rank = "CORPORAL";
                        position[] = {5,-5,0};
                    };
                    class Unit2
                    {
                        side = 0;
                        vehicle = "O_G_engineer_F";
                        rank = "PRIVATE";
                        position[] = {-5,-5,0};
                    };
                    class Unit3
                    {
                        side = 0;
                        vehicle = "O_G_engineer_F";
                        rank = "PRIVATE";
                        position[] = {10,-10,0};
                    };
                };
            };
        };
    };
};