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.
Code:
== 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.
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:
Code:
Bremse = 0
Speed >= 60 -> Bremse = 1;
Erklärung:
Code:
-> ....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:
Code:
Codeteil1 == Codeteil2 -> Output = 500;
Man kann natürlich noch viel mehr Sachen Benutzen:
==================================
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!
30.01.2008, 21:42
Pac_187
AW: Andre Tutorial - Expressions Gates
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 ;)
30.01.2008, 21:59
Dragon R
AW: [Wire-Tutorial] Expressions Gates
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:
30.01.2008, 22:21
Andrey
AW: [Wire-Tutorial] Expressions Gates
Zitat:
Zitat von Dragon R
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:
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.
Code:
& und
== Equal
-> ...Dann... ( Wird gesetzt zu.. )
31.01.2008, 11:38
Dragon R
AW: [Wire-Tutorial] Expressions Gates
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
Code:
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 :?:
31.01.2008, 12:34
Andrey
AW: [Wire-Tutorial] Expressions Gates
Zitat:
Zitat von Dragon R
[...]
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.
31.01.2008, 12:47
Dragon R
AW: [Wire-Tutorial] Expressions Gates
oh ja übersehene :D
Dan noch ne Frage was Stimmt hier nicht? was es tun soll steht da ja :D
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
31.01.2008, 14:18
Andrey
AW: [Wire-Tutorial] Expressions Gates
Zitat:
Zitat von Dragon R
[...]
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.
Code:
Button == 1 -> Result -+ 1;
ButtonReset == 1 -> Result = 0;
31.01.2008, 16:07
don-banane
AW: [Wire-Tutorial] Expressions Gates
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.
31.01.2008, 16:07
Dragon R
AW: [Wire-Tutorial] Expressions Gates
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
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
aber auch wen ich zwischen = und + ne Lücke lasse geht es nicht :(
01.02.2008, 13:51
Maurice
AW: [Wire-Tutorial] Expressions Gates
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.
01.02.2008, 17:35
Dragon R
AW: [Wire-Tutorial] Expressions Gates
Geht nich is bleibt immer 0
01.02.2008, 17:53
Maurice
AW: [Wire-Tutorial] Expressions Gates
Weil du das Out = 0 da noch drin hast.
einfach
Code:
Increment == 1 -> Out += 1;
Reset == 1 -> Out = 0;
Hat für mich prima geklappt. Im SP und auf dem Gmod.de Server.
01.02.2008, 18:38
Dragon R
AW: [Wire-Tutorial] Expressions Gates
ne habs ja raisegnommen siet genau so aus wie bei dir geht aber dennoch nicht :(
01.02.2008, 18:44
Maurice
AW: [Wire-Tutorial] Expressions Gates
Also ehrlich gesagt glaube ich, du bist einfach zu dum dafür.
Mach mir nochmal nen Screenshot :)
01.02.2008, 19:09
Dragon R
AW: [Wire-Tutorial] Expressions Gates
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!
Code:
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;
31.03.2008, 17:30
PytonB!tch
AW: [Wire-Tutorial] Expressions Gates
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.
31.03.2008, 17:34
don-banane
AW: [Wire-Tutorial] Expressions Gates
Ja mit concommand('<befehl>')
Beispiel:
Code:
Input1 == 1 -> concommand('say i are so cool');
31.03.2008, 17:53
PytonB!tch
AW: [Wire-Tutorial] Expressions Gates
Dankeschön, ich werde es gleich mal Probieren!
09.04.2008, 15:21
Clarity
AW: [Wire-Tutorial] Expressions Gates
Ich hab ne Frage zu der random Funktion in den Expression Gates.
Wann wird dieses random denn neu berechnet?
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
09.04.2008, 18:58
WeltEnSTurm
AW: [Wire-Tutorial] Expressions Gates
Zitat:
Zitat von Andrey
*EXPRESSIONS*
ANDREY, I LOVE YOU!
*g*
09.04.2008, 20:55
computer22
AW: [Wire-Tutorial] Expressions Gates
Danke für ds Tutorial! :gmod:
Hat mir die Expression Gates näher gebracht & gut geschrieben!
Lg
Comp
19.04.2008, 14:09
WeltEnSTurm
AW: [Wire-Tutorial] Expressions Gates
Code:
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*
19.04.2008, 14:12
Andrey
AW: [Wire-Tutorial] Expressions Gates
Zitat:
Zitat von WeltEnSTurm
Code:
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;
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
20.05.2008, 18:21
WeltEnSTurm
AW: [Wire-Tutorial] Expressions Gates
Ich weiß, tut mir leid, das ich es übersichtlicher mag.
17.07.2008, 18:38
Cronos988
AW: [Wire-Tutorial] Expressions Gates
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?
02.08.2008, 12:37
Xasir
AW: [Wire-Tutorial] Expressions Gates
Hi gibt es da auch nen befehl für oder
z.b A == 1 (oder) B == 1 -> C = 1;
02.08.2008, 12:48
don-banane
AW: [Wire-Tutorial] Expressions Gates
Zitat:
Zitat von Xasir
Hi gibt es da auch nen befehl für oder
z.b A == 1 (oder) B == 1 -> C = 1;
Code:
A == 1 | B == 1 -> C = 1; (oder)
A == 1 & B == 1 -> C = 1; (und)
02.08.2008, 12:52
Airfox
AW: [Wire-Tutorial] Expressions Gates
Wie wäre es mal mit ner Liste mit den ganzen Befehlen?