Lou Montana/Sandbox – User

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Set "Different machines" presentation to tables)
Line 25: Line 25:


=== Different machines ===
=== Different machines ===
* Dedicated Server ({{Inline code|[[isDedicated]]}})
{|class="bikitable"
* Player Server ({{Inline code|[[hasInterface]] && [[isServer]]}})
!Machine
* Client ({{Inline code|[[hasInterface]] && not [[isServer]]}})
!Conditions
* [[Join In Progress|JIP]] Client ({{Inline code|[[didJIP]]}})
|-
* [[Arma 3 Headless Client|Headless Client]] ({{Inline code|not [[hasInterface]] && not [[isDedicated]]}})
|Dedicated Server
 
|{{Inline code|[[isDedicated]]}}
{{Informative|If you want to target every machine that has a player (Player Server included), use {{Inline code|[[hasInterface]]}}.}}
|-
 
|Player Server
|{{Inline code|[[hasInterface]] && [[isServer]]}}
|-
|Client
|{{Inline code|[[hasInterface]] && not [[isServer]]}}
|-
|[[Join In Progress|JIP]] Client
|{{Inline code|[[didJIP]]}}
|-
|[[Arma 3 Headless Client|Headless Client]]
|{{Inline code|not [[hasInterface]] && not [[isDedicated]]}}
|}
* If you want to know if the current machine is a server (Dedicated Server or Player Server), use {{Inline code|[[isServer]]}}.
* If you want to know if the current machine has a player (Player Server included), use {{Inline code|[[hasInterface]]}}.


== PublicVariable commands ==
== PublicVariable commands ==

Revision as of 01:04, 27 January 2019

Template:SideTOC Template:Stub

The basics

  • In Multiplayer, players are connected to a server that distributes information among them.
  • The server can be either a dedicated machine, or hosted by a player; in the latter it means the server can have a player unit.
  • Players can join a game after it started: they are considered "JIP" and scripting should be adapted to them.
In Singleplayer, the game acts as a player-hosted server (isServer returns true).
Some commands will not work in Singleplayer, such as netId!


Locality

  • LOCAL is an attribute for the machine where the command/script/function is executed.
  • REMOTE is an attribute for all the other machines. All clients are remote to a server, for example.
  • commands arguments and effects can be either local or global:
    • a local argument means an argument that is processed on the machine where the command is executed
    • a global argument means any unit, even a remote one
    • a local effect means that the effect will only happen on the machine where the command is executed
    • a global effect means that all the computers will receive it

See Locality in Multiplayer for more information.

Different machines

Machine Conditions
Dedicated Server isDedicated
Player Server hasInterface && isServer
Client hasInterface && not isServer
JIP Client didJIP
Headless Client not hasInterface && not isDedicated
  • If you want to know if the current machine is a server (Dedicated Server or Player Server), use isServer.
  • If you want to know if the current machine has a player (Player Server included), use hasInterface.

PublicVariable commands

PublicVariable commands allow to send global variables to specified machines.

  • Network reception is guaranteed
  • Short variable names should be used for network performance
  • These commands shouldn't be used intensely for the same reason
Command Effect
publicVariable Set/update a variable value from the local machine to all the other machines (including server)
publicVariableServer Set/update a variable value from a client to the server
publicVariableClient Set/update a variable value from the local machine (not necessarily the server) to a specific client

How it works

The server has the variable ABC_Score to send to everyone, it then uses publicVariable "ABC_Score" (do not forget the quotes!)
This sends the variable name and value to the clients.

  • If the variable is not yet declared on their machine, it will declare it as well.
  • If the variable already exists, the value is overridden by the server's value.


Network commands


See also