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:
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