Mission Parameters – Arma 3
Killzone Kid (talk | contribs) (→Predefined Params: format) |
Killzone Kid (talk | contribs) (→Config: format) |
||
Line 9: | Line 9: | ||
[[File:Arma3 Mission Parameters.png|thumb|Mission Parameters selection]] | [[File:Arma3 Mission Parameters.png|thumb|Mission Parameters selection]] | ||
Params are defined in [[description.ext]]. | Params are defined in [[description.ext]]. | ||
<syntaxhighlight lang=cpp> | |||
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) [[Functions_Library_(Arma_3)|Function]] [[call]]ed 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 [[call]]ed when player joins, selected value is passed as an argument | |||
}; | |||
}; | |||
</syntaxhighlight> | |||
=== Mission === | === Mission === |
Revision as of 01:12, 7 February 2017
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
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) [[Functions_Library_(Arma_3)|Function]] [[call]]ed 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 [[call]]ed 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.sqf:
setViewDistance (_this select 0);
Functions
It is highly recommended that you use BIS_fnc_getParamValue instead of paramsArray to get value of a param with given class name. It is fast and secure and globally available on any connected PC as well as JIP.
_viewDistance = "ViewDistance" call BIS_fnc_getParamValue;
_viewDistance = ["ViewDistance", 500] 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"
};
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 #define COUNTDOWN_DEFAULT -1 |
\a3\functions_f\Params\paramDaytimeHour.hpp
|
Set starting hour, options are represented by whole hours |
//Can be any integer between 0 and 23
#define DAYTIMEHOUR_DEFAULT 19
|
\a3\functions_f\Params\paramDaytimePeriod.hpp
|
Set starting hour, options are described by words |
//Can be 0, 6, 12 or 18
#define DAYTIMEPERIOD_DEFAULT 12
|
\a3\functions_f\Params\paramDebugConsole.hpp
|
Allow debug console for logged in admin |
//0 (disabled) or 1 (enabled)
#define DEBUGCONSOLE_DEFAULT 1
|
\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)
#define GUERFRIENDLY_DEFAULT -1
|
\a3\functions_f\Params\paramRespawnTickets.hpp
|
Set respawn tickets for all sides |
#define TICKETS_MIN 100 #define TICKETS_MAX 1100 #define TICKETS_DEFAULT -1 |
\a3\functions_f\Params\paramWeather.hpp
|
Set default weather |
//Can be 0 (sunny), 25, 50, 75 or 100 (storm))
#define WEATHER_DEFAULT 40
|
\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
#define TIMEACCELERATION_DEFAULT 10
|
\a3\Functions_F_Heli\Params\paramViewDistance.hpp
|
Set rendering distance, in meters. See setViewDistance |
#define VIEW_DISTANCE_MIN 1500 #define VIEW_DISTANCE_MAX 4000 #define VIEW_DISTANCE_DEFAULT 2000 |