AW: Der wirklich allgemeine Thread
Zitat:
Zitat von
Pij
Code:
string="A+B==2"
if (string)
Conditions in String Form in ein if-Statement reinzubringen ist so ziemlich sinnlos würde ich mal behaupten. Was würdest du damit erreichen wollen? Nebenbei ist das in dieser Form eh nicht möglich, ein String kann ja nicht True oder False ergeben und was drinsteht ist dem Compiler relativ egal :gmod:
AW: Der wirklich allgemeine Thread
Zitat:
Zitat von
Pij
Kann man bei Expression 2 auch irgendwie Text Variablen machen?
Also z.b.
Code:
string="A+B==2"
if (string)
{
C=5
}
Gib nach dem Namen der Variable einfach :string ein:
zB.
ZumBeispiel:string
Zitat:
Zitat von
Pij
-snip-
Folgendes soll geschehen :
Sobald die Variable A einmal 1 ist (ein non-toggle Button), soll das Script starten, die Variable B auf 1 (zurück) setzen und dann permanent (alle 10 Milisekunden) um 1 erhöhen und erst aufhören, wenn B einen bestimmten Wert hat (und bestenfalls dann via A neustartbar sein).
Allerdings wird sie nur einmal um 1 erhöht, sodass B dannach den Wert 2 hat und dann absolut nichts mehr geschieht, bis man den Chip neuspawnt (dann ist B wieder 0, bis man den Knopf drückt und es zu zwei wird)
Was mache ich falsch?D:
ed:
Okay, mit [spoiler=diesem]
Code:
@name Asdf
@inputs A
@outputs B
@persist
@trigger all
interval(10)
B++
if (B>1000)
{
stoptimer("interval")
if (A==1)
{
B=0
first()
}
}
läuft es bis zu festgelegten Stelle durch und lässt sich via A neustarten, allerdings startet es auch das erste mal von alleine :hmm:
Ich weiß nicht recht was das bezweckt aber:
first() gibt 1 aus, wenn der Chip das ernste mal gestartet wird, weswegen das da wenig sinn ergibt.
AW: Der wirklich allgemeine Thread
Öhm, also bis jetzt funktioniert es gut. Hab es einfach mal so aus dem Kopf dahin geschrieben, es wurd bläulich oder so (d.h. ja,dass diese Funktion existiert) und ich dachte mir der springt dann zurück an die erste Zeile des Scripts :V
Es ist/soll sein eine Art Timer.
Es zählt bis 10, setzt dann eine Variable, welche man z.B. an einen Detonator wiren könnte, temporär auf 1, um anzuzeigen "Hallo ich bin jetzt fertig mit zählen" und erhöht gleichzeitig eine andere Variable, die zählt, wie oft schon 10 (1000*10ms) Sekunden abgelaufen sind (könnte nützlich sein für wer weiß was).
Sobald man nach Ablauf dieser 10 Sekunden noch einmal den Start Knopf drückt, soll die temporär auf 1 gesetzte Variable wieder 0 werden, die andere jedoch ihren um 1 erhöhten Wert behalten, und das ganze von vorne Starten.
Und jetzt bastel ich halt noch so dran rum, dass man
1. den Startwert festlegen kann (default Wert = 1) und
2. auch den, öhm, Vergleichsoperator der Start If-Abfrage (default Operator = "==")
festlegen kann.
Spoiler:
So sieht's bis jetzt im Code aus
Eine switch() Funktion hab ich im
Wiki jetzt auf die Schnelle nicht gefunden, deswegen sieht's m.M.n. sehr unschön aus am Anfang mit den fünf If Abfragen
Code:
@name Asdf
@inputs Go Reset GoValue GoOperator
@outputs Time A Overall
@persist B ConditionString
@trigger all
if(!GoValue)
{
GoValue=1
}
if(GoOperator<=0 | GoOperator>4)
{
ConditionString="Go+B==GoValue"
}
elseif(GoOperator==1)
{
ConditionString="Go+B>=GoValue"
}
elseif(GoOperator==2)
{
ConditionString="Go+B>GoValue"
}
elseif(GoOperator==3)
{
ConditionString="Go+B<=GoValue"
}
elseif(GoOperator==4)
{
ConditionString="Go+B<GoValue"
}
if (Reset==1)
{
Time=0
A=0
Overall=0
}
if (ConditionString)
{
B=GoValue
interval(10)
Time++
if (Time>999)
{
stoptimer("interval")
A=1
if (Go==1)
{
Overall++
A=0
Time=0
first()
}
}
}
// ed: Oh hey, es klappt ja wirklich ohne first()
AW: Der wirklich allgemeine Thread
Gnah! Seh gerade das die letzten beiden Tage meines nächsten Schulblocks in den Sommerferien liegen! Also ich nach dem Mittwoch noch für einen Donnerstag und Freitag in den Betrieb muss...
Also... noch 2 weiter Tage Urlaub beantragen >_>
AW: Der wirklich allgemeine Thread
Mist...
Das mit der String Variable als if-condition klappt nicht.
Wird einfach "übergangen" bzw. ist immer automatisch 1, d.h., der Timer startet von alleine usw.
ed:
Spoiler:
kleines "update"
Code:
@name Asdf
@inputs Go Reset GoValue GoOperator
@outputs Time A Overall
@persist B ConditionString:string #muss >nur< an die stelle, wo die var deklariert wird?
@trigger Go Reset #kA ob's was bringt :V
if(!GoValue)
{
GoValue=1
}
if(GoOperator<=0 | GoOperator>4)
{
ConditionString="Go+B==GoValue" #hier überall hab ich :string weggelassen
}
elseif(GoOperator==1)
{
ConditionString="Go+B>=GoValue"
}
elseif(GoOperator==2)
{
ConditionString="Go+B>GoValue"
}
elseif(GoOperator==3)
{
ConditionString="Go+B<=GoValue"
}
elseif(GoOperator==4)
{
ConditionString="Go+B<GoValue"
}
if (Reset==1)
{
Time=0
A=0
Overall=0
}
if (ConditionString) #hier auch weggelassen
{
B=GoValue
interval(10)
Time++
if (Time>999)
{
stoptimer("interval")
A=1
if (Go==1)
{
Overall++
A=0
Time=0
first()
}
}
}
AW: Der wirklich allgemeine Thread
Wie gesagt, was soll an einem String schon True oder False sein?
Vielleicht meinst du so?
Spoiler:
Spoiler anzeigen
Code:
if(GoOperator<=0 | GoOperator>4)
{
if (Go+B==GoValue)
{
ConditionString=true
} else {
ConditionString=false
}
}
AW: Der wirklich allgemeine Thread
Was ist denn das, was man in die ( ) bei if reinschreibt?
Ich dachte mir, wenn da if(condition) steht und condition = a+b==5 ist, dann wäre das das gleiche wie if(a+b==5), aber dem ist ja wohl nicht so :/
Und an (etwa) deine Lösung hatte ich auch gedacht, aber dann würde der Code sich ja verfünffachen D: (weil ich nach jeder if Abfrage den Code machen müsste)
Kann man nicht irgendwie ne Funktion deklarieren und dann nach jeder von den fünf if abfragen einfach diese Funktion mit func(bla) abrufen? =D
AW: Der wirklich allgemeine Thread
Vielleicht solltest du dich nochmal mit den Grundlagen des Programmierens beschäftigen. Ein String wie "blabla" oder "Go+B>=GoValue" wird normalerweise immer als true und nicht als Programmcode interpretiert.
Ich weiß nicht genau, was du bezwecken willst, deswegen kann ich dir auch nicht wirklich helfen. Trotzdem hier ein Beispiel, wie man das mit weniger if-Bedingungen lösen könnte:
AW: Der wirklich allgemeine Thread
Wie bind ich in E2 ne variable in nen Variablennamen ein? Also wenn ich jetzt inputname = X hab, und der input 2 ist, wie mach ich dann nen variablennamen "X2Coord" draus?
Und ist jemand an ner Waffe aus BF2 vom Panzer intressiert? D:
AW: Der wirklich allgemeine Thread