.| Autor | Beitrag |
|---|---|
|
000 05.10.2005, 18:24 kensen |
Hallo Eben arbeite ich an einer kleinen DM-Map und bin dabei auf ein kleines Problem gestossen, dass ich schon gelöst geglaubt hatte. Hintergrund: Ein Kraftfeld wird durch einen speziellen Generator aufrechterhalten, wird dieser zerstört, springt ein Dieselgenerator ein, den man wiederum aber ausstöpseln (physbox-Stecker) kann und damit das Kraftfeld zusammenbricht. Das sollte natürlich dann so funktionieren, dass, wenn der Hauptgenerator zuerst zerstört wird, kurz der Strom ausfällt, der Dieselgenerator automatisch angeworfen wird und dann der Strom wieder da ist. Steckt man dann den Dieselgenerator auch aus, bricht das Kraftfeld zusammen und Alarm wird ausgelöst. Wird aber der Dieselgenerator zuerst ausgesteckt, wenn der Hauptgenerator noch läuft und erst danach der Hauptgenerator zerstört, soll direkt das zweite Ereignis eintreten, weil ja der Dieselgenerator anfänglich deaktiviert ist und es damit keinen Unterschied macht, solange der Hauotgenerator läuft, ob er eingesteckt ist oder nicht. Mein Lösungsansatz: Outputs: Hauptgenerator: onBreak: math_counter +1 Was geschehen sollte: Was geschieht: Wie kann es sein, dass das OnHitMax-Ereignis ausgelöst wird, ohne, dass der Max-Wert erreicht wurde? Und warum wird das onHitMin-Ereignis nicht ausgelöst? Ich habe das Ganze in vereinfachter Form mit zwei Lichtern (grün für onHitMin und rot für onHitMax) und zwei Buttons (einmal math_counter +1 und einmal +2) ausprobiert, wobei die rote erst beim Wert 3 aktiviert werden durfte und die grüne beim Wert 1. Auch hier dasselbe Ergebnis: OnHitMin wird überhaupt nicht ausgelöst und onHitMax wird immer ausgelöst, wenn der +2-Button gedrückt wird, ohne dass dabei der Max-Wert erreicht wurde. Technisch gesehen ein Ding der Unmöglichkeit, deshalb verstehe ich die Source-Welt nicht mehr. Hat jemand ähnliche Erfahrungen gemacht? Oder geistert hier vielleicht eine alternative Idee zum Erreichen desselben Effekts herum? Und ja, ich habe tausendmal die Werte des math_counters überprüft, er startet mit Wert 0, Min.-Wert 1 und Max-Wert 3. Die Outputs sind auch korrekt, ebenso die Outputs der Buttons bzw. der beiden Generatoren. --"Schnell wie der Wind, leise wie der Wald, tödlich wie das Feuer, standhaft wie der Berg - in Himmel und Erde wird niemand wie ich verehrt." - Takeda Katsuchiyo Shingen |
|
Profil || Suche |
|
001 06.10.2005, 01:14 kensen |
Geschafft! Vergesst die math_counter, ein einziges logic_compare genügt! Ich hoffe, das hier wird irgendwann mal jemandem nützlich sein - oder anders ausgedrückt: Vergesst nie die Grundlagen der Mathematik, damit lässt sich am Computer alles realisieren :) Überlegung: Wir haben vier mögliche Outputs beim logic_compare, grösser als, kleiner als, gelich und ungleich; da die beiden ersten auch den Ungleich-Output auslösen würden vergessen wir letzteren wieder, damit bleiben drei Möglichkeiten, nämlich, gleich, grösser als und kleiner als. Ich fasse die Vorgänge, die nach der Zerstörung des Hauptgenerators ablaufen sollen unter der Ereignismenge E1 zusammen und alles, was abläuft, wenn der HG zerstört und das Kabel ausgestöpselt ist, unter Ereignismenge E2. Wir brauchen also zwei der drei möglichen Outputs des logic_compare, damit E1 bzw. E2 ablaufen können. logic_compare: Hauptgenerator: Stecker: Wenn jetzt zuerst der HG zerstört wird, haben wir die Situation, dass Initial Value = 1 und Compare Value = 1, womit wir bei OnEqual Ereignis E1 auslösen können. Wird danach der Stecker gezogen, haben wir IV = 2 und CV = 1, womit wir Ereignis E2 über OnGreaterThan auslösen können. Wird aber zuerst der Stecker gezogen, geschieht - wie gewünscht - nichts, weil das OnLessThan-Ereignis nicht definiert ist. Wird danach noch der Hauptgenerator zerstört, ist der IV = 2 und der CV = 1, wodurch wiederum das OnGreaterThan-Ereignis ausgelöst wird. Ein guter Tip: Wann immer verkettete Ereignisse nicht funktionieren wollen, zeichnet es euch auf ein Blatt Papier, plötzlich blickt man durch. --"Schnell wie der Wind, leise wie der Wald, tödlich wie das Feuer, standhaft wie der Berg - in Himmel und Erde wird niemand wie ich verehrt." - Takeda Katsuchiyo Shingen |
|
Profil || Suche |
|
002 06.10.2005, 11:57 Richman Moderator |
Interessant. :) Aber der OnPhysgunPickup Output des Steckers wird doch immer ausgelöst, wenn man den Stecker mit der Physgun greift. Ist es nicht so, dass man nur durch greifen des Steckers (nehmen wir an er liegt bereits am Boden) etwas auslösen kann? Oder das du das bereits gefixt, indem der Output nur einmal getriggert werden kann? Was den math_counter betrifft, denke ich, weiss ich woran das Problem lag. Richman's Hazardous Course - Status: 100% !!! |
|
Profil || Suche |
|
003 06.10.2005, 16:03 kensen |
Zu 1.: Ja, wird nur einmal getriggert, hab's auch merken müssen :) Zu 2.: Hört sich logisch an, bei Gelegenheit versuche ich's nochmal, aber der Effekt funktioniert gut mit dem logic_compare. "Schnell wie der Wind, leise wie der Wald, tödlich wie das Feuer, standhaft wie der Berg - in Himmel und Erde wird niemand wie ich verehrt." - Takeda Katsuchiyo Shingen |
|
Profil || Suche |
|
004 06.10.2005, 16:08 Richman Moderator |
Ich wollte dich nicht davon überzeugen, es lieber mit einem math_counter zu versuchen, sondern lediglich ergründen, warum er sich so verhalten hat. ;) Ich hätte wahrscheinlich das Problem sowieso ganz anders gelöst. Muss aber nicht heissen, dass es anders besser ist. ^^ Vielleicht noch ein Typ nebenbei: logic_relays kann man per Input Enablen bzw Disablen. So lassen sie sich sozusagen "unterbrechen". --Richman's Hazardous Course - Status: 100% !!! |
|
Profil || Suche |
|
005 06.10.2005, 16:30 kensen |
Falls du zufällig Zeit hast, würde mich doch eine kurze Beschreibung deiner Idee interessieren, ich hatte tausende von Gedanken, nur einer hat funktionert bis jetzt. --"Schnell wie der Wind, leise wie der Wald, tödlich wie das Feuer, standhaft wie der Berg - in Himmel und Erde wird niemand wie ich verehrt." - Takeda Katsuchiyo Shingen |
|
Profil || Suche |

