PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer



Bier_Baron
10.05.2012, 19:04
Ich Brauche Hilfe bei meinen Timer Code.

Wenn der Timer auf 0 Läuft soll er Einen Soundemitter Aktivieren, nur das Problem ist das er schon los geht wenn der Timer noch läuft.

Kann mir wer bei meinen Code helfen?

End Steht in denn Fall für denn Soundemitter oder Irgend was anderes.



@name Timer
@inputs Start
@outputs Timeleft End
@persist N End
@trigger

interval(N)

if(Start){
N = 1000
Timeleft = 30
}

if(Timeleft > 0){
End = 1
if(clk()){Timeleft--}
}else{N = 0, End = 0}


Der Sound Soll nur einmal gespielt werden und sich dann Selber wieder abschalten.

Mitsuma
10.05.2012, 19:15
Schon daran gedacht, dass E2 eine Timer-Funktion besitzt?
Benutz einfach die.

Hidden Evil
10.05.2012, 19:34
if (Start) kenne ich gar nicht, es dürfte aber mit if (first()) klappen. Vielleicht drückt ja dort der Schuh.

Bier_Baron
10.05.2012, 19:38
Meinste zufällig das: timer(string rv1,number rv2)

oder gibt es ein Tutorial dazu?


if (Start) kenne ich gar nicht, es dürfte aber mit if (first()) klappen. Vielleicht drückt ja dort der Schuh.
Hab ich Probiert und es hat sich nichts getan.

Mitsuma
10.05.2012, 20:11
if (Start) kenne ich gar nicht, es dürfte aber mit if (first()) klappen. Vielleicht drückt ja dort der Schuh.

Er hat start als input, d.h. er will es wohl per Button oder so starten.
Die Funktion first() ist true wenn das E2 zum ersten mal ausgeführt wird, nicht dass was er will.


Meinste zufällig das: timer(string rv1,number rv2)

oder gibt es ein Tutorial dazu?

Wie genau die Funktion hieß, wüsste ich jetzt auf der schnelle nicht, müsste mal wieder in GMod schauen.
Aber mit der Funktionshilfe und etwas nachdenken, solltest du es schaffen.
Außerdem hilft es dir nicht sehr viel, wenn man dir alle vorgibt.
Schreib nochmal, wenn du es wenigstens versucht hast.

Hidden Evil
10.05.2012, 20:20
Ach Mist, sorry. Ich hatte den Input übersehen und dachte, er wollte beim Start des Chips die Variablen setzen. Mein Fehler :)

Bier_Baron
10.05.2012, 22:22
Es geht Irgend wie nicht?

Hab denn Code durch einen Stop Befehl erweitert.

Aber der Befehl das der Timer bei 0 denn Soundemitter einschaltet geht nicht?



@name Timer
@inputs Start Stop
@outputs Timeleft End
@persist N End Timeleft

interval(N)

if (Start){
N = 1000
Timeleft = 5
}

if( Timeleft > 1 ){
if(clk()){End == 1}
Timeleft == 1 }
if( Stop == 1 )
{
End = 0
Timeleft = 0
}

if(Timeleft > 0){
if(clk()){Timeleft--}
}else{N = 0}

gamerpaddy
11.05.2012, 10:37
wenn er die zeit ausgeben will, die der timer noch braucht kannste die timer funktion vergessen (da timer() kein passenden rückgabewert hat)



@name Timer
@inputs Start Stop
@outputs Timeleft End
@persist End Timeleft Run Timer Run EndTime
interval(10)
if(first()){
EndTime = 1000 # in millisekunden
}
if(changed(Start)&Start){
End = 0
Run=1
}
if(Run){
Timer++
Timeleft = (EndTime/10)-Timer# durch 10 da interval 10 ist, sind 100 executes pro sekunde.. daher endtime auf den wert dividieren
}
if(Timer >= EndTime){
End=1
Run=0
}


sollte funktionieren

Bier_Baron
11.05.2012, 13:00
Es Funktioniert nur leider Zählt der Timer von 0 auf -15 Runter und Fängt auch nicht noch mal an Runter zu zählen wenn der Timer auf -15 ist.



@name Timer
@inputs Start Stop
@outputs Timeleft End
@persist N End Timeleft Timer Run EndTime Stop

interval(1000)

if(first()){
EndTime = 10 # in Sekunden
}
if(changed(Start)&Start){
End = 0
Run = 1
}
if(Run){
Timer++
Timeleft = (EndTime/10)-Timer# durch 10 da interval 10 ist, sind 100 executes pro sekunde.. daher endtime auf den wert dividieren
}
if(Timer >= EndTime){
End=1
Run=0
}

if( Stop == 1 )
{
End = 0
Run = 0
Timeleft = 10
}


Die Stop Funktion Funktioniert nur fängt der Timer nicht beim Nächsten Start von Vorne an sondern bei der Zahl wo er aufgehört hat.

Der Reset geht nur durch neu laden des Chips.

Ansonsten geht alles.

Oder kann es daran liegen das der Butten getoggelt sein muss?