Construction Set Bildschirm schwarz werden lassen

Fellan

Freund des Hauses
Ich möchte, dass nach dem Aktivieren eines Activators der Bildschirm schwarz wird. Ist der Bildschirm schwarz, soll eine MessageBox erscheinen. Sobald diese weggeklickt wurde, wird der Bildschirm wieder normal. Ist es möglich, das per Script zu machen? Im Wiki werde ich leider nicht fündig.

Hier mal das, was im Script genau passieren soll:

Code:
scn ScriptnameXYZ

short done

begin onActivate Player

if ( done == 0 )
   player.MoveToMarker [I]MarkerID[/I]
[COLOR=Black][B]   Bildschirm schwarz machen
[/B]   MessageBox "Hey, du bist bewusstlos und wachst gleich wieder ganz wo anders auf!"
[B]   Bildschirm wieder normal machen, sobald die MessageBox weggeklickt wurde
   Spieler soll liegend "erscheinen" ("Liegen"-Animation starten, er soll direkt wieder aufstehen)
[/B]   [I]NPCRef[/I].Activate Player
   set done to 1
endif

end[/COLOR]


Die konkreten Fragen sind also:

Ist es möglich, den Bildschirm mit einem Script-Befehl schwarz zu machen und wie mache ich ihn danach wieder normal?

Wie kann ich den Spieler in der "Liegen"-Animation lassen, bis der Bildschirm wieder normal ist? Sobald der Bildschirm normal ist, soll man sehen, wie der Spieler am Boden liegt und wieder aufsteht. Also so, als wenn man z.B. im Kampf umgeworfen wurde.
 
Ich schätze, dabei soll auch das HUD, etc. ausgeblendet werden? Ansonsten hätte ich (als jemand, der nicht scripten kann ;) ) es einfach mal versucht, mit Blindheit zu faken. ^^

Gruß, Doom
 
Gibt es denn einen Blindheits-Zauber oder -effekt? Das HUD ausblenden wäre zwar schön, stört aber kein Bisschen, wenn es trotzdem da ist. Es geht mir hauptsächlich darum, dass der Spieler nicht sieht, dass er von Punkt A liegend zu Punkt B, der ganz wo anders und ohne Tür ist "gebeamt" wird. Das HUD stört da nur wenig.

edit: @Martimelee: Dann müsste ich aber eine Geforce 7xxx mit meiner Mod mitliefern, das will ich nicht. ;)
 
Eine einfache Andere Möglichkeit wäre auch einfach den Spieler in einen Raum ohne lights, in der gleichen cell zu teleportieren, die Message Box erscheinen zu lassen, und wenn diese weggeklickt ist, den Spieler einfach wieder an den alten Punkt zurück teleportieren zu lassen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Fellan
theoretisch könntest du den spieler auch in eine komplett leere zelle beamen. dort ist dann alles schwarz. du musst halt eine wand oder so als boden hinstellen, aber die bekommt man ja nich tzu gesicht, weil es dunkel ist ;)
dann setzt du ne trigger zone und lässt sie auslösen das die message box kommt. nach dem wegklicken wird der spieler in deine gewünschte zelle teleportiert. das mit der schwarzen zelle kannst du z. B. mit "coc Bruma" machen.
ich bin nicht scripter, also muss nich trichtig sein was ich hier laber :-D
lg


*edit:* whoa ne, Playkid war schneller und hat das selbe geschrieben xD
 
  • Like
Reaktionen: Fellan
@Playkid: Die Cell, in der er sich befindet, hat leider eine Grundbeleuchtung. Dann erstelle ich halt eine DummyCell ohne Licht, in der dann die MessageBox erscheint und der Spieler wieder zu Punkt B teleportiert wird.

Bleibt nur noch die Frage, wie ich den Spieler nach dem "MoveToMarker" zu Punkt B, also kurz vor den NPC, mit dem er am Ende reden soll, liegend erscheinen lasse.

edit: @roobsi: Siehe oben. ;) Aber danke für den Tipp mit der TriggerZone, das hätte ich bestimmt wieder irgendwie anders und auf jeden Fall falsch gemacht.
 
Dann erstelle ich halt eine DummyCell ohne Licht,

Das hätte aber den Nachteil, dass ein Ladebildschirm angezeigt würde. Für eine ähnliche Situation (Spieler wird niedergeschlagen und soll dann eine Weile bewusstlos in Schwärze verweilen) haben wir, d.h. Beolo, in unserer Mod eine "Blackbox" gebaut. Einfach ein großer Würfel, der Innen völlig schwarz texturiert ist. Der Würfel befindet sich in der selben Zelle und dorthinein wird der Spieler teleportiert.

Bleibt nur noch die Frage, wie ich den Spieler nach dem "MoveToMarker" zu Punkt B, also kurz vor den NPC, mit dem er am Ende reden soll, liegend erscheinen lasse.

Soll der Spieler in der selben Zelle wieder aufwachen, oder in einer anderen?

In unserem Fall konnte ich es so lösen, dass dem Spieler nach Ankunft in der schwarzen Kiste die Ausdauer entzogen wird, wodurch er zusammenbricht. Vorher bereits wird er unsichtbar gemacht und die Kontrollen ausgeschaltet. (Wodurch dann auch das HUD ausgeblendet wird). Später dann wird der Spieler im liegenden Zustand an den Ausgangspunkt zurückteleportiert. Mit MoveTo oder MoveToMarker funktioniert das aber soweit ich sagen kann gar nicht. Die Engine spielt verrückt, der Spieler erscheint meterweit vom Marker entfernt, machmal mitten in einer Wand oder im Boden und zappelt dann wie irre. Was meiner Erfahrung nach aber gut klappt, ist den Spieler mittels SetPos zurück zu befördern. Er kommt dann liegend an, anschließend erhält er seine Ausdauer zurück und rappelt sich wieder auf.

SetPos geht so aber natürlich nur in der selben Zelle. Wenn der Spieler woanders rauskommen soll, könntest Du es vielleicht noch mit PositionCell bzw. PositionWorld versuchen. Ob das klappt, kann ich leider nicht sagen.

Hier noch mein Skript für diese Sache. Nicht relevante Teile habe ich der Übersichtlickeit halber herausgenommen. Daher fehlen ein paar "Stages" im Ablauf.

Code:
scn bbTriggerHaustuerInnenSkript

short Stage
float Timer
float SecondsPassed


begin OnTrigger Player

	if GetStage bbEntfuehrung == 30
		SetStage bbEntfuehrung 32
	endif

end


begin GameMode

	if GetStage bbEntfuehrung == 32
		set SecondsPassed to GetSecondsPassed

		; Spielerkontrollen ausschalten
		if Stage == 0
			Player.SetRestrained 1
			DisablePlayerControls
			set Timer to 0.3
			set Stage to 1

		; Kurz warten
		elseif Stage == 1
			if Timer > 0
				set Timer to Timer - SecondsPassed
			else
				set Stage to 2
			endif

		; Autsch (Spieler kriegt eins übergebraten)
		elseif Stage == 2
			set Stage to 3
			PlaySound bbBlackjackHit

		; Ab in die Kiste
		elseif Stage == 3
			set Timer to 1.0
			set Stage to 5
			Player.saa 0.0
			Player.MoveToMarker bbDunkelkammerMarkerRef


		; Kurz warten, dann den Spieler bewusstlos machen
		elseif Stage == 5
			if Timer > 0
				set Timer to Timer - SecondsPassed
			else
				Player.ForceAV Fatigue -10000
				set Timer to 2
				set Stage to 6
			endif

		; Kurz warten, dann Messagebox anzeigen
		elseif Stage == 6
			if Timer > 0
				set Timer to Timer - SecondsPassed
			else
				MessageBox "Bla Bla Bla"
				set Stage to 9
			endif

		; Zurück aus der Kiste
		elseif Stage == 9
			set  Stage to 10
			Player.SetPos X -227
			Player.SetPos Y -427
			Player.SetPos Z 20
			Player.SetRestrained 0
			Player.ForceAV Fatigue -80
			Player.saa 1.0
		endif

		elseif (stage == 10) && (Player.GetKnockedState == 0)
			set Stage to 100
			SetStage bbEntfuehrung 40
			EnablePlayerControls
		endif

	endif
end
 
  • Like
Reaktionen: Fellan
Der Spieler soll beim Aktivieren des Activators nicht sofort zusammenbrechen - das zusammenbrechen soll der Spieler gar nicht sehen. Das mit dem Ladebalken wäre auch kein Problem, solange vermieden wird, dass man den Spieler in sich zusammenfallen sieht. Aufwachen soll er in einer anderen Cell, genauer gesagt in einem anderen WorldSpace.

Folgendes Szenario: Der Activator ist ein Schleusentor. Sobald der PC "durchgeht", soll der Bildschirm schwarz werden. Dann wird die QuestStage erhöht und somit eingeblendet. Darin steht, was gerade passiert ist (Spieler geht durchs Schleusentor, Flutwelle trifft ihn, er wird rausgespült und wacht am Strand zu Füßen eines NPCs wieder auf). Klickt der Spieler diese QuestStage dann weg, soll er aus der BlackBox heraus vor den NPC teleportiert werden.

Idee: Wenn man mit dem Konsolenbefehl "tm" (also Toggle Menus) die Menüs abschaltet, verschwinden auch die Ladebalken. Ist es möglich, das kurzzeitig per Script zu machen? Dann wäre das Ladebalken-Problem gelöst.

Alternativ könnte ich die von dir genannte BlackBox unter den Boden des Tamriel-WS setzen, wo der Spieler ja am Ende landen soll. Dann ist einmal kurz ein Ladebalken, aber wenn der Spieler wieder "aufwacht", nicht. Das finde ich besser als anders herum.

Wie stehen denn die Chancen, dass du mir diese BlackBox zukommen lässt? ;)
 
Du kannst den Spieler unmittelbar nach dem Aktivieren des Tores schon mal unsichtbar machen (Player.saa 0), dann kommt er bereits unsichtbar in der Kiste an und kann den darauffolgenden Zusammenbruch nicht sehen.

"tm" ließe sich nur unter Verwendung von OBSE per Skript ausführen. Mit Bordmitteln geht es leider nicht. :(

Die Blackbox kann ich Dir gerne schicken. Schreib mir am besten eine PM mit Deiner E-Mailadresse, dann sende ich sie Dir auf diesem Weg. Ich möchte aber nochmal sagen, dass diese Kiste von Beolo stammt. Außerdem ist mir vorhin wieder eingefallen, dass sie keinen "Deckel" hat, man somit nach oben rausgucken kann. Möglichweise ein Problem, wenn sie unterhalb des Erdbodens steht. Andererseits hat der Spieler in Deinem Fall so wie ich das sehe ja nicht viel Zeit, sich lange umzuschauen. Von daher mag es gehen. Sonst müsstest Du Beolo bitten, ob er Dir eine geschlossene Kiste macht.
 
  • Like
Reaktionen: Fellan
Auf OBSE will ich definitiv verzichten. Ein Ladebildschirm am Anfang, also im "Moment des Zusammenbrechens" ist zwar wie gesagt unschön, aber kein Problem. Ein Ladebildschirm im "Moment des Wiederaufstehens", also am Ende der ganzen Sache, wäre weitaus schlimmer.

Das die Blackbox oben zu ist, ist kein Problem. Ich werde einfach eine zweite Blackbox umdrehen und als "Deckel" oben drauf tun. Außerdem hat der Spieler genau genommen gar keine Zeit, sich umzusehen, ja nicht mal die Möglichkeit. Sobald er in der BlackBox ist, wird die neue QuestStage angezeigt, sobald er diese wegklickt, ist er schon wieder aus der BlackBox raus.

Sie haben Post. ;)


PS: Ich habe mir mittlerweile einen Script ausgeklügelt, sobald ich die Blackbox habe, werde ich ihn ausprobieren.

Dieser Script liegt auf dem ersten Activator, den der Spieler anklickt und beamt ihn nur in die Blackbox:

Code:
scn WGTFQUpperSewersOutScript01

begin onActivate Player

Player.MoveToMarker [B][I]MarkerInDerBlackboxRef
[/I][/B]DisablePlayerControls
MessageBox "Bei dem Versuch, das Schleusentor zu öffnen, erfasst euch plötzlich eine Flutwelle..."

end

Der folgende Script liegt nun auf der TriggerZone in der Blackbox. Beim Teleport in die Blackbox erscheint kurz ein Ladebildschirm, beim Teleport von der Blackbox an den Strand dann jedoch nicht mehr. Die TriggerZone übernimmt also den größten Teil der Arbeit:

Code:
scn WGTFQUpperSewersOutBlackboxScript01

short doonce

begin onActivate Player

if doonce == 0
   SetStage WGTQuest [B][I]Stage
[/I][/B]   [I][B]TriggerZoneRef[/B][/I].Enable
   set doonce to 1
endif

Player.saa 0
Player.ForceAV Fatigue -9999999
Player.saa 1
Player.MoveToMarker [I][B]MarkerVorDemNPCRef
[/B][/I]Player.ForceAV Fatigue +9999999
EnablePlayerControls

end

Vor dem NPC steht dann auch noch eine TriggerZone, die den NPC den Spieler ansprechen lässt:

Code:
scn WGTFQUpperSewersOutNPCActivatorScript

short doonce

begin onActivate Player

if doonce == 0
[I][B]   NPCRef[/B][/I].Activate Player
[I][B]   TriggerZoneRef[/B][/I].Disable
   set doonce to 1
endif

end

Zum zweiten Script habe ich noch eine Frage: Ich möchte, dass der PC in der Blackbox zusammenbricht, der Spieler davon aber nichts mitbekommt. Wird der PC wieder aus der Blackbox geholt, soll er auch noch auf dem Boden liegend ankommen, das aufstehen soll der Spieler aber schon sehen - wird das in meinem Script auch genau so passieren?
 
Außerdem hat der Spieler genau genommen gar keine Zeit, sich umzusehen, ja nicht mal die Möglichkeit.

Diese Zeit wirst Du ihm allerdings geben müssen. Sowohl für das Zusammenbrechen als später auch das Wiederaufstehen. Wenn Du dem Player, so wie momentan in Deinen Skripten in direkter Folge die Ausdauer entziehst und gleich wiedergibst, hat das Spiel keine Zeit die Zusammenbruch-Animation abzuspielen (auch wenn dieses vom Spieler nicht gesehen werden kann/soll). Außerdem wirkt es meiner Erfahrung nach "dramaturgisch" nicht gut, wenn die Ereignisse zu schnell aufeinander folgen. Deswegen habe ich in meinem Skript oben auch immer wieder kleine Pausen eingebaut.

Zu Deinen Skripten

Player.MoveToMarker wirkt wie ein Return, d.h. die danachfolgenden Befehle werden nicht mehr ausgeführt. In dem ersten Skript würde der Spieler zwar noch in die Kiste gesetzt, doch die MessageBox würde nicht angezeigt.

Das DisablePlayerControls kannst Du bequem vor das MoveToMarker setzen, bei der Messagebox käme es drauf an, wie es sein soll. Wenn sie erst in der Kiste angezeigt werden soll, müsste das später, nach dem Transport, ausgelöst werden. Leider ist dann ja der blöde Loadingscreen davor. Vielleicht wären zwei Messageboxen gut? Eine vor der Abreise ("Eine Flutwelle erfasst Euch..."), dann der Ladebildschirm und in der Kiste danach noch eine Meldung ("Ihr kommt langsam wieder zu Euch..." oder sowas in der Art).

Im zweiten Skript gilt für das Player.MoveToMarker das gleiche wie oben. Die nachfolgenden Befehle würden nicht mehr ausgeführt. Desweiteren habe ich, wie bereits geschrieben, schlechte Erfahrungen damit gemacht, den bewusstlosen Player mittels MoveTo(Marker) zu versetzen. Du kannst es natürlich probieren, vielleicht klappt es in einem Exterior besser. Ansonsten blieben noch SetPos oder evtl. PositionWorld.

Player.ForceAV Fatigue -9999999

Bei solch "astronomischen" Werten spielt die Engine gerne mal verrückt. Den genauen Wertebereich kenne ich leider nicht. Es ist aber auch gar nicht nötig, die Ausdauer soweit zu verringern. Es muss nur reichen, damit die automatische Regeneration nicht während der vorgesehenen Aufenthaltsdauer in der Kiste die Ausdauer bereits wieder über Null bringt. Player.ForceAV Fatigue -1000 sollte genügen, denke ich.

Player.ForceAV Fatigue +9999999

Das wäre falsch. Einmal wegen dem Pluszeichen (gibt ne Fehlermeldung). Vorallem aber, weil dadurch die Ausdauer auf den angegeben Wert eingestellt würde. Der Spieler hätte danach wohl nie wieder das Problem, dass ihm mal die Puste ausgeht. ;) ForceAV setzt den ActorValue ja direkt, anders als ModAV, welches ihn modifiziert.

Besser wäre es meiner Meinung nach, nach dem Transport zum NPC einen kleinen negativen Ausdauer-Wert einzustellen. Der Player bliebe dann noch zwei, drei Sekunden zu Füßen des NPC liegen, bevor seine Ausdauer dann von allein größer als Null wird und er wieder aufsteht. Ob der Spieler noch liegt bzw. sich im Aufstehen befindet, kannst Du per GetKnockedState abfragen und erst wenn er wieder steht den NPC reden lassen.

Wird der PC wieder aus der Blackbox geholt, soll er auch noch auf dem Boden liegend ankommen, das aufstehen soll der Spieler aber schon sehen - wird das in meinem Script auch genau so passieren?

Nö. :) Weiter oben im Thread hatte ich ja bereits ein funktionierendes Skript für eine ähnliche Situation angegeben. Das anzupassen wäre imho einfacher, als eine Lösung mit lauter Triggerboxen zu versuchen. Ohne GameMode-Block wirst Du ohnehin nicht auskommen, dann könnte man den Ablauf in der Kiste und am Strand auch gleich in einem Skript zusammenfassen.
 
  • Like
Reaktionen: Fellan
Du sagst was von "GetKnockedState" - gibt es denn dann auch ein "SetKnockedState", mit dem ich den PC "umhauen" kann, ohne mit "ForceAV" zu arbeiten?

Ist es möglich, die Hinfallen-Animation zu überspringen und den PC trotzdem hingefallen am Strand ankommen zu lassen, wo dann die Aufstehen-Animation abgespielt wird?

Zu den TriggerZones: Die sind meines Wissens nach erforderlich, ich persönlich finde es auch so viel übersichtlicher. Der erste Activator zeigt die MessageBox "Eine Flutwelle erfasst dich..." und bringt den Spieler in die Blackbox, dort kommt die MessageBox "Ihr kommt langsam wieder zu euch...", der PC "wird umgefallen" und schließlich an den Strand vor den NPC teleportiert. Die dortige TriggerZone gibt dem PC seine Ausdauer wieder und lässt ihn somit aufstehen. Sobald er aufgestanden ist, spricht ihn der NPC an und die TriggerZone wird entfernt.

Ich werde versuchen, deinen Script zu verwenden bzw. erstmal meine eigenen zu überarbeiten.
 
gibt es denn dann auch ein "SetKnockedState",

Leider nicht. Mir ist keine bessere Methode bekannt, den Spieler umzuhauen, als seine Ausdauer auf einen Wert kleiner Null zu setzen. In anderen Foren-Beiträgen laß ich von Versuchen, mittels PlayGroup diesen Effekt zu erzielen. Soweit ich mich erinnere, hat das aber nicht geklappt.

Ist es möglich, die Hinfallen-Animation zu überspringen
Ich wüsste nicht, wie. :(
 
  • Like
Reaktionen: Fellan
Ich wüsste nicht, wie. :(

Indem man den Spieler direkt in die Liegend-Animation versetzt und ihn gar nicht wirklich hinfallen lässt? Ich habe aber absolut keine Ahnung, wie ich das erreichen könnte.

Außerdem habe ich jetzt meine Scripts überarbeitet und werde die mal testen. ;)
 
Mir ist keine bessere Methode bekannt, den Spieler umzuhauen, als seine Ausdauer auf einen Wert kleiner Null zu setzen.

Ich möchte das Thema nocheinmal aufgreifen, da ich hier wahrscheinlich schlechten Rat betreffend der Verwendung von ForceAV gegeben habe. Bislang hat es in meiner Mod stets so geklappt, wie ich es weiter oben beschrieb. Bis ich die Mod kürzlich mit einem anderen PlayerChar gestestet habe. Der stand dann plötzlich nach dem Niederschlag einfach nicht wieder auf.

Der erste Teil funktionierte noch, d.h. der PC wurde bewusslos und man konnte sehen (in der Konsole), dass die Ausdauer von selbst langsam wieder anstieg, wie zu erwarten. Nachdem später die Ausdauer dann per Skript wieder heraufgesetzt wurde, regenerierte sie aber nicht länger weiter von allein. Auch dann nicht, wenn ich sie testweise auf einen positiven Wert gesetzt habe. Auch Schlafen oder Zauber haben nichts genützt.

Im US-Forum fand ich wenig erhellendes dazu, außer dass von unvorhersehbaren Nebeneffekten berichtet wurde, wenn man mit ForceAV (ebenso ModAV) an der Gesundheit, der Magicka oder eben der Ausdauer des Spielers rumbastelt. Scheint was dran zu sein.

Ich habe es bei mir nun so geändert, dass die Ausdauer mittels eines Zaubers entzogen wird. Es handelt sich dabei um eine "Krankheit" mit Ausdauer entziehen, Duration 0, Magnitude 2000. Diese wird dem Spieler per Player.AddSpell hinzugefügt und sobald er wieder aufwachen soll mit RemoveSpell wieder entfernt.

Nicht so schön ist, dass eine Meldung "ZauberXY zur Zauberspruchliste hinzugefügt" angezeigt wird. Sie lässt sich aber nötigenfalls zumindest durch eine andere ersetzen. Desweiteren erwacht der Spieler nach Entfernen des Zaubers mit derjenigen Ausdauer aus der Ohnmacht, die er zuvor hatte (und nicht mit 0, wie ich es gerne hätte).

Aber immerhin scheint diese Methode zuverlässig zu funktionieren. Eine andere Alternative bestünde darin, OBSE einzusetzen. Der bringt eine Funktion ModAV2 mit, welche genauso wie die normalen Zauber funktionieren und angeblich keine "Nebenwirkungen" haben soll.
 
  • Like
Reaktionen: Fellan
Wie gesagt will ich OBSE absolut vermeiden - das ist zwar irgendwo eine schöne Sache, lässt sich aber viel zu kompliziert installieren und schreckt viele ab.

Da ich, während die Krankheit hinzugefügt und entfernt wird ja sowieso via "DisablePlayerControls" die Anzeigen ausgeschaltet habe, wird der Spieler das ja gar nicht sehen - oder betrifft "DisablePlayerControls" nicht die Messages?

Danke erstmal für den Tipp. Da die von mir eingesetzten Scripts momentan sowieso nicht funktionieren, kann ich das auch gleich noch abändern.



Zurück zu meinem eigentlichen Problem, nämlich, dass die Scripts nicht funktionieren, wie ich mir das denke.
Wie gesagt habe ich drei Activators, die jeweils einen Teil der "Arbeit" übernehmen. Der erste ist nichts weiter als eine Tür. Kein "MoveToMarker" - der Link der Tür befindet sich einfach in der Blackbox. Der Script, der auf der Tür liegt, sieht so aus:

Code:
scn Script1DerDenSpielerInDieBlackboxBringt

short doonce

begin onActivate Player

if doonce == 0
    AddTopic WGTAssassinT01
    WGTWEAssassine03QRef.Enable
    set doonce to 1
endif

[I];das soll nur ein Mal geschehen - falls der Spieler die Tür nochmal verwendet, soll er nur an den Strand gebracht werden![/I]

WGTTrigZoneInBlackboxRef.Enable [I];Activator in Blackbox wird "enabled"[/I]
WGTFQBlackboxref01.Enable 
WGTFQBlackboxref02.Enable [I];Blackbox selbst wird "enabled"[/I]
playsound AMBWaterfallLargeLP [I];Sound für die "Flutwelle"[/I]
MessageBox "Bei dem Versuch, das Gitter zu öffnen, erfasst euch plötzlich eine Flutwelle..."
DisablePlayerControls
Message " " [I];verhindert, dass der Spieler das AddSpell sehen kann[/I]
Player.AddSpell [B]IDDerKrankheit[/B]
Player.saa 0.0

Activate [I];Spieler benutzt die Tür und kommt in die Blackbox[/I]

end
Problem hierbei: Die MessageBox wird gar nicht erst angezeigt, der Sound wird jedoch abgespielt. Beim Teleport in die Blackbox stürzt das Spiel ab. Ist mir völlig unerklärlich. Wo liegt also mein Fehler?

Hier der zweite Script, der auf dem Activator in der Blackbox liegt (eine TriggerZone, der Spieler wird in die TriggerZone gebracht und aktiviert diese also automatisch):

Code:
scn ScriptDerTriggerZoneInDerBlackbox

short stage
short doonce
float timer
float SecondsPassed

begin onActivate Player

if doonce == 0
    WGTTrigZoneInFrontONPCRef.Enable [I];TriggerZone am Strand wird "enabled"[/I]
   set doonce to 1
endif

set SecondsPassed to GetSecondsPassed

if stage == 0
  Player.saa 0.0
  set stage to 1
elseif stage == 1
  if timer > 0
  set timer to timer - SecondsPassed
    else
  MessageBox " " [I];verhindert, dass der Spieler das AddSpell sehen kann[/I]
  Player.AddSpell [B]IDDerKrankheit[/B]
  set timer to 3
        set stage to 2
    endif
elseif stage == 2
  if Timer > 0
    set Timer to Timer - SecondsPassed
  else
  MessageBox "Langsam kommt euer Bewusstsein zurück..."
  Player.saa 1
  set stage to 0
  Player.MoveToMarker WGTFQMarkerInFrontONPC [I];Marker am Strand[/I]
endif
endif
end
Ist das mit den Timern so richtig? Das ist eine der Sachen, die ich überhaupt nicht verstehe. Ich möchte, dass etwa drei Sekunden gewartet wird, so dass der Spieler auch wirklich umfällt. Dann wird er "umgefallen" an den Strand gebracht, wo dann eine letzte TriggerZone ist, die folgenden Script beinhaltet:

Code:
scn ScriptDerTriggerZoneAmStrand

short doonce
short timer
short SecondsPassed

begin onActivate Player

if doonce == 0
   set SecondsPassed to GetSecondsPassed
   set timer to timer - SecondsPassed
   set timer to 3 [I];3 Sekunden Wartezeit, damit der PC aufstehen kann, bevor er vom NPC angesprochen wird[/I]
   WGTWEAssassine03QRef.Activate Player [I];NPC spricht PC an[/I]
   set doonce to 1
endif

[I];das ganze soll nur ein Mal passieren - falls der Spieler den ersten Activator nochmal abseits der Quest benutzt

[/I]MessageBox " " [I];verhindert, dass der Spieler das RemoveSpell sehen aknn[/I]
Player.RemoveSpell [B]IDDerKrankheit[/B] [I];Krankheit wird entfernt[/I]
WGTTrigZoneInBlackboxRef.Disable [I];TriggerZone in der Blackbox wird entfernt[/I]
WGTTrigZoneInFrontONPCRef.Disable [I];TriggerZone am Strand wird entfernt
[/I] WGTFQBlackboxref01.Disable 
WGTFQBlackboxref02.Disable [I];Blackbox wird entfernt[/I]

end
Der Spieler soll "umgefallen" am Strand ankommen, dann kurz da liegen und aufstehen - direkt nach dem Aufstehen soll der NPC ihn ansprechen.
 
Zuletzt bearbeitet:
Hmmm, kann Dir zwar auch nicht weiterhelfen, aber außer dem Audauerentzug würde eventuell noch der Paralysezauber helfen.

PHP:
player.AddSpell MS10ParalyzeAbility 

+

player.removespell MS10ParalyzeAbility

Funktioniert

PHP:
player.ForceAv Fatigue -1

denn nicht, wenn du den Jungen dann mit

PHP:
player.ForceAv Fatigue 20

wieder aufstehen lässt?

Ein Black Screen Commando ist mir nicht bekannt. In einer Zelle ist das kein Problem (einfach alle Lichtquellen auschalten), aber am Strand wüsste ich auch keinen Rat, außer einer Sonnenfinsterniss ;)

Das war mein dürftiger Beitrag :roll:
 
  • Like
Reaktionen: Fellan
Zur "Verdunkelung" habe ich ja schon die Blackbox von Brausebart. So soll das ganze am Ende einmal ablaufen:
  1. Spieler klickt Tür an
  2. MessageBox, dass der Spieler von einer Flutwelle erfasst wurde
  3. Sound einer Flutwelle
  4. Spieler wird in die Blackbox gebracht
  5. TriggerZone in der Blackbox macht den PC unsichtbar
  6. PC "wird umgefallen"
  7. MessageBox, dass der Spieler langsam wieder zu Bewusstsein kommt
  8. PC wird vor einen NPC am Strand teleportiert
  9. TriggerZone am Strand: Kurze Wartezeit, PC steht wieder auf
  10. Kurze Wartezeit, PC wird vom NPC angesprochen
...und der Rest des Ablaufs wird dann im Dialog geregelt (NPC redet mit PC, übergibt dem PC Gegenstand, NPC führt Zauber aus und verschwindet).

Das Problem, dass mein Oblivion schon beim ersten Script abstürzt kann natürlich mit meinem von Mods zugemüllten Oblivion zusammenhängen - ich werde wohl oder übel zum Xten Male neu installieren müssen.

edit: Achja, das mit dem "ForceAV" bereitet, wie von Brausebart berichtet, Probleme. Deswegen arbeite ich mit einem Zauber, der dem Spieler sofort 2000 Ausdauerpunkte entzieht. Ein Paralysezauber wäre auch gut, aber steht der Spieler denn dann auch bei der Aufhebung des Zaubers wieder auf?
 
Moment! Ich bin mir aber gar nicht mehr so sicher, ob es den Player überhaupt umhaut oder nur an Ort und Stelle verharren lässt und was Resistenzen ausmachen... müsste man mal ausprobieren. Außerdem wird der Player, wenn er zum Strand teleportiert wird, dortstehen und nochmal umfallen, was du nicht willst.

Hmm, das mit der Blackbox habe ich überlesen :oops:
Habe ich auch noch nie verwendet... werde mir das auch mal in meine persönliche Script-Liste aufnehmen und testen...

Edit: Ahh, jetzt verstehe ich, der Player wird einfach in dunklen Raum teleportiert und dann zurück... schade, dass es nicht einfacher geht. Mit den Triggern schlage ich mich selbst noch rum (hach, bei NWN war das so schön: Trigger malen, rechtsklick, script einsetzen ;)

dann viel glück weiterhin... wenn deine lösung funktioniert, könntest du ja noch mal bescheid sagen....

gruß sandro.

Nachrtrag:

Problem hierbei: Die MessageBox wird gar nicht erst angezeigt, der Sound wird jedoch abgespielt. Beim Teleport in die Blackbox stürzt das Spiel ab.

Könnte mir vorstellen, dass die Message deshalb nicht angezeigt wird, weil er zu schnell in das fehlerhafte Teleportscript springt. Was verwendest Du als Blackbox? Doch kein Interior, dann hättest du ja wieder den Ladebalken... Vielleicht hast du den Marker falsch gesetzt, wo er hinspringen soll... oder es besteht wirklich ein Konflikt mit einem Mod... habe selbst 2 Installationen, zum Scripten ohne Mods...
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Fellan