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 erfragen, ob die Recheneinheit ein Multiplayer-Host ist, aber KEIN Dedicated Server, muss man abfragen:

          if (hasInterface) then {

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. Als Missionsbauer 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 (siehe auch Kommentar von Killzone Kid!):
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