Werde hier mal einiges auflisten was das Scripten rund um den Multiplayer in ArmA 3 betrifft, da sich doch ein paar Dinge gegenüber ArmA 2 geändert haben.
Event-Scripts:
Zum nachlesen https://community.bistudio.com/wiki/Event_Scripts
Neu in Arma3:
initServer.sqf
Script wird nur auf dem Server beim Start ausgeführt.
initPlayerLocal.sqf
Script wird nur auf dem Client ausgeführt der dem Spiel beitritt
Es wird folgende Variable an das Script übergeben: [Spieler(Objekt),JIP (Bool)]
Spieler (Objekt), im Script: _this select 0
Hierbei handelt es sich um die vom Spieler gewählte Einheit
JIP (Bool), im Script: _this select 1
Hat die Werte true oder false und gibt an ob der Spieler "Join in progress" ist, d.h. ob der Spieler einem laufenden Spiel beitritt (true) oder bei Beginn der Mission dabei ist (false).
initPlayerServer.sqf
Script wird nur auf dem Server ausgeführt für jeden Spieler der dem Server beitritt. Im Grund das gleiche wie vor, jedoch wird dies nur auf dem Server gestartet.
Es wird folgende Variable an das Script übergeben: [Spieler(Objekt),JIP (Bool)]
Spieler (Objekt), im Script: _this select 0
Hierbei handelt es sich um die vom Spieler gewählte Einheit
JIP (Bool), im Script: _this select 1
Hat die Werte true oder false und gibt an ob der Spieler "Join in progress" ist, d.h. ob der Spieler einem laufenden Spiel beitritt (true) oder bei Beginn der Mission dabei ist (false).
Weiterhin gültig:
init.sqf
Wird beim Start auf Server und Client ausgeführt. (Auch bei JIP-Spieler).
Nicht mehr benutzt und haben somit in Arma 3 keine Funktion mehr:
initJIPcompatible.sqf
EventHandler
Weiterhin gültig:
onPlayerconnected
- Läuft nur auf dem Server und kann dann daher in initServer.sqf
- Beim einloggen eines Spielers (Startet wenn der Spieler im Briefing ankommt. Ist in soweit wichtig, daß die Spielerfigur an diesem Punkt noch nicht im Spiel ist. Wollt ihr dem Spieler z.B. Ausrüstung zuweisen, müßt ihr in dem Script mit waituntil{alive _spieler}; warten bis der Spieler aus gespawnt ist
Was für Variablen übergeben werden steht im Wiki.
onPlayerDisconnected
- Läuft nur auf dem Server und kann dann daher in initServer.sqf
- Startet sobald man Escape drückt und man bestätigt, daß man das Spiel verlassen möchte
Was für Variablen übergeben werden steht im Wiki.
Neu in ArmA 3:
An Stelle der beiden vorherigen Eventhandler gibt es seit dem Update vom 2.11.(DEV-Version) eine andere Vorgehensweise zu diesen beiden Eventhandlern, die nicht zwingend ist aber empfohlen wird
Hintergrund dazu ist, daß dieser Eventhandler nur einmal aufgerufen werden sollte und bei jedem weiteren mal den vorhergehenden überschreibt.
Zum nachlesen:
https://community.bistudio.com/wiki/BIS_fnc_a…kedEventHandler
http://forums.bistudio.com/showthread.php…erConnected-etc
Beispiel:
['E76_ID', 'onplayerdisconnected', 'E76_fnc_SRV_playerlogout'] call BIS_fnc_addStackedEventHandler;
"E76_ID" -Ist sinnvoll zu wählen und sollte einzigartig sein, so daß es wenn möglich nicht mit anderen Mods kollidiert, z.B. "ACRE" oder "ACRE_ID" könnte dazu führen das ACRE diesen auch benutzt und man sich dann gegenseitig überschreibt.