don-banane
19.03.2008, 17:49
Hallo zusammen, ich habe mich mal rangesetzt und ein Einsteiger/Anfänger Tutorial zum Thema Wire gemacht...
Das Wire Addon, am besten über SVN. Wer nicht weiß wie das geht schaut am besten hier. (http://garrysmod.de/wiki/index.php/Wire_Addon)
PHX (http://www.garrysmod.org/downloads/?a=view&id=30329) ist auch empfohlen, sollte aber eigentlich jeder kennen.
SmartSnap ist auch nützlich.
Du brauchst keine Wire Vorkenntnisse, aber mit GMod solltest du dich natürlich auskennen.
Etwas Englisch Kenntnisse.
Fangen wir gleich mal mit einem Beispiel an. Wir spawnen eine 2x2 PHX Platte (PHX eignet sich übrigens gut für Wire) und freezen sie senkrecht aufgestellt in der Luft. Jetzt nehmen wir das Wire Screen Tool zur Hand, in diesem Fall mit folgenden Einstellungen:
http://img519.imageshack.us/img519/6074/72510674bk3.jpg
Die beiden Häckchen bedeuten, dass der Screen nur einen Wert anzeigen soll, deshalb steht nur bei Text A etwas.
Wir platzieren den Screen oben links und nehmen das Wire Button Tool. Hier kannst du den Button auswählen, den du gerne haben möchtest. (Auf das Toggle komme ich später nochmal zurück, aber es sollte in diesem Fall ausgeschaltet sein.)
http://img519.imageshack.us/img519/7220/90752273pl2.jpg
Den Button platzieren wir in der Mitte.
Jetzt brauchen wir das Wire Tool. Die Einstellungen sind Geschmackssache, aber zum anfangen hilft es die Linie mit den Pfeilen zu nehmen.
Nun "verwiren" wir das ganze, indem wir zuerst mit der linken Maustaste auf den Screen klicken und dann ebenfalls mit der linken Maustaste auf den Button klicken.
http://img519.imageshack.us/img519/7335/99322380qe4.jpg
Wenn wir jetzt auf den Button drücken, merken wir, dass die 0 auf 1 umspringt.
http://img519.imageshack.us/img519/8792/10269104ks8.jpg
Der Button gibt im Normalzustand immmer eine 0 aus. Drücken wir auf den Button, gibt der Button eine 1 aus. (Solange wie man drückt.)
Aber damit der Screen "weiß", dass er die soeben genannte 1 anzeigen soll, müssen wir den Screen mit dem Button "verdrahten" (oder "verwiren"). Dabei spielt die Reihenfolge eine entscheidende Rolle. Merke: Es wird immer vom Input (Eingang) eines Gegenstandes zum Output (Ausgang) eines Gegenstandes gewired. (Wie auch an diesem Beispiel erkennbar.)
Probiere jetzt das ganze noch einmal mit "Toggle" aktiviert aus. Achtung: Dieses Toggle ist sehr wichtig! (Auch für später.) Es könnte eine Fehlerquelle darstellen.
Das war jetzt zwar schonmal ein Anfang, aber irgentwie... unspektakulär. Aber keine Angst, es wird immer besser.
Also wie wäre es denn, wenn wir etwas Dynamit mit dem Button explodieren lassen könnten?
Also nehmen wir das Explosives Tool:
http://img519.imageshack.us/img519/9100/83912629uc8.jpg
Ganz oben kann man das Model auswählen, der Rest ist selbsterklärend.
Das Dynamit platzieren wir irgentwo auf die Platte.
Jetzt müssen wir das ganze wieder wie beim Screen verwiren, also vom Dynamit zum Button. (Vom Input zum Output.) Wir drücken den Button und:
http://www.abload.de/img/6fgir.jpg
Damit das Dynamit explodiert, braucht es einen Auslöser. Und die 1 vom Button ist der Auslöser. Wenn das Dynamit die 1 empfängt, explodiert es.
Dieses Prinzip ist etwas sehr grundsätzliches in Wire!
Aber mit dieser 1 lässt sich nicht nur Dynamit auslösen, sondern viele andere Dinge wie: Wheels, Prop Spawner, Turrets, Thruster, Grabber, Nailer, Igniter, Sound Emitter...
http://img510.imageshack.us/img510/4530/45020311sy7.jpg
Aber das ganze geht auch ohne einen Button, z.B. mit einem Numpad Input. Wenn man die eingestellte Zahl auf dem Numpad drückt, gibt er genau wie der Button eine 1 aus.
http://img510.imageshack.us/img510/3280/32264161oc1.jpg
Anstatt zu dem Button, können wir die Sachen nun auch zu dem Numpad Input verwiren. Allerdings können wir nicht ohne weiteres beides gleichzeitig nutzen (nur mit einem Add Gate).
Ihr könnt auch das Dynamit explodieren lassen, wenn ihr z.B. "Peng!" in den Chat eingebt. Dazu braucht ihr den Wire Text Receiver. Hier ist es wieder dasselbe, wie bei dem Button und dem Numpad Input.
http://img510.imageshack.us/img510/9299/44001862er4.jpg
Sicherlich ist es langweilig, etwas mit einem Button auszulösen, außerdem lassen sich ja damit schlecht irgentwelche Fallen bauen. :)
Also bauen wir eine. Als erstes spawnt ihr eine 4x4 PHX Platte und freezt sie senkrecht in der Luft. Mit dem Stacker stacken wir die Platte etwa 20 mal, und entfernen die Platten in der Mitte der ersten und der letzten Platte. Einfacher geht aus auch, wenn man den Offset beim Stacker einstellt.
Wir nehmen das Wire Hydraulic Tool zur Hand...
http://img510.imageshack.us/img510/6828/10kj0.jpg
Wichtig: "Fixed" muss aktiviert sein! Wenn das nicht aktiviert ist, dann ist das Hydraulic nur ein Seil, das länger oder kürzer wird. Wenn "fixed" aktiviert ist, dann ist das ganze wie ein Slider, also eine feste Stange.
Wir klicken mit der rechten Maustaste genau auf die Mitte von einer der Platten und platzieren gleich danach mit der linken Maustaste den Hydraulic Controller neben die Mitte. Das Ganze sollte so aussehen:
http://img510.imageshack.us/img510/6954/11cs1.jpg
Wire Hydraulics funktionieren nicht mit 0 und 1, sondern mit Längen. Gibt man dem Hydraulic Controller einen bestimmten Wert, so wird die Hydraulic Verbindung genauso lang.
Um das mal zu demonstrieren, nehmen wir einen Constant Value.
Constant Values speichern eine oder mehrere Zahlen. Sie sind sehr sehr wichtig! Es ist einer der wichtigsten Sachen bei Wire, und sollte von jedem gut verstanden werden.
http://img510.imageshack.us/img510/7279/12ze3.jpg
Wir stellen den Constant Value wie im Bild ein und platzieren ihn neben den Controller.
Wir brauchen jetzt mal wieder das Wire Tool, damit wir die Länge der Hydraulic auf 200 stellen können. Ein Constant Value ist IMMER ein Output, d.h. wir müssen vom Hydraulic Controller zum Constant Value wiren. Wenn wir eine Platte unfreezen, bewegt sie sich sofort 200 Einheiten von der andern Platte weg.
http://img510.imageshack.us/img510/9572/13yb6.jpg
Soweit alles klar? Dann machen wir eine Falle daraus. Zuerst müssen wir die eine Platte wieder freezen. Dann nehmen wir das Wire Beacon Sensor Tool.
Ein Beacon Sensor gibt immer die Distanz (und, falls eingestellt, die Koordinaten, Vektoren und Geschwindigkeit) zwischen/von dem Beacon Sensor und dem vom Target Finder anvisierten Ziel aus. Funktioniert NUR zusammen mit dem Target Finder.
http://img510.imageshack.us/img510/4346/14yh4.jpg
Wir platzieren den Beacon Sensor ein Stück vor der Platte (siehe übernächstes Bild) und nehmen das Target Finder Tool.
Target Finder visieren den am nähersten gelegenen Player/NPC/Prop/Locator an.
http://img510.imageshack.us/img510/8614/15fa6.jpg
Das ganze sollte dann so aussehen:
http://img510.imageshack.us/img510/8923/16ee9.jpg
Wir müssen jetzt noch dem Beacon Sensor den Target Finder zuweisen, indem wir das Beacon Sensor Tool nehmen und mit der rechten Maustaste zuerst auf den Beacon Sensor und dann mit der rechten Maustaste auf den Target Finder klicken. Jetzt können wir die Distanz ablesen, indem wir auf den Beacon Sensor zeigen.
Wir wollen erreichen, dass wenn man näher als 115 kommt, die Hydraulic von 0 auf 200 fährt. Der erste Schritt dazu ist, zu bestimmen, wann man unter 115 ist. Und dafür brauchen wir... *trommelwirbel* Wire Gates. Es gibt unter den vielen Gates ein Gate, das heißt: "Less Than", also übersetzt weniger als. Und das brauchen wir.
http://img510.imageshack.us/img510/8844/17jw5.jpg
Wenn wir es platziert haben, können wir es verwiren. Dieses Gate hat (wie die meisten) 2 Inputs. Der erste Input (Input A), ist die Distanz, die vom Beacon Sensor ausgegeben wird. Der zweite Input (Input B) ist ein Constant Value mit 115.
Wichtig: Du schaltest mit der rechten Maustaste zwischen den beiden Inputs hin und her. Du bekommt den jeweiligen Input (in diesem Fall A und B) angezeigt. Ist diese Anzeige rot, heißt das, dass dieser Input schon belegt ist. Du kannst den Input wieder frei machen, indem du die R Taste drückst.
Wenn du es richtig verwired hast, siehst du, dass der Output des Less Than Gates auf 1 springt, wenn du näher als 115 bist. Das Gate sagt: Wenn A < B dann 1, also in unserem Fall: Wenn Distanz < 115 dann 1.
Leider hilft uns diese 1 nicht viel, weil wir ja wollen, dass die Hydraulic auf 200 und nicht auf 1 fährt. Also brauchen wir noch ein zweites Gate. Ein Gate, das folgendes kann: Falls Irgentwas = 1, dann gebe ich irgenteinen Wert aus, sonst gebe ich einen anderen Wert aus. Dieses Gate heißt "If Then Else" und findet man unter Gate - Selection. Wir platzieren es und verwiren A mit dem Less Than Gate, B mit einem Constant Value mit 200 und C lassen wir so wie es ist. Zu guter letzt verwiren wir den Hydraulic Controller mit dem If Then Else Gate. Das ganze sollte so aussehen:
http://img510.imageshack.us/img510/443/18xb7.jpg
(Das eine Constant Value brauchen wir ja jetzt nicht mehr.)
Wir unfreezen die eine Platte, und falls du alles richtig gemacht hast und dich dem Beacon Sensor näherst:
http://img510.imageshack.us/img510/8923/19ab8.jpg
Der Less Then überprüft ständig, ob die Distanz, die vom Beacon Sensor reinkommt, kleiner als 115 ist. Kommt man jetzt unter 115, springt der Output auf 1. Der If Then Else bekommt die 1, und springt deshalb auf Input B um (also dem Constant Value mit 200). Der Hydraulic Controller empfängt die 200 und macht die Hydraulic 200 lang.
Für bessere Ergebnisse sollte die Maximum Range vom Target Finder auf die nötige Range (hier also auf jeden Fall größer als 150) gestellt werden und der Beacon Senor sollte näher an der Platte positioniert werden. Außerdem sollte der Beacon Sensor noch mit allem No-Collidet werden.
http://img510.imageshack.us/img510/3175/20xt0.jpg
Hier noch ein paar Links:
http://garrysmod.de/forum/showthread.php?t=13887 <- Wire FAQ
http://garrysmod.de/forum/showthread.php?t=6737 <- Viele kleine Tutorials
http://garrysmod.de/forum/showthread.php?t=11733 <- Ein paar Tutorials
http://garrysmod.de/forum/showthread.php?t=11527 <- Liste mit Wire Gates
Ich hoffe es hat euch gefallen und dass ich euch den Einstieg in Wire etwas erleichtern konnte. ;)
Wenn ihr Fragen oder Wünsche für ein Wire Tutorial habt, dann könnt ihr es gerne hier rein schreiben. :) (Fehler natürlich auch!)
don-banane
Das Wire Addon, am besten über SVN. Wer nicht weiß wie das geht schaut am besten hier. (http://garrysmod.de/wiki/index.php/Wire_Addon)
PHX (http://www.garrysmod.org/downloads/?a=view&id=30329) ist auch empfohlen, sollte aber eigentlich jeder kennen.
SmartSnap ist auch nützlich.
Du brauchst keine Wire Vorkenntnisse, aber mit GMod solltest du dich natürlich auskennen.
Etwas Englisch Kenntnisse.
Fangen wir gleich mal mit einem Beispiel an. Wir spawnen eine 2x2 PHX Platte (PHX eignet sich übrigens gut für Wire) und freezen sie senkrecht aufgestellt in der Luft. Jetzt nehmen wir das Wire Screen Tool zur Hand, in diesem Fall mit folgenden Einstellungen:
http://img519.imageshack.us/img519/6074/72510674bk3.jpg
Die beiden Häckchen bedeuten, dass der Screen nur einen Wert anzeigen soll, deshalb steht nur bei Text A etwas.
Wir platzieren den Screen oben links und nehmen das Wire Button Tool. Hier kannst du den Button auswählen, den du gerne haben möchtest. (Auf das Toggle komme ich später nochmal zurück, aber es sollte in diesem Fall ausgeschaltet sein.)
http://img519.imageshack.us/img519/7220/90752273pl2.jpg
Den Button platzieren wir in der Mitte.
Jetzt brauchen wir das Wire Tool. Die Einstellungen sind Geschmackssache, aber zum anfangen hilft es die Linie mit den Pfeilen zu nehmen.
Nun "verwiren" wir das ganze, indem wir zuerst mit der linken Maustaste auf den Screen klicken und dann ebenfalls mit der linken Maustaste auf den Button klicken.
http://img519.imageshack.us/img519/7335/99322380qe4.jpg
Wenn wir jetzt auf den Button drücken, merken wir, dass die 0 auf 1 umspringt.
http://img519.imageshack.us/img519/8792/10269104ks8.jpg
Der Button gibt im Normalzustand immmer eine 0 aus. Drücken wir auf den Button, gibt der Button eine 1 aus. (Solange wie man drückt.)
Aber damit der Screen "weiß", dass er die soeben genannte 1 anzeigen soll, müssen wir den Screen mit dem Button "verdrahten" (oder "verwiren"). Dabei spielt die Reihenfolge eine entscheidende Rolle. Merke: Es wird immer vom Input (Eingang) eines Gegenstandes zum Output (Ausgang) eines Gegenstandes gewired. (Wie auch an diesem Beispiel erkennbar.)
Probiere jetzt das ganze noch einmal mit "Toggle" aktiviert aus. Achtung: Dieses Toggle ist sehr wichtig! (Auch für später.) Es könnte eine Fehlerquelle darstellen.
Das war jetzt zwar schonmal ein Anfang, aber irgentwie... unspektakulär. Aber keine Angst, es wird immer besser.
Also wie wäre es denn, wenn wir etwas Dynamit mit dem Button explodieren lassen könnten?
Also nehmen wir das Explosives Tool:
http://img519.imageshack.us/img519/9100/83912629uc8.jpg
Ganz oben kann man das Model auswählen, der Rest ist selbsterklärend.
Das Dynamit platzieren wir irgentwo auf die Platte.
Jetzt müssen wir das ganze wieder wie beim Screen verwiren, also vom Dynamit zum Button. (Vom Input zum Output.) Wir drücken den Button und:
http://www.abload.de/img/6fgir.jpg
Damit das Dynamit explodiert, braucht es einen Auslöser. Und die 1 vom Button ist der Auslöser. Wenn das Dynamit die 1 empfängt, explodiert es.
Dieses Prinzip ist etwas sehr grundsätzliches in Wire!
Aber mit dieser 1 lässt sich nicht nur Dynamit auslösen, sondern viele andere Dinge wie: Wheels, Prop Spawner, Turrets, Thruster, Grabber, Nailer, Igniter, Sound Emitter...
http://img510.imageshack.us/img510/4530/45020311sy7.jpg
Aber das ganze geht auch ohne einen Button, z.B. mit einem Numpad Input. Wenn man die eingestellte Zahl auf dem Numpad drückt, gibt er genau wie der Button eine 1 aus.
http://img510.imageshack.us/img510/3280/32264161oc1.jpg
Anstatt zu dem Button, können wir die Sachen nun auch zu dem Numpad Input verwiren. Allerdings können wir nicht ohne weiteres beides gleichzeitig nutzen (nur mit einem Add Gate).
Ihr könnt auch das Dynamit explodieren lassen, wenn ihr z.B. "Peng!" in den Chat eingebt. Dazu braucht ihr den Wire Text Receiver. Hier ist es wieder dasselbe, wie bei dem Button und dem Numpad Input.
http://img510.imageshack.us/img510/9299/44001862er4.jpg
Sicherlich ist es langweilig, etwas mit einem Button auszulösen, außerdem lassen sich ja damit schlecht irgentwelche Fallen bauen. :)
Also bauen wir eine. Als erstes spawnt ihr eine 4x4 PHX Platte und freezt sie senkrecht in der Luft. Mit dem Stacker stacken wir die Platte etwa 20 mal, und entfernen die Platten in der Mitte der ersten und der letzten Platte. Einfacher geht aus auch, wenn man den Offset beim Stacker einstellt.
Wir nehmen das Wire Hydraulic Tool zur Hand...
http://img510.imageshack.us/img510/6828/10kj0.jpg
Wichtig: "Fixed" muss aktiviert sein! Wenn das nicht aktiviert ist, dann ist das Hydraulic nur ein Seil, das länger oder kürzer wird. Wenn "fixed" aktiviert ist, dann ist das ganze wie ein Slider, also eine feste Stange.
Wir klicken mit der rechten Maustaste genau auf die Mitte von einer der Platten und platzieren gleich danach mit der linken Maustaste den Hydraulic Controller neben die Mitte. Das Ganze sollte so aussehen:
http://img510.imageshack.us/img510/6954/11cs1.jpg
Wire Hydraulics funktionieren nicht mit 0 und 1, sondern mit Längen. Gibt man dem Hydraulic Controller einen bestimmten Wert, so wird die Hydraulic Verbindung genauso lang.
Um das mal zu demonstrieren, nehmen wir einen Constant Value.
Constant Values speichern eine oder mehrere Zahlen. Sie sind sehr sehr wichtig! Es ist einer der wichtigsten Sachen bei Wire, und sollte von jedem gut verstanden werden.
http://img510.imageshack.us/img510/7279/12ze3.jpg
Wir stellen den Constant Value wie im Bild ein und platzieren ihn neben den Controller.
Wir brauchen jetzt mal wieder das Wire Tool, damit wir die Länge der Hydraulic auf 200 stellen können. Ein Constant Value ist IMMER ein Output, d.h. wir müssen vom Hydraulic Controller zum Constant Value wiren. Wenn wir eine Platte unfreezen, bewegt sie sich sofort 200 Einheiten von der andern Platte weg.
http://img510.imageshack.us/img510/9572/13yb6.jpg
Soweit alles klar? Dann machen wir eine Falle daraus. Zuerst müssen wir die eine Platte wieder freezen. Dann nehmen wir das Wire Beacon Sensor Tool.
Ein Beacon Sensor gibt immer die Distanz (und, falls eingestellt, die Koordinaten, Vektoren und Geschwindigkeit) zwischen/von dem Beacon Sensor und dem vom Target Finder anvisierten Ziel aus. Funktioniert NUR zusammen mit dem Target Finder.
http://img510.imageshack.us/img510/4346/14yh4.jpg
Wir platzieren den Beacon Sensor ein Stück vor der Platte (siehe übernächstes Bild) und nehmen das Target Finder Tool.
Target Finder visieren den am nähersten gelegenen Player/NPC/Prop/Locator an.
http://img510.imageshack.us/img510/8614/15fa6.jpg
Das ganze sollte dann so aussehen:
http://img510.imageshack.us/img510/8923/16ee9.jpg
Wir müssen jetzt noch dem Beacon Sensor den Target Finder zuweisen, indem wir das Beacon Sensor Tool nehmen und mit der rechten Maustaste zuerst auf den Beacon Sensor und dann mit der rechten Maustaste auf den Target Finder klicken. Jetzt können wir die Distanz ablesen, indem wir auf den Beacon Sensor zeigen.
Wir wollen erreichen, dass wenn man näher als 115 kommt, die Hydraulic von 0 auf 200 fährt. Der erste Schritt dazu ist, zu bestimmen, wann man unter 115 ist. Und dafür brauchen wir... *trommelwirbel* Wire Gates. Es gibt unter den vielen Gates ein Gate, das heißt: "Less Than", also übersetzt weniger als. Und das brauchen wir.
http://img510.imageshack.us/img510/8844/17jw5.jpg
Wenn wir es platziert haben, können wir es verwiren. Dieses Gate hat (wie die meisten) 2 Inputs. Der erste Input (Input A), ist die Distanz, die vom Beacon Sensor ausgegeben wird. Der zweite Input (Input B) ist ein Constant Value mit 115.
Wichtig: Du schaltest mit der rechten Maustaste zwischen den beiden Inputs hin und her. Du bekommt den jeweiligen Input (in diesem Fall A und B) angezeigt. Ist diese Anzeige rot, heißt das, dass dieser Input schon belegt ist. Du kannst den Input wieder frei machen, indem du die R Taste drückst.
Wenn du es richtig verwired hast, siehst du, dass der Output des Less Than Gates auf 1 springt, wenn du näher als 115 bist. Das Gate sagt: Wenn A < B dann 1, also in unserem Fall: Wenn Distanz < 115 dann 1.
Leider hilft uns diese 1 nicht viel, weil wir ja wollen, dass die Hydraulic auf 200 und nicht auf 1 fährt. Also brauchen wir noch ein zweites Gate. Ein Gate, das folgendes kann: Falls Irgentwas = 1, dann gebe ich irgenteinen Wert aus, sonst gebe ich einen anderen Wert aus. Dieses Gate heißt "If Then Else" und findet man unter Gate - Selection. Wir platzieren es und verwiren A mit dem Less Than Gate, B mit einem Constant Value mit 200 und C lassen wir so wie es ist. Zu guter letzt verwiren wir den Hydraulic Controller mit dem If Then Else Gate. Das ganze sollte so aussehen:
http://img510.imageshack.us/img510/443/18xb7.jpg
(Das eine Constant Value brauchen wir ja jetzt nicht mehr.)
Wir unfreezen die eine Platte, und falls du alles richtig gemacht hast und dich dem Beacon Sensor näherst:
http://img510.imageshack.us/img510/8923/19ab8.jpg
Der Less Then überprüft ständig, ob die Distanz, die vom Beacon Sensor reinkommt, kleiner als 115 ist. Kommt man jetzt unter 115, springt der Output auf 1. Der If Then Else bekommt die 1, und springt deshalb auf Input B um (also dem Constant Value mit 200). Der Hydraulic Controller empfängt die 200 und macht die Hydraulic 200 lang.
Für bessere Ergebnisse sollte die Maximum Range vom Target Finder auf die nötige Range (hier also auf jeden Fall größer als 150) gestellt werden und der Beacon Senor sollte näher an der Platte positioniert werden. Außerdem sollte der Beacon Sensor noch mit allem No-Collidet werden.
http://img510.imageshack.us/img510/3175/20xt0.jpg
Hier noch ein paar Links:
http://garrysmod.de/forum/showthread.php?t=13887 <- Wire FAQ
http://garrysmod.de/forum/showthread.php?t=6737 <- Viele kleine Tutorials
http://garrysmod.de/forum/showthread.php?t=11733 <- Ein paar Tutorials
http://garrysmod.de/forum/showthread.php?t=11527 <- Liste mit Wire Gates
Ich hoffe es hat euch gefallen und dass ich euch den Einstieg in Wire etwas erleichtern konnte. ;)
Wenn ihr Fragen oder Wünsche für ein Wire Tutorial habt, dann könnt ihr es gerne hier rein schreiben. :) (Fehler natürlich auch!)
don-banane