Anfrage Bossmusik / Spezialmusik für Gegenden

Rakios

Reisender
Hi alle!

Ich habe eine Frage an Leute, die wissen, wie's geht^^.
Ich möchte nämlich gern spezielle Musiktracks an spezielle Ereignisse binden.
Man kann es sich so vorstellen:
Mega Endgegnerkampf gegen Mankar Camoran! Yeah, was passt besser als John Williams Duel of the Fates (Star Wars I, Kampf gegen Darth Maul)?
Aber stattdessen kriegt man nur luschige Normalkampf-Musik.
Wie kann man das zsammenfügen? Ich habe gesehen, dass dies in der Mod "Servant of the Dawn" angewandt wurde. Dort werden bestimmte Tracks an bestimmte Locations gebunden, die werden dort dann immer zuerst abgespielt!
Ich stell's mir so vor, dass man Oblivion (per Script?) sagt: "Wenn Mankar Camoran vs Player, dann spiel MusikXY." Oder "Wenn Player in [Mankars Halle] und Player in combat, dann spiel MusikXY."

Wie kann man das tun? Ich kann nicht glauben, dass es besonders umständlich sein soll. Evtl weiß auch jemand, wie das bei SotD abläuft.

Danke, Rakios.
 
Zuletzt bearbeitet:
Du kannst dir ja mal Sotd anschauen mit dem Mod-Translator und da denn das Script suchen.

Theoretisch sollte es mit StreamMusic funktionieren
Da das aber wies aussieht fehler beinhaltet, weiß ich nich obs geht.
Es gibt auch besondere Sound Commands welche OBSE benötigen.
Es wäre vllt. auch möglich nen Trigger zu setzen das wenn der player diesen betritt die Musik abgespielt wird oder eben ein Script was die Musik starten lässt wenn der Player den Kampf mit Mancar Camoran beginnt.
Kannst ja mal versuchen obs funktioniert, und wenns klappt noch mehr dieser Speziellen szenen machen.
Ob du die Musik kostenlos zum Download geben darf ist ne andere sache, also wärs ein Projekt für dich.
Lg
SirTroy
 
Danke erstmal.
Eigentlich hatte ich nicht vor, daraus eine Mod zu machen, die ich releasen würde... außerdem ist's mein erster Versuch mehr mit dem CS zu machen als nur einen neuen Baum hinzustellen.
Das mit dem ModTranslator ist 'ne gute Idee, werd mal schauen.:)

Edit:
So, hab nachgeschaut. Der/das Script für SotD der gesuchten Art, das ich finden konnte lautet
ScriptName 1SdStatueOldanworScript

Begin OnLoad

Streammusic "Data\Music\Special\fall_of_the_moai.mp3"

End

Jetzt frage ich mich, woher weiß der, wann er das abspielen muss? Und wie würde ein vollständiger Script dieser Art beispielhaft aussehen? (Und wie heißt eigentlich das Interior, das ich im Script angeben muss, um Mankars Thronsaal auszuwählen?)
 
Zuletzt bearbeitet:
ScriptName 1SdStatueOldanworScript

Begin OnLoad

Streammusic "Data\Music\Special\fall_of_the_moai.mp3"

End
:huh: Das ist alles? Bist du sicher, dass das die richtige Script ist? Weil so sollte es eigentlich nicht gehen.

Theoretisch sollte es mit StreamMusic funktionieren
Da das aber wies aussieht fehler beinhaltet, weiß ich nich obs geht.
Es geht schon, nur sehr umständlich. Adash verwendet z.b. glaube ich eine Script mit dem Streammusic Befehl. Nur war das in meiner Erinnerung sehr lang:?

Wenn Player in [Mankars Halle] und Player in combat, dann spiel MusikXY."
Das wäre möglich, ist aber noch leider viel zu grob (was mal wieder Bethsofts Schuld ist, das es noch erweitert werden muss:roll:)
 
Wie? Bitte, kannst du ein kleines Beispiel formulieren (oder auch jede(r) andere)? Ich möchte nach dem Vorbild dann selbst Scripts verstehen und bauen können.
Ich selbst habs noch nicht ganz raus, sollte aber im sinne von:

Code:
If player.getincell >CellID<
stremmusic >XYZ<
sein (Ganz grob und auch unvollständig, den Rest musst du situationsbedingt erstellen) Oder so ähnlich. Frag lieber nochmal einen Experten.
 
Ich hab nochmal rumgeforscht und versucht, selbst einen zu machen. Erstmal habe ich einen Quest gemacht "mankarsmusik", dann gleich neben "Script" einen neuen erstellt. Der Skript sieht jetzt so aus: (Script type: Quest)
scn mankarsmusikscript

Begin OnLoad

if 0003392D.startcombat player

Streammusic "Data\Music\Special\DuelOfTheFates.mp3"

enif

End

Beachtet bitte, genau so habe ich das eingegeben. Jetzt sagt er mir "Script 'mankarsmusikscript', line 3: Invalid Block type for Quets Script."
Grad dämmert mir, was das heißen sollen könnte. Nämlich, dass ich da lieber hinschreiben sollte "Begin Gamemode". Stimmt das?
Hab's mal gemacht, jetzt sagt er mir, er kennt das "D" aus der REFid von Mankar Camoran nicht. Ich schau nochmal nach, ob ich keinen Fehler darin hab.... Nein, kein Fehler. Ich versuch's mit der BASEid. LOL, jetzt sagt er mir, es required "explicit reference in quest script".
Bitte zähl mir mal jemand meine Fehler auf (mit Berichtigung), das wär nett.
Au, jetzt hab ich seine id noch in "" gesetzt und er hat's genommen! Fragt sich nur noch, ob das so funktioniert:lol:.
 
Auf was hast Du das Script gelegt? Auf ein Quest? Deine Fehlermeldungen
Invalid Block type for Quets Script
kommen daher, weil Du im Script oben rechts im Dropdown Menü "Quest" ausgewählt hast und nicht "Object". Je nach dem, wie Du das Script laufen lässt, musst Du das da einstellen.
Zum Thema begin: Lies mal hier
"begin GameMode" kann öfters mal Probleme machen, wenn es als Questscript eingebunden wird, muss aber nicht.

Versuchs mit
Code:
endif
=P
 
Das "Invalid Block Type" heißt das es den OnLoad befehl nicht für Quest gibt.
Du musst es also anders machen.
Du müsstest es also ungefähr so machen.
Code:
scn ScriptName

begin GameMode
   if (player.GetInCell [CellID] && playerIsInCombat) ;Oder eben [ID].StartCombat Player
       StreamMusic [Pfad]
   endif
end
Das alles eben als Quest Script.

Zum andern:
wenn du Mankar Camoran mal doppelt anklickst (Im Render Window [also musste die Cell laden]) dann steht unten Persitent Reference. Da musst du einen Haken machen.
Oben gibst du dann einen Namen ein z.B. Mankar.
Jetz gibst du im Script anstatt der [ID in diesem Bsp. 0003392D] Mankar ein.
Dann müsste es auch speichern können.
 
So, danke erstmal. Jetzt sieht's wiefolgt aus:
Quest: mankarsmusik (alles auf default gelassen, außer den Script)
Script: (Script Type: Quest)
scn mankarsmusikscript

Begin Gamemode

if "0003392D".startcombat player

Streammusic "Data\Music\Special\DuelOfTheFates.mp3"

endif

End

So, jetzt müsste doch der Track abgespielt werden, wenn Mankar Camoran gegen mich kämpft, oder? :? Müsste doch.

Spiele jetzt erstmal HQ bis zu ihm^^.
 
Code:
scn mankarsmusikscript

Begin Gamemode

if [COLOR="Red"]"0003392D"[/COLOR].startcombat player

Streammusic "Data\Music\Special\DuelOfTheFates.mp3"

endif

End
Du solltest das mit Persistent Refernce machen weil das eine bessere Methode ist.
Einfach der Ref einen Namen zuweisen und diesen dann im Script verwenden.

Und es könnte theoretisch so aussehen:

Code:
scn Mankarmusic

Begin GameMode
    If (player.GetInCell [CellID] && player.IsInCombat)
        Streammusic "Data\Music\Special\DuelOfTheFates.mp3"
    Endif
End
So sollte es aussehen.
lg SirTroy
 
Jo... also erstmal doofe Frage: mit den Klammern?:ugly:
Zweitmal doofe Sache: Ich würde gern dein Beispiel verwenden, aber ich find Carac Agaialor nicht im CS!

Kann ich nicht auch, wenn ich da den Namen zuteile, Mankar testweise irgendwo hinsetzen und ihn dann klicken? Wenn ich der ID 'nen Namen gebe (z.B. Mankar), würde es dann heißen
[...] if "mankar".startcombat player [...]
??
 
Ja mit diesen () klammern schon.
Ähm nein es muss dieser Mankar sein. sonst gehts nicht.

Öhm ohne die "" der Name.

Also ich hab jetz selber mal ein Script probiert.
Solange es nur dieser eine Track ist funktioniert alles wie geschmiert.
Nun hab ich aber noch 2 weitere einfügen wollen, nur da kamen denn die ersten Probleme:
Man muss erst einen Track zu ende spielen lassen um dann den Nächsten zu starten.
Wen man in einer Cell ist wo der Music Typ auf Default gestellt ist, wird die sache um einiges Schwieriger.
Man muss nämlich zuerst einen Random Track spielen und in der Nächsten Frame dann den Gewünschten Track abspielen.
Ich habe das jetzt so gemacht das ich einen Timer laufen lasse, so lange der Song läuft (Timer = Sek. des Songs) spielt der Track. Ist der Timer vorbei wird der Track beendet und es wird ein Random Track gespielt. Dann kann der nächste Song gespielt werden.
Falls man das nicht macht wird der Song ewig wiederholt, oder es spielt keine Musik mehr.
Also machst du es auch am besten mit
Code:
If Player.IsInCombat && Player.GetInCell
Weil das einfacher ist.
Gruß
SirTroy
 
Ich hab's! Es ist "ParadiseCamoranFortress"!
Nur... Sind da keine NPCs drin. Nur ein "MankarCamoranSpeechMarker", aber er steht da nicht.
Aber da ich ja seinen Code eh nicht brauche, interessiert mich mehr, wo die ID dieses Interiors steht?
 
(Habe mir nicht alles neuere durchgelesen, sorry, wenn der Post Mist ist)

Aber da ich ja seinen Code eh nicht brauche, interessiert mich mehr, wo die ID dieses Interiors steht?

Meinst du die CellIDs? Müssten hier sein:


Da sind die IDs drin. Einfach ein bisschen scrollen, dann hast du ihn.
 
  • Like
Reaktionen: Rakios
Normalerweie sind bei den Referenzen immer der ID-Name und dann ein Ref hintendrangehängt.
Bei Mancar Camoran wäre das:
MancarCamoranREF
Aber wie gesagt ist das mit dem GetInCell die bessere Variante.

@SirTroy: Bei Abenteurerausstattung wird aber im großen Zelt bei der Musikbox sofort die eigene Musik gespielt, soweit ich weiß.
 
Ja der hat wahrscheinlich ein anderes Script gemacht wie ich.
Hier wäre mal das Script was beim Ei-der-Zeit zum Thema StreamMusic ist.
scn MusikAbspielenSC

;Written by sinHHHans
;22.08.08

short DoOnce

Begin OnActivate
if Doonce == 0
StreamMusic "Data\Music\MyMusic.mp3"
set doonce to 1
endif
End
scn shsStreamMusicInDefaultZellenSC

;Written by sinHHHans
;05.09.2008
; 99% das es geht

short Frame ; Je nach Wert wird einer der 3 StreamMusic oder deren 100er Schleife ausgeführt
short go ; Prüfen ob Skript schon mal gelaufen ist und zum Durchläufe beim ersten Run zählen
short Schleife ; Der Wert, der 100mal erhöht wird, um 100 Frames zu warten

Begin OnActivate player ;Irgendein Auslöser
if go != 0 && frame != 0
messagebox "Geduld, Skript wird noch ausgeführt..."
elseif go == 0 && frame == 0 ; Erster Run ( Dann muss es dreimal durchlaufen werden )
set Frame to 1
set go to 1
elseif go == 4 ;Skript wurde schon mal durchlaufen ( Nur noch einmal den Algorithmus durchlaufen)
set frame to 1
endif
End

Begin Gamemode
if ( go >= 1 && Go <= 2 ) || ( Go == 4 ); Gegenstand ist aktiviert worden
if Frame == 1 ;Frame Nummer 1
if Schleife < 100 ; 100 Frames warten
set Schleife to Schleife + 1
return
elseif Schleife >= 100 ; Nach 100 Frames
set Frame to 2
streammusic "Data\Music\MySong.mp3" ; das erstes mal den Befehl für das Lied ausführen
set Schleife to 0
endif
elseif frame == 2
if Schleife < 100 ; 100 Frames warten
set Schleife to Schleife + 1
return
elseif Schleife >= 100 ;Nach 100 Frames
set Frame to 3
set schleife to 0
streammusic random ; Jetzt wird ein Zufälliges Lied gespielt
(Das klappt auch in Default-Zellen)
set Frame to 3
endif
elseif frame == 3
if Schleife < 100
set Schleife to Schleife + 1
return
elseif Schleife >= 100
streammusic "Data\Music\MySong.mp3" ; Jetz kann das Lied in einer Default Zelle spielen
if go < 3 ;Wenn das Skript noch nicht 3mal ausgeführt wurde:
set go to go + 1
set Schleife to 0
set Frame to 1
elseif go == 4 ;Wenn das Skript das zweite Mal gelaufen ist und jetzt nur noch
einen Durchlauf braucht
set Schleife to 0
set Frame to 0
endif
endif
endif

elseif go == 3 ;Wenn das Skript beim ersten Durchlauf fertig ist
set Frame to 0
set go to 4 ; "Speichert", dass das Skript den ersten Durchlauf hatte
endif

End
 
So, ich hab jetzt den HQ durchgezockt. Bei Mankar hab ich natürlich besonders "aufgehorcht". Mein Script sah genau so aus:
scn mankarsmusikscript

Begin Gamemode

if (player.GetInCell 0001FB1E && player.IsInCombat)

Streammusic "Data\Music\Special\DuelOfTheFates.mp3"

endif

End

Hat nicht geklappt.