Construction Set Musik im neuen Worldspace

barney014

Abenteurer
HI,

habe eine Frage zum CS :

Kann man irgendwie machen das in einen bestimmten neuen Worldspace nur die Musik kommt die ich möchte , also das nur ein Musikstück von mir kommt und keine Musik mehr aus den normalen Oblivion ???

mfg barney
 
Ja, ich habe mir auch schonmal angeguckt, wie das geht, bin aber nicht sehr weit gekommen. Ich habe mich auch an Adash gehalten und mir im Music-Ordner angeguckt, wie er das eingefügt hat. Ist einfach ein Adash-Ordner im Music-Ordner. Wie das ins CS eingebunden wird, weiß ich allerdings nicht. Wenn du da was rausbekommst, wärs nett, es hier mal reinzuschreiben. Mache ich im, falls ich da was hinbekomme, auch.
 
So sorry, für Doppelpost, aber ich kann schon mal sagen, wie das ganze ungefähr läuft (LordKain sei Dank):
Also, man muss die Musik halt in den Ordner tun und dann über eine Brücke ins Spiel bringen. Das ganze läuft (zumindest bei Adash) über eine Quest mit einem Script. Das habe ich mir bisher noch nicht angeschaut, aber es dürfte nicht gerade kurz sein. Es gibt also keine Möglichkeit, mal eben die Musik einzubinden.
 
  • Like
Reaktionen: bauer
Hi,

danke das mit den eigenen Musik Ordner ist mir auch aufgefallen.
Nun weiss ich aber immer noch nicht wie es geht ;)

mfg barney
 
Tja, ich kann dir das nur grob sagen, ich selber habe es noch nicht gemacht, aber bei Adash setzt sich das so zusammen:

2 Globals
mehrere Scriptplayeholder unter Activators
eine kurzes Script für jeden dieser Placeholder
eine Quest, auf der ein Script liegt
dieses Script ist rund 3 Seiten in Word lang
und natürlich die Musik, die im Musik-Ordner ist
(das müsste es sein)

Das Script fragt ab, was der Spieler gerade macht, also beispielsweise, ob er im Kampf ist oder nicht. Dies tut es im GameMode und im MenuMode, es soll ja in beidem die Musik abgespielt werden. Über den Befehl StreamMusic wird dann die Musikdatei aus dem Ordner abgespielt.
Für einen genauen Aufbau würde ich dir Vorschlagen, Adash im CS zu öffnen und das ganze anzugucken. Eine Erklärung wäre nämlich ziemlich lang und dort können sich auch schnell Fehler einschleichen. Eventuell kann ich das mal als Tut machen, aber erst, wenn ich das selbst gemacht habe (wann das sein wird, weiß ich noch nicht) und auch nur, wenn LordKain damit einverstanden ist, dass ein solches Tut erstellt wird.
Ich selber habe ihn gefragt, ob ich sein Script-Gerüst etc verwenden darf und ich habe das ok. Ich weiß aber nicht, wie wichtig es ihm ist, dass man ihn fragt, ob man es benutzen darf.
 
Ja - das ist ein altes Problem, für welches ich noch keine Lösung im Forum gefunden habe.

Der Befehl 'StreamMusic' spielt zwar die gewünschte Musik einmalig ab, dann kommt aber wieder die Normalmusik.

Es müsste also eine permanente Abfrage im Hintergrund erfolgen. Bin mal gespannt, ob es ein script dafür gibt, wäre selbst dran interessiert.

8)

Edit: Aber das müsste doch trotzdem einfacher gehen:

if GetInWorldspace 'WorldspaceName' =1 (dann Spiele Musik)
StreamMusic "data\music\special\WasAuchImmer"
endif

Dann müsste man das script auf den player legen...

Hmm... wenn mein Computer wieder funktionsbereit ist, werde ich das auch nochmal ausprobieren, denn so einfach ging das glaube ich dann doch nicht...
 
Zuletzt bearbeitet:
Wie gesagt: guck dir das Script aus Adash an, dort klappt es ja wunderbar.

EDIT:
Nein, ganz so einfach geht es nicht. Vor allem nicht, wenn man unterschiedliche Musik haben will, also für Kampf, Dungeons etc.
Wenn du keine unterschiedlichen Musikarten haben willst, geht es natürlich schon etwas einfacher.
 
Zuletzt bearbeitet:
Wichtig ist auch, dass man in den gewünschten Bereichen als Musik "Dungeon" oder "Public" auswählt. Hat man "Default" gewählt, so gibt es sehr oft unerwünschte Probleme mit StreamMusic.
 
Ah ja, das muss ich mir merken. Übrigens, was würdest du von nem Tut für das einbauen der Musik über so ein System (also auf deine Art) halten?
 
hmm also ich könnte dir da auch helfen.

Du machst ein Quest.
Dann ein Questscript wie folgt.

Code:
scn QuestScript

short songtimer

Begin Gamemode

if GetInWorldspace "DeinWorldSpace" == 1
if songtimer == 0
set songtimer to (Hier die Sekundenanzahl von deinem Lied)
streammusic " Verzeichnis mit .mp3 oder .wma"
elseif songtimer > 0
set songtimer to songtimer - GetsecondsPassed
endif
endif

End

So wäre es zumindest die grobe Methode mit der du einen Song im Loop abspielen kannst.


Wenn du zufällig bestimmte Lieder abspielen lassen willst wird das script etwas länger:


Code:
scn QuestScript

short songtimer
short songNR

Begin Gamemode

if GetInWorldspace "DeinWorldSpace" == 1
   if songtimer == 0
      set SongNR to 1+0.[COLOR="SeaGreen"]05[/COLOR]*GetRandomPercent ; wenn du [COLOR="SeaGreen"]5[/COLOR] Lieder hast, erstellt eine zufällige Zahl zwischen [1 und 5].
      if SongNR  == 1
         set songtimer to (Hier die Sekundenanzahl von deinem Lied)
         streammusic " Verzeichnis mit SongNR1.mp3"
      elseif SongNR == 2
         set songtimer to (Hier die Sekundenanzahl von deinem Lied)
         streammusic " Verzeichnis mit SongNR2.mp3"
      elseif SongNR == 3
         set songtimer to (Hier die Sekundenanzahl von deinem Lied)
         streammusic " Verzeichnis mit SongNR3.mp3"
      elseif SongNR == 4
         set songtimer to (Hier die Sekundenanzahl von deinem Lied)
         streammusic " Verzeichnis mit SongNR4.mp3"
      elseif SongNR == 5
         set songtimer to (Hier die Sekundenanzahl von deinem Lied)
         streammusic " Verzeichnis mit SongNR5.mp3"
      endif
elseif songtimer > 0
set songtimer to songtimer - GetsecondsPassed
endif
endif

End


So ich hoffe das hilft dir und ja wichtig das mit der Default Music nicht vergessen,
habe das skript nicht getestet aber ich hoffe es funktioniert :)

Gruß sinHHHans
 
  • Like
Reaktionen: barney014
Mag sein, dass das Script klappt, aber es hat eine Schwäche: Du kannst damit nicht zwischen Kampfmusik, Exlporemusik etc unterscheiden. Also nicht bestimmte Musik für bestimmte Situationen, das hat LordKain in seinem Script gut untergebracht. Beispielsweise mit dem Befehl IsInComabt
 
  • Like
Reaktionen: barney014
Hi,

also der oberer Script von sinHHHans sieht schon mal ganz gut aus dann nimm ich mal vorübergehend den. Wäre cool wenn es bald ein Tutorial gibt. Und den unteren probier ich auch mal aus. :)

mfg barney
 
Also gut, Knochenkeule du hast Recht aber das Prinzip ist doch schonmal klar, jetzt kann man natürlich noch mit IsInInterior == 1 oder == 0 unterscheiden. Aber du kannst nicht erwarten das ich nachts um halb 3 nen hundertzeiler hier runterschreibe, wenn du die "Schwächen" kennst dann machs besser :p

Und ja es wird dazu ein "Tutorial" geben.Und zwar im Ei-der-Zeit Skript Wiki

Da werde ich auch Artikel für StreamMusic Skripte schreiben,( 2 sind fertig)
als drittes kommt ein komplettes "neues MusikSystem" rein.
Also noch kleines bisschen Geduld ;)


Gruß sinHHHans
 
Ich würde dir für so ein Tut empfehlen, das Script etc von Adash anzugucken. Falls du das nicht hast, kann ich dir zumindest das Script per PN schicken.
 
hmm also ich könnte dir da auch helfen.

Du machst ein Quest.
Dann ein Questscript wie folgt.

Code:
scn QuestScript

short songtimer

Begin Gamemode

if GetInWorldspace "DeinWorldSpace" == 1
if songtimer == 0
set songtimer to (Hier die Sekundenanzahl von deinem Lied)
streammusic " Verzeichnis mit .mp3 oder .wma"
elseif songtimer > 0
set songtimer to songtimer - GetsecondsPassed
endif
endif

End

So wäre es zumindest die grobe Methode mit der du einen Song im Loop abspielen kannst.

ich hab das script selber noch nicht getestet, aber ich sehe da ein kleines problem mit dem songtimer:
GetSecondsPassed

Returns the number of seconds passed since the last game frame (in float). Extremely useful for running a timer within a script. Each script has its own counter for GetSecondsPassed and when the function is called, this counter is automatically reset to 0. Thus, all subsequent calls within the same frame and script will return 0.
GetSecondsPassed gibt die sekunden als fließkommawert aus (float), da das script sicher nicht genau im sekundentakt aufgerufen wird. also kommen da immer krumme zeiten raus, die du aber beim songtimer immer wieder auf/abrundest, da eine short-variable ja keine nachkommawerte speichern kann. auf dauer gleichen sich das auf- und abrunden wohl einigermaßen aus, aber mit pech kann die zeit schon ziemlich von der gewünschten zeit abweichen.
2 kleine änderungen müssten da aber ausreichen:

Code:
scn QuestScript

[COLOR="Red"]float songtimer[/COLOR]

Begin Gamemode

if GetInWorldspace "DeinWorldSpace" == 1
[COLOR="#ff0000"]if songtimer <= 0[/COLOR]
set songtimer to (Hier die Sekundenanzahl von deinem Lied)
streammusic " Verzeichnis mit .mp3 oder .wma"
elseif songtimer > 0
set songtimer to songtimer - GetsecondsPassed
endif
endif

End

edit: eine weitere kleinigkeit fällt mir da grad auf: das elseif songtimer > 0 ist eigentlich unnötig. beim if wird der songtimer ja schon auf kleiner/gleich 0 geprüft, ist er das nicht, MUSS er ja größer als 0 sein, ein einfaches else reicht da also aus :)
 
Zuletzt bearbeitet:
@Naboradd: Du hast Recht, ich hätte eine float gebraucht :roll:
naja es war schon spät gestern, danke für die Korrektur

Gruß sHs
 
Zuletzt bearbeitet:
Geb' auch nochmal meinen unqualifizierten Senf dazu... :roll:

"IsInInterior == 1" wird meiner Meinung nicht benötigt, da beim Übergang in die Interiorzelle "GetInWorldspace 'DeinWorldSpace'" auf 0gesetzt wird.

In die Schleife müsste auf jedenfall die Abfrage "IsInCombat" und dann der Kampfsound aktiviert werden oder als Abfrage in einer übergeordneten Schleife: GetInWorldspace 'DeinWorldSpace == 0'

So ähnlich jedenfalls :huh:

Ansonsten sieht doch das script schon mal vielversprechend aus. Werde das dann WE auch mal testen...