Zahlencode

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.

Schritt 1 - Die Sicherheitstür

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

  • Name: „door“
  • delay before close: “-1“ (sie soll offen bleiben)

Schritt 2 - Die Zifferntasten

z01.jpg

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

  • Don't move

Schritt 3 - Die Codeabfrage

z02.jpg

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

  • Name: „k1“
  • Target: „b3“ (die Taste „3“ ist falsch an erster Stelle des Codes…)
  • New Target: „k1“

k1 (3) Einstellungen

  • Name: „k1“
  • Target: „b5“ (die Taste „5“ ist falsch an erster Stelle des Codes…)
  • New Target: „k1“

k1 (4) Einstellungen

  • Name: „k1“
  • Target: „b7“ (die Taste „7“ ist richtig an erster Stelle des Codes…)
  • New Target: „k2“ (…darum wird danach die erste Vertauschung durchgeführt)

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

  • Name: „k2“
  • Target: „b3“ (die Taste „3“ ist richtig an zweiter Stelle des Codes…)
  • New Target: „k3“ (…darum wird danach die zweite Vertauschung durchgeführt)

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

  • Name: „k5“

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.

Download:

Anmerkungen

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, …)
  • Beim Erstellen des Ziffernblockes sollte zwischen den einzelnen Tasten mindestens ein Abstand von 2 Einheiten sein, da sonst zu oft eine falsche Eingabe zustandekommt
  • Damit man überhaupt Eingaben machen kann, braucht man ein Fadenkreuz. Daher muß der Spieler einen Schutzanzug und irgendeine Waffe haben, sonst wird das Eingeben sehr schwierig.
  • 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.
 
half-life/tutorials/kombinationsschloss.txt · Zuletzt geändert: 2006/03/15 16:28 von Richman