.| Autor | Beitrag |
|---|---|
|
000 17.07.2001, 02:31 Term |
Das versteh ich nicht?! Vielleicht erinnert Ihr Euch an die Szene in HL, wo in der Tiefgarage ein Gargantua (der, den man hinterher mit einem Luftangriff sprengen muß) erst ein Auto und somit auch zwei Grunts an die Wand drückt und dann ein anderes umtritt (wer's nochmal spielen will: map c2a5g). Ich brauch sowas ähnliches und was mich wurmt ist die Synchronisation des Gargs und der func_doors (= die Autos). Nun hab ich die Map dekompiliert und siehe da: es gibt nur einen einzigen Trigger und der lässt den Garg seine erste scripted_sequence (Auto schubsen) ausführen. So weit, so gut. Das erste Auto (= func_door) jedoch hat einen Namen, kann also eigentlich nur getriggert werden. Trotzdem verschiebt es sich genau dann, wenn der Garg seine "Schiebeanimation" ausführt, und das ohne speziell getriggert zu werden?! Bei Umtreten des zweiten Autos (func_door_rotating) ist es dasselbe. Meine Frage nun: sind Monster in der Lage, Türen zu bedienen obwohl sie für den Player gesperrt sind? Oder ist das eine Besonderheit des Gargantuas? --[ - Mindmotor.Studios - ]|[ - Poke646 - ]|[ - Spaceman - ] |
|
Profil || Suche |
|
001 17.07.2001, 07:38 Richman Moderator |
Ja, irgend wie geht das. Ich hab auch mal n' paar info_nodes vor und hinter eine für den Player verschlossene Türe gesetzt und diese dann noch auf World: Door (oder so) gestellt, und siehe an, einige Monster konnten problemlos durch diese Türe gehn, der Player jedoch nicht. --Richman's Hazardous Course - Status: 100% !!! |
|
Profil || Suche |
|
002 17.07.2001, 10:14 Digger |
Ich nehme an, dass es sich nicht auf Monster auswirkt, wenn man Türen einen Namen gibt. Sie können problemlos passieren, während sie für den Spieler getriggert ist, also nicht durch dagegenlaufen (oder use-drücken) zu öffnen. --greetingz, |
|
Profil || Suche |
|
003 17.07.2001, 12:09 Term |
Ok, dann scheint das also eine Eigenart der Engine zu sein. Leider hülft mir das bei meinem Problem nur bedingt weiter, da ich außer Türen auch ein paar andere Events synchronisieren muß. Ich beschreib Euch mal die Szene, vielleicht fällt einem von Euch ein, wie man das am schlausten macht:
Folgendes passiert da: Der Spieler durchläuft den trigger_once. Vor dem Panzer steht ein Grunt und winkt ihn rüber (bei mir sind das anfangs noch die freundlichen). Der Spieler ist aber durch den Zaun gefangen und muß mitansehen, wie der Garg losstampft. Der rennt durch den trigger_once, der die ganzen kleinen multimanager auslöst in denen Sounds, Sprites und Explosionen gesteuert werden. Bei der ersten SS wumst der Garg den Grunt durch die Luft, dieser ist danach platt. Dann läuft der Garg zum Panzer und schmeißt den um (meine func_door_rotating). Dann läuft er zum Schild rüber und tritt das ein (Explosion, func_walltoggle für kaputtes Schild). Zum Schluß brüllt er noch einmal rum (da muß der Sound (ambient_generic) mit der SS synchronisiert werden) und rennt daraufhin wieder zu seinem Ausgangsplatz zurück. Auf dem Weg dahin kommt er an der Laterne vorbei die daraufhin explodiert und umkippt (func_door_rotating). Mein Problem ist es nun, daß ich nie genau vorhersagen kann, wann sich der Garg an welcher Stelle befindet. Manchmal ist er schneller an Ort A, manchmal nicht. Bei den Türen wäre das ja egal da er sie durch seine Präsenz (und somit garantiert zum richtigen Zeitpunkt) auslöst, aber das Eintreten des Schildes zum Beispiel lässt sich so nicht regeln :/ Wie würdet Ihr so eine großangelegte Scriptfolge machen? --[ - Mindmotor.Studios - ]|[ - Poke646 - ]|[ - Spaceman - ] |
|
Profil || Suche |
|
004 17.07.2001, 13:26 Freaky |
Kannste nicht mehrer einzelne trigger machen? ist zwar umständlicher als alles mit MMs zu machen, aber dann müsste es doch genau gehen, oder?! Also lass das Gargantua (oder wie das heisst!) vor das Schild laufen... da machste dann nen trigger hin, der das schild zerstört... ist zwar umständlich, aber dann müsste es doch funzen, oder?! -- |
|
Profil || Suche |
|
005 17.07.2001, 13:39 apfelkorn |
mh... es ist nicht möglich, das irgendein entity durch die präsenz des garg getriggert wird. Ich würde das so machen: Stell an das Schild ein func_door (Unsichtbar und nicht fest [not_solid]) der gargame... gargantua kommt, func_door wird automatisch getriggert und das func_door triggert automatisch den multimanager für explosion. Vielleicht geht das ja... :) apfel -- |
|
Profil || Suche |
|
006 17.07.2001, 13:42 Term |
Hehe, die Idee hatte ich gerade auch und hab alle Scripts umgeschrieben, so daß der Garg erst an der Stelle seiner jeweiligen SS in einen Trigger läuft, der die dazugehörigen Events auslöst. Allerdings läuft der Garg auf dem Weg zum Schild und zurück ja mehrmals (in umgekehrter Reihenfolge) durch diese Trigger so daß ich sie auch noch mit multisources sperren musste (so daß zum Beispiel der Panzer nicht schon umkippt, wenn der Garg ihn auf dem Weg zum Grunt streift). Die multisources wiederum müssen ja auch getriggert werden und das Ganze hat meinen Entity-Eintopf nochmal fast verdoppelt. Nach dem Kompilieren lief dann alles schief (warum auch immer) und ich hab keinen Bock mehr, das Ganze wieder auseinanderzupuzzeln :) Ich werde also bei der ersten Version bleiben und den ersten trigger_once genau an die Stelle der ersten SS (Grunt umkloppen) setzen. Der Rest der Aktionen wird dann zwar mehr oder weniger im freien Fall ausgelöst, aber das passt bis auf 0.2 sec genau und das muß dann halt reichen. Ich sitze an dieser Szene jetzt schon zwei Tage und irgendwann is gut :) [edit] Ups, meine Antwort war eigentlich für freaky gedacht, aber für Apfelkorn passt sie ja eigentlich auch noch [/edit] --[ - Mindmotor.Studios - ]|[ - Poke646 - ]|[ - Spaceman - ] Dieser Beitrag wurde am 17.07.2001 um 13:44 von Term bearbeitet. |
|
Profil || Suche |
|
007 17.07.2001, 13:56 Retro |
Term du newbie! =D Nein, hehe. Also das biste nen bischen falsch angegangen... Die Monster brauchen wirklich unterschiedliche Zeiten um von A nach B zu kommen. Naja, aber mit mehr trigger_once's krigste das schon hin, aber mit mm's kann man nicht viel anfangen, weil auf die Monster kein verlass ist! hehe --shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ |
|
Profil || Suche |
|
008 17.07.2001, 14:38 slaender |
Ich glaube zwar, dass sich Retro Deinen ersten Text nicht durchgelesen hat, aber ich frage mich auch, warum Du das nicht mit einzelnen scripted_sequence machst? So wie in HL (c2a5g) halt auch, dann weisst Du doch, wann er an einzelnen Stellen ist und die einzelnen Türen erst noch einer sequence freigeben sollte ja auch kein Prob sein! -- |
|
Profil || Suche |
|
009 17.07.2001, 15:31 Retro |
Doch... klar hab ich mir das alles durchgelesen, aber was soll an meiner Methode falsch sein? Das funktioniert in dem Fall sogar perfekt, weil der Player erst garnicht dazwischen funken kann... Oder was meintest du slaender? --shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ |
|
Profil || Suche |
|
010 17.07.2001, 16:12 Term |
Tja Retro, also eigentlich erzählst Du ja genau das, was ich schon versucht habe :) Natürlich werden die SS jeweils von einer anderen ausgelöst, alleine schon um wirklich keine Lücke für die AI zu lassen, die ansonsten ja sofort den zuschauenden Spieler angreift (was sie übrigens trotzdem noch tut, zumindest das rote Auge blitzt kurz auf). Nur ist das Problem mit den triggern_once, die nur für den Garg auszulösen sein sollen, daß diese nicht auf die Master ansprechen die ich Ihnen zuteile. Außerdem weigerte sich meine func_door_rotating aus unerfindlichen Gründen, vom Garg umgekippt zu werden (so wie es das in c2a5g tut). Mein eigentliches Problem ist es, daß ich in dieser Szene so dermaßen viele Events steuern muß, daß die Fehlerbeseitigung fast unmöglich ist wenn ein einzelnes Event fehlerhaft arbeitet. Für alle Hardcores, hier mal der derzeitige Ablauf: - Player rennt durch trigger_once, dieser feuert garg_ss1 (Grunt umkloppen) Sooo Retro, jetzt nenn mich nochmal Newbie! :) Ich glaube ich kann mit Fug und Recht behaupten, daß es im ganzen HL keine einzige Szene gibt, die so dermaßen kompliziert gescriptet ist und trotzdem schon nach 20 Sekunden vorbei ist. Nachdem ich das alles jetzt mit trigger_once und Mastern umgesetzt habe funktionierte schon die zweite Animation nicht mehr... und vielleicht kannst Du Dir jetzt vorstellen, daß ich in diesem Wirrwarr bestimmt nicht nach dem Fehler suchen werde! :) --[ - Mindmotor.Studios - ]|[ - Poke646 - ]|[ - Spaceman - ] |
|
Profil || Suche |
|
011 17.07.2001, 16:15 Term |
Ach so, und nochwas: wenn man die func_door_rotating als target einer SS angibt (was slaender vorgeschlagen hat), wird diese natürlich erst nach Beendigung der Animation ausgeführt, also in diesem Falle: der Garg reisst die Arme hoch und 1 Sekunde später fliegt wie von Geisterhand der Panzer durch die Luft :) Das ist ja der Hauptgrund, warum ich überhaupt mit Triggern rumhampel, die Targetfunktion der SS ist nämlich sehr unzuverlässig. --[ - Mindmotor.Studios - ]|[ - Poke646 - ]|[ - Spaceman - ] |
|
Profil || Suche |
|
012 17.07.2001, 16:17 slaender |
Ne is ok! Ich hatte aber noch ne andere Idee im Kopp, stimmt schon. So, ich dachte mir, bevor ich hier müll erzähle teste ich doch noch mal was --> ich hab nun das func_door an eine ganz andere Stelle verschoben, aber die Originaleinstellungen so gelassen --> er führt die sequence aus tritt in die Luft und das Auto wird an einer ganz anderen Stelle verschoben --> nun mußt Du Dich wohl mit Eurem Coder zusammensetzen! -- |
|
Profil || Suche |
|
013 17.07.2001, 16:49 Term |
Wow, das sind ja mal gute News! Ich habe die Map auch dekompiliert, konnte sie aber aufgrund von Vertexerrors die Winbsp da reingehauen hat nicht wieder kompilieren. Und da ich keinen Bock hatte, die Autos nachzubauen hab ich's erstmal gelassen. Aber das ist natürlich eine plausible Lösung auf die ich auch selbst hätte kommen können. Leider würde mir das ja nur was für den Panzer und nicht den Rest der Events nützen also kann ich auch gleich bei meiner Lösung bleiben. Zumindest zeigt das, daß die Jungs von Valve wahrscheinlich genau diesselben Probleme mit der Synchronisation hatten und deshalb den Coder genötigt haben, das Ganze fest zu implementieren. --[ - Mindmotor.Studios - ]|[ - Poke646 - ]|[ - Spaceman - ] |
|
Profil || Suche |
|
014 17.07.2001, 16:54 slaender |
Wieso? Mit der Lampe müsste das doch auch gehen, sofern eine der drei Sequencen dazu paßt. -- |
|
Profil || Suche |
|
015 17.07.2001, 17:07 Retro |
Hehe, newbie war natürlich nur nen scherz! *g* Ich kenn das Hardcorecoding! :) Sowas (noch größeres) hab ich nachgebaut, also das alles Kaputt geht... Aber bei meiner szene hab ich mit ca. 20mm's gearbeitet, und das alles an einem Tag gemacht, weil ich sonst eh den Durchblick verloren hätte, aber mit mm's wird du bei den dummen Garg nicht weiterkommen. Und mit den angreifen? Haste schonmal probiert den Garg auf "Prisoner" zu setzen? Ich weis, das du das weist, aber vielleicht hastes ja vergessen! hehe shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ |
|
Profil || Suche |
|
016 17.07.2001, 21:21 Digger |
schonmal mit den scriptet_sequence-Flags "Override AI" und "No Interruptions" versucht? Es könnte sein, dass das Monster dadurch immer den gleichen Weg nimmt und sich nicht beeinflussen lässt. Dann müsste die Zeitliche Abstimmung mit den Multi-Managern auch funktionieren. --greetingz, |
|
Profil || Suche |
|
017 17.07.2001, 22:48 Term |
Ne ne, das ist eh klar, der Godzilla rennt nur durch aiscripted_sequences, hab ich nicht erwähnt, tschuldigung. Anders geht es eh nicht, da ja irgendwie alle normalen SS am Anfang des Levels getriggert werden und dann durch nochmaliges Triggern erstmal wieder abgeschaltet werden (only god knows why). Die AI von HL scheint einfach nicht so gut programmiert worden zu sein, daß man sie mit diesen Befehlen wirklich übergehen kann, deshalb geht die Lampe am Garg wohl an. Ist mir auch egal, ich hab die Sequenz jetzt auf meinem Rechner bis auf 0.1 sec perfekt getimed und werde es die Tage mal auf dem Rechner eines Freundes testen. Wenn's da dann wieder asynchron läuft erschieß ich mich halt. --[ - Mindmotor.Studios - ]|[ - Poke646 - ]|[ - Spaceman - ] |
|
Profil || Suche |
|
018 17.07.2001, 22:57 slaender |
LOL, dann schick die fertigen maps aber vorher zu Deinem poke-Team! Ich hab noch ne super Idee für Dein Problem: geh Dir erstmal in ruhe nen Pils trinken, da kommen einem die besten Ideen. Mach ich nu auch --> *EinFröhlichesPrösterchen* -- |
|
Profil || Suche |
|
019 17.07.2001, 23:43 Term |
Nee, wenn ich mich erschieße fackel ich natürlich vorher meine Hütte ab, inkl. Rechner und Backups. Ich bin doch eh völlig bekloppt, wie kann man sich denn ein Jahr lang jeden Tag 12 Stunden mit dieser Behelfssoftware rumschlagen um ein Spiel zu erstellen, daß hinterher keinen Pfennig bringt?! Ja, seht den Fakten ins Auge: wir sind alle bescheuert! Wozu das Ganze? Die Girls interessiert es einen Scheißdreck ob wir alle Entities im Schlaf runterbeten können, unsere Eltern machen sich ernsthafte Sorgen und suchen schon mal den Psychologen aus den gelben Seiten und unsere Freunde erschrecken sich zu Tode, wenn (wenn!) man mal auf einer Party auftaucht weil man aussieht wie so'n Gothic-Punk. Ich werd Gärtner. --[ - Mindmotor.Studios - ]|[ - Poke646 - ]|[ - Spaceman - ] |
|
Profil || Suche |
|
020 18.07.2001, 00:37 Retro |
Denkste die Frauen wollen was von nem "Gärtner"?! =D Am besten lösch die ganze Geschichte mit dem Garg mal, und bau alles von anfangan neu auf. Wird wohl das Sinnvollste sein, da man bei dem Gewirre von mm's und sonstigen Krams keinen Überblick mehr hat. --shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ |
|
Profil || Suche |


