Skip to content

winconditions.hpp

McDiod edited this page May 12, 2017 · 13 revisions

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.

vorhandene Siegbedingungen

Es sind bereits zwei Siegbedingungen in der Datei vordefiniert. Diese sind allerdings standardmäßig auskommentiert und wir können sie 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.

eigene Siegbedingungen

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.

Clone this wiki locally