Hallo erstmal,
dies ist mein erstes Tutorial überhaupt, in der Tat bin ich selbst erst vor kurzem unter die Mapper gegangen und das was ich euch hier zeige hab ich mir selbst erarbeitet. Falls ich irgend etwas komplett falsch machen sollte, bitte ich die erfahrenen Mapper unter euch mich zu korrigieren und es steht euch natürlich frei mein Tutorial mit nützlichen Tips und Tricks zu ergänzen.

Jetzt aber zum eigentlichen Thema, wir basteln eine Tür, die nur mit Hilfe eines Schalters geöffnet werden kann. Für meine Beispielmap habe ich CS:S gewählt, es sollte aber auch möglich sein diese Funktion in HL2DM Maps zu verwenden.

Dafür benötigen wir das Entity "func_button".
Buttons ansich sind extrem vielseitig einsetzbar und es sind der Fantasie fast keine Grenzen gesetzt. Konzentrieren wir uns aber erstmal auf das Wesentliche, ihr könnt nach dem Tutorial einfach das erlernte Wissen selbst erweitern und andere Funktionen der Buttons testen.


Für dieses Tutorial benötigen wir erstmal 2 Räume (natürlich mit Licht), oder zumindest einen Raum mit einer Wand und einer normalen Tür darin, das Tutorial dazu findet ihr hier. Ich setze voraus, dass eure Tür bereits funktionieren würde, ob es nun eine Schiebe- oder Drehtür ist, spielt keine Rolle, ich habe eine Schiebetür gewählt, die sich nach oben öffnet.



Um für später alles vorzubereiten öffnen wir erstmal die Properties von unserer Tür und setzen dort einen eindeutigen und EINZIGARTIGEN Namen. In meinem Fall hab ich einfach "door1" gewählt.



Danach müssen wir noch einige weitere Settings bei der Tür vornehmen.
Ihr müsst euch vorstellen, wie die "func_door" normalerweise arbeitet. Wenn sich ein Spieler der Tür nähert öffnet sie sich automatisch. Da wir das aber nicht wollen, müssen wir folgende Einstellungen tätigen:



"Start Locked" ist die für uns einzig wichtigste, alle anderen Flags dürfen NICHT gesetzt sein. Falls ihr eine Tür haben wollt, die sich nur einmal öffnen lässt und dann für immer (bis zum maprestart/end of round) offen bleibt, müsst ihr noch "Delay before Reset" auf "-1" stellen. Ich habe in meiner Beispielmap noch einige Extras eingebaut, wie z.B. Sounds beim Öffnen und Schließen, dies ist aber optional.

Ihr könnt auch schonmal ausprobieren, ob die Tür auch wirklich geschlossen bleibt, wenn ihr euch die Map im Spiel anseht und euch der Tür nähert. Sie darf sich auch nicht durch das Benützen der USE Taste öffnen lassen.

Haben wir das erstmal gemacht, können wir uns dem "Schlüssel" unserer Tür widmen, dem Button.
Dafür benötigen wir erstmal etwas, das zumindest Ansatzweise wie ein Knopf aussieht, ich habe einfach einen kleinen Brush mit 2x2x2 Units gewählt und an der Wand neben der Tür platziert. (hinter dem Knopf ist noch eine Fläche, die ihn besser sichtbar macht)



Den Brush belegen wir noch mit einer beliebigen Textur. Wichtig ist dabei nicht der Brush der unseren Button "simuliert", er kann jede Form haben, die euch vorschwebt (kann auch ein Hebel oder vielleicht auch einfach nur ein Kästchen mit einer speziellen Textur sein, oder auch ein unsichtbarer "nodraw texturierter" Block).
Nachdem unser Knopf so aussieht, wie wir wollen, machen wir nun einen Rechtsklick auf den Brush in einer der 3 Architekturansichten und wählen "Tie to Entity".



Nun öffnet sich unser bereits bekanntes Entitymenü und wir wählen "func_button" aus und geben ihm gleich einen Namen, ich nenne ihn einfach button1. Auch hier wieder drauf achten, dass der Name noch nicht vergeben ist.



Das wars aber leider noch nicht, denn wir haben jetzt zwar einen Button, aber der weiß nicht was er eigentlich machen soll. Wir müssen dem Button nun also einige Befehle geben, die er ausführen soll.
Zuerst sehen wir uns mal die Animation an. Nachdem ich hier einen Knopf habe, wähle ich folgende Settings:

Name button1
Speed 10 (könnt ihr setzen wie ihr wollt)
Move Direction 270 (wobei das ganz davon abhängt wohin sich EUER Button/Hebel bewegen soll, bei mir ist es in die Richtung 270°)

Und nun kommt der Kern des Ganzen, der es überhaupt erst möglich macht, dass der Button die Tür öffnet.
Wir klicken dazu auf "OUTPUTS" und auf "ADD" und erstellen einen neuen Eintrag, der wie folgt aussieht:



Bei den Flags deaktivieren wir nun noch das neu entstandene Kästchen "Don't Move" um den Button auch wirklich zu bewegen, einzig aktiv bleibt dort nur "Use Activates".

Das wars aber immer noch nicht, jetzt haben wir erstmal die Tür ensperrt (unlocked), aber noch nicht mit dem Button geöffnet. Natürlich werdet ihr denken "das reicht doch", klar. In deisem Beispiel würde es reichen, da wir ja direkt vor der Tür stehen und die sofort öffnen würde, wenn sie nicht mehr "versperrt" ist.
Aber wenn ihr mal einen Button weiter von der Tür weg macht, sieht es einfach besser aus, wenn die Tür gleich aufgeht, und nicht erst wenn ihr hinlauft. (Dabei aber dann besser einen wenig höheren Wert bei der Zeitspanne, in der die Tür offen bleibt wählen)
Ich habe in dieser Funktion übrigens ein Delay (Zeitverzögerung) von 0,5 Sekunden gewählt, das ist optional und ihr könnt da verwenden was ihr wollt. Wichtig ist, dass ihr bei den darauffolgenden Schritten den Zeitlichen Abstand der Delays so genau wie möglich einhaltet, je nachdem welchen "Effekt" ihr erzielen wollt, die Reihenfolge ist aber WICHTIG! (erst unlock, dann open und dann lock)

Also klicken wir nochmal auf ADD und stellen es diesmal so ein:



Und noch einmal, denn schließtlich soll die Tür ja nicht "unlocked" bleiben, nachdem sie sich wieder geschlossen hat, also noch ein Befehl:



Wenn wir alles richtig gemacht haben, können wir nun bei den Properties der Tür unter "INPUT" die Befehle sehen, die wir per Knopfdruck an sie senden.
Die Funktion "Fire Once only" ist nur dann interessant, wenn ihr die Events nur EINMAL pro Map/Runde haben wollt, in unserem Fall wollen wir aber ein paar mal unseren Knopf betätigen, daher lassen wir es weg.

Falls das Symbol neben den Events übrigens Durchgestrichen sein sollte, dann passt was nicht, geht die Schritte nochmal sorgfältig durch, man übersieht leicht etwas und es klappt nicht alles beim ersten Versuch.

So, das wars dann, unsere Tür öffnet sich auf Knopfdruck und schließt sich wieder nach (in meinem Beispiel zumindest) 4 Sekunden.

Auf der Beispielmap hab ich noch einen zweiten Knopf installiert, auf der anderen Seite der Tür, damit man auch wieder zurück kann.
Wichtig dabei ist es, dass ihr für den zweiten Knopf einen ANDEREN NAMEN wählt, sonst bleibt alles gleich wie bei unserem "button1".


Ihr seht mit einem kleinen Knopf eine Tür zu öffnen ist kein Problem. Es ist auch kein Problem auf Knopfdruck z.B. Geiseln ( , ganz böse) und Gegenstände in die Luft zu jagen, Kettenreaktionen auszulösen oder "Lichtschranken" in eine Map zu integrieren, der Fantasie sind keine Grenzen gesetzt. Spielt ein wenig mit den Funktionen der Buttons rum, ihr werdet überrascht sein, wie oft "func_button" auf gängigen Maps als "Trigger" eingesetzt wird. (TIP: ihr könnt Buttons auch mit der NODRAW Textur belegen, dann sind sie unsichtbar und ihr könnt sie per "Touch" oder "Damage" aktivieren.)

Ich wünsche euch jedenfalls viel Spaß mit meinem Tutorial und den danach folgenden Mappingversuchen, bei Fragen stehe ich euch jederzeit hier im Forum zur Verfügung und hoffe dass ich keine Fehler gemacht hab.

Grüße,
Cold