Named Pipe – Arma 3

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<tt>([^= ]+)<\/tt>" to "{{hl|$1}}")
m (Text replacement - "<tt>([^ ]*=[^ ]*)<\/tt>" to "{{hl|c= $1}}")
Line 5: Line 5:
== Command Line ==
== Command Line ==


<tt>'''-command{{=}}'''''name''</tt>, where ''name'' is the unique pipe name and can include any character other than a backslash, including numbers and special characters. The entire pipe name string can be up to 256 characters long. Pipe names are not case sensitive The name of the pipe created will be {{hl|<b>\\.\pipe\name</b>}} (See also: [https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createnamedpipea CreateNamedPipe])
{{hl|c= '''-command{{=}}'''''name''}}, where ''name'' is the unique pipe name and can include any character other than a backslash, including numbers and special characters. The entire pipe name string can be up to 256 characters long. Pipe names are not case sensitive The name of the pipe created will be {{hl|<b>\\.\pipe\name</b>}} (See also: [https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createnamedpipea CreateNamedPipe])





Revision as of 00:23, 16 November 2021

Arma 3 has a fully working implementation of named pipe which allows developers to pass several predefined commands to Arma process. The pipe is created only if the command line contains -command= param which defines the name for the pipe. Works for client and hosting client.


Command Line

-command=name, where name is the unique pipe name and can include any character other than a backslash, including numbers and special characters. The entire pipe name string can be up to 256 characters long. Pipe names are not case sensitive The name of the pipe created will be \\.\pipe\name (See also: CreateNamedPipe)


Available Commands

  • shutdown - closes the game
  • message some message - sends message to the systemChat
  • reply whatever - echoes back whatever is sent to it
  • session - returns JSON string in format:
  • session {"playerId":"uidoftheclient"} - If not in session
  • session {"playerId":"uidoftheclient","hosting":trueifthehost,"island":"curmapname","mission":"curmissionname"} - If in session
  • session {"playerId":"uidoftheclient","hosting":trueifthehost,"island":"curmapname","mission":"curmissionname","host":"curservername","hostIP":"curserverip:port"} - If is user client
  • connect JSONexpr - Forces the client to connect to a server described as JSON expression: {"ip":"serveripaddress", "port":serverport, "password":"optionalpassword"}. If client is in MP session, nothing happens.


Misc

Pipe created with the following params:
openmode: PIPE_ACCESS_DUPLEX, FILE_FLAG_FIRST_PIPE_INSTANCE
pipemode: PIPE_TYPE_MESSAGE, PIPE_READMODE_MESSAGE, PIPE_NOWAIT
maxinstances: 1
inbuffer: 4096
outbuffer: 4096
timeout: 100

See Also