Direkt zum Hauptinhalt

Server/Client-Bedingungen abfragen

Eine Liste von "machine types" (singleplayer, server, client) und wie sie jeweils abgefragt werden können. Um an allen Ecken und Enden Performance zu sparen, macht es Sinn, möglichst viele Prozesse nur dort berechnen zu lassen, wo sie wirklich laufen müssen. Der Dedicated Server hat z.B. kein Interface, aber Achtung: Auch ein Client kann Server sein, hat dann also auch ein Interface! Will man zum Beispiel sichergehen,erfragen, dassob die Recheneinheit ein Multiplayer-Host istist, undaber keinKEIN Dedicated Server, kannmuss man abfragen:
Code:

          if (hasInterface) then {

Der

Dedicated Server hat KEIN Interface, aber Achtung: Auch ein Client kann zugleich Server sein. Zur Serverabfrage also besser:

und
          if (isServer) then {...};              

 Zur Abfrage eines reinen Servers also:

          if (isServer) then {...}; 

Beispiel:
          if (isServer) then {v1 animate ["terc",1]};

Normalerweise muss man nur ein oder maximal zwei Rechnertypen abfragen,abfragen. hierAls dennochMissionsbauer ohne permanenten Zugriff auf einen Dedicated Server macht es beispielsweise keinen Sinn,

          if (isDedicated) then {...};

abzufragen, auch wenn die Mission letztlich auf einem DS läuft. Es genügt eine reine Serverabfrage (siehe oben), damit der Prozess nur beim Host (ob Dedicated oder nicht) berechnet wird. Alles andere erschwert nur das das Debugging.

Link:
https://community.bistudio.com/wiki/isServer

Hier eine Liste für die Ausgabewerte aller drei Varianten:

EDITOR PREVIEW / SINGLEPLAYER:
     isMultiplayer returns false
     isServer returns true
     isDedicated returns false

MULTIPLAYER (NON-DEDICATED) HOST SERVER
     isMultiplayer returns true
     isServer returns true
     isDedicated returns false

MULTIPLAYER DEDICATED SERVER
     isMultiplayer returns true
     isServer returns true
     isDedicated returns true

MULTIPLAYER CLIENT
     isMultiplayer returns true
     isServer returns false
     isDedicated returns false