In diesem Tutorial soll erklärt werden, wie man einen Zahlencode innerhalb von Half-life abfragen kann. Damit kann man Sicherheitstüren erstellen, die sich erst nach Eingabe des richtigen Codes öffnen lassen (oder auch Ausrüstungscontainer wie in Doom3).
Als Beispiel soll hier eine Sicherheitstür mit einem vierstelligen Code erstellt werden. Der Code lautet 7 3 0 5, und die Sicherheitstür öffnet sich nur, wenn der Code in dieser Reihenfolge eingetippt wird.
Dazu werden folgende Entities benötigt:
10 func_button (jeder einzelne steht für eine Zifferntaste)
10 trigger_changetarget (steuern die Abfrage des Codes)
1 multi_manager (gibt die Tür frei)
1 func_door (die Sicherheitstür)
Für die Erläuterung der einzelnen Entities möchte ich auf die Entity-Bibliothek verweisen, und nur auf die für dieses Beispiel relevanten Angaben eingehen.
Hier kann man eine Tür nach eigenem Geschmack bauen. Sie sollte in der Grundstellung geschlossen sein, damit man den Code zum Öffnen eingeben muß.
Einstellungen
Für jede einzelne Taste sollte man einen kleinen Brush erstellen. In meinem Beispiel habe ich 3 * 3 * 1 Einheiten verwendet, also relativ klein, damit das Ganze später realistisch aussieht. Des weiteren sollte man auf jede Front der Tasten eine Zahl texturieren, damit der Spieler auch weiß, welche Ziffer er gerade eingibt.
Dann wird jede Taste zu einem func-button umgewandelt.
Einstellungen
Name: „b1“ bis „b9“ und „b0“ (z.B. „b1“ für die Taste mit der Aufschrift „1“)
Target: „k1“ für alle Tasten, bis auf Taste „7“, hier soll Target „k2“ sein (alle Tasten außer der „7“ sind falsch)
Sounds: „Lightswitch“
delay before reset: „0“
delay before trigger: „0“
Flags
Hier wird nun der eigentliche Mechanismus mit den 10 trigger_changetarget und dem multimanager erstellt. Damit das Ganze durchschaubar bleibt, sollte man die Anordnung wie auf der Abbildung nachbilden.
In der untersten Reihe sind 4 Trigger („k1“), die dafür sorgen, daß man nach einer Falscheingabe wieder von vorne anfangen muß (bzw. kann man damit den Mechanismus sogar mehrmals verwenden). Präzise formuliert werden hier die Tasten „3“, „0“, und „5“ als falsch und die Taste „7“ als richtig eingestellt, da die „7“ ja die erste richtige Ziffer in dem Beispielcode sein soll („7-3-0-5“).
In der Reihe darüber („k2“) findet dann eine einfache Vertauschung statt. Die Ziffer „7“ wird als falsch und die Ziffer „3“ als richtig eingestellt. In der nächsten Reihe („k3“) wieder ein Austausch, Ziffer „3“ wird falsch und Ziffer „0“ richtig. Danach dann in der nächsten Reihe („k4“) wird Ziffer „0“ falsch und Ziffer „5“ richtig.
Wird dann letztendlich die Taste „5“ gedrückt, ist mit dem multimanager („k5“) das Ziel erreicht, und die Tür wird geöffnet. Sollte man während der Codeingabe eine falsche Taste drücken, wird die Eingabe zurückgesetzt. Dies ist wichtig, da sich der Spieler sonst relativ schnell den richtigen Code durch Ausprobieren erschummeln könnte (ohne Reset: 40 Versuche für richtigen Code, mit Reset: 10.000 Versuche für richtigen Code nötig).
Die anderen Tasten müssen nicht weiter verändert werden, da sie in diesem Beispiel auf jeden Fall immer falsch sind.
Im folgenden die Einstellungen der einzelnen trigger_changetarget (immer von links nach rechts betrachtet (1), (2), …)
k1 (1)
Einstellungen
Name: „k1“ (alle trigger_changetarget der untersten Reihe heißen „k1“)
Target: „b0“ (die Taste „0“ ist falsch an erster Stelle des Codes…)
New Target: „k1“ (…darum werden durch diese Taste die bisherigen Eingaben gelöscht)
k1 (2)
Einstellungen
k1 (3)
Einstellungen
k1 (4)
Einstellungen
k2 (1)
Einstellungen
Name: „k2“ (alle trigger_changetarget der 2. Reihe von unten heißen „k2“)
Target: „b7“ (die Taste „7“ ist falsch an zweiter Stelle des Codes…)
New Target: „k1“ (…darum werden durch diese Taste die bisherigen Eingaben gelöscht)
k2 (2)
Einstellungen
k3 (1)
Einstellungen
Name: „k3“
Target: „b3“
New Target: „k1“
k3 (2)
Einstellungen
Name: „k3“
Target: „b0“
New Target: „k4“
k4 (1)
Einstellungen
Name: „k4“
Target: „b0“
New Target: „k1“
k4 (2)
Einstellungen
Name: „k4“
Target: „b5“
New Target: „k5“
Und schließlich die Einstellungen des multimanager („k5“).
k5
Einstellungen
Mit einem Klick auf „SmartEdit“ im Eigenschaftenfenster des multimanagers wird selbiges deaktiviert, da die restlichen Einstellungen von Hand vorgenommen werden müssen.
k5
Einstellungen
Key: „door“, Value: „0“ (die Tür wird geöffnet)
Key: „k1“, Value: „0“ (die Eingaben werden gelöscht, man kann den Code wieder eingeben)
Nun ist die Sicherheitstür mit Codeabfrage fertig. Gibt man an einer Stelle des Codes eine falsche Ziffer ein, wird die Eingabe wieder zurückgesetzt. Wird der Code in der richtigen Reihenfolge eingegeben, öffnet sich die Tür.
Hier möchte ich noch kurz ein paar Dinge ansprechen, damit man dieses Tutorial für das eigene Projekt verwenden kann.
3-stelliger oder 5-stelliger Code oder anderer Code: möchte man statt eines vierstelligen Codes nur einen dreistelligen verwenden, entfernt man einfach eine Ebene Vertauschungen (z.B. „k4“), und läßt bereits durch „k3“ den multimanager aufrufen. Möchte man einen längeren Code abfragen, muß man einfach weitere Vertauschungsebenen (z.B. „k5“, „k6“, „k7“) einfügen, und den multimanager wiederum nur durch die letzte Vertauschungsebene auslösen lassen. Möchte man einen anderen Code abfragen, muß man die func_button und die trigger_changetarget entsprechend umkonfigurieren (also die richtige Ziffer Vertauschungen durchführen lassen, falsche Ziffern die bisherigen Eingaben löschen, und mit „k1“ alle im Code vorkommenden Ziffern als falsch einstellen, bis auf die erste Ziffer im Code, die auf richtig eingestellt werden muß „k2“).
In der Beispielmap wird zusätzlich noch der Text „Richtiger Code eingegeben“ angezeigt. Dies wird mit einem game_text erreicht, der durch den multimanager aktiviert wird. Natürlich ließe sich mit einem multimanager weiteres aktivieren (z.B. Licht, Monster, …)
Der richtige Code sollte vorher bekannt sein, sonst kommt der Spieler unmöglich weiter. In der Beispielmap ist ein kleines Schild direkt über dem Ziffernblock angebracht, damit man sich den Code nicht extra merken muß, in einem normalen Spiel sollte das natürlich anders gelöst sein.
noch eine Idee für „Eastereggs“. Man erstellt alle Sicherheitstüren ohne „k1“-Ebene, d.h. bei falschen Eingaben muß man nicht wieder von vorne anfangen. Für alle wichtigen Türen gibt man dem Spieler dann immer den richtigen Code vor, bei ein paar unwichtigen und versteckten Türen gibt man den code nicht an oder nur Teile davon, und der Spieler muß den richtigen Code selber ausknobeln. Hier sollten wie gesagt alle Türen dann gleichartig ohne „k1“ gestaltet werden, ansonsten wäre es unlogisch, wenn bei einigen Türen Falscheingaben erlaubt sind, und bei anderen nicht. Oder man macht die Türen entsprechend kenntlich, sodaß der Spieler weiß, dass man bei der Tür knobeln kann oder daß es im anderen Fall zu viele Kombinationen gäbe. Von Vorteil wäre es bei dieser Art Zahlenschloss, dass wenn der Spieler eine richtige Taste gedrückt hat, ihm auch angezeigt wird, dass er jetzt eine „k“-Ebene höher ist.
Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu
nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien,
(insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog.
"Mission-Packs" etc.) ist untersagt.