Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
09.04.2009, 12:09
Herr Freimann



Morgen,
Gesetzt den Fall, ich benutze nur logic_relay mit zeitversetzten triggern, um eine LED-Uhr zu betreiben - ist es möglich, die "in der Luft hängenden" Triggersendungen zu löschen?

Präzise:

Die Relays (A_Relay, B_Relay, C_Relay) werden beim Uhrstart gleichzeitig getriggert, die Outputs sind dann jeweils

Quellcode:OnTrigger | C_00 | Alpha | 255 | 0.00 | No
OnTrigger | C_00 | Alpha | 0    | 0.99 | No
OnTrigger | C_01 | Alpha | 255 | 1.00 | No
OnTrigger | C_01 | Alpha | 0    | 1.99 | No
OnTrigger | C_02 | Alpha | 255 | 2.00 | No
OnTrigger | C_02 | Alpha | 0    | 2.99 | No
...
OnTrigger | !self  |Trigger|       | 10   | No


OnTrigger | B_00 | Alpha | 255 | 0.00 | No
OnTrigger | B_00 | Alpha | 0    | 09.99 | No
OnTrigger | B_01 | Alpha | 255 | 10.00 | No
OnTrigger | B_01 | Alpha | 0    | 19.99 | No
OnTrigger | B_02 | Alpha | 255 | 20.00 | No
OnTrigger | B_02 | Alpha | 0    | 29.99 | No
...
OnTrigger | !self  |Trigger|       | 60.00 | No


OnTrigger | A_00 | Alpha | 255 | 0.00 | No
OnTrigger | A_00 | Alpha | 0    | 59.99 | No
OnTrigger | A_01 | Alpha | 255 | 60.00 | No
OnTrigger | A_01 | Alpha | 0    | 119.99 | No
OnTrigger | A_02 | Alpha | 255 | 120.00 | No
OnTrigger | lose  |Trigger|       | 120.00 | No
(Die uhr zählt bis 2:00, danach hat man verloren (logic_Relay namens "lose" wird ausgelöst))
wobei C_0* das Func_Wall mit der Ziffer * drauf ist. Analog dazu gibts noch B_0* und A_0*, eben die mittlere und die Ziffer ganz links.

Problem: Ich will mit der Uhr Zeit stoppen, also muss dieser Mechanismus irgendwann eingefroren werden - leider geht das nicht, denn wenn ich einen Logic_Relay kille, hört der zwar auf, zu arbeiten, die Zahlen werden aber trotzdem weitergeschalten, bis die outputliste durchgearbeitet wurde (heißt: wenn die Relays bei 1:34 gekillt werden, Läuft die uhr auf 1:4 , dann auf 2: , weil die zeitversetzten triggereingaben sich eben nicht löschen lassen).

Kann man darauf irgendwie Einfluss nehmen? Gibt es eine einfache Methode, dem Spieler eine Zeit auszugeben oder muss ich die Konstruktion umbauen?

Edit: Map hochgeladen

Edit2: Update:


Testweise benutze ich func_tracktrains, die sich zwischen path_tracks teleportieren. Sobald die rechte schiene einmal ganz unten ankommt, bewegt sich die mittlere um eine zahl weiter; kommt die mittlere ganz unten an, bewegt sich die linke eins weiter. die schiene rechts teleportiert sich immer vorwärts, wobei jeder path_track auf ihrere strecke die outputs "OnPass : (schiene rechts) : stop : o.oo" und "OnPass : (schiene rechts) : startforward : 1.oo" hat.

Das klappt - allerdings nicht beim ersten durchgang. schaut man sich die map mal an [download] , kann man sehen, dass in der ersten runde die ziffer 1 übersprungen wird. woran kann das liegen?

--


Dieser Beitrag wurde am 09.04.2009 um 13:01 von Herr Freimann bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
09.04.2009, 12:55
teido



Komplizierte sache. Aber wie ich sehe Triggert sich das logic_relay selber mit Trigger, wenn es getriggert wird. So wie ich das dan sehe ist das dann ne endloschleife, liege ich da richtig?

wenn ja Könnte man diese ja weglassen.

Oder eine andere möglichkeit:

Wie zum Beispiel beim Taschenrechner sind da doch einzelne striche die eine Zahl ergeben, ich meine 7, wenn du jetzt so die Zahl machen würdest könnte man jedem strich einen namen geben (func_brush) und diesen dan entsprechend triggern das er verschwinden soll oder kommen soll. Ich denke aber das is komplizierter als deine methode aber so wie ich das sehe könnte man diese dan anhalten.

--

zum Seitenanfang zum Seitenende Profil || Suche
002
09.04.2009, 13:01
Herr Freimann



Zitat:
teido postete
Komplizierte sache. Aber wie ich sehe Triggert sich das logic_relay selber mit Trigger, wenn es getriggert wird. So wie ich das dan sehe ist das dann ne endloschleife, liege ich da richtig?

wenn ja Könnte man diese ja weglassen.

Noe, weglassen kann ich die nicht, weil die zahlen bis zum einfrieren weiterzählen müssen.

Zitat:
Oder eine andere möglichkeit:

Wie zum Beispiel beim Taschenrechner sind da doch einzelne striche die eine Zahl ergeben, ich meine 7, wenn du jetzt so die Zahl machen würdest könnte man jedem strich einen namen geben (func_brush) und diesen dan entsprechend triggern das er verschwinden soll oder kommen soll. Ich denke aber das is komplizierter als deine methode aber so wie ich das sehe könnte man diese dan anhalten.

Das würde die Uhr nur komplexer machen. dieses System habe ich tatsächlich mal verwendet, man benötigt zusätzliche relays und die einstellungen sind länger.

... bump!

Testweise benutze ich func_tracktrains, die sich zwischen path_tracks teleportieren. Sobald die rechte schiene einmal ganz unten ankommt, bewegt sich die mittlere um eine zahl weiter; kommt die mittlere ganz unten an, bewegt sich die linke eins weiter. die schiene rechts teleportiert sich immer vorwärts, wobei jeder path_track auf ihrere strecke die outputs "OnPass : (schiene rechts) : stop : o.oo" und "OnPass : (schiene rechts) : startforward : 1.oo" hat.

Das klappt - allerdings nicht beim ersten durchgang. schaut man sich die map mal an [download] , kann man sehen, dass in der ersten runde die ziffer 1 übersprungen wird. woran kann das liegen?

Noch ein Update: Ich bau jetzt schaltung #1 nochmal um, hatte gerade eine Idee dazu...

--


Dieser Beitrag wurde am 09.04.2009 um 13:11 von Herr Freimann bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
09.04.2009, 13:27
Adrian_Broher
Admin


Irgendwie klingt die Konstruktion komplizierter als noetig. Wieso ist es noetig die ganze Triggerliste festzuschreiben?

Du brauchst einen Taktgeber, der jede Sekunde ein Event (e1) feuert und dieser Taktgeber ist abschaltbar.

Event e1 beliefert die Darstellung der Sekunden und einen math_counter mit min: 0 und max: 10. Der feuert beim erreichen des oberen Limits ein Event(e10) und setzt seinen zaehler wieder auf 0.
Event e10 beliefert die Darstellung der 10 Sekunden und einen math_counter mit min:0 und max: 6. Der feuert beim erreichen des oberen Limits ein Event(e60) und setzt seinen zaehler wieder auf 0.
Das gleiche Spielchen fuer die Minutenanzeige.

Um den Trigger anzuhalten sorgst du einfach dafuer, dass der Taktgeben keine Events mehr feuert.
Fuer das Zuruecksetzen der Uhr muessen die math_counter auf 0 gesetzt werden.

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.

zum Seitenanfang zum Seitenende Profil || Suche
004
09.04.2009, 14:17
Herr Freimann



Meinst du eine Konstruktion wie:
math_counter(zählt bis 10) -> logic_case(löst für jeden case eine zahl aus)
-> zweiter math_counter, der bis 60 zählt und bei jeder zehnerstelle einen logic_case triggert
usw?

Wie kann man denn einen math_counter dazu bringen, seinen momentanen Wert direkt auf ein logic_case zu übertragen? OutValue überträgt sich bei mir nur auf andere counter oder math_remaps, wie umgehst du das denn in deinem Beispiel?

--


Dieser Beitrag wurde am 09.04.2009 um 14:18 von Herr Freimann bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
09.04.2009, 14:31
Adrian_Broher
Admin


Zitat:
Herr Freimann postete
Meinst du eine Konstruktion wie:
math_counter(zählt bis 10) -> logic_case(löst für jeden case eine zahl aus)
-> zweiter math_counter, der bis 60 zählt und bei jeder zehnerstelle einen logic_case triggert
Nein, der math_counter der 10 Sekunden Stelle zaehlt von 0 bis 6, wird beim erreichen von 6 auf 0 zurueckgesetzt und feuert ein Event an alle Entities, die benachrichtigt werden sollen, wenn eine ganze Minute vergangen ist.

Zitat:
Herr Freimann postete
Wie kann man denn einen math_counter dazu bringen, seinen momentanen Wert direkt auf ein logic_case zu übertragen? OutValue überträgt sich bei mir nur auf andere counter oder math_remaps, wie umgehst du das denn in deinem Beispiel?
Und wieso soll das nicht funktionieren? Sogar im Valve Wiki wird das empfohlen.
Zitat:
OutValue <integer>
Simply sends out the math_counter's value as though it were typed into the the parameter override field. Useful in conjunction with logic_case or func_movelinear. The change is outputed each time the value changes unless the SetValueNoFire is used.

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.


Dieser Beitrag wurde am 09.04.2009 um 14:36 von Adrian_Broher bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
09.04.2009, 15:17
Hellraisa



wenn es dir reichen würde das die stoppuhr nich so : 1:20 angezeigt wird sondern in sekunden ( 0080 sek.) dann wüsste ich wies geht.
einfach 4 logic_timer und 1 toggelbare textur von 0 bis 9.
jede sekunde löst timer1 die sekundenziffer aus; jede 10 sek. timer2 die 10sek.ziffer usw.
so habs ich in ner Bhop map gemacht.

mfg

--

zum Seitenanfang zum Seitenende Profil || Suche
007
09.04.2009, 20:58
Herr Freimann



Update: Problem gelöst. Ich benutze zwei Texturen, eine, die von 0-9 und eine andere, die von 0-5 getogglet werden kann.

Der Logic_Timer feuert jede Sekunde +1 an jeden Counter und triggert pro sekunde die rechte Textur. Erreicht der rechte Counter 10, triggert er wiederum seine Textur; erreicht der counter ganz links 60, triggert er wieder seine textur. Jeder math_counter setzt sich bei OnHitMax wieder auf 0; So umgeht man einige Probleme mit asynchronität.
Die Uhr wird durch enablen/disablen des logic_timer gestartet und angehalten.

--


Dieser Beitrag wurde am 09.04.2009 um 20:58 von Herr Freimann bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
10.04.2009, 13:39
Herr Freimann



Update #2: Tutorial verfasst

Ich hoffe, das ist verständlich verfasst; einfacher als die ursprünglichen Lösungsansätze ist es auf jeden Fall. danke an Hellraisa :D

--


Dieser Beitrag wurde am 10.04.2009 um 13:41 von Herr Freimann bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche