Construction Set Spieler im Bett wieder aufwachen lassen

Fellan

Freund des Hauses
Das ist nicht so einfach, wie es sich anhört! ;)

Folgendes Szenario: Der Spieler durchsucht ein Haus. Plötzlich gehen im Keller sämtliche Lichter aus, der Spieler steht im Dunkeln. Dank "DisablePlayerControls" kann er keine Fackel benutzen. Plötzlich (wenige Sekunden nachdem das Licht ausgegangen ist) wird er von hinten niedergeschlagen. Nachdem er einige Zeit in einer Blackbox zugebracht hat (passende Meshes dafür habe ich), wo er via MessageBox und QuestStages aufgeklärt wird, was da denn gerade passiert ist, soll er in einem Bett im ersten Stock landen - liegend, nicht vor oder auf dem Bett stehend!

Die ganze Prozedur funktioniert soweit gut, aber ich will, dass der Spieler im Bett liegt, eine MessageBox erscheint und er nach dem Wegklicken der MessageBox aufsteht. (Wie) ist das möglich?

Außerdem sollen sämtliche (sämtliche! Bestimmte Gegenstände abhängig von Rasse und Geschlecht werden ähnlich wie beim Gefängnisbesuch hinzugefügt) Items aus dem Inventar des Spielers entfernt werden und für längere Zeit in einen nicht-respawnenden Dummy-Container in einer Dummy-Cell gelegt werden, er soll sie ja am Ende auch wiederbekommen. (Wie) ist das möglich?

Danke schonmal für die Hilfe. :)
 
Spielercharakter liegen nicht in Betten herum, zumindest nicht defaultmässig. Du müsstest eine neue Idle-ID erstellen und der dann eine Schlafanimation zuweisen. Das Idle benötigt zudem noch bestimmte Bedingungen, da eine Animation nicht direkt mit dem Namen der ID gestartet werden kann. Nicht daß sich plötzlich ganz Cyrodiil schlafen legt. :D
Mit dem Befehl "Idle" werden die Animationen durchsucht und diejenige abgespielt auf welche die Bedingungen als erstes zutrifft.
Es gibt doch dieses Modul, welches dem Spieler ermöglicht bestimmte Animationen auszuführen die normalerweise den NPCs vorbehalten sind. Da könntest Du mal nachschauen wie es gemacht wird.

Mit "RemoveAllItems" kann das Gepäck des Spielers geleert werden, gibt man als Ziel einen anderen Container an, so werden die Objekte dahin transferiert. Willst Du rassenspezifisch dem Spieler was geben, müsste ein "AddItem" mit der Bedingung "GetIsRace" ausreichen.

Gruß, Gert
 
  • Like
Reaktionen: Fellan
Beolo schrieb:
Mit "RemoveAllItems" kann das Gepäck des Spielers geleert werden, gibt man als Ziel einen anderen Container an, so werden die Objekte dahin transferiert. Willst Du rassenspezifisch dem Spieler was geben, müsste ein "AddItem" mit der Bedingung "GetIsRace" ausreichen.

QuestItems sind aber leider nicht von "RemoveAllItems" betroffen - gibt es eine Möglichkeit, dem Spieler diese auch abzunehmen? Wie sieht das bei Gefängnisbesuchen aus, werden da Quest-Gegenstände behalten?
 
Zu Spieler auf dem Bett platzieren:
Meine Idee wäre da, den Lähmenzauber, ggf. in leicht abgewandelter Form, zu verwenden.
Also: In der Blackbox erst dem Spieler sämtliche Resistenzen gegen Lähmung nehmen, Spieler mit dem Lähmzauber belegen und auf dem Bett platzieren. Wenn die Messagebox bestätigt wird, wird die Lähmung geheilt.

Vorteil beim Lähmenzauber:
  • Die Kamera wechselt automatisch in eine weiter entfernte 3rd-Person-Persepektive, auch wenn man in Egoperspektive spielt.
  • Man hat keine Kontrolle über seinen Ava.
  • Der Spieler lieht rum wenn er gelähmt ist.
 
  • Like
Reaktionen: Fellan
Londarus Trentos schrieb:
Soweit ich weiß: ja.

Wenn der Befehl da Gebrauch findet, aber keine Quest-Items entfernt, wie werden denn dann Quest-Items beim Gefängnisbesuch entfernt? Ich werde mir mal ein Gefängnis genauer ansehen. ;)

Cheecat schrieb:
Zu Spieler auf dem Bett platzieren:
Meine Idee wäre da, den Lähmenzauber, ggf. in leicht abgewandelter Form, zu verwenden.
Also: In der Blackbox erst dem Spieler sämtliche Resistenzen gegen Lähmung nehmen, Spieler mit dem Lähmzauber belegen und auf dem Bett platzieren. Wenn die Messagebox bestätigt wird, wird die Lähmung geheilt.

Vorteil beim Lähmenzauber:
  • Die Kamera wechselt automatisch in eine weiter entfernte 3rd-Person-Persepektive, auch wenn man in Egoperspektive spielt.
  • Man hat keine Kontrolle über seinen Ava.
  • Der Spieler lieht rum wenn er gelähmt ist.
Das mache ich in leicht anderer Form ja schon beim "zu Boden geschlagen werden". Aber der Spieler soll ja nicht sehen, dass er da gerade erst auf das Bett fällt. Problem dabei: Ich kann nicht kontrollieren, wie der Spieler am Ende liegt.

Das Bett kann ich ja auch stumpf weglassen, dann liegt er eben auf dem Boden. Ist vielleicht ohnehin besser.

Wenn der Spieler umgefallen ist, wird der Lähmungszauber entfernt, damit er in die Blackbox gebracht werden kann. "MoveToMarker" funktioniert nämlich nicht, wenn der Spieler keine Ausdauer hat, da stürzt das Spiel ab. Ich weiß nicht, wie es mit "SetPos" läuft, ich kann den Spieler ja von Blackbox A in Cell A nach Blackbox B in Cell B mit "MoveToMarker" bringen, ihn dann in Blackbox B umfallen lassen und mit SetPos an seine Position bringen. Ich werde das mal ausprobieren.
 
Wie wäre es mit einer full Actor Copy?

Code:
 set newRef to player.CreateFullActorCopy
mehr dazu findest Du hier: http://cs.elderscrolls.com/constwiki/index.php/CreateFullActorCopy

Die Kopie kannst Du ja dann wieder
mit
Code:
DeleteFullActorCopy
löschen.

In dem Quest "Düster durch einen Albtraum"
hat der NPC Henantier eine Animation in welcher er unruhig schlafend
im Bett gezeigt wird. In der Liste aller Animationen
gibt es Bettrollen etc. nur keine Ahnung wie die zugewiesen
werden. (berichte mal wenn Du das herausfindest.)
Der Spieler begibt sich per Amulett in die Traumwelt
und verliert seine Items in diesem Quest.

Unter MS05 findest Du alle Scripte zu diesem Quest
im TES CS.

Ausserdem gibt es die "MS05HenantierSleep" Ai Package,
vielleicht liesse die sich auf die Actor-Kopie anwenden?

Zu full Actor Copy gibt es in SI doch die Quest
"Symbole des Amtes"
wo in der Höhle "Milchar" gegen eine
schwarze Kopie des eigenen PC gespielt wird.
Das zugehörige Script habe ich allerdings nicht
gefunden.

Vielleicht hilft es Dir weiter?

PS: leider scheint es mal wieder Probleme mit SI zu geben.
Ich bekomme in diesem Quest bei installiertem SI
(aber deaktiviert) einen crash to desktop wenn ich
mich mit dem Traumamulett schlafen lege. An dem
"remove all items" kann es nicht liegen, meinem PC
habe ich vorher alle anderen Questrelevanten Items
abgenommen.
 
Zu Spieler auf dem Bett platzieren:
Meine Idee wäre da, den Lähmenzauber, ggf. in leicht abgewandelter Form, zu verwenden.
Also: In der Blackbox erst dem Spieler sämtliche Resistenzen gegen Lähmung nehmen, Spieler mit dem Lähmzauber belegen und auf dem Bett platzieren. Wenn die Messagebox bestätigt wird, wird die Lähmung geheilt.

Vorteil beim Lähmenzauber:
  • Die Kamera wechselt automatisch in eine weiter entfernte 3rd-Person-Persepektive, auch wenn man in Egoperspektive spielt.
  • Man hat keine Kontrolle über seinen Ava.
  • Der Spieler lieht rum wenn er gelähmt ist.


Es geht auch der -100% Ausdauer, Spieler fällt hin also so wie bei einem Niederschlag....auch hir wechselt die Kamera auf die 3th Person Ansicht...
 
  • Like
Reaktionen: Fellan
Das ganze hat jetzt ohne Bett so geklappt, wie ich mir das vorstelle. Das heißt:
  • DisablePlayerControls
  • Spieler wird zu Boden geschlagen (Zauber "Krankheit", -55555 Ausdauer, allen Resistenzen widerstehen)
  • Sobald er am Boden liegt, wird der Zauber wieder entfernt (denn: MoveToMarker funktioniert nicht ohne Ausdauer, warum auch immer!)
  • Spieler wird in Blackbox in der selben Cell via "SetPos"-Befehl gebracht
  • Spieler wird via "Player.saa 0.0" unsichtbar gemacht
  • MessageBoxes und QuestStages zeigen an, was gerade passiert ist
  • Spieler wird via "MoveToMarker" in die zweite Blackbox in einer anderen Cell gebracht
  • Krankheit wird wieder hinzugefügt, Spieler fällt also nochmal um (der Spieler merkt davon aber nichts, da der Spieler sich in der Blackbox befindet, via DisablePlayerControls keine Menüs zu sehen sind und der Spieler unsichtbar ist)
  • Spieler wird per SetPos "auf den Boden geworfen" (SetPos funktioniert ohne Ausdauer, aber nur in Interior-Cells!)
  • Krankheit wird entfernt, sobald der Spieler wieder steht, erscheinen wieder MessageBoxes, was passiert ist (oh, meine ganze Ausrüstung ist weg!)
Bevor Krankheiten entfernt/hinzugefügt und Ausrüstung weggenommen werden, kommt in den Script vor jeden (!) dieser Befehle ein

Code:
Message " "
Message " "
Message " "

Das unterbindet die direkt nachfolgenden Befehle, die ja eigentlich Messages hervorrufen würden.

Danke für die Hilfe. :)