PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Wire-Tutorial] Expressions Gates



Andrey
30.01.2008, 21:19
http://waffleimages.nwpshost.com/files/67/6750a22159cf6fd34231f322773f4008a9093e02.jpg
Expressions Gates

Zuerst einmal: Was Bringen die Expressions Gates.

Expressions Gate's sind Sehr Viele Gates in einem, sie helfen einem nicht 400 Equals zu benutzen, sondern ein Paar Zeilen Code.
Außerdem werden Expressions Gate's in die Kategory "Hochleistungs Wire" geschoben, sie reagieren Schneller als die Alttäglichen Gates.
http://www4.file-upload.net/30.01.08/63vfk.jpghttp://www4.file-upload.net/30.01.08/n4v4ex.jpg

Welche Script/Programmier Sprache Benutzt Expressions

Eine Speziele, von den Wire mod Dev's. Diese ist sehr einfach, und leicht zu verstehen.

Gut, nachdem das Geklärt wir:

Schreiben wir Unser Programm:
In Unserem ersten programm werden wir eine Bremse Aktivieren wenn, die Geschwindigkeit Höher als 60 Ist.
Expression arbeitet mit dem Simplen Prinzip von An und Aus, wie man es schon vom Normalen Wire kennt.
Für denn Ersten Teil unseres Codes brauchen wir ein Paar Funktionen.


== Equal
>= Größer als
<= Kleiner als
!= Ist Nicht

Wir Schreiben unser Programm Übrigens Ingame. Nachdem das mit den Einfachsten Funktionen geklärt wär Machen wir mal ein Programm.


Wir öffnen unser Expressions Gate Tool. Und Gehen auf "New Expressions" von dort an beginnt die verwirrung.

Wir sollten jetzt folgenden Bildschirm sehen:

http://www4.file-upload.net/30.01.08/bbrwmm.png

Filename: Dort Steht der Name der im Browser angezeigt wird!
LabeL: Dort Steht das, was Später als Tooltipp Dient
Inputs: Dort Stehen die Inputs, das was berechnet wird.
Outputs: Dort Steht das Resultat.
Line1, u.s.w: Code.

Zuerst Tragen wir Bei Filename "Bremsen Expressions" ein.
Bei Label sollte das Gleiche Stehen.
Bei Inputs muss nur "Speed" Stehen, Achtet auf Groß und Kleinschreibung. ( Es ist wichtig das der Erste buchstabe bei In und Outputs groß geschrieben ist! )
Bei Outputs muss "Bremse" Stehen, Achtet wieder auf Groß und Kleinschreibung

Wenn das Getan ist, fängt der Code an. Ihr Fangt so an:


Bremse = 0
Speed >= 60 -> Bremse = 1;
Erklärung:

-> ....dann... ( Wird gesetzt zu... )
= ...ist....
Die Bremse ist 0. Da der Code Jeden Frame nochmal Durch gegangen wird, ist es egal. Nur wenn Das da nicht stehen würde, hätten wir eine Toggle Funktion! Das Heißt es würde anbleiben. Für Immer.
Der Rest ist recht Simpel.
Speed Größer oder Gleich ist als 60 denn ist bremse wahr.
Das ";" Dient als Operator, der dem Converter sagt ob was verglichen wurde ( Muss also nur nach If Abfragen). Zum Beispiel:

Codeteil1 == Codeteil2 -> Output = 500;
Man kann natürlich noch viel mehr Sachen Benutzen:



/ Devide ( Teilen/ Durch)
* Multiply ( Mutliplizieren / Mal)
+ Add ( Plus )
- Subtract ( Minus )
$ Delta

Und noch viele mehr.

==================================
Beispiele:

k/mh Umrechnung:
Ein Programm welches den Input durch ~11 teilt und dann an den Output wieder rausgibt.

Inputs:
Speedo (An Speedometer anschließen)
Oututs:
Kmh (Einen Monitor o.Ä. anschließen)

Code:

Kmh = Round(Speedo / 10.936133)

Erklärung:
(Von links nach rechts:)
Der Output, also die Geschwindigkeit in km/h wird augerufen und neu gesetzt:
Speedo, welches das Speedometer am Input ist, durch ~11 geteilt und das ganze dann durch Round( ) gerundet.

D-Latch:
Ein Programm Welches etwas Speichert:

Inputs:
Button ( Fürs Speichern)
ResetButton ( Fürs Reseten )
Timer ( Das zu Speichernde. )
Outputs:
Result ( Resultat. An einen Monitor anschließen o.ä.

Code:


Button == 1 -> Result = Timer;
ResetButton == 1 -> result = 0;

Erklärung:
(Von links nach rechts:)
Wenn der Button 1 ( Sprich: Wahr ist. ) wenn wird das Resultat, die momentane "Zeit" Speichern
Drückt man dann denn Reset Knopf, wird das Resultat wieder 0.

Delta Turret:
Ein Programm welches die Bearing in Ausrichtungen Ändert, und somit, ein Perfektes Turret macht.

Inputs:
Bearing ( Vom Beacon Sensor)
Outputs:
Result ( Thruster mit -7 Mutliple force. )
YZ ( Nebenschritt )
XZ ( Nebenschritt )

Code:

YZ = $Bearing * 10
XZ = Bearing * 2
Result = XZ + YZ


Erklärung:
(Von links nach rechts:)
YZ wird zum ge'deltatem' bearing * 10.
XZ wird zu Bearing mal 10. und das wird am Ende zusammen Gezogen.



==================================
Nochmal als Merkliste:

Outputs weißt man zu. So-und-so = So-und-so
Inputs sind unveränderlich.
nach einem Vergleich muss ein ";" Gesetzt werden.
Outputs/Inputs werden am Anfang Groß geschrieben!


Viel spaß beim Expression coding!

Pac_187
30.01.2008, 21:42
Sehr schön!

Das wird dann gleich mal angepinnt ;)


btw.:

Hast du dein anderes Tutorial schon in die Wiki übertragen?
Wenn nicht so mache dies doch bitte mit beiden ;)


€dit:

Hab mal vor die Titel der Threads: [Wire-Tutorial] gesetzt ;)

Dragon R
30.01.2008, 21:59
Geil Danke Hilft mir echt viel! Wehre echt nett wen du noch ne Liste mit allen Möglichkeiten machst also ich meine allen Codes wie man dem Chip sagt er soll sich das merken er soll das ab Dan resetten wie der Code für den Timerchip ist wie man da Dan Run und Reset setzt usw. Danke im Voraus und ja ich weis es könnte SEHR lange dauern :gmod:

Andrey
30.01.2008, 22:21
Geil Danke Hilft mir echt viel! Wehre echt nett wen du noch ne Liste mit allen Möglichkeiten machst also ich meine allen Codes wie man dem Chip sagt er soll sich das merken er soll das ab Dan resetten wie der Code für den Timerchip ist wie man da Dan Run und Reset setzt usw. Danke im Voraus und ja ich weis es könnte SEHR lange dauern :gmod:
z.b.


ButtonMemory == 1 -> Memory1 = SachenDieErSpeichernSoll;
ButtonReset == 1 -> Memory1 = 0;

Dragon R
30.01.2008, 23:06
mit erklärung were net DANKE!:D

Andrey
30.01.2008, 23:17
Ist Drinne.

Dragon R
30.01.2008, 23:33
oh ok thx aber momentan hab ich nen Komplizierteres Problem mit nem CD Player Expressionschip habe da 2 Sachen

1: er sagt er versteht das == in Line 1 nicht wahrscheinlich in den Anderen Rein auch nicht

2: ich weis nicht wie ich einbaue das der Chip sich erst startet wen bei Go 1 ist und bei 0 wider stoppt

Hier die Chip Daten:


Filename: CD Player [3]
Label: CD Player [3]

Inputs: Red Green Blue Go
Outputs: Song_R Song_G Song_B

Line1: Song_R = (Red == 255) (Green == 0) (Blue == 0) + == 3
Line2: Song_G = (Red == 0) (Green == 255) (Blue == 0) + == 3
Line3: Song_B = (Red == 0) (Green = 0) (Blue == 255) + == 3

Andrey
31.01.2008, 11:32
oh ok thx aber momentan hab ich nen Komplizierteres Problem mit nem CD Player Expressionschip habe da 2 Sachen

1: er sagt er versteht das == in Line 1 nicht wahrscheinlich in den Anderen Rein auch nicht

2: ich weis nicht wie ich einbaue das der Chip sich erst startet wen bei Go 1 ist und bei 0 wider stoppt

Hier die Chip Daten:


Filename: CD Player [3]
Label: CD Player [3]

Inputs: Red Green Blue Go
Outputs: Song_R Song_G Song_B

Line1: Song_R = (Red == 255) (Green == 0) (Blue == 0) + == 3
Line2: Song_G = (Red == 0) (Green == 255) (Blue == 0) + == 3
Line3: Song_B = (Red == 0) (Green = 0) (Blue == 255) + == 3


Uff...
Da hast du dir ja was tolles ausgedacht.



Song_R = 0;
Song_G = 0;
Song_B = 0;
Red == 255 & Green == 0 & Blue == 0 & Go == 1 -> Song_R = 1;
Red == 0 & Green == 255 & Blue == 0 & Go == 1 -> Song_G = 1;
Red == 0 & Green == 0 & Blue == 255 & Go == 1 -> Song_B = 1;
Song_R,G und B Werden auf Null Gesetzt. Wenn Jetzt Rot 255 ist während Grün und Blau 0 Bleiben, Startet der Song, insofern man denn Go button Drückt. Genau so ist es mit den anderen.



& und
== Equal
-> ...Dann... ( Wird gesetzt zu.. )

Dragon R
31.01.2008, 11:38
danke ^^ ist meine leichteste Übung schöne Sachen ausdenken nur mit Expression muss ich noch fiel üben und lernen :D danke für die antwort ich teste es sofort mal aus!

€didt:

JA ES GEHT! super danke fielen dank funktioniert super! allerdings war in deinem code 1 Fehler



Song_R = 0;
Song_G = 0; bei den = 0; muss immer = 0 ohne das ; das mus mann nur unten bei den Berechnungen!
Song_B = 0;
Red == 255 & Green == 0 & Blue == 0 & Go == 1 -> Song_R = 1;
Red == 0 & Green == 255 & Blue == 0 & Go == 1 -> Song_G = 1;
Red == 0 & Green == 0 & Blue == 255 & Go == 1 -> Song_B = 1;

Also so:

Song_R = 0
Song_G = 0
Song_B = 0
Red == 255 & Green == 0 & Blue == 0 & Go == 1 -> Song_R = 1;
Red == 0 & Green == 255 & Blue == 0 & Go == 1 -> Song_G = 1;
Red == 0 & Green == 0 & Blue == 255 & Go == 1 -> Song_B = 1;


allerdings wie du nun den Go eingebaut hast kapiere ich irgendwie nicht darüber steht da doch nix geht aber dennoch :?:

Andrey
31.01.2008, 12:34
[...]
allerdings wie du nun den Go eingebaut hast kapiere ich irgendwie nicht darüber steht da doch nix geht aber dennoch :?:

Wenn Rot 255 ist, Blau 0, Grün 0 und Go 1 ist Startet er denn song.
ansonsten nicht.
Auch wenn Rot 255 ist, Blau 0 u.s.w.

Dragon R
31.01.2008, 12:47
oh ja übersehene :D

Dan noch ne Frage was Stimmt hier nicht? was es tun soll steht da ja :D



Filname: Incremet + Reset
Label: Incremet + Reset

Inputs: Incremet Reset A
Outputs: Outpus

Line1: Outpus = 0
Line2: Incremet == 1 -> Memory1 = A;
Line3: Reset == 1 -> Memory1 = 0;


es passiert einfach nix und wen ich Line1: Outputs = 0; mach kommt ne Meldung das er das ; nicht versteht oder so wie ich oben bereits geschrieben habe geht das nur unten bei den Berechnungen

Andrey
31.01.2008, 14:18
[...]
es passiert einfach nix und wen ich Line1: Outputs = 0; mach kommt ne Meldung das er das ; nicht versteht oder so wie ich oben bereits geschrieben habe geht das nur unten bei den Berechnungen

Wieso hasst du mich? D:
Ich weiß es auch nicht Genau, Inrecment, Decrement Haben Eigene Commands.


Button == 1 -> Result -+ 1;
ButtonReset == 1 -> Result = 0;

don-banane
31.01.2008, 16:07
Das Tutorial hilft mir sehr, noch mehr ein Wire Experte zu werden, danke. ;)
Um Wire gut zu beherrschen braucht man vorallem zwei Dinge:
1. Man muss logisch denken können und auch wie ein Programmierer denken (ich habe früher mal C++ programmiert)
2. Man muss das technische Wissen haben, also wie man die Sachen umsetzt.

Dragon R
31.01.2008, 16:07
Danke!

Ich hasse dich nicht ich Mag dich weil du mir so fiel Hilfst :D

und ich habe den CD Player Nu verbessert nu hat er 6 CD's und sieht viel cooler aus :D ich werde ihn noch zum Download ins Netz stellen hier der Link zum Beitrag mit den Infos und Download Link

LINK! (http://garrysmod.de/forum/showthread.php?t=12525)

€DIDT

Ich versuche es Nochmal mit dem Incremet + Reset Chip ich hab auch nen Plan wie es geht aber bei der Umsetzung geht es nicht weiter vielleicht könnt ihr mich weiterhelfen hier die Chip Daten und der Weg den ich mir ausgedacht habe aber er Speichert nicht und addiert auch nicht also bei Incremet 1 ist Out 1 Incremet wider auf 0 Out auch auf 0 Reset keine Veränderung 0

http://img11.myimg.de/IncremetResetad303.jpg (http://www.myimg.de)

€DIDT

Bitte um Hilfe da ich einen Roboter bauen will mit dem du dich Unterhalten kannst und dafür brauche ich diese Info!

Maurice
31.01.2008, 23:25
http://img11.myimg.de/IncremetResetad303.jpg (http://www.myimg.de)
Das Programm ist totaler quatsch. Denk doch mal praktisch.


Increment == 1 -> Out += 1;
Reset == 1 -> Out = 0;
Müsste klappen.

Edit: Tested and works!

(Und was du falsch gemacht hattest: Es ist =+ und nicht +!)

Dragon R
01.02.2008, 03:31
das hatte ich am Anfang ging aber ich wahrscheinlich weil ich = + 1; gemacht hab und nicht =+ 1; der hatte nämlich immer nen Problem mit dem +

€DIDT

Ok es geht nicht! der sagt mir dan immer: Unexpected symbol (+) al line 2

Maurice
01.02.2008, 13:01
das hatte ich am Anfang ging aber ich wahrscheinlich weil ich = + 1; gemacht hab und nicht =+ 1; der hatte nämlich immer nen Problem mit dem +

€DIDT

Ok es geht nicht! der sagt mir dan immer: Unexpected symbol (+) al line 2

Mach mir mal nen screenshot vom code.

Dragon R
01.02.2008, 13:35
http://img11.myimg.de/Unbenanntdcf68.jpg (http://www.myimg.de)

aber auch wen ich zwischen = und + ne Lücke lasse geht es nicht :(

Maurice
01.02.2008, 13:51
Ich möchte mich jetzt gar nicht darüber aufregen.
Mach einfach das Out = 0 weg.

Wieso =+ nicht geht weiß ich nicht. Bei mir geht es, ich würd es es liegt an dir.

Edit: es muss += heißen.

Dragon R
01.02.2008, 17:35
Geht nich is bleibt immer 0

Maurice
01.02.2008, 17:53
Weil du das Out = 0 da noch drin hast.

einfach

Increment == 1 -> Out += 1;
Reset == 1 -> Out = 0;
Hat für mich prima geklappt. Im SP und auf dem Gmod.de Server.

Dragon R
01.02.2008, 18:38
ne habs ja raisegnommen siet genau so aus wie bei dir geht aber dennoch nicht :(

Maurice
01.02.2008, 18:44
Also ehrlich gesagt glaube ich, du bist einfach zu dum (http://www.nichtlustig.de/comics/full/040816.jpg) dafür.

Mach mir nochmal nen Screenshot :)

Dragon R
01.02.2008, 19:09
ok hab den Fehler Gefunden ich mache das alles im Singelplayer und da hat mein Wire irgendwie nen Fehler zb ich schreibe was in Linie 1 das in 2 das in 3 Linie 3 lösche ich wider und speicher und egal was ich tue da steht Dan auf einmal 4 oder [so nen Kasten]@: Ist ganz Komisch :(

Naja aber nu geht der Chip ja :D

€DIDT

Ok Frage wie sieht es mit Timer Chips aus wie sind da die Befehle? will nen Zeitbomben Expressionschip machen

€DIDT

Also ich habe heute an meinem Talk Roboter Gearbeitet das soll einfach nur eine Platte seien mit der du Reden kannst das Gespräch hat 3 abschnitte 1:Begrüßung 2:irgendwas 3:Verabschiedung und es stehen jeweils 3 Sprachmöglichkeiten zur Auswahl zu jeden Abschnitt aber irgendwie passiert nix wen ich die Knöpfe drücke was ist falsch bitte um Hilfe!



Filename: Robot Talker

Label: Robot Talker
Inputs: Next_text Enter
Outputs: Clk Text_you Text_bot

Line1: Next_txt == 1 -> Text_you += 1;
Line2: Text_you == 4 & Part == 0 -> Text_you = 1;
Line3: Text_you == 1 & Enter == 1 & Part == 0 -> Text_bot 1;
Line4: Text_you == 2 & Enter == 1 & Part == 0 -> Text_bot 2;
Line5: Text_you == 3 & Enter == 1 & Part == 0 -> Text_bot 3;
Line6: Clk = 1
Line7: Enter == 1 -> Part += 1;
Line8: Enter == 1 & Part == 0 -> Text_you = 5;
Line9: Text_you == 8 -> Text_you = 5;
Line10: Text_you == 5 & Enter == 1 & Part == 1 -> Text_bot = 4;
Line11: Text_you == 6 & Enter == 1 & Part == 1 -> Text_bot = 5;
Line12: Text_you == 7 & Enter == 1 & Part == 1 -> Text_bot = 6;
Line13: Text_you == 8 & Part == 1 -> Text_you = 5;
Line14: Enter == 1 & Part == 1 -> Text_you = 9;
Line15: Text_you == 9 & Enter == 1 & Part == 2 -> Text_bot = 7;
Line16: Text_you == 10 & Enter == 1 & Part == 2 -> Text_bot = 8;
Line17: Text_you == 11 & Enter == 1 & Part == 2 -> Text_bot = 9;
Line18: Text_you == 11 & Part == 2 -> Text_you = 9;
Line19: Enter == 1 & Part == 3 -> Text_bot = 0;
Line20: Enter == 1 & Part == 3 -> Text_you = 0;
Line21: Enter == 1 & Part == 3 -> Part = 0;

PytonB!tch
31.03.2008, 17:30
Ich habe auch bezüglich expressions Gates ne Frage:

Wie ich mitbekommen habe, kann ich über expressions auch consolen kommandos abgeben, wie denn?

PS. Dies ist kein Bump.

don-banane
31.03.2008, 17:34
Ja mit concommand('<befehl>')
Beispiel:

Input1 == 1 -> concommand('say i are so cool');

PytonB!tch
31.03.2008, 17:53
Dankeschön, ich werde es gleich mal Probieren!

Clarity
09.04.2008, 15:21
Ich hab ne Frage zu der random Funktion in den Expression Gates.
Wann wird dieses random denn neu berechnet?

Hier zuerst mal mein Aufbau und der Code:
http://www.abload.de/thumb/gm_construct0013ole.jpg (http://www.abload.de/image.php?img=gm_construct0013ole.jpg)


N@RandomValueRandomTime
I@Valuestart Valueend Intervall Button
O@Value Clk A B
A = random(Valuestart, Valueend)
B = random(-1, Intervall)
B > 0 -> Clk = 0 ;
B <= 0 -> Clk = 1 ;
Clk == 1 -> Data = A ;
Value = round(Data)

Mein Problem ist, dass dieses Random nur neu berechnet wird, wenn
ich den Button drücke, aber ich versteht das nicht,
da der Button im Code ja garnicht erwähnt wird.
Was also ist der Impuls, dass das Random neu kalkuliert wird?
Ich dachte das ist so wie der normale Random Chip, aber anscheinden nicht...

Edit:
Also nach weiteren Nachforschungen hab ich rausgefunden,
dass das immer neu berechnet wird, wenn sich ein Input wert ändert.
Das würe natürlich durch ein einfaches Random Input gehen,
aber gibt es keine andere Möglichkeit um möglich alles außer den Variabeln in dem Expression Gate zu haben?
Die Werte sollen kontinuierlich neu berechnet werden.

Edit2: Problem gelöst.
Ich lass es mal drin, vll kanns ja noch jemand brauchen.
interval (X) //Aktualisiert das Expression Gate alle X Millisekunden; 20 ist das Minimum

WeltEnSTurm
09.04.2008, 18:58
*EXPRESSIONS*

ANDREY, I LOVE YOU!
*g*

computer22
09.04.2008, 20:55
Danke für ds Tutorial! :gmod:
Hat mir die Expression Gates näher gebracht & gut geschrieben!

Lg
Comp

WeltEnSTurm
19.04.2008, 14:09
N@vehicle control
I@W A S D
O@Leftwheels Rightwheels
Leftwheels = 0
Rightwheels = 0
A == 1 -> Leftwheels = 1;
A == 1 -> Rightwheels = 1;
D == 1 -> Leftwheels = -1;
D == 1 -> Rightwheels = -1;
W == 1 & A == 1 -> Rightwheels = 1;
W == 1 & A == 1 -> Leftwheels = 0;
W == 1 & D == 1 -> Leftwheels = -1;
W == 1 & D == 1 -> Rightwheels = 0;
S == 1 & A == 1 -> Rightwheels = -1;
S == 1 & A == 1 -> Leftwheels = 0;
S == 1 & D == 1 -> Rightwheels = 0;
S == 1 & D == 1 -> Leftwheels = 1;
W == 1 & A == 0 & D == 0 -> Rightwheels = 1;
W == 1 & A == 0 & D == 0 -> Leftwheels = -1 ;
S == 1 & A == 0 & D == 0 -> Rightwheels = -1;
S == 1 & A == 0 & D == 0 -> Leftwheels = 1;

Ab zum Panzerbauen! :gmod:
*g*

Andrey
19.04.2008, 14:12
N@vehicle control
I@W A S D
O@Leftwheels Rightwheels
Leftwheels = 0
Rightwheels = 0
A == 1 -> Leftwheels = 1;
A == 1 -> Rightwheels = 1;
D == 1 -> Leftwheels = -1;
D == 1 -> Rightwheels = -1;
W == 1 & A == 1 -> Rightwheels = 1;
W == 1 & A == 1 -> Leftwheels = 0;
W == 1 & D == 1 -> Leftwheels = -1;
W == 1 & D == 1 -> Rightwheels = 0;
S == 1 & A == 1 -> Rightwheels = -1;
S == 1 & A == 1 -> Leftwheels = 0;
S == 1 & D == 1 -> Rightwheels = 0;
S == 1 & D == 1 -> Leftwheels = 1;
W == 1 & A == 0 & D == 0 -> Rightwheels = 1;
W == 1 & A == 0 & D == 0 -> Leftwheels = -1 ;
S == 1 & A == 0 & D == 0 -> Rightwheels = -1;
S == 1 & A == 0 & D == 0 -> Leftwheels = 1;

Ab zum Panzerbauen! :gmod:
*g*

Wow!
Nais.

Exsistiert der Panzer auch schon? :D

WeltEnSTurm
19.04.2008, 14:17
Bald :gmod:
Ist mir grad eben auf dem [YaS] #1 Server eingefallen, als ich
ein M.A.L.P. machen wollte http://forums.facepunchstudios.com/images/smilies/emot-keke.png

Ululuru
20.05.2008, 18:00
N@vehicle control
I@W A S D
O@Leftwheels Rightwheels
Leftwheels = 0
Rightwheels = 0
A == 1 -> Leftwheels = 1;
A == 1 -> Rightwheels = 1;
D == 1 -> Leftwheels = -1;
D == 1 -> Rightwheels = -1;
W == 1 & A == 1 -> Rightwheels = 1;
W == 1 & A == 1 -> Leftwheels = 0;
W == 1 & D == 1 -> Leftwheels = -1;
W == 1 & D == 1 -> Rightwheels = 0;
S == 1 & A == 1 -> Rightwheels = -1;
S == 1 & A == 1 -> Leftwheels = 0;
S == 1 & D == 1 -> Rightwheels = 0;
S == 1 & D == 1 -> Leftwheels = 1;
W == 1 & A == 0 & D == 0 -> Rightwheels = 1;
W == 1 & A == 0 & D == 0 -> Leftwheels = -1 ;
S == 1 & A == 0 & D == 0 -> Rightwheels = -1;
S == 1 & A == 0 & D == 0 -> Leftwheels = 1;

Ab zum Panzerbauen! :gmod:
*g*

Du musst nicht jedes mal eine Neue Line anfangen wenn du was Festlegst

z.B.
A == 1 -> LeftWheels = 1, RightWheels = 1;

Das Komma heisst und, du kannst auch "&" verwenden

WeltEnSTurm
20.05.2008, 18:21
Ich weiß, tut mir leid, das ich es übersichtlicher mag.

Cronos988
17.07.2008, 18:38
Ich probiere mich grad auch an Wire und mir sind die Expression Gates sympatisch, da ich das Vorgehen von z.b. Editoren kenn.
Was ich mich Frage was macht Delta?

Xasir
02.08.2008, 12:37
Hi gibt es da auch nen befehl für oder

z.b A == 1 (oder) B == 1 -> C = 1;

don-banane
02.08.2008, 12:48
Hi gibt es da auch nen befehl für oder

z.b A == 1 (oder) B == 1 -> C = 1;


A == 1 | B == 1 -> C = 1; (oder)
A == 1 & B == 1 -> C = 1; (und)

Airfox
02.08.2008, 12:52
Wie wäre es mal mit ner Liste mit den ganzen Befehlen?

Xasir
02.08.2008, 12:54
Edit s0orry hab was übersehen

don-banane
02.08.2008, 13:04
Also ich empfehle das hier (http://wiki.garrysmod.com/wiki/?title=Wired_Expression_Chip) mal anzuschauen für die Befehle :gmod:

Xasir
02.08.2008, 14:45
Kann mir einer sagen was das ist
Expectet symbol (;) at line 52
meine line 52
A >= 1 & Z == 1 -> T = 0;

Hab auch scon mal das ; weg gemacht dan habe ich die selbe fehlermeldung
un wenn ich noch eine line dabei mache sagt er anstadt line 52 line 53
da habe ich einfach mal reingeschtiben Aqwertz = 0; und das ganze auch ohne ;

was is das fürn fehler

WeltEnSTurm
06.10.2008, 17:05
Kann mir einer sagen was das ist
Expectet symbol (;) at line 52
meine line 52
A >= 1 & Z == 1 -> T = 0;

Hab auch scon mal das ; weg gemacht dan habe ich die selbe fehlermeldung
un wenn ich noch eine line dabei mache sagt er anstadt line 52 line 53
da habe ich einfach mal reingeschtiben Aqwertz = 0; und das ganze auch ohne ;

was is das fürn fehler

Dann hast du in einer der vorigen Zeilen das (;) vergessen.



Was zur hölle macht delta? :gmod:
Ich will endlich mein nahezu perfektes turret noch perfekter machen :D

Stoned
06.10.2008, 21:05
Dann hast du in einer der vorigen Zeilen das (;) vergessen.



Was zur hölle macht delta? :gmod:
Ich will endlich mein nahezu perfektes turret noch perfekter machen :D

delta gibt den unterschied zwischen den letzen 2 werten aus ->
A = 1, dann A = 5,
Delta(A) = 4, wenn
A dann 3 wird ist Delta(A) = 1 ( 3, 4 )

-- bzw


Input° = 1 ; Output = 1 (Weil zwischen 0 und 1 der Unterschied 1 ist)
Input² = 2 ; Output = 1 (Weil zwischen 1 und 2 der Unterschied 1 ist)
Input³ = 5 ; Output = 3 (Weil zwischen 2 und 5 der Unterschied 3 ist)
Input* = 5 ; Output = 0 (Weil zwischen 5 und 5 der Unterschied 0 ist)
Input' = 0 ; Output = -5 (Weil zwischen 5 und 0 der Unterschied -5 ist)

Man könnte auch sagen Es Merkt sich den Letzten Input und zieht ihm vom jetzigen ab

InputNeu - InputAlt = Delta
(von der gate page)

XCorE2
14.10.2008, 18:28
Kann mir jemand sagen wieso ich Standart nicht einmal ein ExpressionGate Ordner hab ? also bei Garrysmod/garrysmod/date u.s.w nirgens ist da dieser ordner wo die Script .txt datein hinkommen,mach ich den selber und starte das game und geh denn auf Gate - Expression ist da nur so nen 4eck das wars,wenn ich den chip spawnen will,steht da Error und das kein Outpud gefundne wurde u.s.w aber ich kanns ja nirgenswo auswählen,das ist so wichtig und grad das geht nicht -.- hab alles richitg gemacht über svn e.t.c

nowai
14.10.2008, 20:30
Kann mir jemand sagen wieso ich Standart nicht einmal ein ExpressionGate Ordner hab ? also bei Garrysmod/garrysmod/date u.s.w nirgens ist da dieser ordner wo die Script .txt datein hinkommen,mach ich den selber und starte das game und geh denn auf Gate - Expression ist da nur so nen 4eck das wars,wenn ich den chip spawnen will,steht da Error und das kein Outpud gefundne wurde u.s.w aber ich kanns ja nirgenswo auswählen,das ist so wichtig und grad das geht nicht -.- hab alles richitg gemacht über svn e.t.c

Achte bitte auf deine Rechtschreibung. Es kann Nachteile hervorbringen, wenn man Dateipfäde nicht richtig schreibt.

XCorE2
14.10.2008, 21:11
Danke für den Hinweis...hilft mir nur auch nicht weiter aber trotzdem danke für die hilfe ;) ...:roll:

m0nst3rkill3r
15.10.2008, 13:07
ich versteh das nicht :D

XCorE2
15.10.2008, 13:13
Mir ist garnicht aufgefallen das generell bei den Gate´s nichts geht..
hab ma 3 bilder von den fehlern und die consolen log auf meiner page geladen...

Beim ersten bild is so ne fehlermeldung,und bei den ganzen gates fast allen sieht das so aus wie bei den 2ten bild bei einigen steht da noch NoClip und ka -.-

Hab schon neu installiert über SVN geladen aber geht alles nicht ..

Und ich habs zu 100 % richtig installiert

http://xspace.info.ms/Files2

m0nst3rkill3r
15.10.2008, 13:20
Ich kapier das mit der Expression vom Auto Turret nicht wo muss ich XZ und YX Und result hinwiren?

WeltEnSTurm
15.10.2008, 13:31
Ich kapier das mit der Expression vom Auto Turret nicht wo muss ich XZ und YX Und result hinwiren?

Dann lass es?

Stoned
15.10.2008, 13:37
Mir ist garnicht aufgefallen das generell bei den Gate´s nichts geht..
hab ma 3 bilder von den fehlern und die consolen log auf meiner page geladen...

Beim ersten bild is so ne fehlermeldung,und bei den ganzen gates fast allen sieht das so aus wie bei den 2ten bild bei einigen steht da noch NoClip und ka -.-

Hab schon neu installiert über SVN geladen aber geht alles nicht ..

Und ich habs zu 100 % richtig installiert

http://xspace.info.ms/Files2

wie die bilder sehr schoen zeigen hast du ein outdated wire von gmod.org oder sonst was, wire hat ne eigene register card wie "Tools", "PP", "Stargate" usw ..

€dit:


Ich kapier das mit der Expression vom Auto Turret nicht wo muss ich XZ und YX Und result hinwiren?

Code:
YZ = $Bearing * 10
XZ = Bearing * 2
Result = XZ + YZErklärung:
(Von links nach rechts:)
YZ wird zum ge'deltatem' bearing * 10.
XZ wird zu Bearing mal 10. und das wird am Ende zusammen Gezogen.

lern lesen omg .. die meisten user koennen nicht mehr lesen <_<

YZ und XZ sind keine outputs, nur variablen in der exp
Result ist der output der zu den 2 thrustern links/rechts kommt ( beide selbe richtung )

m0nst3rkill3r
15.10.2008, 14:14
ahaa ok ..

Killer-X39
15.10.2008, 17:21
Mir ist garnicht aufgefallen das generell bei den Gate´s nichts geht..
hab ma 3 bilder von den fehlern und die consolen log auf meiner page geladen...

Beim ersten bild is so ne fehlermeldung,und bei den ganzen gates fast allen sieht das so aus wie bei den 2ten bild bei einigen steht da noch NoClip und ka -.-

Hab schon neu installiert über SVN geladen aber geht alles nicht ..

Und ich habs zu 100 % richtig installiert

http://xspace.info.ms/Files2

Versuch es mal mit gmod neu instalieren
ich hatte damals ein ähnliches problem mit dem stargate mod hatte ich au von www.garrysmod.org nachdem ich es neu instalieren muste ging der stargate mod plötzlich und ich hab mir da zuerst den von svn geholt ne ;)

the.only.one
01.05.2009, 15:55
Hallo,

ich möchte etwas in der Form schreiben:
Input A
Outputt X Y

If A == 1 -> X=10 & Y=20;

Er sagt mir aber, dass die hinteren = Zeichen zuviel (unexpected) sind.

edit:
Ok mit Expression 2 gehts. Denk mal werd auch nur noch mit Exp2 arbeite ist viel angenehmer.

Wenn es trotzdem noch jemand weiß wäre das cool.

WeltEnSTurm
21.06.2009, 17:28
Ich brauch sowas wie angle:Forward() (Expression 2)
Schnell :d

N!tro
21.06.2009, 19:37
Hallo,

ich möchte etwas in der Form schreiben:
Input A
Outputt X Y

If A == 1 -> X=10 & Y=20;

Er sagt mir aber, dass die hinteren = Zeichen zuviel (unexpected) sind.

edit:
Ok mit Expression 2 gehts. Denk mal werd auch nur noch mit Exp2 arbeite ist viel angenehmer.

Wenn es trotzdem noch jemand weiß wäre das cool.

Ich würde:

X=(A==1?10:0)
Y=(A==1?20:0)

Es ist zwar wirklich umständlicher, aber funktioniert denn auch in Expression 1.

Edit: Ok, der Post war vom 1.5. :bang:

WeltEnSTurm
21.06.2009, 19:40
Ich brauch sowas wie angle:Forward() (Expression 2)
Schnell :d

Habs rausgefunden.. (p/y = pitch/yaw)

ForwardVec = vec(1,0,0)
ForwardVec = ForwardVec:rotate(ang(P,Y,0))

vec(1,0,0) ist forward
vec(0,1,0) ist right
vec(0,0,1) ist up

Markus
04.10.2009, 15:57
Ich hab da ein problem bei einem Expression Chip

Hab ihn bei nem Toturial gesehen aber bei mir funktioniert er nur einmal, kA warum

hier mal die Daten die ich aus der .txt datei hab

N@Chevron
I@Chevron Aktivate Incoming
O@C1 C2 C3 C4 C5 C6 C7 Iris
Chevron == 1 -> C1 = 1;
Chevron == 2 -> C2 = 1;
Chevron == 3 -> C3 = 1;
Chevron == 4 -> C4 = 1;
Chevron == 5 -> C5 = 1;
Chevron == 6 -> C6 = 1;
Chevron == 7 -> C7 = 1;

frog
08.10.2009, 18:40
mal so ne frage:
Wie kriegt man ein Vector zu normalen Zahlen
also
Vector=vec(N,N,N)
geht ja aber
vec(N,N,N)=Vector

also anders gesagt:
die 3 Zahlen im Vector einzelne Variablennamen zuweisen.

Praxis Beispiel:

Vector vom GPS in X Y und Z damit man es miteinander vergelichen kann welche die Größte ist(X Y oder Z)um dann die Entfernung anzuzeigen
leider net...wie macht man es?

MuffinHyperon
02.01.2010, 17:41
Also...
Ich hab da nur so ne Frage...
Ich hab da nen sehr einfachen Code, aber ich möchte das dieser erst ausgeführt wird wenn ein Knopf gedrückt wird... Ist das so dann richtig?:

Antrieb = 0
Speed <= 200 -> Antrieb = 1;

Das is der den ich dann mit nem Button aktivieren möchte... Mache ich das dann so?

Antrieb = 0
Button = 0
Button == 1 -> (Speed <= 200 -> Antrieb = 1);

Um eine kurze Hilfe würde ich mich sehr freuen... =P

1mannlan
09.01.2010, 12:21
Wenn der Button Toggled ist machst du es so:


@name Motorcontrol
@inputs Button Speed
@ouputs Antrieb

if(Button & Speed <= 200)
{Antrieb = 1}
else
{Antrieb = 0}

ps.:
Das "if(Button)" bedeuted soviel wie "Wenn wahr" und wahr ist es wenn es 1 ist.
"if(Button==1)" ginge zwar auch, sieht aber nicht so schön aus :P
Es heißt nicht:
Wenn Button und Speed <= 200 sind!

@frog

Willst du die Entfernung 2er Punkte messen?

ginge dann So:

@inputs Vector:vector Vector2:vector
@ouputs Distance
Distance = Vector:distance(Vector2)
(nicht getestet!)

frog
10.01.2010, 14:29
ne hat sich eingtl schon gelöst^^
Brauchte X=Vector:x() usw.

Aber danke Dafr das könnte ich vllt nochmal Gebrauchen und andere vllt auch^^

Ronaldo
13.01.2010, 16:38
Moin moin und hallo, ist lange her, dass hier jemand was geschrieben hat,
hoffe tortzdem auf eine Antwort. :D

Ich bin erst seit kurzem hier und find es jetzt schon ne klasse Webside.

Kommen wir also zum Problem:
Ich wollte gerne Wissen, ob es bei den expression 1 ne möglichkeit gibt die Geschwindigkeit einer Schaltung zu ändern. Zum beispiel:

A == 1 -> Length = 100;
Könnte man hier die Geschwindigkeit von Length irgendwie ändern?

kartoffel
13.01.2010, 20:09
Length beträgt 100.
Kannst du mir erzählen, wie man die Geschwindigkeit einer Zahl ändert?

Ronaldo
13.01.2010, 20:28
Also die Schaltung sollte eine Plattform sein, die hochfährt, jetzt sagen wir mal sie fährt zu schnell hoch.
Also wenn man den Knopf (A) drückt = länge von 100, sonst ist sie bei 1.
Irgendwie denk ich müsste es gehen, z.B wenn man mit Chips Wiren würde, gibt es da ja den smoother der die Geschwindigkeit regelt und ich dachte, das müsste doch mit expression auch gehen, wusste halt nicht wie.

Wenn es jetzt aber nicht gehen sollte, dann ist die Frage geklährt.

kartoffel
13.01.2010, 21:24
Leite die Ausgabe durch ein Smooth-Gate.

Ronaldo
14.01.2010, 14:29
Hatte auch schon ausprobiert, das irgendwie so hinzukriegen, habs aber nicht wirklich hin bekommen.
Das eine mal ging die Platform nur langsammer runter, hoch aber nicht.

1mannlan
14.01.2010, 16:28
Also was willst du?
Das es beim drücken von 1 bis 100 langsam hochzählt und beim erneuten wieder runter?
Also so ne art Ausfahrfiech?

Ronaldo
14.01.2010, 19:39
Ja, so in der Art.
Also es soll wenn ich den knopf drücke langsam hochfahren und wenn ich den knopf nochmal drücke langsam wieder runterfahren.