PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script Frage



Grimoa
18.02.2008, 19:40
Also, ich versuche grade, ein Teleportationsscript für Oblivion zu schreiben. Ich bin so weit, dass der Teleport an sich funktioniert. Nun soll aber jedes mal noch ein bestimmtes Geräusch ertönen und dem Spieler 10 gold abgezogen werden. Beides funktioniert prinzipiell, aber nicht immer. Mal passiert nur das eine, mal nur das andere, mal gar nichts, manchmal beides wie gewünscht.. Also von Geräusch und bezahlen. Der Transport klappt immer.

Der Scriptausschnitt sieht so aus:


if travel==0
playsound SPLAlterationCast
message " "
player.removeItem F, 10
message " "
player.moveto GriXHaldrhun

Was muss ich denn anders machen, damit zuverlässig der Sound ertönt und auch das Geld abgezogen wird? Wie gesagt, manchmal klappt es ja. Bin etwas überfragt.

Danke für Eure Hilfe!

Low Post
19.02.2008, 02:30
Was genau schief läuft weiß ich nicht, ich würde allerdings die beiden Message " '-Zeilen nacheinander schreiben.

Außerdem verwendet man in Script normalerweise die Editor-ID und nicht die Form-ID. Das wäre hier in dem Fall Gold001 statt F.

Ich hab ansonsten nur mal gelesen, dass Oblivion bei rechnerintensiven Zellen manchmal Script-Zeilen einfach überspringt. Vllt. liegt es ja daran.

Grimoa
19.02.2008, 09:11
Oookay... naja, vielleicht ist das laden einer neuen Zelle für meinen Rechner schon so intensiv, dass er keinen Platz mehr für mein kleines Skript hatte. :rolleyes: *auf etwas klapprigen Rechner schaut*

Gold001, gut, das wird geändert. Hatte das so schnell im CS nicht gefunden, und war selbst ein wenig überrascht, das F funktioniert.

Mit dem message" " habe ich herumexperimentiert, weil ich eigentlich einen Weg gesucht habe, eine kleine Pause zwischen den einzelnen Ereignissen einzubauen, so dass evtl der Sound dann vollständig gespielt wird. Das war so mein naiver Gedanke. Manchmal fängt er nämlich an, wird dann aber unfreundlich vom Ladebildschirm unterbrochen. Und spielt danach auch nicht zu ende.
Gibt es sowas wie eine "delay" oder "Pause"-Funktion?

Low Post
19.02.2008, 09:19
du könntest mit einem Timer-Script und GetSecondsPassed arbeiten:



short Delay
float Timer

if travel==0
if ( Delay )
if ( Timer > 0 )
set Timer to ( Timer - GetSecondsPassed )
else
set Timer to 0
set Delay to 0
player.moveto GriXHaldrhun
endif
else
message " "
message " " ;zum ausblenden von Messages
playsound SPLAlterationCast
player.removeItem Gold001 10
set Delay to 1
set Timer to 2 ;genauen Wert musst du dann halt durch ausprobieren herausfinden.