# Eventscripts

<span style="font-weight: 400;">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.</span>

<span style="font-weight: 400;">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. </span>

<span style="font-weight: 400;">Sämtliche Eventscripts müssen dazu im Hauptverzeichnis eurer Mission vorliegen, um ausgeführt zu werden.</span>

### <span style="text-decoration: underline;"><span style="font-weight: 400;">init.sqf</span></span>

<span style="font-weight: 400;">Die Anweisungen dieses Scripts werden beim Starten der Mission für jeden ausgeführt (Server und Client). Dies gilt auch für JIP. </span>

<span style="font-weight: 400;">Nutzen:</span><span style="font-weight: 400;">  
</span><span style="font-weight: 400;">- statische Variablen definieren, die jedem Client und dem Server bekannt sein müssen.</span>

<span style="font-weight: 400;">- 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)</span>

### <span style="text-decoration: underline;"><span style="font-weight: 400;">initServer.sqf</span></span>

<span style="font-weight: 400;">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”). </span>

<span style="font-weight: 400;">Nutzen:</span>

- <span style="font-weight: 400;">Skripte ausführen, die auf dem Server laufen sollen;</span>
- <span style="font-weight: 400;">Variablen nur für den Server definieren;</span>
- <span style="font-weight: 400;">globale Befehle wie setDamage o.ä. ausführen;</span>
- <span style="font-weight: 400;">gesetzte Parameter verarbeiten.</span>

### <span style="text-decoration: underline;"><span style="font-weight: 400;">initPlayerLocal.sqf</span></span>

<span style="font-weight: 400;">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. </span>

<span style="font-weight: 400;">Nutzen:</span>

- <span style="font-weight: 400;">addAction für jeden Spieler hinzufügen;</span>
- <span style="font-weight: 400;">in einem TvT den verschiedenen Seiten verschiedene Marker; anzeigen, oder verschiedene Briefing-Einträge erstellen</span>
- <span style="font-weight: 400;">Loadouts je nach Klasse anpassen;</span>
- <span style="font-weight: 400;">gesetzte Parameter verarbeiten.</span>

### <span style="text-decoration: underline;"><span style="font-weight: 400;">initPlayerServer.sqf</span></span>

<span style="font-weight: 400;">Dieses Script wird für jeden Spieler, der der Mission beitritt, auf dem Server ausgeführt. </span>

<span style="font-weight: 400;">Nutzen:</span>

- <span style="font-weight: 400;">Spieler für Zeus sichtbar machen</span>

<span style="font-weight: 400;">Anmerkungen:</span>

<span style="font-weight: 400;">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.</span>

<span style="font-weight: 400;">Pro Init.Sqf:</span>

- <span style="font-weight: 400;">Alles in einer Datei</span>

<span style="font-weight: 400;">Pro InitServer.sqf, InitPlayerLocal.sqf:</span>

- <span style="font-weight: 400;">Sofortiger Überblick was für den Server und was für Spieler gedacht ist;</span>
- <span style="font-weight: 400;">geringere Fehleranfälligkeit bei JIP-Spielern.</span>

### <span style="text-decoration: underline;"><span style="font-weight: 400;">onPlayerKilled.sqf</span></span>

<span style="font-weight: 400;">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).</span>

<span style="font-weight: 400;">Nutzen:</span>

- <span style="font-weight: 400;">Respawnzeit anpassen;</span>
- <span style="font-weight: 400;">Leiche verschwinden lassen;</span>
- <span style="font-weight: 400;">Loadout der verstorbenen Einheit speichern.</span>

### <span style="text-decoration: underline;"><span style="font-weight: 400;">onPlayerRespawn.sqf</span></span>

<span style="font-weight: 400;">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.</span>

<span style="font-weight: 400;">Nutzen:</span>

- <span style="font-weight: 400;">Respawnposition verändern</span>
- <span style="font-weight: 400;">Loadout anpassen</span>
- <span style="font-weight: 400;">Neue Aufträge per Hint verteilen</span>