-
Notifications
You must be signed in to change notification settings - Fork 0
winconditions.hpp
In USERSCRIPTS\winconditions.hpp werden die Siegbedingungen für die Mission festgelegt.
Eintrag | Erklärung |
---|---|
preset | String - Wincondition Preset (s.u.). Wenn hier ein Preset eingestellt ist, kann condition und checkInterval vernachlässigt werden. |
presetParams | Array - Parameter für das Preset. Je nach Preset können hier verschiedene Parameter übergeben werden (s.u.). Nur wichtig wenn ein Preset eingestellt ist. |
condition | Code (String) - Die Bedingung, die erfüllt sein muss, damit diese Siegbedingung ausgelöst wird. Ist nur wichtig, wenn kein Preset eingestellt ist. |
checkInterval | Number - Zeit in Sekunden, die angibt wie häufig diese Siegbedingung evaluiert wird. Ist nur wichtig, wenn kein Preset eingestellt ist. |
winners | Array - Alle Parteien, die als Sieger gelten, wenn diese Siegbedingung ausgelöst wird. (WEST, EAST, INDEPENDENT, CIVILIAN) |
winText | String - Text, der am Ende der Mission bei allen Spielern angezeigt wird. |
winTextParams | Array - Code oder Variablen, die dem winText übergeben werden. Variablen müssen lokal zu allen Clients sein. |
Es sind bereits zwei Siegbedingungen in der Datei vordefiniert. Diese können wir ohne Bedenken löschen, falls sie nicht zu unserer Mission passen.
class bluforeliminated {
preset = "ELIMINATION";
presetParams[] = {"WEST"};
condition = "";
checkInterval = 0;
winners[] = {"EAST","INDEPENDENT"};
winText = "BLUFOR eliminated after %1 minutes.<br/>OPFOR wins!";
winTextParams[] = {"round (CBA_missionTime/60)"};
};
Die Siegbedingung bluforeliminated
startet also das Preset "ELIMINATION" mit dem Parameter "WEST". Sobald die Bedingung des Presets erfüllt ist wird bei allen Spielern der Siegtext angezeigt. An Stelle des "%1" wird dabei der erste winText-Parameter geschrieben, nämlich die vergangene Missionszeit in Sekunden geteilt durch 60 und das ganze gerundet. Die Mission wird beendet. Bei allen Blufor Spielern wird "Mission Failed", bei allen Opfor und Independent Spielern wird "Mission Completed" angezeigt.
Nach dem gleichen Muster können wir weitere Siegbedingungen definieren. Der Klassenname (im Beispiel "bluforeliminated") ist dabei egal.
Beispiel:
Statt eines Presets möchten wir eine eigene condition
benutzen. Alle 60 Sekunden wollen wir überprüfen, ob Opfor zu viele Zivilisten getötet hat. Die Anzahl der getöteten Zivilisten speichern wir über ein eigenes Skript in der Variablen meineMission_civsKilledOpf
. Im abschließenden Text wird angezeigt wie lange die Mission in Minuten lief und wie viele Zivilisten Opfor getötet hat. Blufor gewinnt.
class civsKilledOpf {
preset = "";
presetParams[] = {};
condition = "meineMission_civsKilledOpf >= 5";
checkInterval = 60;
winners[] = {"WEST"};
winText = "OPFOR hat innerhalb von %1 Minuten %2 Zivilisten getötet.<br/>BLUFOR gewinnt.";
winTextParams[] = {"round (CBA_missionTime/60)","meineMission_civsKilledOpf"};
};
Presets sind gängige Siegbedingungen, die im TvT Template mitgelieferte Funktionen benutzen. Die Parameter nehmen dabei Einfluss auf das Verhalten der Presets. In den Tabellen bedeutet Parameter 0, dass dieser Parameter im presetParams
Array an erster Stelle stehen muss. Parameter 1 an zweiter Stelle, Parameter 2 an dritter Stelle usw.
Das Elimination Preset löst aus, sobald keine Einheiten der als Parameter übergebenen Seiten mehr leben.
Parameter | Erklärung |
---|---|
0 | Seite, die eliminiert sein muss. (WEST / EAST / INDEPENDENT / CIVILIAN). |
1 | optional - Seite, die eliminiert sein muss. (WEST / EAST / INDEPENDENT / CIVILIAN). |
2 | optional - Seite, die eliminiert sein muss. (WEST / EAST / INDEPENDENT / CIVILIAN). |
3 | optional - Seite, die eliminiert sein muss. (WEST / EAST / INDEPENDENT / CIVILIAN). |
Beispiel:
Missionsende, wenn OPFOR und INDEPENDENT ausgeschaltet sind.
preset = "ELIMINATION";
presetParams[] = {"EAST","INDEPENDENT"};
Das Control Preset löst aus, sobald die angegebene Seite für die angegebene Zeit am Stück die angegebene Zone kontrolliert. Für dieses Preset definieren wir zunächste die Zone mit einem Trigger. Dem Trigger geben wir einen Variabelnamen (bspw. "AREA1") und setzen den Haken bei Server Only.
Parameter | Erklärung |
---|---|
0 | Variabelname des Triggers, der die Zone definiert. |
1 | Seite, die die Zone einnehmen muss. (WEST / EAST / INDEPENDENT) |
2 | Zeit in Sekunden, die die angegebene Seite die angegebene Zone halten muss. |
Beispiel:
BLUFOR muss die Zone "AREA1" für 30 Sekunden kontrollieren.
preset = "CONTROL";
presetParams[] = {"AREA1","WEST",30};
Weiter geht's mit der scopeWeapons.hpp.