MP Warlords – Arma 3

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "};</syntaxhighlight>" to "}; </syntaxhighlight>")
m (Text replacement - "= (\$[^ ]+);" to "= "$1";")
Line 73: Line 73:
class BIS_WLStartingDaytime
class BIS_WLStartingDaytime
{
{
title = $STR_A3_combatpatrol_params_1;
title = "$STR_A3_combatpatrol_params_1";
values[] = { 100, -6, 0, 6, -12 };
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 };
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 };
Line 80: Line 80:
class BIS_WLTimeAcceleration
class BIS_WLTimeAcceleration
{
{
title = $STR_A3_WL_param2_title;
title = "$STR_A3_WL_param2_title";
values[] = { 1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 };
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" };
texts[] = { $STR_special_none, "x2", "x4", "x6", "x8", "x10", "x12", "x14", "x16", "x18", "x20", "x22", "x24" };
Line 87: Line 87:
class BIS_WLProgress
class BIS_WLProgress
{
{
title = $STR_A3_WL_param1_title;
title = "$STR_A3_WL_param1_title";
values[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
values[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
texts[] = {
texts[] = {
Line 108: Line 108:
class BIS_WLFTEnabled
class BIS_WLFTEnabled
{
{
title = $STR_A3_fastravel1;
title = "$STR_A3_fastravel1";
values[] = {1, 0, 2, 3, 4};
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 };
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 };
Line 115: Line 115:
class BIS_WLScanEnabled
class BIS_WLScanEnabled
{
{
title = $STR_A3_WL_param4_title;
title = "$STR_A3_WL_param4_title";
values[] = { 1, 0 };
values[] = { 1, 0 };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
Line 122: Line 122:
class BIS_WLVotingResetEnabled
class BIS_WLVotingResetEnabled
{
{
title = $STR_A3_WL_menu_resetvoting;
title = "$STR_A3_WL_menu_resetvoting";
values[] = { 1, 0 };
values[] = { 1, 0 };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
Line 129: Line 129:
class BIS_WLAIVoting
class BIS_WLAIVoting
{
{
title = $STR_A3_WL_param5_title;
title = "$STR_A3_WL_param5_title";
values[] = { 1, 0 };
values[] = { 1, 0 };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
Line 136: Line 136:
class BIS_WLArsenalEnabled
class BIS_WLArsenalEnabled
{
{
title = $STR_A3_Arsenal;
title = "$STR_A3_Arsenal";
values[] = { 1, 0 };
values[] = { 1, 0 };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
Line 143: Line 143:
class BIS_WLMarkersTransparency
class BIS_WLMarkersTransparency
{
{
title = $STR_A3_WL_param7_title;
title = "$STR_A3_WL_param7_title";
values[] = { 4, 3, 2, 1, 0 };
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 };
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 };
Line 150: Line 150:
class BIS_WLPlayersTransparency
class BIS_WLPlayersTransparency
{
{
title = $STR_A3_WL_param8_title;
title = "$STR_A3_WL_param8_title";
values[] = { 4, 3, 2, 1, 0 };
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 };
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 };
Line 157: Line 157:
class BIS_WLFatigueEnabled
class BIS_WLFatigueEnabled
{
{
title = $STR_A3_fatigue1;
title = "$STR_A3_fatigue1";
values[] = { 1, 0 };
values[] = { 1, 0 };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
Line 164: Line 164:
class BIS_WLMusic
class BIS_WLMusic
{
{
title = $STR_A3_rscattributemusic_title;
title = "$STR_A3_rscattributemusic_title";
values[] = { 1, 0 };
values[] = { 1, 0 };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
Line 171: Line 171:
class BIS_WLVoice
class BIS_WLVoice
{
{
title = $STR_A3_orange_faction_idap_cfgidentities_expo_name;
title = "$STR_A3_orange_faction_idap_cfgidentities_expo_name";
values[] = { 1, 0 };
values[] = { 1, 0 };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
texts[] = { $STR_DISP_OPT_ENABLED, $STR_DISP_OPT_DISABLED };
Line 178: Line 178:
class BIS_WLStartCP
class BIS_WLStartCP
{
{
title = $STR_A3_WL_param12_title;
title = "$STR_A3_WL_param12_title";
values[] = { 0, 100, 250, 500, 1000, 2500, 5000 };
values[] = { 0, 100, 250, 500, 1000, 2500, 5000 };
texts[] = { "0", "100", "250", "500", "1000", "2500", "5000" };
texts[] = { "0", "100", "250", "500", "1000", "2500", "5000" };
Line 185: Line 185:
class BIS_WLCPMultiplier
class BIS_WLCPMultiplier
{
{
title = $STR_A3_WL_param13_title;
title = "$STR_A3_WL_param13_title";
values[] = { 1, 2, 3, 4, 5 };
values[] = { 1, 2, 3, 4, 5 };
texts[] = { "1x", "2x", "3x", "4x", "5x" };
texts[] = { "1x", "2x", "3x", "4x", "5x" };
Line 192: Line 192:
class BIS_WLVotingTimeout
class BIS_WLVotingTimeout
{
{
title = $STR_A3_WL_param14_title;
title = "$STR_A3_WL_param14_title";
values[] = { 5, 10, 15, 20, 25, 30 };
values[] = { 5, 10, 15, 20, 25, 30 };
texts[] = { "5", "10", "15", "20", "25", "30" };
texts[] = { "5", "10", "15", "20", "25", "30" };
Line 199: Line 199:
class BIS_WLVehicleSpan
class BIS_WLVehicleSpan
{
{
title = $STR_A3_WL_param15_title;
title = "$STR_A3_WL_param15_title";
values[] = { 900, 1800, 3600, 5400, 7200, 1000000 };
values[] = { 900, 1800, 3600, 5400, 7200, 1000000 };
texts[] = { "15", "30", "60", "90", "120", $STR_A3_WL_param15_value1 };
texts[] = { "15", "30", "60", "90", "120", $STR_A3_WL_param15_value1 };

Revision as of 16:02, 25 February 2023

Arma 3 logo black.png1.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.

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

  • All Warlords modules can be found under Systems > Warlords.

Warlords modules.png

  • Place the Warlords Init module anywhere on the map (its position is irrelevant).
    • Feel free to tweak the settings in the module window (you open this window by double clicking on a placed module icon). Check the tooltips for each parameter.
  • Place two Warlords Base modules (one for each faction) on the locations you want to have the starting faction bases.
    • Don't forget to properly set up the side parameter in the module window!

parameter.png

  • Place Warlords Sector modules on desired sector locations.
    • You can change various parameters for individual sectors and bases in their module windows.
  • Connect the bases and the sectors by right clicking on any of them, selecting "Connect > Sync to" and left clicking on the sector or base you want to connect.
    • Connecting sectors defines which sectors need to be captured before unlocking a new sector.

connecting.png

  • Repeat this for other sectors until you've got all the sectors and bases linked in a reasonable way.

network.png

  • If you don't want to rely on random spawn positions, you can use Warlords Spawn Point modules.
    • You can also use empty triggers in the same way (in case you reach maximum group limit).
  • Feel free to experiment with the other Warlords modules as well, you will find details on how to use them in their module windows.

2. Place playable units

  • You should place the playable units inside their respective faction bases.
  • The type or number of playable units is up to you.
  • Make sure all of them are set as Player or Playable.
  • Make sure that all playable units are in separate groups.

playable.png

3. Set up multiplayer rules

  • You will find these settings under Attributes > Multiplayer... in the toolbar at the top of the screen.

mp settings.png

  • You can set most of these to your liking, however there is one attribute that needs to be set up specifically in order for the mode to work properly:
    • Respawn has to be set to Respawn on Custom Position
    • Respawn delay is up to you, the default used in all official missions is 20 seconds.

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:

  • Place the vehicle (with crew) you want to be spawned inside an independent sector. The vehicle will be spawned at the location you placed it on once this sector is targeted by one of the playable factions.
  • You can also assign some waypoints to this vehicle.
  • Connect the vehicle to the sector in the same way you linked sectors together (via Connect > Sync to).

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

  • If you enable these Parameters in your scenario, players will be able to tweak and override the scenario rules set up in the Init module.
  • Save your scenario via Scenario > Save As... from the toolbar at the top of the screen.
  • Name the scenario, select the MPMissions folder and hit Save.
  • Switch to your desktop and open your scenario folder. You can find it in Documents\Arma 3\MPMissions\ (you should see a file called mission.sqm here).
  • Inside this folder, create a file called description.ext.
  • Copy/paste this text into the file and save it:
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

  • Assets available in the Request menu can be customized by creating new class in CfgWLRequisitionPresets.
  • You can have the config entry in an addon or put it directly into your mission's description.ext file which we covered in the previous section. Syntax is following:
class CfgWLRequisitionPresets
{
	class MyWLAssetList // --- class name used in the Init module
	{
		class WEST // --- assets available for BLUFOR
		{
			class Infantry
			{
				class B_Soldier_F // --- must be asset class name
				{
					cost = 100; // --- Command Points required
					requirements[] = {}; // --- dispositions required ("A" = airstrip, "H" = helipad, "W" = water (harbor))
				};
			};
			class Vehicles
			{
				class B_Quadbike_01_F
				{
					cost = 50;
					requirements[] = {};
				};
			};
			class Aircraft
			{
				class B_Plane_CAS_01_F
				{
					cost = 7500;
					requirements[] = { "A" };
				};
			};
			class Naval
			{
				class O_Boat_Armed_01_hmg_F
				{
					cost = 500;
					requirements[] = { "W" };
				};
			};
			class Gear
			{
				class Box_NATO_Ammo_F
				{
					cost = 200;
					requirements[] = {};
				};
			};
			class Defences
			{
				class B_HMG_01_F
				{
					cost = 250;
					requirements[] = {};
					offset[] = { 0, 5.3, 0 }; // --- custom offset (optional)
				};
			};
		};
		class EAST // --- assets available for OPFOR
		{
			// --- rest of input
		};
	};
};
  • In your scenario's Warlords Init module window, find the parameter called Asset list.
    • If you've been using the default one until now, it should say ['A3DefaultAll']. Rewrite it to ['MyWLAssetList'] or any other name you've picked for the class name.
  • If you want to use custom assets for the garrison units that get spawned in the scenario automatically, you'll need to change the individual faction class names in the same module window.

3. Custom factions

  • Custom factions can be used by changing the BLUFOR / OPFOR / Independent faction config classes in the Warlords Init module window in the editor.
    • These class names can be find by opening the Config viewer from the editor and navigating to CfgFactionClasses.
  • You can further customize the types of units and groups to be spawned by using special class CfgWLFactionAssets. See the example below:
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

  • You might want to keep certain assets purchasable only by players. In vanialla, this is utilized for crewmen, pilots etc.
  • Use this syntax in your scenario's description.ext:
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

  • Below you see an example of changed 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

  • All scenarios you've created using the Workshop version should be easy to update to use the new version. Simply remove the JEZ_ prefix from all module class names and properties in mission.sqm.

Easiest way to do this would probably be mass replacing

"JEZ_ModuleWL

with

"ModuleWL