Construction Set MoveTo + Lähmung = Unvorhersehbares Ergebnis

Andy1967

Reisender
Hat jemand von euch schon mal versucht mit einem MoveTo Befehl einen gelähmten Spielercharakter zu bewegen? Wenn ich es versuche wird der Charakter an irgendeine Stelle im vorgesehenen Worldspace bewegt, nur nicht dahin wohin er soll. Beende ich den Lähmungseffekt vor dem MoveTo geht alles wie vorgesehn. Kennt das jemand und/oder kann mir jemand erklären warum das passiert? Ich kann auch die Lähmung kürzer gestalten. Das ist eh nur Effekthascherei an der Stelle, aber ich würd gern verstehn was da grade abläuft.
 
Vermutlich wird da etwas unauber in die Physik-Engine eingegriffen. Man kann das manchmal sehen, je nachdem wie man trifft, dass der Gegner sich dann wie wild dreht, oder eben auch meilenweit durch die Gegend fliegt.
 
Jetzt wo du es sagts könnte es vielleicht wirklich an der Physik-Engine liegen. Gelähmt geht der Charakter zu Boden, ich versuche aber den Charakter zu einem "Xmarker heading" zu bewegen, also zu einem Marker an dem der Charakter eigentlich stehen sollte. Vielleicht macht das den Unterschied. Wenn ich die Game Engine wäre wüsste ich wahrscheinlich auch nicht ob ich in der Situation jetzt den Charakter in die Gegend stellen oder an dem Marker auf den Boden legen sollte.
 
Ein normaler XMarker bringt auch noch nicht den gewünschten Erfolg, scheint aber einen Unterschied zu machen: Mit einem Heading Marker taucht mein Charakter in der Mitte des Worldspaces auf. Mit einem normalen XMarker taucht mein Charakter statt dessen in der Mitte der Exterior Cell auf in der er erscheinen sollte. Dabei gibt es noch eine "lustige" Besonderheit:

Das MoveTo wird am Ende eines ScriptEffect Zaubers ausgelöst. Wenn die Lähmung (die gleichzeitig auf den Spieler gewirkt wird) länger hält als der Skript Effekt Zauber hängt sich mein Spiel auf. Wenn die Lähmung vorher aufhört ist alles gut. Wenn beides zeitgleich aufhört wird der Spieler an den Zielort versetzt (seh ich daran, daß es an der Stelle eine message gibt die per Triggerbox ausgelöst wird und die Message auch erscheint), wird dann aber direkt darauf in die Mitte der Exterior Cell versetzt und fällt dort quasi vom Himmel.

Fällt wohl in die wunderbare Welt der Oblivion Absurditäten mit denen man leben muss und die man nicht verstehen kann, auch wenn man es gerne möchte.
 
Zuletzt bearbeitet:
Das Problem mit der Lähmung war mir bislang noch nicht bekannt, was aber daran liegen mag, dass ich den Lähmungszauber nicht kenne und noch nie im Spiel in Aktion gesehen habe. Aber wenn Lähmung den Actor in den Havok-Mode versetzt, dann kann ich mir das Verhalten gut vorstellen. Animationsmodus und Physik sind ja zwei völlig unterschiedliche Dinge. Entweder errechnet Havok die Positionen der Bones einer Figur, oder sie werden über die Animationsdaten bestimmt.

Ich musste aber auch schon den sturzbetrunkenen Spieler, der im im Havok-Mode besinnungslos unter dem Tisch lag, in die Ausnüchterungszelle moven. :lol:
Zellübergreifend hatte ich keine Probleme damit. Nur wenn die neue Zelle geladen wird, steht der Spieler erst eine halbe Sekunde normal da, bis dann Havok wieder wirkt und er erneut zu Boden geht. Ein kleiner Schönheitsfehler, aber ansonsten funktioniert es einwandfrei. Wie es sich aber verhalten würde, wenn das MoveTo-Ziel innerhalb der Zelle ist, weiß ich auch nicht. Ich weiß nur dass MoveTo innerhalb eines Worldspace die Engine dazu veranlasst einen Wetterwechsel auszulösen - hat mich schon in den Wahnsinn getrieben.

Wie wäre es, nicht diesen Lähmungszauber zu verwenden, sondern dem Spieler einen selbst erstellten Spell (Krankheit) zu verpassen, der die Ausdauer komplett entzieht? Der Spieler geht dabei sofort in den Havok-Mode. Dann ihn mit SetPos dahin zu verschieben, wo man ihn haben will und erst dort den Spell wieder removen. Was willst Du eigentlich mit diesem MoveTo in Verbindung mit einer Lähmung bezwecken? Mir erschließt sich dein Szenario noch nicht wirklich. :)
 
  • Like
Reaktionen: Andy1967
Das Problem mit der Lähmung war mir bislang noch nicht bekannt, was aber daran liegen mag, dass ich den Lähmungszauber nicht kenne und noch nie im Spiel in Aktion gesehen habe. Aber wenn Lähmung den Actor in den Havok-Mode versetzt, dann kann ich mir das Verhalten gut vorstellen. Animationsmodus und Physik sind ja zwei völlig unterschiedliche Dinge. Entweder errechnet Havok die Positionen der Bones einer Figur, oder sie werden über die Animationsdaten bestimmt.

...

Wie wäre es, nicht diesen Lähmungszauber zu verwenden, sondern dem Spieler einen selbst erstellten Spell (Krankheit) zu verpassen, der die Ausdauer komplett entzieht? Der Spieler geht dabei sofort in den Havok-Mode. Dann ihn mit SetPos dahin zu verschieben, wo man ihn haben will und erst dort den Spell wieder removen. Was willst Du eigentlich mit diesem MoveTo in Verbindung mit einer Lähmung bezwecken? Mir erschließt sich dein Szenario noch nicht wirklich. :)
Ja, die Lähmung löst womöglich den Havoc Modus aus. Das ist ein ganz normaler Zauber aus dem Vanilla Oblivion der den Spieler zu Boden sinken lässt und für die Wirkungsdauer handlungsunfähig macht. Allerdings sinkt der gelähmte SC oder NSC recht langsam zu Boden, es ist also wahrscheinlich ein wenig anders als das normale Havoc. Mit letzter Sicherheit kann ich es auch nicht beurteilen aber es ist wohl tatsächlich so, daß hier in die "Knochenstruktur" des Charakters eingegriffen wird.

Was in dem Fall mit der Lähmung bezweckt wird ist eigentlich nur Effekthascherei. Das Szenario ist folgendes: Der Spieler wird in eine andere Welt versetzt. Voraussetzung ist einen Trank zu sich zu nehmen, woraufhin jemand den Zauber auf einen wirkt durch den die Reise ausgelöst wird. Mein Idee war durch die Lähmung zu zeigen, daß das mit 'Risiken und Nebenwirkungen' verbunden ist und die starke Magie den Charakter erst mal einen Moment flach legt bevor das MoveTo greift. Umgesetzt ist es im Moment so, daß bei ScriptEffectStart der Trankwirkung das Zaubern des NSCs ausgelöst wird und dieser Zauber wiederum in seinem ScriptEffectFinish (nach 4 Sekunden) das MoveTo auslöst. Die Lähmung hab ich Moment als zweite Wirkung in dem Zauber der auf den Spieler gewirkt wird (also ein Vanilla Zauber zusätzlich zu der Script Wirkung). Evtl. mach ich es so, daß ich das lähmen nur 3 Sekunden laufen lasse und dann direkt nach der Ankunft in der anderen Welt noch einmal ein Lähmen für ein oder zwei Sekunden auf den Spieler wirke. Das sollte keine Probleme machen und den gewünschten Eindruck beim Spieler hinterlassen.
 
Ich dachte mir schon, dass Du mit der Lähmung eine bestimmten Effekt darstellen willst, mir war nur nicht klar was Du da vorhast. Ich habe mir den Zauber mal angeschaut, eine Animation wird hier wohl nicht ausgeführt, ich nehme an sämtliche Animationen werden hier unterdrückt, so dass der Actor in der Stellung verharrt die er im Moment des Treffers hatte. Gleichzeitig wirkt schon Havok, so dass je nach Ausgangsstellung, ein etwas unterschiedlicher Fall zustande kommt.

Ich denke dieser Zauber zusammen mit MoveTo ist wirklich etwas kritisch, weil der einen zeitlichen Verlauf hat. MoveTo braucht immer einen "sauberen" Zustand, des Actors. Wenn da gleichzeitig noch andere Dinge ausgeführt werden, dann kann das zum Crash führen. Ich hatte bisher sehr selten CTD´s, jedoch wenn es krachte, dann war in fast allen Fällen ein MoveTo dran beteiligt.
Wenn Du den Player sowieso in eine andere Zelle/Worldspace moven willst, dann versuch doch mal die Lösung die ich für den betrunkenen Spieler nahm. Dieser Spell hat kein Ende, der Player geht halt zu Boden und bleibt da liegen bis Du ihm den Spell wieder wegnimmst. Das geschieht dann eben erst nach Ankunft in der anderen Welt. Dann brauchst Du dich auch nicht mit Lähmungszeiten herumschlagen. Wenn diese "Reise" in die andere Welt an einer festen Location, bzw. in eine Questhandlung eingebunden ist, würde ich auch keine Magieskripte nehmen, sondern ganz normale Objektskripte. Je klarer und definierter die Spielsituation und die Ausführung ist, desto weniger Ungemach wird sie dir bereiten. :)
 
  • Like
Reaktionen: Andy1967