Aufträge

Aufträge (im Spiel auf F4 drücken) werden im allgemeinen in „Briefings“ erstellt. Aufträge ohne Briefings wären eigentlich nicht so sinnvoll, weil man sonst keine weitergehenden Informationen bekommt. Selbstverständlcih sind auch hier die Möglichkeiten ziemlich unbegrenzt. Es kommt immer drauf an, wie man den Spieler fordern möchte.

Aufträge sind wesentlicher Bestandteil einer Singleplayermap, sollten daher auch keinesfalls vergessen werden. Es gibt eigentlich nichts schlimmeres, wenn ein Spieler auf einmal nicht mehr weiß, was er zu tun hat und keine Möglichkeit besteht, noch einmal nachzuschlagen. Das ist aber sehr wichtig, denn wenn man mal den Inhalt eines Briefing vergessen haben sollte (zu schnell durchgeklickt oder eine Pause zwischendurch gemacht), ist man dankbar wenn irgendwo steht, was denn nun zu tun ist.

Aufträge werden im Briefing mit folgendem Code erteilt:

MainquestErec = AP{
    title    = "Missionsziele",
    text     = "1) Erec hat neue Informationen für euch - Sprecht mit ihm!",
    position = GetPosition("Erec"),
    explore  = 2000,
 
    marker   = ANIMATED_MARKER,
    quest = {
        id    = GetQuestId(),
        type  = MAINQUEST_OPEN,
        title = "1. Auftrag",
        text  = "Sprecht mit Erec!"
    }
}

Was ist hier zu sehen?
Zuerst wird ganz normal eine Briefing Seite erstellt mit Titel, Text und Position. Dann wird noch die Gegen um die Position im Radius von 2000 Siedlerzentimetern aufgedeckt.
Dann kommen die Informationen die für den Quest relevant sind: Der Marker kann entweder ein ANIMATED_MARKER (sich bewegender Grüner Kreis auf der Minimap) oder STATIC_MARKER (grüner Kreis auf der Minimap der sich nicht bewegt) sein. Er zeigt dem Spieler an, wo die Questziele liegen und sollte für Mainquests eigentlich immer der ANIMATED_MARKER sein.
Der Eintrag quest ist ein Table der eine ID, den Questtyp und Titel und Text enthält. Die ID muss für jeden neuen Quest eindeutig sein. Weil man diese ID aber nicht mehr braucht, nachdem man sie hier eingetragen hat, kann man sich eine Funktion schreiben, die immer eine eindeutige ID liefert. So eine Funktion könnte z.B. so aussehen:

function GetQuestId()
    gvMission.QuestId = (gvMission.QuestId or 0) + 1
    return gvMission.QuestId
end

Im Beispiel oben wird die Funktion bereits verwendet.
Der Questtyp ist entweder MAINQUEST_OPEN (Hauptaufgabe) oder SUBQUEST_OPEN (Nebenaufgabe). Unterscheiden tun sich die beiden Typen nur durch ein anderes Symbol in der Aufgabenübersicht (das Subquest Symbol ist heller und wird immer unter den Mainquests angezeigt).
Titel und Text sind später in der Aufgabenübersicht angezeigt. Der Titel sollte sehr kurz sein (3-5 Wörter) und kurz den Inhalt der Aufgabe wiedergeben. Der Text dagegen sollte eine ausführliche Beschreibung der Aufgabe sein. Und zwar sollte hier in einem Text alles das, was an Information in dem Briefing war, noch einmal zusammengefasst aufgeführt werden. Dann kann der Spieler immer mal wieder nachschauen, was er alles wissen sollte oder wie der Storyverlauf ist.

Außerdem wird hier die Seite in der Variable MainquestErec gespeichert. Das ist wichtig, um den Auftrag später als erledigt kennzeichnen zu können (Haken in der Aufgabenübersicht), nachdem mit Erec gesprochen wurde. Das wird dann mit ResolveBriefing gemacht.

ResolveBriefing(MainquestErec)


Aufträge aus dem Questbuch entfernen

Um einen Auftrag aus dem Questbuch zu löschen, benötigt man die ID, die man zusammen mit der SpielerID an Logic.RemoveQuest übergibt. Das Löschen des Quests mit der ID1 für Spieler 1 sähe dann so aus:

Logic.RemoveQuest( 1, 1)

Und mit diesem Befehl wird der Quest mit der ID2 für Spieler 1 gelöscht:

Logic.RemoveQuest( 1, 2)


Zur Tutorial-Übersicht