De/Inputs and Outputs: Difference between revisions

From Valve Developer Community
< De
Jump to navigation Jump to search
No edit summary
m (Setting bug notice hidetested=1 param on page where the bug might not need tested in param specified)
 
(13 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{otherlang2
{{LanguageBar}}
| en = Inputs and Outputs
| ru = Inputs and Outputs:ru
}}


{{toc-right}}
{{toc-right}}


'''Inputs''' und '''Outputs''' (Zusammengefasst "I/O") sind die Kommunikationswege der [[Entity:de|Entities]], um in einer [[:Category:Level Design:de|Map]] zu kommunizieren. Entities haben zwei Methoden um miteinander zu kommunizieren: Sie können einen „Output“ an ein anderes Entity senden oder sie erhalten einen „Input“ von einem anderen Entity. Ein Entity könnte, sobald es „stirbt“, einen Output an ein anderes Entity senden, damit dieses die Farbe wechselt. Derselbe Ouput könnte auch dazu verwendet werden, um ein den spawn Input eines anderen Entities auszulösen. Die Output werden mit den Inputs über eine „Connection“ verbunden, welche festlegt welche Daten dem Empfänger zugestellt werden, mit wie viel Verzögerung dies stattfindet und ob der Output mehrmals gesendet werden kann. Outputs können mit jedem Input verbunden werden und umgekehrt geht es natürlich genauso. Das ermöglicht komplexe und mächtige Interaktionen zwischen den Entities.
'''Inputs''' und '''Outputs''' (Zusammengefasst "I/O") sind die Kommunikationswege der {{L|Entity|Entities}}, um in einer {{LCategory|Level Design|Map}} zu kommunizieren. Entities haben zwei Methoden um miteinander zu kommunizieren: Sie können einen „Output“ an ein anderes Entity senden oder sie erhalten einen „Input“ von einem anderen Entity. Ein Entity könnte, sobald es „stirbt“, einen Output an ein anderes Entity senden, damit dieses die Farbe wechselt. Derselbe Ouput könnte auch dazu verwendet werden, um ein den spawn Input eines anderen Entities auszulösen. Die Output werden mit den Inputs über eine „Connection“ verbunden, welche festlegt welche Daten dem Empfänger zugestellt werden, mit wie viel Verzögerung dies stattfindet und ob der Output mehrmals gesendet werden kann. Outputs können mit jedem Input verbunden werden und umgekehrt geht es natürlich genauso. Das ermöglicht komplexe und mächtige Interaktionen zwischen den Entities.


Betrachten wir das [[logic_timer:de|logic_timer]] Entity. Es könnte so konfiguriert sein, dass es den  <code>OnTimer</code>  Output „abfeuert“ sobald es das eingestellte Zeitlimit erreicht, welcher den <code>ShowSprite</code> Input eines [[env_sprite:de|env_sprite]] auslöst (bzw. aufruft). Wenn der Timer sein Zeitlimit erreicht, wird das Sprite erscheinen. Wenn Sie die Connection Einstellungen verwenden, könnten Sie z.B. den Output erst nach zwei Sekunden auslösen oder es so einstellen, dass der Output nur einmalig abgefeuert wird.
Betrachten wir das {{L|logic_timer}} Entity. Es könnte so konfiguriert sein, dass es den  <code>OnTimer</code>  Output „abfeuert“ sobald es das eingestellte Zeitlimit erreicht, welcher den <code>ShowSprite</code> Input eines {{L|env_sprite}} auslöst (bzw. aufruft). Wenn der Timer sein Zeitlimit erreicht, wird das Sprite erscheinen. Wenn Sie die Connection Einstellungen verwenden, könnten Sie z.B. den Output erst nach zwei Sekunden auslösen oder es so einstellen, dass der Output nur einmalig abgefeuert wird.


== Inputs ==
== Inputs ==
Line 14: Line 11:
'''Inputs''' sind Kommandos, welche ein Entity dazu veranlassen den Zustand bzw. deren Tätigkeit zu ändern. Sie werden durch Outputs ausgelöst (bzw. aufgerufen) – sie können ohne Output nicht geändert werden.
'''Inputs''' sind Kommandos, welche ein Entity dazu veranlassen den Zustand bzw. deren Tätigkeit zu ändern. Sie werden durch Outputs ausgelöst (bzw. aufgerufen) – sie können ohne Output nicht geändert werden.


Sie können sich die Liste der Inputs, welche ein Entity erhält, im Inputs Tab des [[Hammer Object Properties Dialog:de|object properties dialog]]. Wenn Sie auf den "mark" Button klicken, werden Sie zu dem Output weitergeleitet, welcher den Input auslöst.
Sie können sich die Liste der Inputs, welche ein Entity erhält, im Inputs Tab des {{L|Hammer Object Properties Dialog|object properties dialog}}. Wenn Sie auf den "mark" Button klicken, werden Sie zu dem Output weitergeleitet, welcher den Input auslöst.


== Outputs ==
== Outputs ==


[[File:Output.png|thumb|Hammer's "Object Properties" dialog]]
[[File:Outputs-new.png|thumb|Hammer's "Object Properties" dialog]]


'''Outputs''' werden abgefeuert, sobald sicher der Status des Entitys verändert. Ein [[logic_timer:de|Timer]] wird den Output abfeuern, sobald er sein Zeitlimit erreicht hat, ein [[func_button:de|Button]] sendet den Output, wenn der Button gedrückt wird und eine [[prop_door_rotating:de|Tür]] sendet den Output, wenn sie geschlossen wird.
'''Outputs''' werden abgefeuert, sobald sicher der Status des Entitys verändert. Ein {{L|logic_timer|Timer}} wird den Output abfeuern, sobald er sein Zeitlimit erreicht hat, ein {{L|func_button|Button}} sendet den Output, wenn der Button gedrückt wird und eine {{L|prop_door_rotating|T&uuml;r}} sendet den Output, wenn sie geschlossen wird.


Output Events werden im Outputs Tab des [[Hammer Object Properties Dialog:de|object properties dialog]] erstellt. Diese Schnittstelle stellt eine Liste der Outputs bereit, welche bereits von diesem Entity ausgehen. Es werden Konfigurationsfelder bereitgestellt, um den aktuell ausgewählten Output zu bearbeiten und es gibt Buttons, welche zur Erstellung bzw. zum löschen von Outputs benötigt werden. Der Button „mark“ bringt Sie zu dem Input, welcher durch den aktuell ausgewählten Output betroffen ist.
Output Events werden im Outputs Tab des {{L|Hammer Object Properties Dialog|object properties dialog}} erstellt. Diese Schnittstelle stellt eine Liste der Outputs bereit, welche bereits von diesem Entity ausgehen. Es werden Konfigurationsfelder bereitgestellt, um den aktuell ausgewählten Output zu bearbeiten und es gibt Buttons, welche zur Erstellung bzw. zum löschen von Outputs benötigt werden. Der Button „mark“ bringt Sie zu dem Input, welcher durch den aktuell ausgewählten Output betroffen ist.


Das sind die Ouput Konfigurationsmöglichkeiten:
Das sind die Ouput Konfigurationsmöglichkeiten:


; Output name
; Output name
: Legt fest, welches Event den Output veranlasst „abgeschossen“ zu werden. Z.B. ein [[trigger_multiple:de|trigger_multiple]] kann einen '''OnTrigger''' Output abfeuern, wenn ein Spieler den Bereich betritt.
: Legt fest, welches Event den Output veranlasst „abgeschossen“ zu werden. Z.B. ein {{L|trigger_multiple}} kann einen '''OnTrigger''' Output abfeuern, wenn ein Spieler den Bereich betritt.
; Target entity
; Target entity
: Der [[targetname:de|targetname]] oder [[classname:de|classname]] des Entitys, welches den Input erhalten soll. Der *  Buchstabe wird als Suchplatzhalter (Wildcards) akzeptiert.
: Der {{L|targetname}} oder {{L|classname}} des Entitys, welches den Input erhalten soll. Der *  Buchstabe wird als Suchplatzhalter (Wildcards) akzeptiert.
:* Ein fettgedruckter Name bedeutet, dass der targetname mehrere Entities betrifft
:* Ein fettgedruckter Name bedeutet, dass der targetname mehrere Entities betrifft
:* Ein roter Name bedeutet, dass sicher der targetname auf ein nicht vorhandenes Entity bezieht {{bug|Gültige classnames und Platzhalterwerte und [[Targetname#Keywords|special targetnames]] werden auch rot dargestellt. Keine Sorge: Die Engine wird diese richtig Beachten/Behandeln!}}
:* Ein roter Name bedeutet, dass sicher der targetname auf ein nicht vorhandenes Entity bezieht {{bug|hidetested=1|G&uuml;ltige classnames und Platzhalterwerte und [[Targetname#Keywords|special targetnames]] werden auch rot dargestellt. Keine Sorge: Die Engine wird diese richtig Beachten/Behandeln!}}
; Input name
; Input name
: Der Input, welcher beim Zielentity ausgeführt werden soll.
: Der Input, welcher beim Zielentity ausgef&uuml;hrt werden soll.
; Parameters
; Parameters
: Sie können mit Hilfe von Parametern dem Zielentity Daten übergeben. Ein Parameter kann alles Mögliche sein: Wie laut ein [[ambient_generic:de|Sound]] abgespielt werden soll, den [[targetname:de|targetname]] eines anderen Entity, oder vielleicht [[color255|eine Farbe]]. Es hängt alles davon ab, welche Werte der Input akzeptiert. Wenn nichts akzeptiert wird, wird das Feld ausgegraut.
: Sie k&ouml;nnen mit Hilfe von Parametern dem Zielentity Daten &uuml;bergeben. Ein Parameter kann alles M&ouml;gliche sein: Wie laut ein {{L|ambient_generic|Sound}} abgespielt werden soll, den {{L|targetname}} eines anderen Entity, oder vielleicht {{L|color255|eine Farbe}}. Es h&auml;ngt alles davon ab, welche Werte der Input akzeptiert. Wenn nichts akzeptiert wird, wird das Feld ausgegraut.
: Manche Outputs, wie der <code>OutValue</code> des [[math_counter:de|math_counter]], generieren eigenständig Parameter. Um einen generierten Parameter zu verwenden, müssen Sie das Feld „reading“ mit <code><none></code> füllen. {{note|Falls der Output Value ein [[targetname:de|targetname]] ist, kann es sein, dass dieser nicht einzigartig ist!}}
: Manche Outputs, wie der <code>OutValue</code> des {{L|math_counter}}, generieren eigenst&auml;ndig Parameter. Um einen generierten Parameter zu verwenden, m&uuml;ssen Sie das Feld „reading“ mit <code><none></code> f&uuml;llen. {{note|Falls der Output Value ein {{L|targetname}} ist, kann es sein, dass dieser nicht einzigartig ist!}}
; Time delay
; Time delay
: Die Anzahl der Sekunden die nach dem Output Event vergeht, bevor der Output abgefeuert wird.
: Die Anzahl der Sekunden die nach dem Output Event vergeht, bevor der Output abgefeuert wird.
; Fire once only
; Fire once only
: Falls diese Option aktiviert ist, wird der Output nach dem Abfeuern gelöscht.
: Falls diese Option aktiviert ist, wird der Output nach dem Abfeuern gel&ouml;scht.


== Einen einfachen Auslöser erstellen ==
== Einen einfachen Ausl&ouml;ser erstellen ==
Das ist ein Beispiel wie man einen einfachen Auslöser mit Inputs und Outputs erstellen kann, damit ein Sound abgespielt wird, sobald der Spieler einen bestimmten Bereich betritt.
Das ist ein Beispiel wie man einen einfachen Auslöser mit Inputs und Outputs erstellen kann, damit ein Sound abgespielt wird, sobald der Spieler einen bestimmten Bereich betritt.


Öffnen Sie eine Map und fügen Sie ein [[ambient_generic:de|ambient_generic]] hinzu (Schreiben Sie "<code>ambient_1</code>" in das Name Feld). Gehen Sie in die '''Object Properties''' und wählen Sie ein Soundfile, welches abgespielt werden soll, und wählen Sie im Tab '''Flags''' "'''Start Silent'''" aus. Wählen Sie die "<code>tools/toolstrigger</code>" Textur aus und erstellen Sie damit einen würfelförmigen Brush. Führen Sie auf diesem Brush einen Rechtsklick aus und benutzen Sie den "[[Brush entity:de|Tie to Entity]]" Befehl und erstellen Sie ein [[trigger_once:de|trigger_once]] Entity. Gehen Sie zum '''Outputs''' Tab und klicken Sie auf '''Add...'''.
Öffnen Sie eine Map und fügen Sie ein {{L|ambient_generic}} hinzu (Schreiben Sie "<code>ambient_1</code>" in das Name Feld). Gehen Sie in die '''Object Properties''' und wählen Sie ein Soundfile, welches abgespielt werden soll, und wählen Sie im Tab '''Flags''' "'''Start Silent'''" aus. Wählen Sie die "<code>tools/toolstrigger</code>" Textur aus und erstellen Sie damit einen würfelförmigen Brush. Führen Sie auf diesem Brush einen Rechtsklick aus und benutzen Sie den "{{L|Brush Entity|Tie to Entity}}" Befehl und erstellen Sie ein {{L|trigger_once}} Entity. Gehen Sie zum '''Outputs''' Tab und klicken Sie auf '''Add...'''.


Setzen Sie "My output named" auf "<code>OnStartTouch</code>". Der Output wird nun ausgelöst, sobald ein Spieler den Brush berührt.  
Setzen Sie "My output named" auf "<code>OnStartTouch</code>". Der Output wird nun ausgelöst, sobald ein Spieler den Brush berührt.  
Line 63: Line 60:
Source stellt eine Reihe von verschiedenen debugging Tools zur Verfügung, um Probleme mit den I/O Anweisungen zu beheben.
Source stellt eine Reihe von verschiedenen debugging Tools zur Verfügung, um Probleme mit den I/O Anweisungen zu beheben.


Natürlich ist der object properties dialog auch ein debugging Tool. Ungültige Inputs und Outputs werden rot dargestellt; die I/O Icons am unteren Rand des Dialogs verändern sich auch dementsprechend. Ungültige Outputs werden auch im [[Hammer Check For Problems Dialog:de|Check For Problems]] Dialog des Hammer Editors dargestellt ({{key|Alt+P}}). Sie sollten bevor Sie die Map kompilieren immer nach eventuell vorhandenen Problemen schauen.
Natürlich ist der object properties dialog auch ein debugging Tool. Ungültige Inputs und Outputs werden rot dargestellt; die I/O Icons am unteren Rand des Dialogs verändern sich auch dementsprechend. Ungültige Outputs werden auch im {{L|Hammer Check For Problems Dialog|Check For Problems}} Dialog des Hammer Editors dargestellt ({{key|Alt+P}}). Sie sollten bevor Sie die Map kompilieren immer nach eventuell vorhandenen Problemen schauen.


{{bug| Gültige classnames und Platzhalterwerte und [[Targetname#Keywords|special targetnames]] werden auch rot dargestellt. Keine Sorge: Die Engine wird diese richtig Beachten/Behandeln!}}
{{bug|hidetested=1| G&uuml;ltige classnames und Platzhalterwerte und [[Targetname#Keywords|special targetnames]] werden auch rot dargestellt. Keine Sorge: Die Engine wird diese richtig Beachten/Behandeln!}}


Es gibt auch eine Anzahl von [[Developer console|Konsolen]] Kommandos und Variablen, welche Ihnen helfen werden, Fehler zu finden während Ihre Map läuft:
Es gibt auch eine Anzahl von {{L|Developer console|Konsolen}} Kommandos und Variablen, welche Ihnen helfen werden, Fehler zu finden während Ihre Map läuft:


; <code>developer <0-2></code>
; <code>developer <0-2></code>
: Der [[Developer|Developer mode]] Berichtet in der Konsole über alle Entity I/O und falls Sie sich nicht auf einem [[dedicated server]] befinden, werden [[sv_cheats|Cheats]] aktiviert (Cheats werden für alle folgenden Kommandos benötigt). Wenn Sie <code>developer 2</code> aktiviert haben, werden Ihnen zusätzlich die letzten acht Reihen der Konsole am oberen Bildschirmrand angezeigt.
: Der {{L|Developer|Developer mode}} Berichtet in der Konsole &uuml;ber alle Entity I/O und falls Sie sich nicht auf einem {{L|dedicated server}} befinden, werden {{L|sv_cheats|Cheats}} aktiviert (Cheats werden f&uuml;r alle folgenden Kommandos ben&ouml;tigt). Wenn Sie <code>developer 2</code> aktiviert haben, werden Ihnen zus&auml;tzlich die letzten acht Reihen der Konsole am oberen Bildschirmrand angezeigt.
; <code>ent_messages_draw <[[bool]]></code>
; <code>ent_messages_draw <{{L|bool}}></code>
:Zeigt dieselben Informationen wie der developer Mode, allerdings wird es nicht in der Konsole ausgegeben sondern direkt auf dem Entity in der 3D Welt.
:Zeigt dieselben Informationen wie der developer Mode, allerdings wird es nicht in der Konsole ausgegeben sondern direkt auf dem Entity in der 3D Welt.
; <code>ent_fire <[[targetname]] oder [[classname]]> <input> <parameter></code>
; <code>ent_fire <{{L|targetname}} oder {{L|classname}}> <input> <parameter></code>
: Dieser „extrem“ nützliche Befehl erlaubt es Ihnen manuelle Inputs zu jeder Zeit und auf jedes beliebige Entity zu feuern. Wenn Sie z.B. eine Tür schon früher öffnen wollen, müssen Sie <code>ent_fire my_door unlock</code> eingeben, gefolgt von einem <code>ent_fire my_door open</code> (falls Sie etwas faul sind).
: Dieser „extrem“ n&uuml;tzliche Befehl erlaubt es Ihnen manuelle Inputs zu jeder Zeit und auf jedes beliebige Entity zu feuern. Wenn Sie z.B. eine T&uuml;r schon fr&uuml;her &ouml;ffnen wollen, m&uuml;ssen Sie <code>ent_fire my_door unlock</code> eingeben, gefolgt von einem <code>ent_fire my_door open</code> (falls Sie etwas faul sind).
: Wie das "output target" Feld in Hammer, unterstützt <code>ent_fire</code> classnames und Platzhalter. Sie können auch <code>ent_fire npc_* ignite</code>, probieren Sie es aus! {{tip|Bei <code>ent_fire</code> können Sie ein spezielles <code>[[!picker:de|!picker]]</code> targetname benutzen. Benutzen Sie es, um Ziele mit Ihrem Fadenkreuz auswählen zu können.}}
: Wie das "output target" Feld in Hammer, unterst&uuml;tzt <code>ent_fire</code> classnames und Platzhalter. Sie k&ouml;nnen auch <code>ent_fire npc_* ignite</code>, probieren Sie es aus! {{tip|Bei <code>ent_fire</code> k&ouml;nnen Sie ein spezielles <code>{{L|!picker}}</code> targetname benutzen. Benutzen Sie es, um Ziele mit Ihrem Fadenkreuz ausw&auml;hlen zu k&ouml;nnen.}}
; <code>ent_pause</code>
; <code>ent_pause</code>
: Dieser Befehl pausiert alle Entities einer Map mit Ausnahme des Spielers (wiederholen Sie den Befehl, damit die Entities den Pausenmodus verlassen). Dieser Befehl wurde erstellt, um mit dem <code>ent_step</code> Befehl leichter arbeiten zu können.
: Dieser Befehl pausiert alle Entities einer Map mit Ausnahme des Spielers (wiederholen Sie den Befehl, damit die Entities den Pausenmodus verlassen). Dieser Befehl wurde erstellt, um mit dem <code>ent_step</code> Befehl leichter arbeiten zu k&ouml;nnen.
; <code>ent_step <number of steps></code>
; <code>ent_step <number of steps></code>
: Wenn der Befehl zusammen mit <code>ent_pause</code> benutzt wird, führt dieser Befehl eine festgelegte Anzahl von I/O Schritten aus, um danach wieder in den Pausemodus zu schalten (Standard ist 1).
: Wenn der Befehl zusammen mit <code>ent_pause</code> benutzt wird, f&uuml;hrt dieser Befehl eine festgelegte Anzahl von I/O Schritten aus, um danach wieder in den Pausemodus zu schalten (Standard ist 1).


== Siehe auch ==
== Siehe auch ==


* [[Entity Creation:de]]
* {{L|Entity Creation|Entity erstellung}}
* [[List of entities:de]]
* {{L|List of entities|Liste aller Entities}}
* [[Targetname:de]]
* {{L|Targetname}}
* [[User Inputs and Outputs:de]] {{todo|Merge into this article}}
* {{L|User Inputs and Outputs|Benutzer Inputs und Outputs}}


[[Category:Level Design:de]]
{{ACategory|IO System}}
{{ACategory|Level Design}}

Latest revision as of 07:15, 20 May 2025

English (en)Deutsch (de)Español (es)Polski (pl)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)

Inputs und Outputs (Zusammengefasst "I/O") sind die Kommunikationswege der Entities(en), um in einer Map(en) zu kommunizieren. Entities haben zwei Methoden um miteinander zu kommunizieren: Sie können einen „Output“ an ein anderes Entity senden oder sie erhalten einen „Input“ von einem anderen Entity. Ein Entity könnte, sobald es „stirbt“, einen Output an ein anderes Entity senden, damit dieses die Farbe wechselt. Derselbe Ouput könnte auch dazu verwendet werden, um ein den spawn Input eines anderen Entities auszulösen. Die Output werden mit den Inputs über eine „Connection“ verbunden, welche festlegt welche Daten dem Empfänger zugestellt werden, mit wie viel Verzögerung dies stattfindet und ob der Output mehrmals gesendet werden kann. Outputs können mit jedem Input verbunden werden und umgekehrt geht es natürlich genauso. Das ermöglicht komplexe und mächtige Interaktionen zwischen den Entities.

Betrachten wir das logic_timer(en) Entity. Es könnte so konfiguriert sein, dass es den OnTimer Output „abfeuert“ sobald es das eingestellte Zeitlimit erreicht, welcher den ShowSprite Input eines env_sprite(en) auslöst (bzw. aufruft). Wenn der Timer sein Zeitlimit erreicht, wird das Sprite erscheinen. Wenn Sie die Connection Einstellungen verwenden, könnten Sie z.B. den Output erst nach zwei Sekunden auslösen oder es so einstellen, dass der Output nur einmalig abgefeuert wird.

Inputs

Inputs sind Kommandos, welche ein Entity dazu veranlassen den Zustand bzw. deren Tätigkeit zu ändern. Sie werden durch Outputs ausgelöst (bzw. aufgerufen) – sie können ohne Output nicht geändert werden.

Sie können sich die Liste der Inputs, welche ein Entity erhält, im Inputs Tab des object properties dialog(en). Wenn Sie auf den "mark" Button klicken, werden Sie zu dem Output weitergeleitet, welcher den Input auslöst.

Outputs

Hammer's "Object Properties" dialog

Outputs werden abgefeuert, sobald sicher der Status des Entitys verändert. Ein Timer(en) wird den Output abfeuern, sobald er sein Zeitlimit erreicht hat, ein Button(en) sendet den Output, wenn der Button gedrückt wird und eine Tür(en) sendet den Output, wenn sie geschlossen wird.

Output Events werden im Outputs Tab des object properties dialog(en) erstellt. Diese Schnittstelle stellt eine Liste der Outputs bereit, welche bereits von diesem Entity ausgehen. Es werden Konfigurationsfelder bereitgestellt, um den aktuell ausgewählten Output zu bearbeiten und es gibt Buttons, welche zur Erstellung bzw. zum löschen von Outputs benötigt werden. Der Button „mark“ bringt Sie zu dem Input, welcher durch den aktuell ausgewählten Output betroffen ist.

Das sind die Ouput Konfigurationsmöglichkeiten:

Output name
Legt fest, welches Event den Output veranlasst „abgeschossen“ zu werden. Z.B. ein trigger_multiple(en) kann einen OnTrigger Output abfeuern, wenn ein Spieler den Bereich betritt.
Target entity
Der targetname(en) oder classname(en) des Entitys, welches den Input erhalten soll. Der * Buchstabe wird als Suchplatzhalter (Wildcards) akzeptiert.
  • Ein fettgedruckter Name bedeutet, dass der targetname mehrere Entities betrifft
  • Ein roter Name bedeutet, dass sicher der targetname auf ein nicht vorhandenes Entity bezieht
    Icon-Bug.pngFehler:Gültige classnames und Platzhalterwerte und special targetnames werden auch rot dargestellt. Keine Sorge: Die Engine wird diese richtig Beachten/Behandeln!
Input name
Der Input, welcher beim Zielentity ausgeführt werden soll.
Parameters
Sie können mit Hilfe von Parametern dem Zielentity Daten übergeben. Ein Parameter kann alles Mögliche sein: Wie laut ein Sound(en) abgespielt werden soll, den targetname(en) eines anderen Entity, oder vielleicht eine Farbe(en). Es hängt alles davon ab, welche Werte der Input akzeptiert. Wenn nichts akzeptiert wird, wird das Feld ausgegraut.
Manche Outputs, wie der OutValue des math_counter(en), generieren eigenständig Parameter. Um einen generierten Parameter zu verwenden, müssen Sie das Feld „reading“ mit <none> füllen.
Note.pngBemerkung:Falls der Output Value ein targetname(en) ist, kann es sein, dass dieser nicht einzigartig ist!
Time delay
Die Anzahl der Sekunden die nach dem Output Event vergeht, bevor der Output abgefeuert wird.
Fire once only
Falls diese Option aktiviert ist, wird der Output nach dem Abfeuern gelöscht.

Einen einfachen Auslöser erstellen

Das ist ein Beispiel wie man einen einfachen Auslöser mit Inputs und Outputs erstellen kann, damit ein Sound abgespielt wird, sobald der Spieler einen bestimmten Bereich betritt.

Öffnen Sie eine Map und fügen Sie ein ambient_generic(en) hinzu (Schreiben Sie "ambient_1" in das Name Feld). Gehen Sie in die Object Properties und wählen Sie ein Soundfile, welches abgespielt werden soll, und wählen Sie im Tab Flags "Start Silent" aus. Wählen Sie die "tools/toolstrigger" Textur aus und erstellen Sie damit einen würfelförmigen Brush. Führen Sie auf diesem Brush einen Rechtsklick aus und benutzen Sie den "Tie to Entity(en)" Befehl und erstellen Sie ein trigger_once(en) Entity. Gehen Sie zum Outputs Tab und klicken Sie auf Add....

Setzen Sie "My output named" auf "OnStartTouch". Der Output wird nun ausgelöst, sobald ein Spieler den Brush berührt.

Setzen Sie "Targets entities named" auf "ambient_1". Sie können dazu den „nach unten“ Pfeil der Tastatur verwenden. Das Ziel des Outputs ist nun der ambient_generic den Sie schon platziert haben.

Setzen Sie "Via this input" auf "PlaySound". Diese Option wählt die PlaySound Aktion aus der Aktionsliste des ambient_generic, welche den Sound abspielen wird.

Klicken Sie auf Apply um Ihre Änderungen zu speichern und schließen Sie das Fenster. Nun haben wir den Auslöser erstellt, welcher nun einen Sound abspielen wird, sobald der Spieler den Bereich betritt.

Wenn Sie nun die Eigenschaften des ambient_generic anschauen, werden Sie sehen, dass der Output des Auslösers automatisch in einen Input des ambient_generic Entity konvertiert worden ist.

Wenn Sie nun die Map kompilieren und den Auslöser testen wollen, stellen Sie sicher, dass alle nötigen Elemente vorhanden sind (Startpunkt für den Spieler, Licht, etc) und Sie den Sound bei dem ambient_generic Entity richtig hinterlegt haben.

Debugging

Source stellt eine Reihe von verschiedenen debugging Tools zur Verfügung, um Probleme mit den I/O Anweisungen zu beheben.

Natürlich ist der object properties dialog auch ein debugging Tool. Ungültige Inputs und Outputs werden rot dargestellt; die I/O Icons am unteren Rand des Dialogs verändern sich auch dementsprechend. Ungültige Outputs werden auch im Check For Problems(en) Dialog des Hammer Editors dargestellt (Alt+P). Sie sollten bevor Sie die Map kompilieren immer nach eventuell vorhandenen Problemen schauen.

Icon-Bug.pngFehler: Gültige classnames und Platzhalterwerte und special targetnames werden auch rot dargestellt. Keine Sorge: Die Engine wird diese richtig Beachten/Behandeln!

Es gibt auch eine Anzahl von Konsolen(en) Kommandos und Variablen, welche Ihnen helfen werden, Fehler zu finden während Ihre Map läuft:

developer <0-2>
Der Developer mode(en) Berichtet in der Konsole über alle Entity I/O und falls Sie sich nicht auf einem dedicated server(en) befinden, werden Cheats(en) aktiviert (Cheats werden für alle folgenden Kommandos benötigt). Wenn Sie developer 2 aktiviert haben, werden Ihnen zusätzlich die letzten acht Reihen der Konsole am oberen Bildschirmrand angezeigt.
ent_messages_draw <bool(en)>
Zeigt dieselben Informationen wie der developer Mode, allerdings wird es nicht in der Konsole ausgegeben sondern direkt auf dem Entity in der 3D Welt.
ent_fire <targetname(en) oder classname(en)> <input> <parameter>
Dieser „extrem“ nützliche Befehl erlaubt es Ihnen manuelle Inputs zu jeder Zeit und auf jedes beliebige Entity zu feuern. Wenn Sie z.B. eine Tür schon früher öffnen wollen, müssen Sie ent_fire my_door unlock eingeben, gefolgt von einem ent_fire my_door open (falls Sie etwas faul sind).
Wie das "output target" Feld in Hammer, unterstützt ent_fire classnames und Platzhalter. Sie können auch ent_fire npc_* ignite, probieren Sie es aus!
Tip.pngTipp:Bei ent_fire können Sie ein spezielles !picker(en) targetname benutzen. Benutzen Sie es, um Ziele mit Ihrem Fadenkreuz auswählen zu können.
ent_pause
Dieser Befehl pausiert alle Entities einer Map mit Ausnahme des Spielers (wiederholen Sie den Befehl, damit die Entities den Pausenmodus verlassen). Dieser Befehl wurde erstellt, um mit dem ent_step Befehl leichter arbeiten zu können.
ent_step <number of steps>
Wenn der Befehl zusammen mit ent_pause benutzt wird, führt dieser Befehl eine festgelegte Anzahl von I/O Schritten aus, um danach wieder in den Pausemodus zu schalten (Standard ist 1).

Siehe auch