Named Pipe – Arma 3
Killzone Kid (talk | contribs) (Created page with "== Description == 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 onl...") |
Lou Montana (talk | contribs) m (Text replacement - "\[ *(https?:\/\/[^ = ]+) +([^= ]+) *\]" to "{{Link|$1|$2}}") |
||
(13 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
== | {{TOC|side}} | ||
{{arma3}} has a fully working implementation of {{Link|https://en.wikipedia.org/wiki/Named_pipe|named pipe}} which allows developers to pass several predefined commands to Arma process. The pipe is created only if the command line contains '''{{hl|c= -command=}}''' param which defines the name for the pipe. Works for client and hosting client. | |||
== Command Line == | == Command Line == | ||
{{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: {{Link|https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createnamedpipea|CreateNamedPipe}}) | |||
== Available Commands == | == Available Commands == | ||
* | * {{hl|<b>shutdown</b>}} - closes the game | ||
* | * {{hl|<b>message</b> <i>some message</i>}} - sends message to the [[systemChat]] | ||
* | * {{hl|<b>reply</b> <i>whatever</i>}} - echoes back whatever is sent to it | ||
* | * {{hl|<b>session</b>}} - returns JSON string in format: | ||
:* | :* {{hl|session {"playerId":"uidoftheclient"}}} - If not in session | ||
:* | :* {{hl|session {"playerId":"uidoftheclient","hosting":trueifthehost,"island":"curmapname","mission":"curmissionname"}}} - If in session | ||
:* | :* {{hl|session {"playerId":"uidoftheclient","hosting":trueifthehost,"island":"curmapname","mission":"curmissionname","host":"curservername","hostIP":"curserverip:port"}}} - If is user client | ||
* | * {{hl|<b>connect</b> <i>JSONexpr</i>}} - Forces the client to connect to a server described as JSON expression: {{hl|{"ip":"serveripaddress", "port":serverport, "password":"optionalpassword"}}}. If client is in MP session, nothing happens. | ||
== Misc == | == Misc == | ||
Pipe created with the following params:<br> | |||
openmode: PIPE_ACCESS_DUPLEX, FILE_FLAG_FIRST_PIPE_INSTANCE<br> | openmode: PIPE_ACCESS_DUPLEX, FILE_FLAG_FIRST_PIPE_INSTANCE<br> | ||
pipemode: PIPE_TYPE_MESSAGE, PIPE_READMODE_MESSAGE, PIPE_NOWAIT<br> | pipemode: PIPE_TYPE_MESSAGE, PIPE_READMODE_MESSAGE, PIPE_NOWAIT<br> | ||
Line 27: | Line 29: | ||
outbuffer: 4096<br> | outbuffer: 4096<br> | ||
timeout: 100<br> | timeout: 100<br> | ||
== See Also == | |||
* [[Arma 3: Startup Parameters]] | |||
{{GameCategory|arma3|Editing}} |
Revision as of 15:08, 28 April 2023
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