EINFACHES SCRIPT (TEIL 2)
Autor: Fragpoint
Downloads: Beispielmap und Script
So, nun kommen wir zum 2. Teil unseres Script, schauen wir uns den Code erst einmal wieder vorab an:
allied_obj1 // Haben die Allied den Safe gesprengt?
{
spawn
{
wait 200
constructible_class 3
}
death
{
// Meldung, wenn der Safe gesprengt wurde
wm_announce "THE SAFE HAS BEEN DESTROYED!"
wm_objective_status 1 0 2
wm_objective_status 1 1 1
}
}
allied_obj2 // Wurde die Formel von den Allied gestohlen?
{
spawn
{
}
death
{
trigger game_manager objective2
wm_objective_status 2 0 2
wm_objective_status 2 1 1
}
}
Was soll dieses Script überhaupt bewirken? Nun, wir wollen damit erreichen, dass die Allierten die Aufgabe haben, eine Mauer zu sprengen und ein dahinter liegendes Dokument zu stehlen. Die Achsenmächte sollten dies natürlich verhindert. Das alles wird von dem obenstehenden Script gesteuert.
Jetzt müssen wir zunächst ein paar Vorarbeiten in der Map machen. Bauen wir zuerst einmal eine sprengbare Wand, die den Weg zu den Dokumenten versperrt. Markiert dazu den Mauer-Brush und macht einen Rechtsklick in eine der Ansichten. Wählt dann "func -> func_explosive" aus.

Und tragt dort die folgenden Werte ein ("N" drücken):

Die Option "Use Shader" sollte dabei immer aktiviert sein.
targetname gibt ein Ziel an, mit dem der Brush verbunden ist. In unserem Fall wird er mit einem Trigger verbunden, der im nächsten Schritt beschrieben ist.
type steht für den Materialtyp, den ich unsinnigerweise mit Metall angegeben habe. Macht nichts, dann klingt unsere Steinwand halt metallisch wenn sie explodiert.
mass steht für die Größe der Explosion.
scriptname ruft ein "Unterprogramm" in unserem Script auf, dazu mehr im 3. Teil. Alle anderen Eintragungen setzt der Radiant automatisch.
Jetzt erstellen wir noch einen Trigger vor dieser Mauer. Macht dazu einen weiteren Brush, der höhenmäßig den ganzen Raum ausfüllt und ca. so breit ist wie drei Spielfiguren. Verwendet dazu "Textures -> Common -> Trigger". Macht einen Rechtsklick in eine der Ansicht und wählt dort "Trigger -> trigger_objective_info" während der Trigger-Brush noch markiert ist.

Tragt dort folgende Werte ein:

target Gibt an, womit der Trigger verbunden ist. Hier wird dieser mit dem Wand verbunden, die den targetname "wall" hat.
track Eine Meldung, die erscheint, wenn der Spieler in den Trigger läuft, damit er weiß, dass er vor der richtigen Mauer steht.
shortname Kurzbezeichnung des Objectives
customalliesimage Verzeichnis, in dem ein Bild liegt, das für dieses Objectiv für die Allied angezeigt wird.
customaxisimage Verzeichnis, in dem ein Bild liegt, das für dieses Objectiv für die Axis angezeigt wird.
axis_objective Wenn dies aktiviert ist, bedeutet es, dass das Objectiv den Achsenmächten gehört und es NUR die Allierten zerstören können. Umgekehrt ist dies beim allied_objective.
Jetzt setzen wir hinter der Mauer (für den Spieler noch unerreichbar) das zu stehlende Objectiv - die Dokumente. Macht dazu einen Rechtsklick in eine der Ansichten und wählt dort "team -> team_CTF_redflag" an.

Hier platziert ihr praktisch wie in Quake 3 eine rote Flagge, die man stehlen kann. Da wir keine Flagge angezeigt bekommen wollen geben wir noch folgende Werte ein ("N" drücken"):

model Hier wird der Pfad/Verzeichnis zu einem Model angegeben, das geklaut werden soll. Ich habe hier ein paar Dokumente gewählt. In dem Verzeichnis auf Eurer Festplatte befinden sich auch noch andere Models, durchsucht es ruhig. Ggf. müsst ihr das Verzeichnis erst noch aus Euren PK3-Dateien entpacken.
message Eine Meldung, die den Namen/Bezeichnung des Objectives angibt.
Alle anderen Eintragungen sind unwichtig bzw. werden vom Radiant automatisch gesetzt. Wollt ihr ein Objectiv verwenden, dass die Achsenmächte stehlen müssen, solltet ihr ein team_CTF_blueflag setzen.
Nun brauchen wir noch einen Ablieferplatz für unsere Dokumente. Nehmt dazu wieder einen

Dort nehmen wir dann noch kurz folgende Eintragungen vor:

Die Option "redflag" ist aktiviert, da hier NUR die rote Flagge (die Dokumente der Axis = rot, Allied = blau) abgeliefert werden dürfen.
scriptname ruft ein "Unterprogramm" in unserem Script auf, dazu mehr im 3. Teil. Alle anderen Eintragungen setzt der Radiant automatisch.