Server admin / host can customize multiplayer missions in ROLE ASSIGNMENT menu using parameters prepared by the mission designer.

Important limitation. In an MP environment, the Paramsarray is not available on the client until some time after preinit. but before postinit so any code called upon the client should take this into consideration

Manual Params 编辑

Config 编辑

File:Arma3 Mission Parameters.png

Params are defined in description.ext.

class Params
	class AISkill
		title = "AI Skill"; // Param name visible in the list
		values[] = {20,60,100}; // Values; must be integers; has to have the same number of elements as 'texts'
		texts[] = {"Recruit","Regular","Veteran"}; // Description of each selectable item
		default = 60; // Default value; must be listed in 'values' array, otherwise 0 is used
               // Default values that are not whole numbers do not work. Param will default to 0 (or 1 if defined)
	class Daytime
		title = "Time";
		texts[] = {"Morning","Day","Evening","Night"};
		values[] = {6,12,18,0};
		default = 12;
		function = "BIS_fnc_paramDaytime"; // (Optional) Function called when player joins, selected value is passed as an argument
 		isGlobal = 1; // (Optional) 1 to execute script / function locally for every player who joins, 0 to do it only on server
	class ViewDistance
		title = "View distance (in metres)";
		values[] = {500,1000,2000,5000};
		// When 'texts' are missing, values will be displayed directly instead
		default = 1000;
		file = "setViewDistance.sqf"; // (Optional) Script called when player joins, selected value is passed as an argument

Mission 编辑

Selected values are stored in paramsArray array, accessible anytime during the mission on any connected computer. Their order is the same as is in description.ext (for example, params above would result in [12,1] if default values were kept).

Example (can be used in init.sqf):

if (isServer) then {
	_skill = paramsArray select 0;
		_x setSkill _skill;
	} forEach allUnits;


setViewDistance (_this select 0);

Functions 编辑

When you're not sure about order of paramsArray items (e.g., in a module which can be used in any mission), you can use BIS_fnc_getParamValue to get value of a param with given classname.

_viewDistance = "ViewDistance" call BIS_fnc_getParamValue;

Predefined Params 编辑

Arma 3 introduces a framework for defining commonly used params (e.g., time of the day or mission duration), which can be shared across multiple missions. Once included to description.ext, they will initialize automatically. Some of them can be further customized using specific macros.

class Params
	#include "\a3\functions_f\Params\paramWeather.hpp"

	#define TICKETS_DEFAULT 600
	#include "\a3\functions_f\Params\paramRespawnTickets.hpp"
 ! Param templates currently don't work with PBO missions manually copied to MPMissions folder. Unpacked missions, Steam missions and missions which are part of an addon works correctly.

Available Templates 编辑

File Description Optional variables
\a3\functions_f\Params\paramCountdown.hpp Set mission countdown (in seconds)
#define COUNTDOWN_MIN		600
#define COUNTDOWN_MAX		3600
\a3\functions_f\Params\paramDaytimeHour.hpp Set starting hour, options are represented by whole hours
 //Can be any integer between 0 and 23
\a3\functions_f\Params\paramDaytimePeriod.hpp Set starting hour, options are described by words
 //Can be 0, 6, 12 or 18
\a3\functions_f\Params\paramDebugConsole.hpp Allow debug console for logged in admin
 //0 (disabled) or 1 (enabled)
\a3\functions_f\Params\paramGuerFriendly.hpp Set to whom will independent side be friendly
 //Can be any -1 (Nobody}, 0 (OPFOR), 1 (BLUFOR) or 2 (Everybody)
\a3\functions_f\Params\paramRespawnTickets.hpp Set respawn tickets for all sides
#define TICKETS_MIN		100
#define TICKETS_MAX		1100
\a3\functions_f\Params\paramWeather.hpp Set default weather
 //Can be 0 (sunny), 25, 50, 75 or 100 (storm))
\a3\Functions_F_MP_Mark\Params\paramTimeAcceleration.hpp Sets a time multiplier for in-game time. See setTimeMultiplier
 //Can be x1, x2, x5, x10 or x20
\a3\Functions_F_Heli\Params\paramViewDistance.hpp Set rendering distance, in meters. See setViewDistance
#define VIEW_DISTANCE_MIN	1500
#define VIEW_DISTANCE_MAX	4000