8. Wichtige Dateitypen beim Missionsbau

Allgemeines

Initialisierungsreihenfolge der Dateien:

https://community.bistudio.com/wiki/Initialization_Order

 

Funktion der jeweiligen Dateien:

https://community.bistudio.com/wiki/Event_Scripts

 

Mission.sqm

Enthält alle im Editor eingefügten Informationen über Objekte und Einheiten, aber auch das verwendete Modset! Die Mod-Abhängigkeit ist in der mission.sqm ganz am Anfang als Liste definiert. Wird eine Karte mit einem erweiterten Modset gestartet, fügt Arma 3 dort entsprechende Einträge hinzu.

Um die Abhängigkeit rückwärts zu ändern (wenn Mods aus dem Modset entfernt wurden), müssen die Mod-Einträge in der Liste am Anfang der sqm (addons) manuell gelöscht werden. Die entsprechenden Objekte werden dann nicht mehr im Editor geladen. Keine sonstigen Einträge aus der sqm löschen, da diese sonst fehlerhaft wird!!

.sqf

Enthält externe Scripts und Funktionen, die zu einem definierten Zeitpunkt (bei Missionsstart, bei Auslösung eines Triggers, bei JIP etc.) aufgerufen werden. Siehe auch ExecVM und RemoteExec!

Die Datei liegt dort, wo sie abgerufen werden soll - idealerweise in einem eigenen Unterordner relativ zum Missionsverzeichnis, damit kein Chaos entsteht.

Beispieldatei hängt links an.

description.ext

Diese Datei definiert globale Merkmale, die für andere Scripts verfügbar sein müssen. Sie enthält eine ganze Reihe von Informationen, die u.a. unabdingbar für das Einfügen von eigenen Sounds und eigener Musik sind. Definiert wird hier auch das Spawn-Verhalten am Anfang und während der Mission sowie Bilder im Ladebildschirm und vieles mehr...

Sie gehört in den Hauptordner der Mission, wo auch die mission.sqm liegt.

Die Beschreibung findet sich hier:

https://community.bistudio.com/wiki/Description.ext#onPauseScript

 

 

 

 

Eventscripts

Bei den ersten vier Dateien handelt es sich um Eventscripts, die (falls vorhanden) automatisch zu Beginn einer Mission ausgeführt werden. Des Weiteren stehen zum Zeitpunkt der Ausführung dieser Scripts die in der Mission eingestellten Parameter bereits zur Verfügung.

Im Folgenden schauen wir noch auf zwei Eventscripts, die beim Eintreten eines bestimmten Falles ausgeführt werden. Für alle diese Scripte gilt jedoch, dass sie viel mehr Nutzungsmöglichkeiten haben, als ich hier aufführe. Es hängt einfach davon ab, was ihr umsetzen wollt. 

Sämtliche Eventscripts müssen dazu im Hauptverzeichnis eurer Mission vorliegen, um ausgeführt zu werden.

init.sqf

Die Anweisungen dieses Scripts werden beim Starten der Mission für jeden ausgeführt (Server und Client). Dies gilt auch für JIP. 

Nutzen:
- statische Variablen definieren, die jedem Client und dem Server bekannt sein müssen.

- Scripte ausführen, die auf jedem Client und dem Server laufen müssen (VORSICHT, zu viele oder die falschen Skripte führen zu drastischen Performance Einbrüchen)

initServer.sqf

Dieses Script wird nur auf dem Server ausgeführt, es ist daher das einzige der Eventscripts, welches globale Befehle beinhalten sollte (da der Server nie JIPed - also ein laufendes Spiel “joint”). 

Nutzen:

 

initPlayerLocal.sqf

Dieses Script wird bei jedem Spieler lokal ausgeführt, der sich mit dem Server verbindet. Daher wird dies für alle Spieler am Beginn der Mission und jeden, der noch dazukommt, ausgeführt. 

Nutzen:

 

initPlayerServer.sqf

Dieses Script wird für jeden Spieler, der der Mission beitritt, auf dem Server ausgeführt. 

Nutzen:

 

Anmerkungen:

Die Init.sqf ist eine Mischung aus der InitServer.sqf und der InitPlayerLocal.sqf. Man sollte daher entweder die Init.sqf mit den nötigen if(isServer) oder if(!isServer) benutzen, oder es auf die InitServer.sqf und die InitPlayerLocal.sqf aufteilen. Von einer Mischung ist aus Gründen der Lesbarkeit abzusehen.

Pro Init.Sqf:

Pro InitServer.sqf, InitPlayerLocal.sqf:

 

onPlayerKilled.sqf

Dieses Script wird jedesmal ausgeführt, wenn ein Spieler stirbt. Es gibt unzählige Möglichkeiten, dies zu nutzen - sei es mit Abzug von Tickets (wie im Liberation-Spielmodus) oder auch dem Verändern der Respawnzeit. Hier ist vieles möglich. Beachtet jedoch, dass ihr in diesem Skript KEINE Änderung vornehmen könnt, die die neu gespawnte Einheit betreffen (zumindest solltet ihr es nicht tun).

Nutzen:

 

onPlayerRespawn.sqf

Dieses Script wird jedesmal ausgeführt, wenn ein Spieler respawnt. Hier könnt ihr seine Ausrüstung anpassen, seinen Standort verändern und vieles mehr.

Nutzen: