Construction Set Skriptthread zum Construction Set

Hey ,

habe mal eine Frage zu einem Script das ich in meiner Mod verwenden will.

Das hier:
Code:
ScriptName TeavsFuneral01Script

short trigger01
short trigger02
short trigger03
short trigger04

short goToPyreNorlene
short goToPyreSova
short goToPyreRythor
short goToPyreTumyr
short goToPyreVerus
short goToPyreCei

short lightPyre
short backOff

short leavePyreNorlene
short leavePyreSova
short leavePyreRythor
short leavePyreTumyr
short leavePyreVerus
short leavePyreCei

begin GameMode
if (trigger01 == 1)
if (getCurrentTime >= 23 && getCurrentTime <= 23.5 )
set goToPyreNorlene to 1
set goToPyreSova to 1
set goToPyreRythor to 1
set goToPyreTumyr to 1
set goToPyreVerus to 1
set goToPyreCei to 1
set trigger02 to 1
set trigger01 to 0
endif
endif
if (trigger02 == 1)
if (getCurrentTime >= 23.7 && < 23.
set goToPyreNorlene to 0
set goToPyreSova to 0
set goToPyreRythor to 0
set goToPyreTumyr to 0
set goToPyreVerus to 0
set goToPyreCei to 0
set lightPyre to 1
;elseif (getCurrentTime >= 23.6 && < 23.8)
;set lightPyre to 0
;set backOff to 1
;elseif (getCurrentTime >= 23.7 && < 23.8)
;set lightPyre to 0
;set backOff to 0
;set trigger02 to 0
;set trigger03 to 1
endif
endif
if (trigger03 == 1)
if (getCurrentTime >= 0.5 && getCurrentTime <= 1 )
set leavePyreNorlene to 1
set leavePyreSova to 1
set leavePyreRythor to 1
set leavePyreTumyr to 1
set leavePyreVerus to 1
set leavePyreCei to 1
set trigger03 to 0
set trigger04 to 1
endif
endif
if (trigger04 == 1)
if (getCurrentTime >= 1.5)
set leavePyreNorlene to 0
set leavePyreSova to 0
set leavePyreRythor to 0
set leavePyreTumyr to 0
set leavePyreVerus to 0
set leavePyreCei to 0
set trigger04 to 0
endif
endif
end

Das Script stammte aus The Lost Spires, und da soll wohl irgendwie etwas verbrannt sein. Das es zum anfang noch heile war, aber zum Schluss nur noch Überreste und Arsche da lagen.

Ich will das genauso in meiner Mod machen. Nur wie? Ich kenne mich mit dem Script da oben garnicht aus, genauso wie mit dem anderen ganzen Scripten.
 
@Arielle:
Es könnte daran liegen, dass die Quest-ID mit einer Zahl beginnt. Änder das mal und auch in dem Skript.

@Nerrok:
Das gepostete Skript kann eigentlich nicht direkt mit dem Verbrennen etwas zu tun haben, weil dort nur Variablen gesetzt werden, was keinen direkten Einfluss auf die Spielwelt hat.
Aber du könntest es so machen, dass das Objekt disabled wird und du stattdessen Bruchstücke und Schmutz, etc. enablest. Als Übergang kannst du auch eine Flamme platzieren, wenn der Spieler Zeuge des Brandes sein soll.
 
  • Like
Reaktionen: Nerrok
Es könnte daran liegen, dass die Quest-ID mit einer Zahl beginnt. Änder das mal und auch in dem Skript.

Glaube ich eher weniger, denn ich habe jetzt 5 Quests, die alle mit 00 anfangen, und die dazugehörigen Scripte laufen wie geschmiert. Es muss einen anderen Grund geben. Vielleicht ist mein CS auch nur übermüdet:lol:.
Oftmals funktioniert bei mir eine Sache nicht auf Anhieb, einen Tag später ist plötzlich alles OK. Ich warte mal ab bis morgen und versuch's dann ingame nochmal. Danke erst mal für deine Mühe.

LG
Arielle 1000
 
ok, dann ist das das falsche Script.

Aber wegen dem disable usw. Muss man das mit den RefIDs machen? und funktioniert das auch mit Feuer? Ich weiss jetzt grad auch gar nicht wie man das machen muss, kenne mich mit Scripten garnicht aus.
 
Ja geht es.

Du gibst dem Ding ne ref Id und machst einen Haken bei persent Prefernce ) Hoffe das stimmt so ) Und regelst es dann einfach mit.


XY.disable
 
  • Like
Reaktionen: Nerrok
"Cut-Scene" Problem..

Hallo liebe Scharesoftler,

jetzt habe auch ich eine Frage. Die Situation sieht so aus:

Wenn man in einen bestimmten Trigger läuft, wird einem die "Kontrolle" über den Charakter entzogen, das heißt, man kann ihn nicht mehr bewegen (Wie beispielsweise bei der "Dunklen Bruderschaft- Quest", in der das Ritual zum Betreten der Mutter der Nacht durchgeführt wird). Währenddessen wird ein Musikstück (Eigentlich viel mehr ein Dialog) abgespielt. So weit, so gut.
Aber wie schaffe ich es, dass der Spieler die Kontrolle nach Abspielen dieses Musikstücks wieder bekommt?

Im Scripten bin ich leider nicht besonders gut, ich kann ein paar Standartsscript zusammenbasteln, aber das war es auch schon.
Das Script, das ich momentan für diese Stelle benutze (Welches natürlich nicht richtig funktioniert) sieht so aus:

scn 000MEISTER

Short doOnce

Begin GameMode

if ( doOnce == 0 )
disable
set doOnce to 1
endif

if ( GetDistance, Player < 300 ) && ( GetDisabled == 1 ) && ( doOnce == 1 )
enable
disablePlayerControls
streamMusic "Data\Music\Meister.wav"

endif

End

So. Das funkioniert auch alles, nur bekommt der Spieler die Kontrolle NACH Abspielen der wav.Datei nicht wieder.
Es wäre nett, wenn mir geholfen werden kann..

Wenn ich ein komplett anderes Script brauche, wäre das natürlich auch gut zu erfahren..

Also, danke schonmal jetzt,

MadHatter16
 
scn 000MEISTER

Short doOnce

Begin GameMode

if ( doOnce == 0 )
disable
set doOnce to 1
endif

if ( GetDistance, Player < 300 ) && ( GetDisabled == 1 ) && ( doOnce == 1 )
enable
disablePlayerControls
streamMusic "Data\Music\Meister.wav"

endif

End

Ich glaub', dass du dann nach dem Abspielen noch einmal enablePlayerControls setzen muss. Bin mir aber nicht so sicher :?
 
scn 000MEISTER

Short doOnce

Begin GameMode

if ( doOnce == 0 )
disable
set doOnce to 1
endif

if ( GetDistance, Player < 300 ) && ( GetDisabled == 1 ) && ( doOnce == 1 )
enable
disablePlayerControls
streamMusic "Data\Music\Meister.wav"
enablePlayerControls
endif

End


So? Das hatte ich auch schon ausprobiert, funktioniert aber auch nicht. Danke trotzdem, DarkRuler2500. Toll finde ich vor allem, das hier so schnell Antworten kommen. In anderen Foren ist das nicht so. Ein Hoch auf Scharesoft!

Back to the Topic. Gibt es jemanden, der sich aus all dem einen Reim machen kann, und aus dem Scriptgewusel das richtige Script schreiben kann?
 
Code:
scn 000MEISTER

Short doOnce
float timer


Begin GameMode

	if ( doOnce == 0 )
		disable
		set doOnce to 1
	endif

	if ( GetDistance, Player < 300 ) && ( GetDisabled == 1 ) && ( doOnce == 1 )
		enable
		disablePlayerControls
		set doOnce to 2
		Set Timer to [B]15[/B]
		streamMusic "Data\Music\Meister.wav"

	endif

	if doOnce == 2
		set timer to timer - getsecondspassed
		set doOnce to 3
		endif

	if timer <= 0 && doOnce == 3
		EnablePlayerControls
	endif

End

Indem du einen Timer einbaust kannst du bestimmen wann der Spieler wieder die Kontrolle erhält. Ich habe jetzt oben 15 eingetragen (bei der Fett markierten Stelle), dass wären also 15 Sekunden. Du kannst dann die Länge der .wav mit + 1-2 Sekunden eintragen.
Damit sollte das gewünscht Ergebnis erfolgen. :)

MfG Master of Worlds
 
Ja, das sollte funktionieren. Aber.. das tut es nicht. Seltsamer Weise tut mir das sogar Leid. Immerhin wird sich hier die Mühe gemacht.. Naja. Ich habe das mal probeweise mit den 15 Sekunden getestet, aber nach 15 Sekunden tut sich leider gar nichts. Auch mit der eigentlichen Länge der Datei lässt sich daran nichts ändern. Aber das Script.. Das macht doch Sinn! Ich verstehe das nicht. Vielleicht ist es nicht möglich?
 
Habe es jetzt nochmal etwas umgeschrieben, jetzt lief es bei mir zumindestens auch als ich es mal Ingame getestet habe. :)

Code:
scn 000MEISTER

Short doOnce
float timer


begin OnLoad
	if doOnce == 0
		disable
		set doOnce to 1
	endif
end


Begin GameMode
	if ( GetDistance, Player < 300 ) && ( doOnce == 1 )
		enable
		disablePlayerControls
		set Timer to 15
		set doOnce to 2
		streamMusic "Data\Music\Meister.wav"
	endif

	if doOnce == 2
		set timer to timer - getsecondspassed
	endif

	if timer <= 0 && doOnce == 2
		EnablePlayerControls
		set doOnce to 3
	Endif
End

MfG Master of Worlds
 
Also wegen dem verschwinden und hinzufügen Script.

Ich wollte das dann später so machen, das dies durch eine Queststage ausgelöst wird.
Wie muss dann das Script aussehen?
Das einzigste was ich weiss ist das scn , ...disable und ...enable... usw vorkommen müssen.^^
 
Dann hat mein Oblivion wohl ne Macke. Danke, wirklich, danke für die vielen Mühen, aber jetzt, mit dem neuen Script, werden die Player-Controls nicht disabled, und die Musik wird ebenfalls nicht abgespielt. Jetzt ist es so, als sei der Trigger gar nicht vorhanden. Das verstehe ich nicht. ARGH, so ein MIST!

:(
 
@MadHatter:
Wenn du sagst, es soll passieren, wenn der Spieler einen Trigger durchläuft, dann benutze doch auch einen "onTrigger"-Block:
Code:
scn name

short triggered
float timer

Begin onTrigger player

if triggered == 0
 disablePlayerControls
 streamMusic "bla"
 set triggered to 1
 set timer to x ; die Länge des "Musikstücks"
endif

end

Begin GameMode

if triggered == 1
 if timer >= 0
  set timer to (timer - getSecondsPassed)
 else
  enablePlayerControls
  set triggered to 2
 endif
endif

end
 
  • Like
Reaktionen: MadHatter16
Habe das Gefühl, dass dieser Post hier etwas untergegangen ist. Fakt ist jedenfalls, dass dieser Script zwar beim Wiederbeleben funktioniert, aber das mit dem Kill stellt sich leider quer :(

Code:
scn AAWaechterZeitEigenschaften

float timer

Begin GameMode

if getDead == 1
return
endif

if timer >= 0
set timer to (timer - getSecondsPassed)
else
set timer to 25
if KristallwacheLicht.getDead == 1 ; Waechter des Lichtes
KristallwacheLicht.resurrect 1
endif
KristallwacheLicht.resetHealth

if KristallwacheDunkelheit.getDead == 1 ; Waechter der Dunkelheit
KristallwacheDunkelheit.resurrect 1
endif
KristallwacheDunkelheit.resetHealth

if KristallwacheDaemmerung.getDead == 1 ; Waechter der Daemmerung
KristallwacheDaemmerung.resurrect 1
endif
KristallwacheDaemmerung.resetHealth

endif

end


Begin onDeath

KristallwacheLicht.kill
KristallwacheDunkelheit.kill
KristallwacheDaemmerung.kill

end
 
etwa so hier?

Code:
scn ...

if getstage ...
disable....
enable...
endif
end
Oder ist das falsch? Weil hab noch nie sowas gemacht.
 
Ich bräuchte ein Skript, dass wh total einfach ist aber ich kriegs trotzdem nicht hin :D
Und zwar hab ich eine Quest von der die Stage auf 10 gesetzt werden soll sobald ich mein selbsterstelltes Haus betrete/oder ein Tagebuch lese ist eigentlich egal

und danach eines dass bewirkt dass die stage auf 15 gesetzt wird nachdem ich 2 zombies im keller des hauses getötet habe

Schonmal riesigen Dank im Vorraus