Hey,
Falls ihr Fragen zu dem neuen Expression Gate 2 habt könnt ihr diese gerne hier rein posten.
Ich werde sie natürlich gerne beantworten.
Eure Toffifee...
Druckbare Version
Hey,
Falls ihr Fragen zu dem neuen Expression Gate 2 habt könnt ihr diese gerne hier rein posten.
Ich werde sie natürlich gerne beantworten.
Eure Toffifee...
Ich hab eine:
Wie geht funktioniert es? xD
/
Wie mach ich sowas wie ein if then?
if (A==1) then (B = 1) end
geht irgendwie nicht..
Naja eig. brauchst du ja nur
if (A == 1) {B = 1}
machen...
Denke ich mal xD
und ja zwischen (A und den == einen Abstand lassen genauso wie danach also sieht dann so aus...
(A == 1)
Oh jaa... Ganz wichtig... (erst jetzt bemerkt sry xD)
es ist : if (A == 1) und dann eine {-Klammer...
Also : if (A == 1) {B = 1} (Weiß nicht mehr so angenehm wie beim alten xD)
Sollte gehen.. :oops:
STOP! ^^ ES GIBT doch ein "Lua-Gate"... das sogennante "Moongate". Es ist noch nicht im offiziellen Wire-SVN drin, sondern kann nur extra runtergeladen werden. Schau mal hier: http://www.wiremod.com/forum/advance...-download.html . Habs selber noch nicht getestet, aber müsste genau das sein, was du suchst. ;)
Ach und zu der Frage wegen dem IF: Falls ihr/du noch ein else dazu haben wollt, einfach zb.
if (A == 1) {B = 1} else {B = 2}
Jedoch is das für alle C++, Java, PHP, Javascript usw Programmierer keine Umstellung weil dort ist das überall so.
Es ist glaub ich eher nur in Scriptsprachen verbreitet das die ifs usw. so geschrieben werden, in den höheren Programmiersprachen is eigentlich die form mit den geschwungenen Klammern üblich (zuminderst ist das bei den mir bekannten Sprachen so).
Expression Gate 2? Das gibts? Und da ist das nicht mehr so das man Aktionen mit einem "Dash" -> einleitet?
Oh, ok. Lange nicht mehr Wiremod aktualisiert... :D
Hallo,
ich hab hier eine frage zu meinen 2 Expressiongate 2 scripts
1: ein schreib script für den console screen
und ein script wo auf dem digital screen ein viereck anzeigtCode:@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET= RESET
CHAR= KEY
CPARAM= 255
KEY == 127 == X -1
KEY == 13 == Y +1
KEY == X +1
X= 31 == Y +1
X= 31 == X 0
Y= 31 == RESET
:/ ingame kommen im editor keine errors,Code:@name Digital screen writer
@outputs X Y G
@persist
interval(100)
X= 6
X= 7
X= 8
X= 9
X= 10
X= 18
X= 21
X= 24
X= 27
X= 30
Y= 2
Y= 3
Y= 4
Y= 5
Y= 6
Y= 6
Y= 9
Y= 12
Y= 15
Y= 18
G= 4834
nur funktionieren diese scripts nicht ?
also nun zur frage;
was muss ich machen das es funktioniert?
XD man kann nicht alles mit == lösen :P
if(key == 127){X = X - 1}
Doppelpost:
Wie macht man ein and?
Code:@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET = RESET
CHAR = KEY
CPARAM = 255
if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1 && X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1 && Y = Y + 1}
if(Y > 10){RESET = 1 && KEY = 1&& Y = 1}
if(Y == 1){RESET = 0}
so müste es jetze gehen :
with help from WeltEnSTurmCode:@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET = RESET
CHAR = KEY
CPARAM = 255
if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1}
if(KEY == 13){ X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1}
if(X > 31){Y = Y + 1}
if(Y > 10){RESET = 1}
if(Y > 10){KEY = 1}
if(Y > 10){Y = 1}
if(Y == 1){RESET = 0}
also mit if geht alles oder ?
if(EINGANG Funktion Value ){AUSGANG = VALUE} ?
und wie mach ich das mit dem viereck auf dem screen ?
was ich machen möchte:
per STRING´s buchstaben auf den digital screen projektieren.
Diese Expression hier,
funktioniert deshalb nicht, weil die X und Y Koordinaten GLEICHZEITIG gesetzt werden und das vorherige einfach überschreiben. Im Grunde ist die Idee ja richtig, nur muss man die ganzen Variablen nacheinander ausgeben.Code:@name Digital screen writer
@outputs X Y G
@persist // <- ist in dem Fall eigentlich sowieso unnötig,
da ja keine internen Variablen benötigt werden.
interval(100) // Das hier kann man auch ruhig höher
stellen (also eine niedrigere Zahl einsetzen), so wird
das ganze schneller angezeigt und funktioniert genau so gut.
X= 6
X= 7
X= 8
X= 9
X= 10
X= 18
X= 21
X= 24
X= 27
X= 30
Y= 2
Y= 3
Y= 4
Y= 5
Y= 6
Y= 6
Y= 9
Y= 12
Y= 15
Y= 18
G= 4834
Ausserdem zeichnen die Koordinaten so noch kein Viereck, da hierfür noch ein paar Seiten fehlen ;)
Wie WeltEnSTurm schon sagte, würde es doch recht viel Arbeit bedeuten. Hm, wobei ich denke, würde ich meine HoloText Expression leicht bearbeiten, würde es damit denke ich auch möglich sein, Text aus Strings dort darzustellen. Wobei was bringt das, auf die 32x32 Pixel Auflösung bekommt man doch eh maximal 2,3 Buchstaben gleichzeitig... Bei einem Console-Screen sieht die Sache schon anders aus. ;)
1.) Tut mir leid, das ich so inaktiv war xD Hatte ein paar Private GründeZitat:
Wie macht man ein and?
Code:@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET = RESET
CHAR = KEY
CPARAM = 255
if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1 && X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1 && Y = Y + 1}
if(Y > 10){RESET = 1 && KEY = 1&& Y = 1}
if(Y == 1){RESET = 0}
Nun zu deiner Frage:
if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1 && X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1 && Y = Y + 1}
if(Y > 10){RESET = 1 && KEY = 1&& Y = 1}
Ich nehme einfach mal an das du...
if(Y > 10){RESET = 1 && KEY = 1&& Y = 1}
...hier ein "and" haben willst.
Richtig sieht es folgendermassen aus:
if(Y > 10){RESET = 1 & KEY = 1 & Y = 1}
(Heißt: immer nur 1x& nicht 2x)
Hier der richtige Code:
@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET = RESET
CHAR = KEY
CPARAM = 255
if(KEY == 32) {X = X + 1}
if(KEY == 13) {Y = Y + 1 & X = 1}
if(KEY > 13) {X = X + 1}
if(X > 31) {X = 1 & Y = Y + 1}
if(Y > 10) {RESET = 1 & KEY = 1 & Y = 1}
if(Y == 1) {RESET = 0}
Viel spaß beim coden xD
ah danke ich habs jetzt so gemacht (der springt immer 2 zeilen pro buchstabe nach vorne nicht eine ..
noch ne frage: wie mach ein timer in ein expressin2 ? ich habe in der wiki schon geschaut bin aber kein milimeter weiter gekommen...Code:@name Screib expression
@inputs KEY
@outputs X Y CHAR CPARAM
@persist
CHAR = KEY
CPARAM = 255
if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1}
if(KEY == 13){ X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1}
if(X > 31){Y = Y + 1}
if(Y > 10){KEY = 1}
if(Y > 10){Y = 1}
frage zum schreib expression: die buchstben verschwinden sofort wieder, was muss ich machen, dass sie stehen bleiben
-snip, boom-
es würde ja wahrscheinlich mit nem 64x64 store memory gehen aber ich weis nich wie ich die daten dann auf dem bildschirm halte
Wie kann man die Geschwindkeit eines Entity bekommen?
Wenn ich entity():vel() mache bekomme ich einen Fehler: Variable overlaoded oder so ähnlich.
Außerdem würde ich gerne wissen wie ApplyOffsetForce und ApplyForce genau funktioniert. Z.B. das ein Enitiy einen folgt oder ein Entity an der selben Postion mit dem selben angles bleibt (also 0,0,0).
wie kann ich eine funktion einma abrufen?
ich bau immoment ein code wo den spieler aus dem auto wirft wen es ihm nicht gehört
nur funktioniert es nicht so wie ich will ..Code:@name Driver message
@inputs CAR:entity
@outputs
@persist
DRIVER= CAR:driver()
if(DRIVER:name() == CAR:owner():name())
{
DRIVER:hintDriver("Scannig ........ You are the owner of the car!",5)
DRIVER:hintDriver("You are not ejected!",5)
}
else
{
DRIVER:hintDriver("YOU ASSHOLE STFU AND EJECT OUT OF MY CAR!",3)
DRIVER:ejectPod()
}
wen ich interval reinmache dan schreibt der die message jede XX milisekunde
und mit timer wiederholt er sich immer
ich hab es schon mit timer("funktion",N) und stoptimer("timer") veruscht aber er stoppt so schnell das er die message nicht anzeigt ?
was kann ich da machen ?
weis einer wie man ein oder macht
also if(A == 1 "oder" B == 3){C = 2}
beim ersten war es ja das ,
Kann das wer in Expression 2 umschreiben ?
Code:N@Advanced Smoother
I@Target Speed Acceleration
O@Value Active
# Activate when target has been set
~Target -> Active = 1;
# Main computation loop
first() | clk() ->
# Precomputation of inputs
!Acceleration -> Acceleration = Speed * 50 * 2;
AccLength = Speed^2 / Acceleration / 2
AccRate = min(Speed, Acceleration / 50)
# Precomputation of variables
Distance = Target - Value
Direction = Distance >= 0 ? 1 : -1
# Calculate ideal speed modifier
IdealRate = Speed * Direction
abs(Distance) <= AccLength ->
IdealRate *= sqrt(abs(Distance - Rate / 50) / AccLength);
# Calculate final speed for iteration
Rate += clamp(IdealRate - Rate, -Acceleration / 50, Acceleration / 50)
Value += Rate / 50
# Check if value has reached target
Active = abs(Rate) > AccRate
| abs(Distance) > AccRate / 50
!Active -> Rate = 0, Value = Target;;
# Schedule the main loop if active
Active -> interval(20);
Hab ein Problem mit dem Wirelink tool
habe diesen Expression 2 Code
So.., nun benutze ich das Wirelink toll auf den Consol Screen und versuche das E2-Gate mit dem Screen zu verbinden, leider geht es nicht weil irgendein Wert auf NIL steht, auf deutsch, da klappt was mit dem Wirelink tool nicht (denke ich mir zumindest, da ich auch kein wirelink output am Consol Screen habe)Code:@name stringtest
@inputs Console:wirelink
@outputs
@persist Teststring:string Counter
interval(20)
Teststring = "This is a Teststring!"
if(Counter > Teststring:length() ) {Counter = 0}
Console:writeCell(Counter*2-2,toByte(Teststring,Counter))
Console:writeCell(Counter*2-1,999) #this sets the color
Counter += 1
Danke für die hilfe (hab gesucht und nichts gefunden!)
Ich habe mich auch mal mit E2 porbiert, doch es gibt i-wie ein Problem mit den "{" Klammern, d.h. da gibt er einen Fehler aus:
Und gibt es Verbesserungsvorschläge ?Code:@name VehicleCode
@inputs W A S D
@outputs TRight TLeft TBack
@persist D
If (W == 1) {TBack = 1}
Else {TBack = 0}
If (S == 1) {TBack = -1}
Else {TBack = 0}
If (A == 1) {TRight = 1 & TLeft = -1}
Else {TRight = 0 & TLeft = 0}
If (D == 1) {TLeft= 1 & TRight = -1}
Else {TLeft = 0 & TRight = 0}
If (groß) -> if (klein)
Else (groß) zu else (klein)
in der ausgabe & zu einem , machen
fertig
--------------
Aky ------->
--------------
nimm das Expression 2 - wirelink tool (bei debugger , wire, gate)
klick 1 mal auf den console screen (beim 2ten mal können fehler auftretten)
da kannst du wirelink vom expression2 an den console screen wiren
--------------
Gidius ------>
--------------
schau im zeigt eure expressions thread da habe ichs schon gemacht
Ich weiss dieser Thread ist schon etwas älter möchte aber keinen neuen auf machen.
Ich habe das problem das immer irgenteiner meine Vehicles klaut -.-
ein freund sachte mir wen ich nen pod controler und den E2 dran machen kann ich alles so einstellen das
wen nicht der Owner also ich drinne sitzt er raus geschmissen oder gekillt wird.
Meine Frage ist nun wie muss mein E2 aussehen damit ich sowas machen kann ?
Ich hoffe ihr könnt mir helfen.
Der müsste so aussehen:
Dann "Player:entity" beim Adv.Pod auf "Entity [ENTITY]" wiren.Code:@name Test
@inputs Player:entity
@outputs
@persist
@trigger all
interval(5)
if(Player:owner()) {} else {Player:killPod()}
Geht nicht auf Server, die Prop protection haben.
€: Korrigiert mich bitte, wenn ich was falsch gemacht hab. Ich bin Expression 2 Anfänger.
Danke werd ich mal testen ob es auf meinem server fungtioniert werde dan bescheit sagen.
EDIT: Nein fungtioniert leider nicht ich bekomme auch mit dem debugger keine veränderungen und es können noch alle in das vehicle
EDIT2: Ich habe jetzt was geändert unzwar ist es jetzt so
@name Test
@inputs Player:entity
@outputs
@persist
@trigger all
interval(5)
if(Player == owner()) {} else {Player:killPod()}
aber jetzt sterben alle sogar ich wen wir das vehicle betreten
geht vllt das?(bin selber noch ein Anfänger:()
@name Test
@inputs Player:entity
@outputs
@persist
@trigger all
interval(5)
if(Player:owner() ==1) {} else {Player:killPod()}
Hallo,
ich habe eine Frage zu dem folgenden EX2 Code:
Und zwar kann ich mithilfe der ENTER-Taste den Bildschirm und den String clearen. Nun würde ich aber gerne mit der Taste "Nach Links Löschen (ANSI: 127)" den letzten Charakter vom String und dem Screen (Console) entfernen, kann mir jemand dabei helfen?
wirelink ftw
funtzt ungefähr so:
A:writeString(String,Zeile,Spalte)Code:@name Wirelink Console Screen
@inputs A:wirelink
A:writeString("Hallo",1,1)
A:writeString("Lol",1,2)
A:writeString("Der Owner hats kappiert",(1,3)
Achso der input wirelink muss an den output wirelink vom console screen.
Doppelpost:
Du hast den Pod als entity...
wenn dann musst du:
interval(5)
if(Pod:driver() == owner()){} else {Pod:killPod()} # Falls des nit funtz musste anstatt dirver() passenger() nehmen
Weiß einer wie ich Strings aus mehreren Buchstaben in Buchstaben umformatiere die alle dann einen eigenen String bilde.?
Einen eigenen String bilden? Du möchtest also, dass aus einem String mehrere Strings entstehen und daraus wieder einen String?
Zunächst mal brauchst du nichts unformatieren. Ich persönlich würde zu einem Array raten, dort kannst du relativ einfach einzelne Strings durch eine Schleife oder spezielle Anweisung verteilen.
Erstellen kannst du ein String-Array wiefolgt:
String = "Das,wird,ein,Array":explode(",") #In der Klammer gibst du also an, womit getrennt wird. Es würde auch ein Leerzeichen (" ") gehen.
Durch die Funktion ":explode(",")" weist du durch das Trennzeichen "," den String in einem Array zu. Beim o. g. Beispiel würde das dann so aussehen:
String:string(1) = "Das"
String:string(2) = "wird"
String:string(3) = "ein"
String:string(4) = "Array"
Naja und das ganze in einen neuen String setzen oder so geht dann so:
String:string(N) #Du schreibst also entsprechen Name:Typ(NUMMER IM ARRAY) und kannst somit alles im Array herausnehmen.
Also:
StringZwei = String:string(1) + String:string(2) usw.
EDIT: Ich habe es so noch nicht getestet, habe es nur Theoretisch erfasst. Also müsstest du schauen ob es so funktioniert.
Ich buddel mal den Thread aus, denn ich hänge seit Stunden an einer Idee, die ich nicht umsetzen kann, denn ich habe trotz mehrmaligem Lesen der E2-Wiki und meinem krampfhaften Versuch, mit meinem bescheidenem Englisch das Wiremod-Forum durchzusuchen keinen Ansatz gefunden.
Der Hintergrund: Ich möchte alle Entitys in der Nähe meines E2-Chips ermitteln und mir 2 ganz bestimmte rauspicken und in 2 Variablen ablegen. Nämlich einen Asgard-Teleporter und ein wired Numpad.
Meine Ansatz:
Mit Var1=List[1,entity] kann ich nun das naheste Entity ermitteln und mit Var2=List[2,entity] das nächste, soweit ok. Aber das kann sich durch Zufall ja mal ändern, dass die vertauscht sind oder gar etwas anderes in den Such-Bereich gerät.PHP-Code:
runOnTick(1)
findInSphere(entity():pos(),50)
List=findToArray()
Leider konnte ich nirgendwo nun rauslesen, wie man ein komplettes Array nach bestimmtem Inhalt durchsuchen kann, also dass ich nach "transporter" und "gmod_wire_numpad" suchen kann und die dazugehörigen Indizes bekomme. Dazu kommt noch, dass ja immer noch vorher eine ID im Namen steht, die sich ebenfalls unter Umständen verändert.
Ich bin sicher, die Lösung ist so simpel dass ich hinterher in den Boden versinken könnte, aber ich komme nicht drauf. Kann mir da jemand weiterhelfen?
_______________________
Hat sich erledigt, ich bin nun selbst darauf gekommen. War wirklich so einfach, dass ich schreien könnte.
Für, die, die es wissen möchten und ggf. gebrauchen können:
PHP-Code:
Count=1,IndexT=0,IndexN=0
while(Count<=List:count()){
if (List[Count,entity]:type()=="transporter"){
IndexT=Count}
if (List[Count,entity]:type()=="gmod_wire_numpad"){
IndexN=Count}
Count++
}
Teleporter=List[IndexT,entity]
Numpad=List[IndexN,entity]