-
Notifications
You must be signed in to change notification settings - Fork 0
winconditions.hpp
In USER\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 beispielhafte Siegbedingungen in der Datei vordefiniert. Schauen wir uns eine davon genauer an:
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"};
};
Jetzt schauen wir uns an welche Presets es für die winconditions.hpp gibt.