Multiplayer Server Commands: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(restartserver)
(Add #logremains)
 
(84 intermediate revisions by 14 users not shown)
Line 1: Line 1:
==Warning==
{{TOC|side}}
<small>
{{Feature|armaR|For {{armaR}} see [[Arma Reforger:Server Management]].}}
{{Important|Reports have been circulated of a script exploit that allows a non-admin player to force an in-game admin to issue Admin commands. Either #logout of server admin when not required, or consider using [[BattlEye#Rcon|BattlEye's RCon]] tool to administer the server out of band }}
</small>


==HowTo==  
 
You can access the command line '''by pressing the chat key ( ''default:'' <tt>/</tt> )'''.
{{Feature|important|
It is recommended to use [[BattlEye#RCon|BattlEye's RCon]] tool to administrate the server.<br>
RCON cannot be affected by in-game script exploits.<br>
It uses custom port which one may easily secure by firewall rules!
}}
 
 
== How To ==
 
You can access the command line '''by pressing the chat key''' (default {{Controls|/}}).


In the chat input window you can type any of the following commands in and confirm them with the enter key.
In the chat input window you can type any of the following commands in and confirm them with the enter key.


You have to '''add the <tt>#</tt> character before the command'''.
You '''have''' to add the {{hl|#}} character before the command.
 
The commands can be used in SQF scripts by using [[serverCommand]].
 
{{Feature|informative|
'''Troubleshooting''':<br>
Some commands are confirmed via a message in the console.<br>
If you enter a command that is properly formatted, and you see no confirmation of the command, then an error may have occurred.<br>
Check your [[Crash_Files|server log]] for potentially more information why it failed (e.g. one or more of your mission files is corrupt or has an error which prevents the Missions Lobby from loading, or may prevent other commands like #restart or #reassign from executing).
}}
 


'''Troubleshooting''': All commands are confirmed via a message in the console. If you enter a command that is properly formatted and you see no confirmation of the command then an error has occurred. Check your server log for more information (e.g. one or more of your mission files is corrupt or has an error which prevents the Missions Lobby from loading, or may prevent other commands like #restart or #reassign from executing).
== Commands ==


==Commands==
The following commands are available to you once you have connected to a server:
The following commands are available to you once you have connected to a server:


===Admin===
=== Admin Commands ===
{| class="bikitable"
 
! Command                                 !! Example                     !! Description
==== Server/Session Administration ====
{| class="wikitable"
! Command !! Example !! Description
|-
| {{hl|#login}} <br>
{{hl|#login}} ''password''<br>
| {{hl|#login}}  <br>
{{hl|#login adminPW}}  <br>
| Log in as the admin. Without password only possible if you are listed as an admin[] in [[Arma 3: Server Config File#Server_Options]]
|-
| {{hl|#logout}}
|
| Admin log out.
|-
|{{hl|#mission}} ''filename''<br>
{{hl|#mission}}&nbsp;''filename''&nbsp;''difficulty''
|{{hl|#mission&nbsp;myDM.intro}}<br>
{{hl|#mission&nbsp;myDM.intro&nbsp;Veteran}}
| Select mission with known name and set the difficulty. Difficulty parameter is optional and if not set, current difficulty is kept.
|-
| {{hl|#missions}}
|
| Allows selection of mission on shown list of available missions (all or those inside missionWhiteList[] = {}; within server.cfg). <br> Note: this will trigger `missionEnd` (so if server.cfg is set with e.g. MissionsToServerRestart or MissionsToShutdown threshold, the server may immediately restart/shutdown)
|-
|-
| <tt>#login</tt> ''password''            || <tt>#login adminPW</tt>      || Log in as the admin.
| {{hl|#restart}}
|  
| Restart mission.
|-
|-
| <tt>#logout</tt>                        ||                              || Admin log out.
| {{hl|#reassign}}
|  
| Start over and reassign roles.
|-
|-
| <tt>#mission</tt> ''filename'' ''difficulty''
| {{hl|#lock}}
|| <tt>#mission&nbsp;myDM.intro</tt><br><tt>#mission&nbsp;myDM.intro&nbsp;Veteran</tt><br>
| Locks the server, prevents new clients from joining.
|| Select mission with known name and set the difficulty. Difficulty parameter is optional and if not set, current difficulty is kept.
|-
|-
| <tt>#missions</tt>                      ||                              || Select mission.
| {{hl|#unlock}}
| Unlocks the server, allows new clients to join.
|-
|-
| <tt>#restart</tt>                      ||                              || Restart mission.
| {{hl|#shutdown}}
|  
| Shuts down the server immediately
|-
|-
| <tt>#reassign</tt>                      ||                             || Start over and reassign roles.
| {{hl|#restartserver}}
|  
| {{GVI|arma3|1.66}} Shuts down and restarts the server immediately
|-
|-
| <tt>#shutdown</tt>                      ||                             || Shuts down the server.
| {{hl|#shutdownaftermission}}
|  
| {{GVI|arma3|1.72}} Shuts down the server after mission ends
|-
|-
| <tt>#restartserver</tt>                      ||                             || Shuts down and restarts the server (since Arma 3 v1.65.138168)
| {{hl|#restartserveraftermission}}
|  
| {{GVI|arma3|1.72}} Shuts down and restarts the server after mission ends
|-
|-
| <tt>#init</tt>                          ||                              || Reload server config file loaded by <tt>[[-config]]</tt> option.
| {{hl|#init}}
|  
| Reload server config file loaded by {{hl|[[:Category:Startup Parameters|-config]]}} option.
|}
 
{{ArgTitle|4|Player Punishment|{{GVI|arma1|1.00}}}}
{{hl|#exec}} ''[[ArmA: Armed Assault: Server Side Scripting|server side command]]'' allows executing administration scripting command.
 
{{Feature|important|Only works on '''dedicated''' servers.}}
 
{| class="wikitable"
! Command !! Example !! Description
|-
|-
| <tt>#exec ban</tt> ''(name, ID or Player#)''
|{{hl|#exec ban}} ''name''<br>
| <tt>#exec ban nickName</tt><br>
{{hl|#exec ban}} ''ID''<br>
<tt>#exec ban 47114712</tt><br>
{{hl|#exec ban}} ''Player#''<br>
<tt>#exec ban 3</tt>
{{hl|#exec ban "user reason"}}
| Allows you to ban a player. Their ID will be added to the ''<tt>ban.txt</tt>''
|{{hl|#exec ban nickName}}<br>
{{hl|#exec ban 47114712}}<br>
{{hl|#exec ban 3}}<br>
{{hl|#exec ban "3 Griefing"}}<br>
{{GVI|arma3|2.18|size=0.75}} {{hl|#exec ban """Some Username""" ""Some Ban Reason Text"""}}
| Allows you to ban a player. Their ID will be added to the {{hl|ban.txt}} file.
|-
|-
| <tt>#kick</tt> ''(name, ID or Player#)''
| {{hl|#kick}} ''name''<br>
| <tt>#kick nickName</tt><br>
{{hl|#kick}} ''ID''<br>
<tt>#kick 47114712</tt><br>
{{hl|#kick}} ''Player#''<br>
<tt>#kick 3</tt>
{{hl|#kick user reason}}
| {{hl|#kick nickName}}<br>
{{hl|#kick 47114712}}<br>
{{hl|#kick 3}}<br>
{{GVI|arma3|2.18|size=0.75}} {{hl|#kick "Some Username" "Some Kick Reason Text"}}
| Allows you to kick a player.
| Allows you to kick a player.
|}
==== Network/Connection Quality ====
{| class="wikitable"
! Command !! Example !! Description
|-
| {{hl|#maxdesync}} ''(amount in %)''
| {{hl|#maxdesync 95}}
| Set the maximum accepted desynchronisation <br>
Desync is the value you can also see on the map screen when clicking on a player. Or get from ''networkInfo'' by [[getUserInfo]]. <br>
Unclear if percent value or number. The max value seems to be 100000. <br>
Note the relation to "yellow chain" and "red chain". 2000 triggers yellow chain. 20000 triggers red chain. <br>
|-
| {{hl|#maxpacketloss}} ''(amount in %)''
| {{hl|#maxpacketloss 50}}
| Set the maximum accepted packet loss
|-
| {{hl|#maxping}} ''(time in ms)''
| {{hl|#maxping 250}}
| Set the maximum accepted ping
|-
| {{hl|#dctimeout}} ''(time in sec)''
| {{hl|#dctimeout 60}}
| Set the disconnect timeout
|}
==== Monitoring/Analysis ====
{| class="wikitable"
! Command !! Example !! Description
|-
| {{hl|#monitor}} ''(interval in sec)''
| {{hl|#monitor 1}}
| Shows performance information of the server. Interval {{hl|0}} means to stop monitoring.
{| class="wikitable"
|+ Values description
! colspan="2" | Traffic
|-
| G
| Guaranteed messages
|-
| NG
| Non-Guaranteed messages
|-
! colspan="2" | Player info
|-
| L
| lobby
|-
| R
| role selection
|-
| B
| briefing
|-
| G
| in-game
|-
|-
| <tt>#monitor</tt> ''(interval in sec)'' || <tt>#monitor 1</tt>          || Shows performance information of the server. Interval <tt>0</tt> means to stop monitoring.
| D
| debriefing
|}
|-
|-
| <tt>#debug off</tt>                    || <tt>#debug off</tt>          || Disables debugging.
| {{hl|#monitords}} ''(interval in sec)''
| {{hl|#monitords 1}}
| {{GVI|arma3|1.64}} Shows performance information in the dedicated server console. Interval {{hl|0}} means to stop monitoring.
|-
|-
| <tt>#debug</tt> ''(interval in sec)''   || <tt>#debug 30</tt>          || Default interval is <tt>10</tt> seconds.
| {{hl|#debug}} ''(interval in sec)''
| {{hl|#debug 30}}
| Default interval is {{hl|10}} seconds.
|-
|-
| <tt>#debug</tt> ''(command) (param)''
| {{hl|#debug on}} ''(command)''
| <tt>#debug checkFile expansion\Dta\ui.pbo</tt><br>
|{{hl|#debug on Console}}<br>
<tt>#debug userSent</tt> ''<username>''<br>
{{hl|#debug on TotalSent}}<br>
<tt>#debug userInfo</tt> ''<username>''<br>
{{hl|#debug on UserSent}}<br>
<tt>#debug userQueue</tt> ''<username>''<br>
{{hl|#debug on UserInfo}}<br>
<tt>#debug JIPQueue</tt> ''<username>''<br>
{{hl|#debug on UserQueue}}<br>
<tt>#debug totalSent</tt> ''10''
{{hl|#debug on JIPQueue}}<br>
| The available commands are:<br>
| The available commands are:<br>
: <tt>checkFile</tt>
: {{hl|Console}} - All server console prints, are forwarded to your client. Send to submitter what's on server console. Works as ''DebugAnswer'' for all writes into the console.
: <tt>userSent</tt>
: {{hl|TotalSent}} - Every debug interval, tells you the bits per second, msg per second. Send/Receive for the whole server
: <tt>userInfo</tt>
: {{hl|UserSent}} - Every debug interval, tells you the bits per second, messages per second. Send/Receive statistics for every player
: <tt>userQueue</tt>
: {{hl|UserInfo}} - Every debug interval, some statistics, for every player
: <tt>totalSent</tt>
: {{hl|UserQueue}} - Every debug interval, Info about how many bytes/messages are currently queued up, per player
: <tt>JIPQueue</tt>
: {{hl|JIPQueue}} - Every debug interval, the number of messages in JIP queue's
Each command can be disabled by the use of the <tt>off</tt> parameter ''e.g.'' <tt>#debug userSent off</tt><br>
Each command can be disabled by the use of the {{hl|off}} parameter ''e.g.'' {{hl|#debug off UserSent}}<br>
Each command differs a bit; some output to screen, some to log file etc.<br>
Each command differs a bit - some output to screen, some to log file etc.<br>
<small>You need some debugger capable of catching ''OutputDebugString'' running on the client machine<br>
See below for example output.<br>
(one very small and easy to use is available at ''SysInternals'' website).<br>
<br>
You launch this debugger, then launch ARMA client, connect to the server, and issue any of the commands</small>.
You need some debugger capable of catching ''OutputDebugString'' running on the client machine.<br>
A very small and easy to use called '''DebugView''' is available on the ''SysInternals'' website.<br>
You launch this debugger, then launch ARMA client, connect to the server, and issue any of the commands.
|-
| {{hl|#debug off <OPTION>}}
| {{hl|#debug off TotalSent}}
| Disables the specific debugging <OPTION>. See available options above.
|-
| {{hl|#debug off}}
| {{hl|#debug off}}
| Disables all debugging options.
|-
| {{hl|#debug checkFile}} ''(PATH\TO\FILE.PBO)''
| {{hl|#debug checkFile Expansion\Dta\ui.pbo}}
| Trigger integrity check on filename.
|-
|-
| <tt>#debug</tt> ''(command)''
| {{hl|#debug von}}
| <tt>#debug von</tt><br>
| {{hl|#debug von}}
<tt>#debug console</tt>
| Triggers VoN debug mode. Outputs into ''logFile'' defined in [[Arma 3: Server Config File|server config]] as ''e.g.'' {{hl|c= logFile = "server_console.log";}}. See below for example output.
| The available commands are:
|-
<tt>console</tt>
| {{hl|#debug limitOut}} ''bitsPerSecond''
: Send to submitter what's on server console. Works as ''DebugAnswer'' for all writes into the console.
| {{hl|#debug limitOut 100000}}
<tt>von</tt>
| Change bandwidth limit (in bits per second). Must be larger than 0. You get response message: "Outgoing bandwidth limited to %d B/s (%d bps) per client".
: Outputs into ''logFile'' defined in [[server.cfg]] as ''e.g.'' <tt>logFile = "server_console.log";</tt>
Each of those commands should show a confirmation in the chat channels.
|}
|}


{| class="bikitable"
==== Performance Profiling ====
|+ New admin commands since Armed Assault:
{| class="wikitable"
! Command                                                               !! Description
! Command !! Example !! Description
|-
| {{GVI|arma3|prof}} {{hl|#captureframe}}
|
| The current frame '''on the server''' is captured and written to a log file in the same directory as the [[Crash_Files|.rpt file]]. See [[diag_captureFrameToFile]] for more info. <br>
{{Feature|informative|
Until 2.20 {{GVI|arma3|prof}} on client was required to trigger {{hl|#captureFrame}} on server. Starting with {{GVI|arma3|2.20}} they can mismatch.
You can trigger {{hl|#captureFrame}} on a {{GVI|arma3|prof}} server (always required), coming from a {{GVI|arma3|perf}} client for example.
}}
|-
| {{GVI|arma3|prof}} {{hl|#captureslowframe}} ''scope, threshold, frameOffset, numberOfSlowFrames to capture''
| {{hl|#captureSlowFrame total 0 0 0}} <br>
{{hl|#captureSlowFrame total 0.3 0 1}} equals to {{hl|diag_captureSlowFrame ['total', 0.3]}}
| Captures the current frame '''on the server''' if it exceeds the set threshold in seconds and get written to a log file in the same directory as the [[Crash_Files|.rpt file]]. See [[diag_captureSlowFrame]] for more info.
|-
|-
| <tt>#exec</tt> ''[[ArmA: Server Side Scripting|server side command]]'' || Execute administration scripting command.
| {{GVI|arma3|diag}} {{GVI|arma3|prof}} {{hl|#logEntities}}
|
| Creates a log file containing the list of all game entities in scene. See [[logEntities]] for more info.
|-
|-
| <tt>#lock</tt>                                                        || Locks the server, prevents new clients from joining.
| {{GVI|arma3|diag}} {{GVI|arma3|prof}} {{hl|#exportJIPqueue}}
|
| Creates a log file containing an overview on all JIP (network) messages currently in the JIP queue. See [[exportJIPMessages]] for more info.
|-
|-
| <tt>#unlock</tt>                                                       || Unlocks the server, allows new clients to join.
| {{GVI|arma3|2.20}} {{GVI|arma3|diag}} {{GVI|arma3|prof}} {{hl|#logremains}}
|
| Log remains collector entities into a file in the [[arma.RPT|RPT]] directory. See also <sqf inline>diag_remainsCollector -1</sqf> and the {{hl|{{Link|Multiplayer Server Commands#Performance Profiling|#logremains}}}} server command.
|-
| {{hl|#debug jipPerf}}
| {{hl|#debug jipPerf}}
| Dumps the JIP queue in your client's chat. It might also print to client/server RPT? (TBC). It is the top part of what [[exportJIPMessages]] does.
|}
|}


=== Samples ===


===="#debug von" sample====
==== "#debug von" ====
'''server_console.log'''
'''server_console.log'''
<pre>*** VoN Topology Diagnostics ((***
 
<spoiler text="Show example output">
<pre>
*** VoN Topology Diagnostics ((***
=Player=: #2
=Player=: #2
P2PManager: Time: 13:38:48 waiting edges: 0, active negotiations: 0
P2PManager: Time: 13:38:48 waiting edges: 0, active negotiations: 0
Line 125: Line 297:
Cliques:
Cliques:
   3056006,Unknown
   3056006,Unknown
*** VoN Topology Diagnostics ))***</pre>
*** VoN Topology Diagnostics ))***
</pre>
</spoiler>
 
==== "#debug on <OPTION>" ====
'''DebugView'''


<spoiler text="Show example output">
<pre>
#debug on TotalSent
// Send/Receive for the whole server. bps = Bits per second. Msgps = messages per second.
** Total: sent 1447 bps (2.10 Msgps), received 3788 bps (6.10 Msgps)


===="#debug (command)" sample====
#debug on UserSent
'''DebugView'''
// Send/Receive statistics for every player. bps = Bits per second. Msgps = messages per second.
<pre>#debug console
playerName: sent 1531 bps (2.30 Msgps), received 1259 bps (1.70 Msgps)
1508] Debug: console


#debug totalSent
#debug on UserInfo
[1508] Debug: totalSent
// Some statistics for every player.
[1508] ** Total: sent 1447 bps (2.10 Msgps), received 3788 bps (6.10 Msgps)
__SERVER__: Info Unknown player ID = 2
playerName: Info ping  0ms(  0,  1) BWfee  286Kb(  3, 204,  3) lost22.2%%( 2) queue  0B(  0) ackWait  0(0.0,0.0)


#debug userQueue playerName
#debug on UserQueue
[1508] Debug: userSent
// Info about how many bytes/messages are currently queued up for every player.
[1508] playerName: sent 1531 bps (2.30 Msgps), received 1259 bps (1.70 Msgps)
__SERVER__: Queue 0 B (0) 0 B Guaranteed (0), Desync 0
playerName: Queue 0 B (0) 222 B Guaranteed (3), Desync 0


#debug userQueue playerName
This is monitoring data. This should be how many bytes were sent recently.
[1508] Debug: userInfo
In parenthesis is the number of messages sitting in queue.
[1508] __SERVER__: Info Unknown player ID = 2
BE is for BattlEye - BE has its own messaging.
[1508] playerName: Info ping  0ms(  0,  1) BWfee  286Kb(  3, 204,  3) lost22.2%%(  2) queue   0B(  0) ackWait  0(0.0,0.0)


#debug userQueue playerName
#debug on JIPQueue
[1508] Debug: userQueue
// The total number of messages in JIP queue. As well as amount per message type.
[1508] __SERVER__: Queue 0 B (0) 0 B Guaranteed (0), Desync 0
AddInitAndRemoveOverridden  statistics ... total messages = 2543
[1508] playerName: Queue 0 B (0) 222 B Guaranteed (3), Desync 0</pre>
110 ... Type_10
45 ... Type_31
57 ... Type_53
193 ... Type_54
11 ... Type_56
11 ... Type_57
52 ... Type_59
11 ... Type_60
562 ... Type_64
5 ... Type_65
11 ... Type_183
10 ... Type_187
422 ... Type_248
167 ... Type_272
34 ... Type_273
1 ... Type_274
652 ... Type_291
1 ... Type_295
5 ... Type_296
5 ... Type_307
2 ... Type_308
10 ... Type_324
2 ... Type_328
2 ... Type_329
2 ... Type_330
73 ... Type_337
35 ... Type_360
10 ... Type_364
1 ... Type
</pre>
</spoiler>


=== Player Commands ===


===Player===
{| class="wikitable"
{| class="bikitable"
! Command!! Example !! Description
! Command                           !! Example                         !! Description
|-
|-
| <tt>#vote missions</tt>          ||                                  || Users can vote for the mission selection.
| {{hl|#vote missions}}
|
| Users can vote for the mission selection.
|-
|-
| <tt>#vote mission</tt> ''(name)'' || <tt>#vote mission myD.intro</tt> || Users can vote on a particular mission to loaded.
| {{hl|#vote mission}} ''(name)''
| {{hl|#vote mission myD.intro}}
| Users can vote on a particular mission to loaded.
|-
|-
| <tt>#vote admin</tt> ''(name/ID/PLR#)''
| {{hl|#vote admin}} ''(name/ID/PLR#)''
|<tt>#vote admin nickName</tt><br>
|{{hl|#vote admin nickName}}<br>
<tt>#vote admin 47114712</tt><br>
{{hl|#vote admin 47114712}}<br>
<tt>#vote admin 3</tt>
{{hl|#vote admin 3}}
| Users can vote an admin to control the server.
| Users can vote an admin to control the server.
|-
|-
| <tt>#vote kick</tt> ''(name, ID or Player#)''
| {{hl|#vote kick}} ''(name, ID or Player#)''
| <tt>#vote kick nickName</tt><br>
| {{hl|#vote kick nickName}}<br>
<tt>#vote kick 47114712</tt><br>
{{hl|#vote kick 47114712}}<br>
<tt>#vote kick 3</tt>
{{hl|#vote kick 3}}
| Users can vote to kick off an individual.
| Users can vote to kick off an individual.
|-
|-
| <tt>#vote restart</tt>            ||                                  || Vote to restart the mission.
| {{hl|#vote restart}}
|
| Vote to restart the mission.
|-
|-
| <tt>#vote reassign</tt>          ||                                  || Vote to reassign.
| {{hl|#vote reassign}}
|
| Vote to reassign.
|-
|-
| <tt>#userlist</tt>                ||                                  || Displays the list of users on the server (use ''PgUp'' to scroll up).
| {{hl|#userlist}}
|
| Displays the list of users on the server (use ''PgUp'' to scroll up).
|}
|}


===Battleye===
=== BattlEye commands ===
{| class="bikitable"
 
! Command                   !! Description
{| class="wikitable"
! Command !! Description
|-
|-
| <tt>#beclient players</tt> || Displays the list of ''GUID's'' of all players on the server.
| {{hl|#beclient players}}
| Displays the list of ''GUID's'' of all players on the server.
|-
|-
| <tt>#beclient guid</tt>    || Show your own ''GUID''.
| {{hl|#beclient guid}}
| Show your own ''GUID''.
|}
|}


===Arma 3===
=== {{arma3}} #exec Notes ===


In Arma 3 '''#exec kick''' and '''#exec ban''' commands require quotes for ''Name'', ''UID'' or ''Player#''.  
{{Feature|arma3|See [[Arma 3: Server Side Scripting]].}}


<pre>#exec kick "5"
In {{arma3}} '''#exec kick''' and '''#exec ban''' commands require quotes (string) for ''Name'', ''UID'' or ''Player#''. To do this for the UID or Player#, use [[format]] command to turn the user ID into a string.
 
<pre>
#exec kick "5"
#exec ban "imah4x0r"
#exec ban "imah4x0r"
#exec kick "938679499494"</pre>
#exec kick "938679499494"
</pre>


'''#kick''' command can still be used either way:
'''#kick''' command can still be used either way:


<pre>#kick imah4x0r
<pre>
#kick "imah4x0r"</pre>
#kick imah4x0r
 
#kick "imah4x0r"
In case of banning, ''ban.txt'' file is created in root Arma 3 directory that contains a list of banned UIDs.<br><br>
</pre>
2 more diagnostic commands have been added to Arma 3:


<pre>#logEntities
In case of banning, a ''ban.txt'' file containing a list of banned UIDs is created in {{arma3}}'s root directory. To unban a user by UID (UID is the only option) or to clear the ''ban.txt'':
#exportJIPqueue</pre>
<pre>
#exec unban "98749837498374"
#exec clearbans
</pre>


'''New in Arma 3''': #restartserver


[[Category:Multiplayer]]
[[category:Operation Flashpoint:_Multiplayer]]
[[Category:ArmA:_Multiplayer]]
[[Category:Multiplayer Hints and Tips]]
[[Category:Multiplayer Hints and Tips]]
{{GameCategory|ofp|Multiplayer}}
{{GameCategory|arma1|Multiplayer}}
{{GameCategory|arma2|Multiplayer}}
{{GameCategory|arma3|Multiplayer}}

Latest revision as of 02:48, 22 November 2024

Arma Reforger
For Arma Reforger see Arma Reforger:Server Management.


It is recommended to use BattlEye's RCon tool to administrate the server.

RCON cannot be affected by in-game script exploits.

It uses custom port which one may easily secure by firewall rules!


How To

You can access the command line by pressing the chat key (default /).

In the chat input window you can type any of the following commands in and confirm them with the enter key.

You have to add the # character before the command.

The commands can be used in SQF scripts by using serverCommand.

Troubleshooting:

Some commands are confirmed via a message in the console.
If you enter a command that is properly formatted, and you see no confirmation of the command, then an error may have occurred.

Check your server log for potentially more information why it failed (e.g. one or more of your mission files is corrupt or has an error which prevents the Missions Lobby from loading, or may prevent other commands like #restart or #reassign from executing).


Commands

The following commands are available to you once you have connected to a server:

Admin Commands

Server/Session Administration

Command Example Description
#login

#login password

#login

#login adminPW

Log in as the admin. Without password only possible if you are listed as an admin[] in Arma 3: Server Config File#Server_Options
#logout Admin log out.
#mission filename

#mission filename difficulty

#mission myDM.intro

#mission myDM.intro Veteran

Select mission with known name and set the difficulty. Difficulty parameter is optional and if not set, current difficulty is kept.
#missions Allows selection of mission on shown list of available missions (all or those inside missionWhiteList[] = {}; within server.cfg).
Note: this will trigger `missionEnd` (so if server.cfg is set with e.g. MissionsToServerRestart or MissionsToShutdown threshold, the server may immediately restart/shutdown)
#restart Restart mission.
#reassign Start over and reassign roles.
#lock Locks the server, prevents new clients from joining.
#unlock Unlocks the server, allows new clients to join.
#shutdown Shuts down the server immediately
#restartserver Arma 3 logo black.png1.66 Shuts down and restarts the server immediately
#shutdownaftermission Arma 3 logo black.png1.72 Shuts down the server after mission ends
#restartserveraftermission Arma 3 logo black.png1.72 Shuts down and restarts the server after mission ends
#init Reload server config file loaded by -config option.

Player Punishment

#exec server side command allows executing administration scripting command.

Only works on dedicated servers.
Command Example Description
#exec ban name

#exec ban ID
#exec ban Player#
#exec ban "user reason"

#exec ban nickName

#exec ban 47114712
#exec ban 3
#exec ban "3 Griefing"
Arma 3 logo black.png2.18 #exec ban """Some Username""" ""Some Ban Reason Text"""

Allows you to ban a player. Their ID will be added to the ban.txt file.
#kick name

#kick ID
#kick Player#
#kick user reason

#kick nickName

#kick 47114712
#kick 3
Arma 3 logo black.png2.18 #kick "Some Username" "Some Kick Reason Text"

Allows you to kick a player.

Network/Connection Quality

Command Example Description
#maxdesync (amount in %) #maxdesync 95 Set the maximum accepted desynchronisation

Desync is the value you can also see on the map screen when clicking on a player. Or get from networkInfo by getUserInfo.
Unclear if percent value or number. The max value seems to be 100000.
Note the relation to "yellow chain" and "red chain". 2000 triggers yellow chain. 20000 triggers red chain.

#maxpacketloss (amount in %) #maxpacketloss 50 Set the maximum accepted packet loss
#maxping (time in ms) #maxping 250 Set the maximum accepted ping
#dctimeout (time in sec) #dctimeout 60 Set the disconnect timeout

Monitoring/Analysis

Command Example Description
#monitor (interval in sec) #monitor 1 Shows performance information of the server. Interval 0 means to stop monitoring.
Values description
Traffic
G Guaranteed messages
NG Non-Guaranteed messages
Player info
L lobby
R role selection
B briefing
G in-game
D debriefing
#monitords (interval in sec) #monitords 1 Arma 3 logo black.png1.64 Shows performance information in the dedicated server console. Interval 0 means to stop monitoring.
#debug (interval in sec) #debug 30 Default interval is 10 seconds.
#debug on (command) #debug on Console

#debug on TotalSent
#debug on UserSent
#debug on UserInfo
#debug on UserQueue
#debug on JIPQueue

The available commands are:
Console - All server console prints, are forwarded to your client. Send to submitter what's on server console. Works as DebugAnswer for all writes into the console.
TotalSent - Every debug interval, tells you the bits per second, msg per second. Send/Receive for the whole server
UserSent - Every debug interval, tells you the bits per second, messages per second. Send/Receive statistics for every player
UserInfo - Every debug interval, some statistics, for every player
UserQueue - Every debug interval, Info about how many bytes/messages are currently queued up, per player
JIPQueue - Every debug interval, the number of messages in JIP queue's

Each command can be disabled by the use of the off parameter e.g. #debug off UserSent
Each command differs a bit - some output to screen, some to log file etc.
See below for example output.

You need some debugger capable of catching OutputDebugString running on the client machine.
A very small and easy to use called DebugView is available on the SysInternals website.
You launch this debugger, then launch ARMA client, connect to the server, and issue any of the commands.

#debug off <OPTION> #debug off TotalSent Disables the specific debugging <OPTION>. See available options above.
#debug off #debug off Disables all debugging options.
#debug checkFile (PATH\TO\FILE.PBO) #debug checkFile Expansion\Dta\ui.pbo Trigger integrity check on filename.
#debug von #debug von Triggers VoN debug mode. Outputs into logFile defined in server config as e.g. logFile = "server_console.log";. See below for example output.
#debug limitOut bitsPerSecond #debug limitOut 100000 Change bandwidth limit (in bits per second). Must be larger than 0. You get response message: "Outgoing bandwidth limited to %d B/s (%d bps) per client".

Performance Profiling

Command Example Description
Arma 3 logo black.pngPROF #captureframe The current frame on the server is captured and written to a log file in the same directory as the .rpt file. See diag_captureFrameToFile for more info.
Until 2.20 Arma 3 logo black.pngPROF on client was required to trigger #captureFrame on server. Starting with Arma 3 logo black.png2.20 they can mismatch. You can trigger #captureFrame on a Arma 3 logo black.pngPROF server (always required), coming from a Arma 3 logo black.pngPERF client for example.
Arma 3 logo black.pngPROF #captureslowframe scope, threshold, frameOffset, numberOfSlowFrames to capture #captureSlowFrame total 0 0 0

#captureSlowFrame total 0.3 0 1 equals to diag_captureSlowFrame ['total', 0.3]

Captures the current frame on the server if it exceeds the set threshold in seconds and get written to a log file in the same directory as the .rpt file. See diag_captureSlowFrame for more info.
Arma 3 logo black.pngDIAG Arma 3 logo black.pngPROF #logEntities Creates a log file containing the list of all game entities in scene. See logEntities for more info.
Arma 3 logo black.pngDIAG Arma 3 logo black.pngPROF #exportJIPqueue Creates a log file containing an overview on all JIP (network) messages currently in the JIP queue. See exportJIPMessages for more info.
Arma 3 logo black.png2.20 Arma 3 logo black.pngDIAG Arma 3 logo black.pngPROF #logremains Log remains collector entities into a file in the RPT directory. See also diag_remainsCollector -1 and the #logremains server command.
#debug jipPerf #debug jipPerf Dumps the JIP queue in your client's chat. It might also print to client/server RPT? (TBC). It is the top part of what exportJIPMessages does.

Samples

"#debug von"

server_console.log

*** VoN Topology Diagnostics ((***
=Player=: #2
P2PManager: Time: 13:38:48 waiting edges: 0, active negotiations: 0
Matrix:
  3056006: #2
  #2: 3056006
Cliques:
  3056006,#2
Version: 1.60.86277
Private: 192.168.178.21
Connections:
  3056006: Direct P2P, 5 KA, snd: 10 sec, rcv: 10 sec, (192.168.178.21:2317) snd=0 rcv=0(0) Repl(-5,0,0)
Cliques:
  3056006,Unknown
=Player=: 3056006
Version: 1.60.86277
Private: 192.168.178.21
Public: 77.4.35.154
Connections:
  #2: Direct P2P, 5 KA, snd: 10 sec, rcv: 10 sec, (192.168.178.21:2305) snd=0 rcv=0(0) Repl(-5,0,0)
Cliques:
  3056006,Unknown
*** VoN Topology Diagnostics ))***

"#debug on <OPTION>"

DebugView

#debug on TotalSent
// Send/Receive for the whole server. bps = Bits per second. Msgps = messages per second.
** Total: sent 1447 bps (2.10 Msgps), received 3788 bps (6.10 Msgps)

#debug on UserSent
// Send/Receive statistics for every player. bps = Bits per second. Msgps = messages per second.
playerName: sent 1531 bps (2.30 Msgps), received 1259 bps (1.70 Msgps)

#debug on UserInfo
// Some statistics for every player.
__SERVER__: Info Unknown player ID = 2
playerName: Info ping   0ms(   0,   1) BWfee  286Kb(   3, 204,   3) lost22.2%%(  2) queue   0B(   0) ackWait  0(0.0,0.0)

#debug on UserQueue
// Info about how many bytes/messages are currently queued up for every player.
__SERVER__: Queue 0 B (0) 0 B Guaranteed (0), Desync 0
playerName: Queue 0 B (0) 222 B Guaranteed (3), Desync 0

This is monitoring data. This should be how many bytes were sent recently.
In parenthesis is the number of messages sitting in queue.
BE is for BattlEye - BE has its own messaging.

#debug on JIPQueue
// The total number of messages in JIP queue. As well as amount per message type.
AddInitAndRemoveOverridden  statistics ... total messages = 2543
110 ... Type_10
45 ... Type_31
57 ... Type_53
193 ... Type_54
11 ... Type_56
11 ... Type_57
52 ... Type_59
11 ... Type_60
562 ... Type_64
5 ... Type_65
11 ... Type_183
10 ... Type_187
422 ... Type_248
167 ... Type_272
34 ... Type_273
1 ... Type_274
652 ... Type_291
1 ... Type_295
5 ... Type_296
5 ... Type_307
2 ... Type_308
10 ... Type_324
2 ... Type_328
2 ... Type_329
2 ... Type_330
73 ... Type_337
35 ... Type_360
10 ... Type_364
1 ... Type
↑ Back to spoiler's top

Player Commands

Command Example Description
#vote missions Users can vote for the mission selection.
#vote mission (name) #vote mission myD.intro Users can vote on a particular mission to loaded.
#vote admin (name/ID/PLR#) #vote admin nickName

#vote admin 47114712
#vote admin 3

Users can vote an admin to control the server.
#vote kick (name, ID or Player#) #vote kick nickName

#vote kick 47114712
#vote kick 3

Users can vote to kick off an individual.
#vote restart Vote to restart the mission.
#vote reassign Vote to reassign.
#userlist Displays the list of users on the server (use PgUp to scroll up).

BattlEye commands

Command Description
#beclient players Displays the list of GUID's of all players on the server.
#beclient guid Show your own GUID.

Arma 3 #exec Notes

In Arma 3 #exec kick and #exec ban commands require quotes (string) for Name, UID or Player#. To do this for the UID or Player#, use format command to turn the user ID into a string.

#exec kick "5"
#exec ban "imah4x0r"
#exec kick "938679499494"

#kick command can still be used either way:

#kick imah4x0r
#kick "imah4x0r"

In case of banning, a ban.txt file containing a list of banned UIDs is created in Arma 3's root directory. To unban a user by UID (UID is the only option) or to clear the ban.txt:

#exec unban "98749837498374"
#exec clearbans