Brausebart
Abenteurer
oder betrifft "DisablePlayerControls" nicht die Messages?
Soweit ich bisher sagen kann, wohl leider nicht. Ich habe schon verschiedene Abläufe probiert, doch die blöde Message kam immer. Das beste was mir bisher gelang, ist die Nachricht durch eine andere zu ersetzen.
Zu Deinem ersten Skript:
Code:
Message " " ;verhindert, dass der Spieler das AddSpell sehen kann
Du brauchst glaube ich zwei solcher leeren Messages direkt nacheinander, um die Anzeige späterer Nachrichten (für ein paar Sekunden) zu unterdrücken.
http://cs.elderscrolls.com/constwiki/index.php/Special:Search?search=message+spam&fulltext=Search
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?
Ich tippe stark auf Timing-Probleme. In dem Skript passiert m.E. zuviel auf einmal. Genau kann ich es nicht sagen, da ich dergleichen noch nie mit einer Teleport-Tür gemacht habe. Doch wenn ich es richtig sehe, teleportierst Du den Spieler zu einem Ziel, welches erst im selben Frame enabled wird. Sowas ist immer für einen Absturz gut. Weshalb enablest Du überhaupt die Blackbox? Die könnte doch eigentlich die ganze Zeit dort sein, unter dem Boden sieht man sie ja nicht.
Ich würde versuchen, den Ablauf zeitlich zu strecken, so dass immer wenigstens ein paar Frames zwischen den Aktionen liegen. Also z.B. zuerst die Blackbox enablen und die Messagebox anzeigen, den Transport aber erst initiieren, nachdem der Spieler die Messagebox weggeklickt hat.
Zu Deinem zweiten und dritten Skript:
Ist das mit den Timern so richtig? Das ist eine der Sachen, die ich überhaupt nicht verstehe.
Nein, da die OnActivate-Blöcke jeweils nur einmal ausgeführt werden. Die Timer-Abfragen und das Weiterschalten der "Stage" würden somit nie ausgeführt. Richtig wäre es, den zeitlichen Ablauf im GameMode-Block zu steuern, welcher durch das Aktivieren ausgelöst wird. Etwa so (ungetestet):
Code:
scn ScriptDerTriggerZoneInDerBlackbox
short stage
short doonce
float timer
begin onActivate Player
if doonce == 0
WGTTrigZoneInFrontONPCRef.Enable ;TriggerZone am Strand wird "enabled"
set doonce to 1
[B]set Stage to 1[/B]
endif
end
begin GameMode
if stage == 1
Player.saa 0.0
set stage to 2
elseif stage == 2
if timer > 0
set timer to timer - GetSecondsPassed
else
MessageBox " " ;verhindert, dass der Spieler das AddSpell sehen kann
MessageBox " "
Player.AddSpell IDDerKrankheit
set timer to 3
set stage to 3
endif
elseif stage == 3
if Timer > 0
set Timer to Timer - GetSecondsPassed
else
MessageBox "Langsam kommt euer Bewusstsein zurück..."
Player.saa 1
set stage to 0
Player.MoveToMarker WGTFQMarkerInFrontONPC ;Marker am Strand
endif
endif
end
Anm.: Die Variablenzuweisung mit set SecondsPassed to GetSecondsPassed habe ich herausgenommen. Ist so eine Angewohnheit von mir, das immer so zu machen. Hier wird es aber eigentlich nicht gebraucht, da der von GetSecondsPassed gelieferte Wert eh nur einmal pro Frame benötigt wird. Von daher muss er nicht extra zwischengespeichert werden.
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...
Soweit ich sagen kann, bewirkt Paralyze keinen Zusammenbruch. Zumindest nicht bei Anwendung auf NPCs. Die stehen dann (meistens) stocksteif in der Gegend und taummeln nur ganz leicht hin und her. Nur selten kippen sie mal um. Wie das mit etwaigen Resistenzen aussieht, müsste man in der Tat noch prüfen. Gibt es Resistenz gegen Ausdauer-Entzug?