Server Config File – Arma 2

From Bohemia Interactive Community
Jump to navigation Jump to search
m (→‎Comments: removed some obsolete informations about regularCheck which cause more harm than good as it looks it's better disable it, which is terribly wrong)
m (Fix link)
 
(224 intermediate revisions by 29 users not shown)
Line 1: Line 1:
==Introduction==
{{TOC|side}}{{Feature|arma3|This page is for games '''before''' {{arma3}}. For a dedicated {{arma3}} page, see [[Arma 3: Server Config File]].}}


This article deals with the '''server.cfg''', the name means nothing, and can be called anything. The real name is determined by the [[-config]] command line option when launching the dedicated server. This is a configuration file which you can use to configure various game server settings such as the difficulty level, how many votes are needed, and welcome messages. Please feel free to add more information. There is no default name - when you do not specify the filename, no server configuration file is loaded.


==Server Options==
This article deals with the '''server.cfg''', a configuration file which you can use to configure various game server settings such as the difficulty level, how many votes are needed, welcome messages, etc.


{| border="1" cellpadding="2" cellspacing="2">
The name ''server.cfg'' is only a standard as the file can be called anything. The real name is determined by the {{hl|[[:Category:Startup Parameters|-config]]}} command line option when launching the dedicated server. There is no default name - when no filename is specified, no server configuration file is loaded.
 
 
{{Clear}}
== Server Options ==
 
{| class="wikitable sortable" style="width: 100%"
! style="width: 30%" | Parameter !! Description
|-
| <syntaxhighlight lang="cpp" inline>passwordAdmin = "xyzxyz";</syntaxhighlight> || Password to protect admin access.
|-
| <syntaxhighlight lang="cpp" inline>password = "xyz";</syntaxhighlight> || Password required to connect to server.
|-
|-
| style="width:400px" | '''Parameter''' || '''Description'''
| <syntaxhighlight lang="cpp" inline>serverCommandPassword = "xyzxyz";</syntaxhighlight> || Password required by alternate syntax of [[serverCommand]] server-side scripting.
|-
|-
| passwordAdmin = "xyzxyz"; || Password to protect admin access.
| <syntaxhighlight lang="cpp" inline>hostname = "My Server";</syntaxhighlight> || Servername visible in the game browser.
|-
|-
| password = "xyz"; || Password required to connect to server.
| <syntaxhighlight lang="cpp" inline>maxPlayers = 10;</syntaxhighlight> || The maximum number of players that can connect to server. The final number will be lesser between number given here and number of mission slots (default value is 64 for dedicated server).
|-
|-
| hostname="My Server"; || Servername visible in the game browser.
| <syntaxhighlight lang="cpp" inline>motd[] = { "Welcome to my server.", "Hosted in the net." };</syntaxhighlight> || Two lines welcome message. Comma is the 'new line' separator.
|-
|-
| maxPlayers = 10; || The maximum number of players that can connect to server ( seems to be out by 1 in the demo at least ). Number of mission slots override this setting.
| <syntaxhighlight lang="cpp" inline>admins[] = { "<UID>" };</syntaxhighlight> || e.g. <syntaxhighlight lang="cpp" inline>admins[] = { "1234", "5678" };</syntaxhighlight> whitelisted client can use #login w/o password (since {{Name|arma2oa|short}}). See {{Link|#Logged In Admin}}
|-
|-
| motd[]= {"Welcome to my server.","Hosted in the net."}; || Two lines welcome message. Comma is the 'new line' separator.
| <syntaxhighlight lang="cpp" inline>headlessClients[] = { "<IP>" };</syntaxhighlight> || rowspan="2" colspan="2" align="left" | see [[Arma 2: Server Config File#Dedicated_client_in_Headless_Client_mode|Headless Client Settings]]
|-
|-
| <syntaxhighlight lang="cpp" inline>localClient[] = { "<IP>" };</syntaxhighlight>
|}
|}


=== Server Behaviour ===
{| class="wikitable sortable" style="width: 100%"
! style="width: 30%" | Server Behaviour !! Description
|-
| <syntaxhighlight lang="cpp" inline>voteThreshold = 0.33;</syntaxhighlight> || Percentage of votes needed to confirm a vote. {{hl|33%}} in this example.
|-
| <syntaxhighlight lang="cpp" inline>voteMissionPlayers = 3;</syntaxhighlight> || Start mission-voting when ''X'' numberOfPlayers connect. {{hl|3}} players in this example.
|-
| <syntaxhighlight lang="cpp" inline>allowedVoteCmds[] = { { "kick", false, false, 0.75 } };</syntaxhighlight> || rowspan="2" colspan="2" align="left" | see [[Arma_3:_Mission_voting|Mission voting]]
|-
| <syntaxhighlight lang="cpp" inline>allowedVotedAdminCmds[] = { { "mission", true, true } };</syntaxhighlight>
|-
| <syntaxhighlight lang="cpp" inline>kickDuplicate = 1;</syntaxhighlight> || Do not allow duplicate ''game IDs''. Second player with an existing ID will be kicked automatically. {{hl|1}} means active, {{hl|0}} disabled.
|-
| <syntaxhighlight lang="cpp" inline>loopback = true;</syntaxhighlight> || Adding this option will force server into LAN mode. This will allow multiple local instances of the game to connect to the server for testing purposes. At the same time it will prevent all non-local instances from connecting.
|-
| <syntaxhighlight lang="cpp" inline>checkfiles[] = { "dta\bin.pbo", "a10\config.bin" };</syntaxhighlight> || '''Outdated - replaced by [[ArmA:_Addon_Signatures|verifySignatures]]!''' Only use if you really understand what it does.
List of files to check for integrity with ''crc check''. Possible to check ''pbo files'' or files inside ''pbos''.
Beware checking large files, which takes serious processing on the server and can cause various issues.
|-
| <syntaxhighlight lang="cpp" inline>equalModRequired = 1;</syntaxhighlight> || '''Outdated - replaced by [[ArmA:_Addon_Signatures|verifySignatures]]!''' Only use if you really understand what it does.


Clients require the exact same ''modfolder'' naming, order and amount as the server. {{hl|1}} means active, {{hl|0}} disabled.
|-
| <syntaxhighlight lang="cpp" inline>upnp = true;</syntaxhighlight> || Default: false. Automatically creates port mapping on UPNP/IGD enabled router. This option allows you to create a server behind NAT (your router must have public IP and support UPNP/IGD protocol).
Read more {{Link|https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol|Internet Gateway Device (IGD) Standardized Device Control Protocol}} .


{| border="1" cellpadding="2" cellspacing="2">
Warning: When enabled then this setting may delay server start-up by 600s (standard UDP timeout of 10 minutes) if blocked on firewall or bad routing etc. Thus in such case is recommended to disable it.
|-
|-
| style="width:400px" | '''Server Behavior''' || '''Description'''
| <syntaxhighlight lang="cpp" inline>allowedHTMLLoadURIs[] = { "http://arma2.com" };</syntaxhighlight> || Only allow files from listed URIs and URLs to be loaded via [[htmlLoad]] command. Comment out if not used. Can use += to add to the existing list.
|-
|-
| voteThreshold = 0.33; || Percentage of votes needed to confirm a vote. 33 percent in this example.
| <syntaxhighlight lang="cpp" inline>filePatchingExceptions[] = { "123456789", "987654321" };</syntaxhighlight> || Whitelisted Steam IDs allowed filePatching
|-
|-
| voteMissionPlayers = 3; || Start mission-voting when X numberOfPlayers connect. 3 players in this example.
| <syntaxhighlight lang="cpp" inline>enablePlayerDiag = 1:</syntaxhighlight> || Logs players' bandwidth and desync info every 60 seconds, as well as "network message is pending" owner identity.
|-
|-
| reportingIP="<>"; ||  
| <syntaxhighlight lang="cpp" inline>callExtReportLimit = 1000.0;</syntaxhighlight> || If server initiated [[callExtension]] takes longer than specified limit in milliseconds, the warning will be logged into server {{hl|.rpt}} file as well as reflected in the extension return result. Default: 1000.0
* Private server - no reporting: "noreport".
* ArmA: "armedass.master.gamespy.com" to report to the gamespy master server.  
* ArmA2: "arma2pc.master.gamespy.com"
* ArmA2OA: "arma2oapc.master.gamespy.com"
|-
|-
| kickduplicate = 1; || Do not allow duplicate game ids. Second player with an existing ID will be kicked automatically. 1 means active, 0 disabled.
| <syntaxhighlight lang="cpp" inline>missionsToServerRestart = 8;</syntaxhighlight> || Number of times missionEnd happens before server initiate process restart (uses actual session startup command-line parameters, not possible to combine with `missionsToShutdown` )<br>
|-
|-
| checkfiles[]={"dta\bin.pbo","a10\config.bin"}; || '''Outdated - replaced by [[ArmA:_Addon_Signatures|verifySignatures]]!''' Only use if you really understand what it does.<br>List of files to check for integrity with crc check. Possible to check pbo files or files inside pbos. Beware checking large files takes serious processing on the server and can cause various issues.
| <syntaxhighlight lang="cpp" inline>missionsToShutdown = 8;</syntaxhighlight> || Number of times missionEnd happens before server initiate process shutdown (has same behavior as setting named `missionsToHardRestart`)<br>
|-
|-
| equalModRequired = 1; || '''Outdated - replaced by [[ArmA:_Addon_Signatures|verifySignatures]]!''' Only use if you really understand what it does.<br>Clients require the exact same modfolder naming, order and amount as the server. 1 means active, 0 disabled.
| <syntaxhighlight lang="cpp" inline>autoSelectMission = true;</syntaxhighlight> || When enabled, the server auto-starts next mission in mission cycle and waits for players in the role selection.<br>
This allows full mission information in server browser and then results in proper filtering of the servers.<br>
This is lesser-variant (trimmed) of server startup command-line parameter `-autoInit`<br>
Might collide with campaign linked missions / need mission cycle etc.
|-
|-
| <syntaxhighlight lang="cpp" inline>randomMissionOrder = true;</syntaxhighlight> || When enabled, the server random start / next selection with one of missions from mission rotation list. ( setting goes outside(before) Mission class {}; )
|-
| <syntaxhighlight lang="cpp" inline>disableChannels[] = { { 0, false, true } };</syntaxhighlight> ||
<syntaxhighlight lang="cpp" inline>disableChannels[] = { { channelID, text, voice }, ... };</syntaxhighlight>
* ''ChannelID'' : [[Number]] - use single digit of (0 to 6) to define channelID. Default: No restriction to any channels, with text/von chat set to false.
* ''text'' : [[Boolean]] - use [[true]] to disable usage of text-chat for defined channelID. Default: '''[[false]]'''
* ''voice'' : [[Boolean]] - use [[true]] to disable usage of voice-chat (VON) for defined channelID. Default: '''[[false]]'''
List of channels ID:
{{Columns|4|
* 0 {{=}} Global
* 1 {{=}} Side
* 2 {{=}} Command
* 3 {{=}} Group
* 4 {{=}} Vehicle
* 5 {{=}} Direct
* 6 {{=}} System
}}
{{Feature|informative|A mission which uses [[Description.ext#disableChannels|disableChannels]] will override any setting of ''disableChannels[]'' in the '''server.cfg'''.}}
|}
|}


=== Arma server only ===


{{Feature|informative|the following settings do not apply to {{ofp}}.}}


{| border="1" cellpadding="2" cellspacing="2">
{| class="wikitable sortable" style="width: 100%"
! style="width: 30%" | Arma Only Parameters !! Description
|-
| <syntaxhighlight lang="cpp" inline>verifySignatures = 2;</syntaxhighlight> || Enables or disables the [[ArmA: Addon Signatures|signature verification]] for addons.
* Default = {{hl|2}}.
* Verification disabled = {{hl|0}}.
|-
| <syntaxhighlight lang="cpp" inline>disableVoN = 1;</syntaxhighlight> || Enables or disables the '''''V'''oice '''o'''ver '''N'''et''. Default = {{hl|0}}.
|-
| <syntaxhighlight lang="cpp" inline>vonCodecQuality = 10;</syntaxhighlight> || Defines ''VoN'' codec quality. Value range is from {{hl|1}} to {{hl|20}}.
* Default = {{hl|3}}.
* Since {{Name|arma2oa|short}} 1.62.95417 supports range {{hl|1-20}}
* Since {{Name|arma2oa|short}} 1.63.x will support range {{hl|1-30}}
* 8kHz is {{hl|0-10}}, 16kHz is {{hl|11-20}}, for {{hl|21-30}} it is 32kHz for SPEEX codec and 48kHz for OPUS codec.
|-
|-
| style="width:400px" | '''ArmA Only Parameters''' || '''Description'''
| <syntaxhighlight lang="cpp" inline>vonCodec = 1;</syntaxhighlight> || Defines ''VoN'' codec type. Value range is from {{hl|0}} to {{hl|1}}.
* Default = {{hl|0}}.
* Value {{hl|0}} uses older {{Link|https://en.wikipedia.org/wiki/Speex|SPEEX codec}}, while {{hl|1}} switches to new IETF standard {{Link|https://en.wikipedia.org/wiki/Opus_(audio_format)|OPUS codec}}.
|-
|-
| verifySignatures = 1; || Enables or disables the [[ArmA: Addon Signatures|signature verification]] for addons. Default = 0. Changed in 1.59 patch with: http://forums.bistudio.com/showthread.php?t=115114
| <syntaxhighlight lang="cpp" inline>skipLobby = true;</syntaxhighlight> || If true, joining player will skip role selection. This is only used if no Mission, Campaign or Config setting {{hl|skipLobby}} is defined (See [[Description.ext#skipLobby]]). Default: false;
|-
|-
| disableVoN = 1; || Enables or disables the Voice over Net. Default = 0.
| <syntaxhighlight lang="cpp" inline>logFile = "server_console.log";</syntaxhighlight> || Enables output of dedicated server console into ''textfile''. Default location of log is same as ''crash dumps'' and other logs.<br>
(Local settings) Note that this does not change the location of the "''net.log''" file, which you enable with the {{hl|-netlog}} command line option.
|-
|-
| vonCodecQuality = 10; || Sets VoN codec quality. Value range is from 1 to 10. Default = 3.
| <syntaxhighlight lang="cpp" inline>doubleIdDetected = "command";</syntaxhighlight> || rowspan="7" colspan="2" align="center" | see [[ArmA: Armed Assault: Server Side Scripting|Server Side Scripting]]
|-
|-
| logFile = "server_console.log"; || Enables output of dedicated server console into textfile. Default location of log is same as crash dumps and other logs. (Local settings) Note that this does not change the location of the "net.log" file, which you enable with the -netlog command line option.
| <syntaxhighlight lang="cpp" inline>onUserConnected = "command";</syntaxhighlight>
|-
|-
| doubleIdDetected = "command"; || rowspan="7" colspan="2" align="center"| see [[ArmA: Server Side Scripting|Server Side Scripting]]
| <syntaxhighlight lang="cpp" inline>onUserDisconnected = "command";</syntaxhighlight>
|-
|-
| onUserConnected = "command";
| <syntaxhighlight lang="cpp" inline>onHackedData = "command";</syntaxhighlight>
|-
|-
| onUserDisconnected = "command";
| <syntaxhighlight lang="cpp" inline>onDifferentData = "command";</syntaxhighlight>
|-
|-
| onHackedData = "command";
| <syntaxhighlight lang="cpp" inline>onUnsignedData = "command";</syntaxhighlight>
|-
|-
| onDifferentData = "command";
| <syntaxhighlight lang="cpp" inline>onUserKicked = "command";</syntaxhighlight>
|-
|-
| onUnsignedData = "command";
| <syntaxhighlight lang="cpp" inline>regularCheck = "command";</syntaxhighlight>
|-
|-
| regularCheck = "command";
| <syntaxhighlight lang="cpp" inline>BattlEye = 1;</syntaxhighlight> || Enables or disables the [[BattlEye]] anti-cheat engine. Default {{hl|0}}. Requires installed battleye on server and clients joining the server
|-
|-
| BattlEye=1; || Enables or disables the BattlEye anti-cheat engine. Default 0. - since 1.09 beta. Note that this requires specific dlls to be installed on the server and all clients joining the game
| <syntaxhighlight lang="cpp" inline>timeStampFormat = "short";</syntaxhighlight> || Set the timestamp format used on each report line in server-side [[Crash Files|RPT file]]. Possible values are "none" (default), "short", "full".
|-
|-
| timeStampFormat="short"; || Set the timestamp format used on each report line in server-side RPT file. Possible values are "none" (default),"short","full".
| <syntaxhighlight lang="cpp" inline>forceRotorLibSimulation = 0;</syntaxhighlight> || Enforces the Advanced Flight Model on the server. Default = {{hl|0}} (up to the player). {{hl|1}} - forced AFM, {{hl|2}} - forced SFM.
|-
|-
| persistent = 1; || Enables or disables the persistent battlefield. Default = 0. See note below.
| <syntaxhighlight lang="cpp" inline>persistent = 1;</syntaxhighlight> || Mission keeps running when all clients disconnect.. Default = {{hl|0}}. See note below.
|-
| <syntaxhighlight lang="cpp" inline>requiredBuild = xxxxx;</syntaxhighlight> || Minimum required client version. Clients with version lower than {{hl|requiredBuild}} will not be able to connect. If {{hl|requiredBuild}} is set to a large number, like {{hl|c= requiredBuild = 999999999;}} for example, it will automatically be lowered to the current server version.
|-
|-
|}
|}
Line 83: Line 159:
=== Comments ===
=== Comments ===


Enabling the persistence option will make missions that have either ''base'' or ''instant'' respawn keep on running after all players have disconnected. The other respawn types will not make a mission persistent. The kind of respawn a certain mission uses is set in its [[Description.ext]].
Enabling the persistence option will make missions that have either ''base'' or ''instant'' respawn keep on running after all players have disconnected.
The other respawn types will not make a mission persistent. The kind of respawn a certain mission uses is set in its [[Description.ext]].
 
If you do not include the ''regularCheck'' option or set {{hl|c= regularCheck = "";}} it will be activated automatically.
The server checks the files from time to time by hashing them and comparing the hash to the hash values of the clients.
{{Feature|important|It is strongly recommended to '''not disable''' {{hl|regularCheck}} as this will make the server prone to cheating.<br>
 
 
== Server Administration ==
 
If you are not using BattlEye RCon, there could only be 1 server admin at any given time. There are two ways of becoming admin, through a vote or through login with authenticated credentials.


If you do not include the ''regularCheck'' option or set ''regularCheck="";'' it will be activated.
=== Voted In Admin ===
Tserver checks files from time to time by hashing them and comparing the hash to the hash values of the clients. (The heavy I/O operation might be stressful for some systems with weak I/O, slow HDD etc., in case You still have these problems post 1.60 release please report to CIT ticket with details https://dev-heaven.net/projects/cis/issues/new )


To turn this function off, write ''regularCheck="{}";'''''It's strongly recommended to NOT DISABLE regularCheck as  this will make the server prone to cheating.'''
It is possible to become a server administrator through player voting process. Such admin has less abilities than logged in admin.<br>
For example, voted in admin would be able to kick a player, but only logged in admin would be able to ban a player.<br>
For more information on voting and voting configuration see page [[Arma_3:_Mission_voting|'''Server Voting''']].


==Server Security==
=== Logged In Admin ===


Several of these settings directly contribute to the security of the server and have been highlighted as important, particularly for running Public (no password) servers.
To log in as admin, one is required to type in{{hl|#login}} command followed by server password, which matches password defined in '''passwordAdmin''' param.<br>
Since Arma2OA it is possible to add one or several user ids [[getPlayerUID|UIDs]] into '''admins[]''' server config parameter, which would allow listed users to log in as admin by simply typing {{hl|#login}} without a password.<br>
This presents several advantages for managing the servers. The server owner can have multiple admins selected from the community and doesn't have to provide each one with server admin password.<br>
The adding and removing of UIDs is done on the server side which makes it easy to add and to remove admins if necessary. On the server, admins are handled on first come first served basis.<br>
Here are the rules:<br>
* If there is already a logged in admin on the server, the new admin will not be able to log in until previously logged in admin logs out
* If there is a voted in admin on the server, the logged in admin will override voted in admin and take admin role
* There is no difference between logged in admin that used admin password or logged in admin that was whitelisted with '''admins[]''' param
<br>
The logged in and voted in admins have different set of '''[[Multiplayer Server Commands]]''' available to them. See '''[[serverCommandAvailable]]''' for more information.


Refer to [[ArmA: Addon Signatures]] for current best practices in server mod signing and the use of key signature files.
=== Server Security ===


==Example Configuration File==
See {{Link|Arma 3: Server Config File#Server Security}} for security settings.


<pre>
 
== Example Configuration File ==
 
<syntaxhighlight lang="cpp">
//
//
// server.cfg
// server.cfg
//
//
// comments are written with "//" in front of them.
// comments are written with "//" in front of them.




// GLOBAL SETTINGS
// GLOBAL SETTINGS
hostname = "Fun and Test Server"; // The name of the server that shall be displayed in the public server list
hostname = "Fun and Test Server"; // The name of the server that shall be displayed in the public server list
password = ""; // Password for joining, eg connecting to the server
password = ""; // Password for joining, eg connecting to the server
passwordAdmin = "xyz"; // Password to become server admin. When you're in Arma MP and connected to the server, type '#login xyz'
passwordAdmin = "xyz"; // Password to become server admin. When you're in Arma MP and connected to the server, type '#login xyz'
reportingIP = "armedass.master.gamespy.com"; // This is the default setting. If you change this, your server  
serverCommandPassword = "xyzxyz"; // Password required by alternate syntax of [[serverCommand]] server-side scripting.
//reportingIP = arma2pc.master.gamespy.com";           // In case of ArmA2 might not turn up in the public list. Leave empty for private servers
 
//reportingIP = "arma2oapc.master.gamespy.com";         // For Operation Arrowhead
//reportingIP = "armedass.master.gamespy.com"; // For {{arma1}} publicly list your server on GameSpy. Leave empty for private servers
//reportingIP = "arma2pc.master.gamespy.com"; // For {{arma2}} publicly list your server on GameSpy. Leave empty for private servers
//reportingIP = "arma2oapc.master.gamespy.com"; // For {{arma2oa}} - deprecated since {{arma2oa}} version 1.63
 
logFile = "server_console.log"; // Tells ArmA-server where the logfile should go and what it should be called
logFile = "server_console.log"; // Tells ArmA-server where the logfile should go and what it should be called




Line 121: Line 221:
// Empty messages "" will not be displayed at all but are only for increasing the interval
// Empty messages "" will not be displayed at all but are only for increasing the interval
motd[] = {
motd[] = {
"", "", "",  
"", "",
"Welcome to the Testing",
"Two empty lines above for increasing interval",
"Server Settings: Veteran, Crosshair = off, 3rdPerson = off, MapInfo = off, VoN = off, CustomFiles = 200KByte, Voting = 33%, PersistentMaps = on",
"Welcome to our server",
"", "",
"We are looking for fun - Join us Now !",
"We are looking for fun - Join us Now !",
"http://www.mypage.org/",
"http://www.example.com",
"",
"One more empty line below for increasing interval",
"You should use mumble, its better than",
""
"TS2 Server for recruits: mypage.org:8767"
};
};
motdInterval = 5; // Time interval (in seconds) between each message
motdInterval = 5; // Time interval (in seconds) between each message
 




// JOINING RULES
// JOINING RULES
checkfiles[] = {}; // Outdated.
//checkfiles[] = {}; // Outdated.
maxPlayers = 30; // Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
maxPlayers = 64; // Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
kickDuplicate = 1; // Each ArmA version has its own ID. If kickDuplicate is set to 1, a player will be kicked when he joins a server where another player with the same ID is playing.
kickDuplicate = 1; // Each ArmA version has its own ID. If kickDuplicate is set to 1, a player will be kicked when he joins a server where another player with the same ID is playing.
verifySignatures = 1; // Verifies the players files by checking them with the .bisign signatures. Works properly from 1.08 on
verifySignatures = 2; // Verifies .pbos against .bisign files. Valid values 0 (disabled), 1 (prefer v2 sigs but accept v1 too) and 2 (only v2 sigs are allowed).
equalModRequired = 0; // Outdated. If set to 1, player has to use exactly the same -mod= startup parameter as the server.
equalModRequired = 0; // Outdated. If set to 1, player has to use exactly the same -mod= startup parameter as the server.
 
filePatchingExceptions[] = {"123456789","987654321"}; // Whitelisted Steam IDs allowed to join with -filePatching enabled
//requiredBuild = 12345; // Require clients joining to have at least build 12345 of game, preventing obsolete clients to connect




// VOTING
// VOTING
voteMissionPlayers = 1; // Tells the server how many people must connect so that it displays the mission selection screen.
voteMissionPlayers = 1; // Tells the server how many people must connect so that it displays the mission selection screen.
voteThreshold = 0.33; // 33% or more players need to vote for something, for example an admin or a new map, to become effective
voteThreshold = 0.33; // 33% or more players need to vote for something, for example an admin or a new map, to become effective
 




// INGAME SETTINGS
// INGAME SETTINGS
disableVoN = 1; // If set to 1, Voice over Net will not be available
disableVoN = 0; // If set to 1, Voice over Net will not be available
vonCodecQuality = 0; // Quality from 1 to 10
vonCodecQuality = 30; // since 1.62.95417 supports range 1-20 //since 1.63.x will supports range 1-30 //8kHz is 0-10, 16kHz is 11-20, 32kHz(48kHz) is 21-30
persistent = 1; // If 1, missions still run on even after the last player disconnected.
persistent = 1; // If 1, missions still run on even after the last player disconnected.
timeStampFormat = "short"; // Set the timestamp format used on each report line in server-side RPT file. Possible values are "none" (default),"short","full".
BattlEye = 1; // Server to use BattlEye system
//allowedHTMLLoadURIs[] = {}; // Leave commented to let missions/campaigns/addons decide what URIs are supported. Uncomment to define server-level restrictions for URIs


// TIMEOUTS
disconnectTimeout = 5; // Time to wait before disconnecting a user which temporarly lost connection. Range is 5 to 90 seconds.
maxDesync = 150; // Max desync value until server kick the user
maxPing= 200; // Max ping value until server kick the user
maxPacketLoss= 50; // Max packetloss value until server kick the user
kickClientsOnSlowNetwork[] = { 0, 0, 0, 0 }; // Defines if {<MaxPing>, <MaxPacketLoss>, <MaxDesync>, <DisconnectTimeout>} will be logged (0) or kicked (1)
kickTimeout[] = { {0, -1}, {1, 180}, {2, 180}, {3, 180} };
votingTimeOut[] = {60, 90}; // Kicks users from server if they spend too much time in mission voting
roleTimeOut[] = {90, 120}; // Kicks users from server if they spend too much time in role selection
briefingTimeOut[] = {60, 90}; // Kicks users from server if they spend too much time in briefing (map) screen
debriefingTimeOut[] = {45, 60}; // Kicks users from server if they spend too much time in debriefing screen
lobbyIdleTimeout = 300; // The amount of time the server will wait before force-starting a mission without a logged-in Admin.




// SCRIPTING ISSUES
// SCRIPTING ISSUES
onUserConnected = ""; // self-explaining
onUserConnected = "";
onUserDisconnected = "";
onUserDisconnected = "";
doubleIdDetected = "";
doubleIdDetected = "";
regularCheck = "";
//regularCheck = "{}"; // Server checks files from time to time by hashing them and comparing the hash to the hash values of the clients. //deprecated
 
// SIGNATURE VERIFICATION
onUnsignedData = "kick (_this select 0)"; // unsigned data detected
onHackedData = "kick (_this select 0)"; // tampering of the signature detected
onDifferentData = ""; // data with a valid signature, but different version than the one present on server detected


// some ArmA specific stuff - signature verification
onUnsignedData = "kick (_this select 0)"; // unsigned data detected
onHackedData = "ban (_this select 0)"; // tampering of the signature detected
onDifferentData = ""; // data with a valid signature, but different version than the one present on server detected
BattlEye = 1; //Server to use BattlEye system


// MISSIONS CYCLE (see below)
// MISSIONS CYCLE (see below)
class Missions {};
randomMissionOrder = true; // Randomly iterate through Missions list
autoSelectMission = true; // Server auto selects next mission in cycle


class Missions {}; // An empty Missions class means there will be no mission rotation


</pre>
missionWhitelist[] = {}; // An empty whitelist means there is no restriction on what missions' available
 
</syntaxhighlight>


=== Mission rotation ===
=== Mission rotation ===


One can set an automatic mission rotation. It will automatically select a mission join a player joins with no admin logged in. Once the mission is done and still players on the server, it automatically switches to the next in the cycle.
One can set an automatic mission rotation. Without an admin, the server will automatically select a mission when at least one player is connected. Once the mission is done and if there are still players on the server, it will automatically switch to the next in the cycle.


==== ArmA ====
Example:<br>


The following example shows one for the missions included with the demo.  
{{Feature|informative|When difficulty is set to {{hl|c= difficulty {{=}} "Custom";}} the server will look into {{hl|USERNAME.ArmaXProfile}} file for the definition of custom difficulty, which should look like this: [[server.armaprofile#Server_Difficulty_Example | click to see example]]}}


<pre>
<syntaxhighlight lang="cpp">
class Missions
class Missions
{
{
class MPCTF_01// name for the mission, can be anything
class TestMission01
{
template = "MP_Marksmen_01.Altis";
difficulty = "veteran";
class Params {};
};
 
class TestMission02
{
{
template = M02CaptureTheFlag.SaraLite;// omit the .pbo suffix
template = "MP_End_Game_01.Altis";
cadetMode = 1;// difficulty 0=veteran 1=cadet
difficulty = "veteran";
class Params {};
};
};
class MPCOOP_01
 
class TestMission03
{
{
template = M01Cooperative.SaraLite;
template = "MP_End_Game_02.Altis";
cadetMode = 1;
difficulty = "veteran";
class Params {};
};
};
class MPCTI_01
 
class TestMission04
{
{
template = M03ConquerTheIsland.SaraLite;
template = "MP_End_Game_03.Altis";
cadetMode = 1;
difficulty = "veteran";
class Params {};
};
};
};
};
</pre>
</syntaxhighlight>


==== ArmA II ====
=== Dedicated client in Headless Client mode ===


This example shows how to put all the stock ArmA II 1.05 multiplayer missions into rotation:
{| class="wikitable" style="width: 100%"
! style="width: 30%" | Parameter !! Description
|-
| <syntaxhighlight lang="cpp" inline>localClient[]={"127.0.0.1", ...};</syntaxhighlight> || to indicate clients with ''unlimited'' bandwidth and ''nearly no latency'' ({{Link|https://dev-heaven.net/issues/62500}}), Available since {{arma2oa}} build 99184
|-
| <syntaxhighlight lang="cpp" inline>headlessClients[]={"127.0.0.1", ...};</syntaxhighlight> || The server doesn't allow arbitrary connections from headless clients if you do not define the headless clients IPs.<br> Multiple Connections and Addresses are allowed in the case of more than one Headless Client.
|}


<pre>
{{Feature|informative|See [[Arma 3: Headless Client]] for more information.}}
class Missions
{
        class DM_Deathmatch
        {
                template = "MP_Deathmatch.Chernarus";// omit the .pbo suffix
                difficulty = "recruit";// difficulty: recruit, regular, veteran or mercenary (see CfgDifficulties in the main game config)
        };
        class DM_Detector
        {
                template = "MP_Detector.Chernarus";
                difficulty = "regular";
        };
        class Team_TeamDeathmatch
        {
                template = "MP_TeamDeathmatch.Chernarus";
                difficulty = "veteran";
        };
        class COOP_Paradrop
        {
                template = "MP_Paradrop.Chernarus";
                difficulty = "mercenary";
        };
        class CTI_CivilWar
        {
                template = "MP_CivilWar.Chernarus";
                difficulty = "regular";
        };
        class CTI_SuperPowers
        {
                template = "MP_Superpowers.Chernarus";
                difficulty = "regular";
        };
        class CTI_WarWelcome
        {
                template = "MP_WarWelcome.utes";
                difficulty = "regular";
        };
        class CTI_WhenDiplomacyFails
        {
                template = "MP_WhenDiplomacyFails.Chernarus";
                difficulty = "regular";
        };
};
</pre>


==== ArmA II: Operation Arrowhead ====
=== {{arma2oa}} - STEAM ports configuration ===


This example contains all the MP missions from the Operation Arrowhead expansion:
{| class="wikitable" style="width: 100%"
 
! style="width: 30%" | Parameter !! Description
<pre>
|-
class Missions
| <syntaxhighlight lang="cpp" inline>steamPort = <number>;</syntaxhighlight> || default {{hl|2303}}, defines port for communication with STEAM services, needs to be unique for each dedicated server within one OS instance / network interface
{
|-
class COOP_HikeInTheHills
| <syntaxhighlight lang="cpp" inline>steamQueryPort = <number>;</syntaxhighlight> || default {{hl|2304}}, defines port for server's STEAM query, needs to be unique for each dedicated server within one OS instance / network interface
{
|}
template="MPE1_HikeInTheHills.Takistan";// omit the .pbo suffix
difficulty="regular";// difficulty: recruit, regular, veteran or mercenary (see CfgDifficulties in the main game config)
};
class COOP_LaserShow
{
template="MPE1_LaserShow.Takistan";
difficulty="regular";
};
class COOP_Littlebird
{
template="MPE1_Littlebird.Takistan";
difficulty="regular";
};
class COOP_OneShotOneKill
{
template="MPE1_OneShotOneKill.Takistan";
difficulty="regular";
};
class COOP_SteelPanthers
{
template="MPE_SteelPanthers.Takistan";
difficulty="regular";
};
class CTI_MountainWarfare
{
template="MPE_MountainWarfare.Takistan";
difficulty="regular";
};
class CTI_MountainWarfare3Sided
{
template="MPE_MountainWarfare3Sided.Takistan";
difficulty="regular";
};
class CTI_UrbanWarfare
{
template="MP_UrbanWarfare.Zargabad";
difficulty="regular";
};
class SCont_SectorControl
{
template="MPE_SectorControl.Zargabad";
difficulty="veteran";
};
class DM_Dogfighters
{
template="MPE1_Dogfighters.Takistan";
difficulty="veteran";
};
class Team_HuntersHunted
{
template="MPE1_HuntersHunted.Takistan";
difficulty="veteran";
};
};
</pre>


=== ArmA II: Operation Arrowhead - multiple mission parameters configuration ===
=== Overriding mission params ===


Starting rev.72235 (22.7.2010) the Operation Arrowhead should be able not only to use multiple mission parameters, but also configure their defaults in ''server.cfg'' config file.
On dedicated server unless you are an admin you cannot set mission options provided by mission maker via class Params. However as a server owner you can override default setting with your own. See [[Mission Parameters]] for more info
There is a short example how it was tested when implemented. Feel free to rewrite this part of article, as I only want to stop speculations how these parameters are to be configured. This should be considered as a documentation just after implementation.


<pre>
// description.ext file: definition of parameters with their defaults.
// These default values can be overwritten in the server.cfg, as shown in the following list
titleParam1 = "Secretary dress";
valuesParam1[] = {0,1,2,3};
defValueParam1 = 0;
textsParam1[] = {"Bikini","Miniskirt","Tunic","Jeans"};


titleParam2 = "Secretary age";
== See Also ==
valuesParam2[] = {18,20,26,30,35,80};
defValueParam2 = 26;
textsParam2[] = {"18","20","26","30","35","Baba Jaga"};


class Params
* [[ArmA: Armed Assault: Server configuration|Server Configuration]]
{
* [[basic.cfg|Server Basic Config file]]
        class Name
* [[Arma 2: Startup Parameters]]
        {
* [[Arma 3: Startup Parameters]]
                title = "Secretary name";
* [[ArmA: Armed Assault: Dedicated Server]]
                values[] = {0,1,2,3};
* [[Arma 3: Dedicated Server]]
                texts[] = {"Iveta","Mila","Misa","Bara"};
* [[ArmA: Armed Assault: Server Side Scripting]]
                default = 3;
* [[Operation Flashpoint: Dedicated Server]]
        };
* [[Arma 3: Headless Client]]
        class WorkPlace
* [[Arma 3: Server Security]]
        {
* [[Arma 3: Mission voting]]
                title = "Secretary place";
* [[Arma: Mission rotation]]
                values[] = {0,1};
* [[Arma 2 Mission Rotation]]
                texts[] = {"Prague","Mnisek"};
* [[Arma 2 OA: Multiple Mission Parameters Configuration]]
                default = 1;
        };
        class Friend
        {
                title = "Her friend"
                values[] = {0,1};
                texts[] = {"None","Bebul"};
                default = 1;
        };
};
</pre>
 
Inside ''server.cfg'' one can define the param1 and param2 values along with new, named parameters inside ''class Params'', using each parameter ''class name'' to assign the corresponding parameter the value. The '''paramsArray''' cannot be used inside ''server.cfg'' config file (or you can use it, but engine has never read it :) ).
<pre>
class Missions
{
class CanBeAnything  // name for the mission, can be anything
{
template = "parametersTest.Desert_E"; // omit the .pbo suffix
difficulty = "regular"; // difficulty: recruit, regular, veteran & mercenary as specified in *.Arma2profile
                param1 = 2;  // dress
                param2 = 26; // age
                class Params
                {
                  Name = 2;
                  WorkPlace = 0;
                  Friend = 1;
                };
};
};
</pre>


==See Also==
*[[ArmA: Server configuration|Server Configuration]]
*[[Armed Assault:Dedicated Server]]
*[[ArmA: Server Side Scripting]]
*[[Operation Flashpoint:Dedicated Server]]


[[Category:Operation Flashpoint: Multiplayer|Server.cfg]]
{{GameCategory|ofp|Multiplayer}}
[[Category:ArmA: Multiplayer|Server.cfg]]
{{GameCategory|arma1|Multiplayer}}
{{GameCategory|arma2|Multiplayer}}

Latest revision as of 17:33, 26 July 2024

Arma 3
This page is for games before Arma 3. For a dedicated Arma 3 page, see Arma 3: Server Config File.


This article deals with the server.cfg, a configuration file which you can use to configure various game server settings such as the difficulty level, how many votes are needed, welcome messages, etc.

The name server.cfg is only a standard as the file can be called anything. The real name is determined by the -config command line option when launching the dedicated server. There is no default name - when no filename is specified, no server configuration file is loaded.


Server Options

Parameter Description
passwordAdmin = "xyzxyz"; Password to protect admin access.
password = "xyz"; Password required to connect to server.
serverCommandPassword = "xyzxyz"; Password required by alternate syntax of serverCommand server-side scripting.
hostname = "My Server"; Servername visible in the game browser.
maxPlayers = 10; The maximum number of players that can connect to server. The final number will be lesser between number given here and number of mission slots (default value is 64 for dedicated server).
motd[] = { "Welcome to my server.", "Hosted in the net." }; Two lines welcome message. Comma is the 'new line' separator.
admins[] = { "<UID>" }; e.g. admins[] = { "1234", "5678" }; whitelisted client can use #login w/o password (since Arma 2:OA). See Logged In Admin
headlessClients[] = { "<IP>" }; see Headless Client Settings
localClient[] = { "<IP>" };

Server Behaviour

Server Behaviour Description
voteThreshold = 0.33; Percentage of votes needed to confirm a vote. 33% in this example.
voteMissionPlayers = 3; Start mission-voting when X numberOfPlayers connect. 3 players in this example.
allowedVoteCmds[] = { { "kick", false, false, 0.75 } }; see Mission voting
allowedVotedAdminCmds[] = { { "mission", true, true } };
kickDuplicate = 1; Do not allow duplicate game IDs. Second player with an existing ID will be kicked automatically. 1 means active, 0 disabled.
loopback = true; Adding this option will force server into LAN mode. This will allow multiple local instances of the game to connect to the server for testing purposes. At the same time it will prevent all non-local instances from connecting.
checkfiles[] = { "dta\bin.pbo", "a10\config.bin" }; Outdated - replaced by verifySignatures! Only use if you really understand what it does.

List of files to check for integrity with crc check. Possible to check pbo files or files inside pbos.

Beware checking large files, which takes serious processing on the server and can cause various issues.

equalModRequired = 1; Outdated - replaced by verifySignatures! Only use if you really understand what it does.

Clients require the exact same modfolder naming, order and amount as the server. 1 means active, 0 disabled.

upnp = true; Default: false. Automatically creates port mapping on UPNP/IGD enabled router. This option allows you to create a server behind NAT (your router must have public IP and support UPNP/IGD protocol).

Read more Internet Gateway Device (IGD) Standardized Device Control Protocol .

Warning: When enabled then this setting may delay server start-up by 600s (standard UDP timeout of 10 minutes) if blocked on firewall or bad routing etc. Thus in such case is recommended to disable it.

allowedHTMLLoadURIs[] = { "http://arma2.com" }; Only allow files from listed URIs and URLs to be loaded via htmlLoad command. Comment out if not used. Can use += to add to the existing list.
filePatchingExceptions[] = { "123456789", "987654321" }; Whitelisted Steam IDs allowed filePatching
enablePlayerDiag = 1: Logs players' bandwidth and desync info every 60 seconds, as well as "network message is pending" owner identity.
callExtReportLimit = 1000.0; If server initiated callExtension takes longer than specified limit in milliseconds, the warning will be logged into server .rpt file as well as reflected in the extension return result. Default: 1000.0
missionsToServerRestart = 8; Number of times missionEnd happens before server initiate process restart (uses actual session startup command-line parameters, not possible to combine with `missionsToShutdown` )
missionsToShutdown = 8; Number of times missionEnd happens before server initiate process shutdown (has same behavior as setting named `missionsToHardRestart`)
autoSelectMission = true; When enabled, the server auto-starts next mission in mission cycle and waits for players in the role selection.

This allows full mission information in server browser and then results in proper filtering of the servers.
This is lesser-variant (trimmed) of server startup command-line parameter `-autoInit`
Might collide with campaign linked missions / need mission cycle etc.

randomMissionOrder = true; When enabled, the server random start / next selection with one of missions from mission rotation list. ( setting goes outside(before) Mission class {}; )
disableChannels[] = { { 0, false, true } };

disableChannels[] = { { channelID, text, voice }, ... };

  • ChannelID : Number - use single digit of (0 to 6) to define channelID. Default: No restriction to any channels, with text/von chat set to false.
  • text : Boolean - use true to disable usage of text-chat for defined channelID. Default: false
  • voice : Boolean - use true to disable usage of voice-chat (VON) for defined channelID. Default: false

List of channels ID:

  • 0 = Global
  • 1 = Side
  • 2 = Command
  • 3 = Group
  • 4 = Vehicle
  • 5 = Direct
  • 6 = System
A mission which uses disableChannels will override any setting of disableChannels[] in the server.cfg.

Arma server only

the following settings do not apply to Operation Flashpoint.
Arma Only Parameters Description
verifySignatures = 2; Enables or disables the signature verification for addons.
  • Default = 2.
  • Verification disabled = 0.
disableVoN = 1; Enables or disables the Voice over Net. Default = 0.
vonCodecQuality = 10; Defines VoN codec quality. Value range is from 1 to 20.
  • Default = 3.
  • Since Arma 2:OA 1.62.95417 supports range 1-20
  • Since Arma 2:OA 1.63.x will support range 1-30
  • 8kHz is 0-10, 16kHz is 11-20, for 21-30 it is 32kHz for SPEEX codec and 48kHz for OPUS codec.
vonCodec = 1; Defines VoN codec type. Value range is from 0 to 1.
skipLobby = true; If true, joining player will skip role selection. This is only used if no Mission, Campaign or Config setting skipLobby is defined (See Description.ext#skipLobby). Default: false;
logFile = "server_console.log"; Enables output of dedicated server console into textfile. Default location of log is same as crash dumps and other logs.

(Local settings) Note that this does not change the location of the "net.log" file, which you enable with the -netlog command line option.

doubleIdDetected = "command"; see Server Side Scripting
onUserConnected = "command";
onUserDisconnected = "command";
onHackedData = "command";
onDifferentData = "command";
onUnsignedData = "command";
onUserKicked = "command";
regularCheck = "command";
BattlEye = 1; Enables or disables the BattlEye anti-cheat engine. Default 0. Requires installed battleye on server and clients joining the server
timeStampFormat = "short"; Set the timestamp format used on each report line in server-side RPT file. Possible values are "none" (default), "short", "full".
forceRotorLibSimulation = 0; Enforces the Advanced Flight Model on the server. Default = 0 (up to the player). 1 - forced AFM, 2 - forced SFM.
persistent = 1; Mission keeps running when all clients disconnect.. Default = 0. See note below.
requiredBuild = xxxxx; Minimum required client version. Clients with version lower than requiredBuild will not be able to connect. If requiredBuild is set to a large number, like requiredBuild = 999999999; for example, it will automatically be lowered to the current server version.

Comments

Enabling the persistence option will make missions that have either base or instant respawn keep on running after all players have disconnected. The other respawn types will not make a mission persistent. The kind of respawn a certain mission uses is set in its Description.ext.

If you do not include the regularCheck option or set regularCheck = ""; it will be activated automatically. The server checks the files from time to time by hashing them and comparing the hash to the hash values of the clients. {{Feature|important|It is strongly recommended to not disable regularCheck as this will make the server prone to cheating.


Server Administration

If you are not using BattlEye RCon, there could only be 1 server admin at any given time. There are two ways of becoming admin, through a vote or through login with authenticated credentials.

Voted In Admin

It is possible to become a server administrator through player voting process. Such admin has less abilities than logged in admin.
For example, voted in admin would be able to kick a player, but only logged in admin would be able to ban a player.
For more information on voting and voting configuration see page Server Voting.

Logged In Admin

To log in as admin, one is required to type in#login command followed by server password, which matches password defined in passwordAdmin param.
Since Arma2OA it is possible to add one or several user ids UIDs into admins[] server config parameter, which would allow listed users to log in as admin by simply typing #login without a password.
This presents several advantages for managing the servers. The server owner can have multiple admins selected from the community and doesn't have to provide each one with server admin password.
The adding and removing of UIDs is done on the server side which makes it easy to add and to remove admins if necessary. On the server, admins are handled on first come first served basis.
Here are the rules:

  • If there is already a logged in admin on the server, the new admin will not be able to log in until previously logged in admin logs out
  • If there is a voted in admin on the server, the logged in admin will override voted in admin and take admin role
  • There is no difference between logged in admin that used admin password or logged in admin that was whitelisted with admins[] param


The logged in and voted in admins have different set of Multiplayer Server Commands available to them. See serverCommandAvailable for more information.

Server Security

See Arma 3: Server Config File - Server Security for security settings.


Example Configuration File

//
// server.cfg
//
// comments are written with "//" in front of them.


// GLOBAL SETTINGS
hostname = "Fun and Test Server";		// The name of the server that shall be displayed in the public server list
password = "";							// Password for joining, eg connecting to the server
passwordAdmin = "xyz";					// Password to become server admin. When you're in Arma MP and connected to the server, type '#login xyz'
serverCommandPassword = "xyzxyz";		// Password required by alternate syntax of [[serverCommand]] server-side scripting.

//reportingIP = "armedass.master.gamespy.com";	// For {{arma1}} publicly list your server on GameSpy. Leave empty for private servers
//reportingIP = "arma2pc.master.gamespy.com";	// For {{arma2}} publicly list your server on GameSpy. Leave empty for private servers
//reportingIP = "arma2oapc.master.gamespy.com";	// For {{arma2oa}} - deprecated since {{arma2oa}} version 1.63

logFile = "server_console.log";			// Tells ArmA-server where the logfile should go and what it should be called


// WELCOME MESSAGE ("message of the day")
// It can be several lines, separated by comma
// Empty messages "" will not be displayed at all but are only for increasing the interval
motd[] = {
	"", "",
	"Two empty lines above for increasing interval",
	"Welcome to our server",
	"", "",
	"We are looking for fun - Join us Now !",
	"http://www.example.com",
	"One more empty line below for increasing interval",
	""
};
motdInterval = 5;					// Time interval (in seconds) between each message


// JOINING RULES
//checkfiles[] = {};				// Outdated.
maxPlayers = 64;					// Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
kickDuplicate = 1;					// Each ArmA version has its own ID. If kickDuplicate is set to 1, a player will be kicked when he joins a server where another player with the same ID is playing.
verifySignatures = 2;				// Verifies .pbos against .bisign files. Valid values 0 (disabled), 1 (prefer v2 sigs but accept v1 too) and 2 (only v2 sigs are allowed).
equalModRequired = 0;				// Outdated. If set to 1, player has to use exactly the same -mod= startup parameter as the server.
filePatchingExceptions[] = {"123456789","987654321"}; // Whitelisted Steam IDs allowed to join with -filePatching enabled
//requiredBuild = 12345;			// Require clients joining to have at least build 12345 of game, preventing obsolete clients to connect


// VOTING
voteMissionPlayers = 1;				// Tells the server how many people must connect so that it displays the mission selection screen.
voteThreshold = 0.33;				// 33% or more players need to vote for something, for example an admin or a new map, to become effective


// INGAME SETTINGS
disableVoN = 0;					// If set to 1, Voice over Net will not be available
vonCodecQuality = 30;			// since 1.62.95417 supports range 1-20 //since 1.63.x will supports range 1-30 //8kHz is 0-10, 16kHz is 11-20, 32kHz(48kHz) is 21-30
persistent = 1;					// If 1, missions still run on even after the last player disconnected.
timeStampFormat = "short";		// Set the timestamp format used on each report line in server-side RPT file. Possible values are "none" (default),"short","full".
BattlEye = 1;					// Server to use BattlEye system
//allowedHTMLLoadURIs[] = {}; // Leave commented to let missions/campaigns/addons decide what URIs are supported. Uncomment to define server-level restrictions for URIs

// TIMEOUTS
disconnectTimeout = 5;			// Time to wait before disconnecting a user which temporarly lost connection. Range is 5 to 90 seconds.
maxDesync = 150;				// Max desync value until server kick the user
maxPing= 200;					// Max ping value until server kick the user
maxPacketLoss= 50;				// Max packetloss value until server kick the user
kickClientsOnSlowNetwork[] = { 0, 0, 0, 0 }; // Defines if {<MaxPing>, <MaxPacketLoss>, <MaxDesync>, <DisconnectTimeout>} will be logged (0) or kicked (1)
kickTimeout[] = { {0, -1}, {1, 180}, {2, 180}, {3, 180} };
votingTimeOut[] = {60, 90};		// Kicks users from server if they spend too much time in mission voting
roleTimeOut[] = {90, 120};		// Kicks users from server if they spend too much time in role selection
briefingTimeOut[] = {60, 90};	// Kicks users from server if they spend too much time in briefing (map) screen
debriefingTimeOut[] = {45, 60};	// Kicks users from server if they spend too much time in debriefing screen
lobbyIdleTimeout = 300;			// The amount of time the server will wait before force-starting a mission without a logged-in Admin.


// SCRIPTING ISSUES
onUserConnected = "";
onUserDisconnected = "";
doubleIdDetected = "";
//regularCheck = "{}";				// Server checks files from time to time by hashing them and comparing the hash to the hash values of the clients. //deprecated

// SIGNATURE VERIFICATION
onUnsignedData = "kick (_this select 0)";	// unsigned data detected
onHackedData = "kick (_this select 0)";		// tampering of the signature detected
onDifferentData = "";				// data with a valid signature, but different version than the one present on server detected


// MISSIONS CYCLE (see below)
randomMissionOrder = true;	// Randomly iterate through Missions list
autoSelectMission = true;	// Server auto selects next mission in cycle

class Missions {};			// An empty Missions class means there will be no mission rotation

missionWhitelist[] = {};	// An empty whitelist means there is no restriction on what missions' available

Mission rotation

One can set an automatic mission rotation. Without an admin, the server will automatically select a mission when at least one player is connected. Once the mission is done and if there are still players on the server, it will automatically switch to the next in the cycle.

Example:

When difficulty is set to difficulty = "Custom"; the server will look into USERNAME.ArmaXProfile file for the definition of custom difficulty, which should look like this: click to see example
class Missions
{
	class TestMission01
	{
		template = "MP_Marksmen_01.Altis";
		difficulty = "veteran";
		class Params {};
	};

	class TestMission02
	{
		template = "MP_End_Game_01.Altis";
		difficulty = "veteran";
		class Params {};
	};

	class TestMission03
	{
		template = "MP_End_Game_02.Altis";
		difficulty = "veteran";
		class Params {};
	};

	class TestMission04
	{
		template = "MP_End_Game_03.Altis";
		difficulty = "veteran";
		class Params {};
	};
};

Dedicated client in Headless Client mode

Parameter Description
localClient[]={"127.0.0.1", ...}; to indicate clients with unlimited bandwidth and nearly no latency (-dead link-), Available since Arma 2: Operation Arrowhead build 99184
headlessClients[]={"127.0.0.1", ...}; The server doesn't allow arbitrary connections from headless clients if you do not define the headless clients IPs.
Multiple Connections and Addresses are allowed in the case of more than one Headless Client.
See Arma 3: Headless Client for more information.

Arma 2: Operation Arrowhead - STEAM ports configuration

Parameter Description
steamPort = <number>; default 2303, defines port for communication with STEAM services, needs to be unique for each dedicated server within one OS instance / network interface
steamQueryPort = <number>; default 2304, defines port for server's STEAM query, needs to be unique for each dedicated server within one OS instance / network interface

Overriding mission params

On dedicated server unless you are an admin you cannot set mission options provided by mission maker via class Params. However as a server owner you can override default setting with your own. See Mission Parameters for more info


See Also