Arma 3 Scripting

Arma 3: MP Warlords

  • Also known as Arma 3 MP Warlords, MP Warlords

Topic · Markdown · JSON · original wiki page

Arma 3 v1.86

Warlords for Arma 3 is a multiplayer mode set up as a sort of Sector Control / CTI hybrid supporting TvT, PvP as well as COOP and even solo play against the AI.

Note

This page will provide you with information required to set up your own Warlords scenario.

Eden editor

Here you will find the summary of work that needs to be done in the scenario editor.

1. Place Warlords modules

2. Place playable units

3. Set up multiplayer rules

4. (OPTIONAL) Set up vehicles

By default, the sectors spawn only infantry garrison. If you want the independent faction to utilize vehicles as well, you can easily set it up in the editor:

5. Done!

Congratulations, your scenario is ready! These were all steps required to have a fully working Warlords mission. Following are some more in-depth customization options.

Additional options

Here you will learn how to enable Warlords parameters in the multiplayer lobby, and how to use your custom assets in the in-game Request menu.

1. Parameters

class Params
{
    class BIS_WLStartingDaytime
    {
        title = "$STR_A3_combatpatrol_params_1";
        values[] = { 100, -6, 0, 6, -12 };
        texts[] = { "$STR_A3_WL_param37_value1", "$STR_A3_combatpatrol_params_3", "$STR_A3_MP_COOP_m03_noon", "$STR_A3_MP_COOP_m03_evening", "$STR_A3_combatpatrol_params_6" };
        default = 100;
    };
    class BIS_WLTimeAcceleration
    {
        title = "$STR_A3_WL_param2_title";
        values[] = { 1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 };
        texts[] = { "$STR_special_none", "x2", "x4", "x6", "x8", "x10", "x12", "x14", "x16", "x18", "x20", "x22", "x24" };
        default = 1;
    };
    class BIS_WLProgress
    {
        title = "$STR_A3_WL_param1_title";
        values[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
        texts[] = {
            "$STR_special_none",
            "$STR_A3_WL_forcedProgress_perc_1",
            "$STR_A3_WL_forcedProgress_perc_2",
            "$STR_A3_WL_forcedProgress_perc_3",
            "$STR_A3_WL_forcedProgress_perc_4",
            "$STR_A3_WL_forcedProgress_perc_5",
            "$STR_A3_WL_forcedProgress_perc_6",
            "$STR_A3_WL_forcedProgress_perc_7",
            "$STR_A3_WL_forcedProgress_perc_8",
            "$STR_A3_WL_forcedProgress_perc_9",
            "$STR_A3_WL_forcedProgress_perc_10",
            "$STR_A3_WL_forcedProgress_perc_11",
            "$STR_A3_WL_forcedProgress_perc_12"
        };

        default = 1;
    };

    class BIS_WLFTEnabled
    {
        title = "$STR_A3_fastravel1";
        values[] = {1, 0, 2, 3, 4};
        texts[] = { "$STR_A3_WL_param3_value1", "$STR_A3_WL_param3_value2", "$STR_A3_WL_param3_value3", "$STR_A3_WL_param3_value4", "$STR_A3_WL_param3_value5" };
        default = 1;
    };

    class BIS_WLScanEnabled
    {
        title = "$STR_A3_WL_param4_title";
        values[] = { 1, 0 };
        texts[] = { "$STR_DISP_OPT_ENABLED", "$STR_DISP_OPT_DISABLED" };
        default = 1;
    };

    class BIS_WLVotingResetEnabled
    {
        title = "$STR_A3_WL_menu_resetvoting";
        values[] = { 1, 0 };
        texts[] = { "$STR_DISP_OPT_ENABLED", "$STR_DISP_OPT_DISABLED" };
        default = 1;
    };

    class BIS_WLAIVoting
    {
        title = "$STR_A3_WL_param5_title";
        values[] = { 1, 0 };
        texts[] = { "$STR_DISP_OPT_ENABLED", "$STR_DISP_OPT_DISABLED" };
        default = 0;
    };

    class BIS_WLArsenalEnabled
    {
        title = "$STR_A3_Arsenal";
        values[] = { 1, 0 };
        texts[] = { "$STR_DISP_OPT_ENABLED", "$STR_DISP_OPT_DISABLED" };
        default = 1;
    };

    class BIS_WLMarkersTransparency
    {
        title = "$STR_A3_WL_param7_title";
        values[] = { 4, 3, 2, 1, 0 };
        texts[] = { "$STR_A3_WL_param7_value1", "$STR_A3_WL_markerAlpha_perc_1", "$STR_A3_WL_markerAlpha_perc_2", "$STR_A3_WL_markerAlpha_perc_3", "$STR_A3_WL_param7_value2" };
        default = 2;
    };

    class BIS_WLPlayersTransparency
    {
        title = "$STR_A3_WL_param8_title";
        values[] = { 4, 3, 2, 1, 0 };
        texts[] = { "$STR_A3_WL_param7_value1", "$STR_A3_WL_markerAlpha_perc_1", "$STR_A3_WL_markerAlpha_perc_2", "$STR_A3_WL_markerAlpha_perc_3", "$STR_A3_WL_param7_value2" };
        default = 2;
    };

    class BIS_WLFatigueEnabled
    {
        title = "$STR_A3_fatigue1";
        values[] = { 1, 0 };
        texts[] = { "$STR_DISP_OPT_ENABLED", "$STR_DISP_OPT_DISABLED" };
        default = 1;
    };

    class BIS_WLMusic
    {
        title = "$STR_A3_rscattributemusic_title";
        values[] = { 1, 0 };
        texts[] = { "$STR_DISP_OPT_ENABLED", "$STR_DISP_OPT_DISABLED" };
        default = 1;
    };

    class BIS_WLVoice
    {
        title = "$STR_A3_orange_faction_idap_cfgidentities_expo_name";
        values[] = { 1, 0 };
        texts[] = { "$STR_DISP_OPT_ENABLED", "$STR_DISP_OPT_DISABLED" };
        default = 1;
    };

    class BIS_WLStartCP
    {
        title = "$STR_A3_WL_param12_title";
        values[] = { 0, 100, 250, 500, 1000, 2500, 5000 };
        texts[] = { "0", "100", "250", "500", "1000", "2500", "5000" };
        default = 500;
    };

    class BIS_WLCPMultiplier
    {
        title = "$STR_A3_WL_param13_title";
        values[] = { 1, 2, 3, 4, 5 };
        texts[] = { "1x", "2x", "3x", "4x", "5x" };
        default = 1;
    };

    class BIS_WLVotingTimeout
    {
        title = "$STR_A3_WL_param14_title";
        values[] = { 5, 10, 15, 20, 25, 30 };
        texts[] = { "5", "10", "15", "20", "25", "30" };
        default = 15;
    };

    class BIS_WLVehicleSpan
    {
        title = "$STR_A3_WL_param15_title";
        values[] = { 900, 1800, 3600, 5400, 7200, 1000000 };
        texts[] = { "15", "30", "60", "90", "120", "$STR_A3_WL_param15_value1" };
        default = 3600;
    };
};

2. Custom asset lists

3. Custom factions

class CfgWLFactionAssets
{
    class WEST // --- BLUFOR
    {
        class InfantryUnits // --- for BLUFOR and OPFOR, only individual unit classnames are defined as the system doesn't spawn predefined groups
        {
            class B_Story_SF_Captain_F {}; // --- asset classname to be added to the spawn list
        };
    };

    class EAST // --- OPFOR
    {
        class InfantryUnits
        {
            class O_V_Soldier_hex_F {};
            class O_V_Soldier_M_ghex_F {};
        };
    };

    class INDEP // --- Independent
    {
        class InfantryGroups // --- independent faction uses group configs to spawn garrisons; you can define various group types to be randomly used
        {
            groups[] = {
                "'Indep' >> 'IND_G_F' >> 'Infantry' >> 'I_G_InfSquad_Assault'", // --- use this part of the config path found in the Config viewer (CfgGroups)
                "'Indep' >> 'IND_C_F' >> 'Infantry' >> 'BanditCombatGroup'" // --- NOTE THE QUOTATION MARKS AND APOSTROPHES
            };
        };

        class MotorizedGroups
        {
            groups[] = {
                //
            };
        };

        class MechanizedGroups
        {
            groups[] = {
                //
            };
        };

        class ArmoredGroups
        {
            groups[] = {
                //
            };
        };
    };
};

4. Blacklisting assets from AI purchase lists

WLAIRequisitonBlacklist[] = {
    "B_crew_F",
    "B_Helipilot_F",
    "B_Pilot_F",
    "O_crew_F",
    "O_Helipilot_F",
    "O_Pilot_F",
    "B_T_crew_F",
    "B_T_Helipilot_F",
    "B_T_Pilot_F",
    "O_T_crew_F",
    "O_T_Helipilot_F",
    "O_T_Pilot_F"
};

5. Overriding asset costs

class CfgWLAssetCostOverride
{
    B_Soldier_F = 50;        // --- example asset classname
    Scan = 200;                // --- sector scan
    Airdrop = 200;            // --- airdrop
    FastTravel = 200;        // --- fast travel
    LastLoadout = 200;        // --- last loadout
    Arsenal = 200;            // --- arsenal
    FundsTransfer = 200;    // --- funds transfer
    ResetVoting = 200;        // --- voting reset
};

Updating scenarios using the Workshop version of the mode

Easiest way to do this would probably be mass replacing "JEZ_ModuleWL with "ModuleWL.