Oblivion:StreamMusic in Zellen mit MusicType auf Default: Unterschied zwischen den Versionen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche
K (Aufgabenstellung)
K
 
(19 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
 
StreamMusic lässt eine alternative Hintergrundmusik abspielen, nur gibt es das Problem, dass bei Zellen mit dem Music Type auf default der Befehl nicht funktioniert. Hier wird ein Workaround gezeigt, um genau das trotzdem zu ermöglichen.
 
StreamMusic lässt eine alternative Hintergrundmusik abspielen, nur gibt es das Problem, dass bei Zellen mit dem Music Type auf default der Befehl nicht funktioniert. Hier wird ein Workaround gezeigt, um genau das trotzdem zu ermöglichen.
  
Wer StreamMusic in einer Zelle mit Default Einstellung verwenden will, muss es wie folgt machen. Erst wird der normale <tesscript>StreamMusic "MySong.mp3"</tesscript> ausgeführt, dann muss einige VIELE (ca. 100) Frames warten, dann wird <tesscript>StreamMusic random</tesscript> ausgeführt und wieder 100 Frames gewartet. So und jetzt wird ein drittes mal StreamMusic benutzt, und zwar wieder das Lied was man hören möchte, also hier <tesscript>StreamMusic "MySong.mp3"</tesscript> Und weil es nicht schon kompliziert genug ist wird BEIM ERSTEN RUN von diesem Skript der Algorhytmus 3mal ausgeführt. Alle folgenden male reicht es einmal.
+
Wer StreamMusic in einer Zelle mit Default Einstellung verwenden will, muss es wie folgt machen. Erst wird der normale <tesscript>StreamMusic "Data\Music\MySong.mp3"</tesscript> ausgeführt, dann muss einige VIELE (ca. 100) Frames warten, dann wird <tesscript>StreamMusic random</tesscript> ausgeführt und wieder 100 Frames gewartet. So und jetzt wird ein drittes mal StreamMusic benutzt, und zwar wieder das Lied, was man hören möchte, also hier <tesscript>StreamMusic "Data\Music\MySong.mp3"</tesscript> Und weil es nicht schon kompliziert genug ist, wird BEIM ERSTEN RUN von diesem Skript der Algorithmus dreimal ausgeführt. Alle folgenden Male reicht es einmal.
 +
 
  
 
== Anwendung ==
 
== Anwendung ==
 
=== Aufgabenstellung ===
 
=== Aufgabenstellung ===
Hier ist das Skript wie es aussieht wenn man es auf einem Aktivator hat. Wenn man den Aktivator das erste mal aktiviert wird der Algorhytmus im Gamemode Block 3 mal durchlaufen, alle folgenden Male zur noch einmal
+
Hier ist das Skript wie es aussieht wenn man es auf einem Aktivator hat. Wenn man den Aktivator das erste mal aktiviert, wird der Algorithmus im Gamemode Block dreimal durchlaufen, alle folgenden Male zur noch einmal
 +
 
  
 
=== Theorie ===
 
=== Theorie ===
Grundlage hierfür ist der Artikel zum [[Oblivion:Musik_abspielen|Musik abspielen]]
+
 
 +
Grundlage hierfür sind die Artikel zum [[Oblivion:Musik_abspielen|Musik abspielen]] und das Erstellen von [[Schleifen]]
  
  
 
=== Probleme ===
 
=== Probleme ===
''siehe [[Oblivion:Musik_abspielen#Probleme|Musik abspielen ->Probleme]]''
+
Das Problem Nummer 1 bei diesem Algorithmus ist, dass er zeitaufwändig ist, aber die einzige Lösung, die es für das Problem gibt. Wer eine andere herausfindet, darf sich gerne melden.
 +
 
 +
''siehe Außerdem [[Oblivion:Musik_abspielen#Probleme|Musik abspielen ->Probleme]]''
  
  
 
== Realisierung ==
 
== Realisierung ==
=== Script ===
 
<tesscript>scn StreamMusicInDefaultZellenSC
 
  
;Written by sinHHHans
+
=== Umgebung ===
;21.08.08
 
  
 +
Die Musik-Datei MySong.mp3 muss existieren (sie legt man sinnigerweise in den Data\Music\-Ordner von Oblivion).
  
short Frame
 
short go
 
  
Begin OnActivate player ;irgendein Auslöser
+
=== Script ===
if go == 0
+
<tesscript>scn shsStreamMusicInDefaultZellenSC
  set go to 1 ;Variable um Aktivierung im Gamemode Block zu prüfen
+
  set Frame to 1 ; nur zum besseren Verständniss unten
+
;Written by sinHHHans
endif
+
;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
 
End
 +
 
Begin Gamemode
 
Begin Gamemode
if go == 1 ; Gegenstand ist aktiviert worden
+
if ( go >= 1 && Go <= 2 ) || ( Go == 4 ); Gegenstand ist aktiviert worden
  if Frame == 1 ;Frame Nummer 1
+
if Frame == 1 ;Frame Nummer 1
      streammusic random
+
if Schleife < 100 ; 100 Frames warten
      set Frame to 2
+
set  Schleife to Schleife + 1
      return
+
return
  elseif Frame == 2 ;Frame Nummer 2
+
elseif Schleife >= 100 ; Nach 100 Frames
      streammusic "Dateipfad/dateiname.wma";jetz kann das Lied in einer Default Zelle spielen
+
set Frame to 2
      set go to 0 ;alles wieder zurücksetzen damit man es nochmal machen kann
+
streammusic "Data\Music\MySong.mp3" ; das erstes mal den Befehl für das Lied ausführen
       set Frame to 0
+
set Schleife to 0
  endif
+
endif
endif
+
elseif frame == 2  
End</tesscript>
+
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
 +
</tesscript>
 +
  
 
=== Handhabung ===
 
=== Handhabung ===
Soweit so gut, damit sollte auch in jeder Zelle der StreamMusic Befehl seinen Dienst erweisen.
+
Dieses Skript ist jetzt auf einem Aktivator in einer Zelle mit dem Music Type auf default und das Lied, dass man hören will ,kommt.
 +
Der Algorithmus sollte aber auch als Questskript genutzt werden können. Man sollte sich auch überlegen, ob es sich lohnt...oder ob man nicht [[constWiki:OBSE|OBSE]] benutzen will, genauer die [[constwiki:Category:SoundCommands|OBSE Sound Commands]]
 +
 
  
  
 
==  Weiterführende Hinweise ==
 
==  Weiterführende Hinweise ==
* [[Oblivion:Interior_Cell]]
+
*[[Oblivion:Interior_Cell]]
 +
*[[:Kategorie:Aktivieren und Aktivatoren]]
 +
*[[constwiki:Category:SoundCommands|OBSE Sound Commands]]
  
  
{{ Scriptkategorie |Musik|StreamMusic in Zellen mit MusicType auf Default}}
+
{{ Scriptkategorie |Musik|Level_4_Scripts|StreamMusic in Zellen mit MusicType auf Default}}

Aktuelle Version vom 15. April 2009, 13:10 Uhr

Thema

StreamMusic lässt eine alternative Hintergrundmusik abspielen, nur gibt es das Problem, dass bei Zellen mit dem Music Type auf default der Befehl nicht funktioniert. Hier wird ein Workaround gezeigt, um genau das trotzdem zu ermöglichen.

Wer StreamMusic in einer Zelle mit Default Einstellung verwenden will, muss es wie folgt machen. Erst wird der normale <tesscript>StreamMusic "Data\Music\MySong.mp3"</tesscript> ausgeführt, dann muss einige VIELE (ca. 100) Frames warten, dann wird <tesscript>StreamMusic random</tesscript> ausgeführt und wieder 100 Frames gewartet. So und jetzt wird ein drittes mal StreamMusic benutzt, und zwar wieder das Lied, was man hören möchte, also hier <tesscript>StreamMusic "Data\Music\MySong.mp3"</tesscript> Und weil es nicht schon kompliziert genug ist, wird BEIM ERSTEN RUN von diesem Skript der Algorithmus dreimal ausgeführt. Alle folgenden Male reicht es einmal.


Anwendung

Aufgabenstellung

Hier ist das Skript wie es aussieht wenn man es auf einem Aktivator hat. Wenn man den Aktivator das erste mal aktiviert, wird der Algorithmus im Gamemode Block dreimal durchlaufen, alle folgenden Male zur noch einmal


Theorie

Grundlage hierfür sind die Artikel zum Musik abspielen und das Erstellen von Schleifen


Probleme

Das Problem Nummer 1 bei diesem Algorithmus ist, dass er zeitaufwändig ist, aber die einzige Lösung, die es für das Problem gibt. Wer eine andere herausfindet, darf sich gerne melden.

siehe Außerdem Musik abspielen ->Probleme


Realisierung

Umgebung

Die Musik-Datei MySong.mp3 muss existieren (sie legt man sinnigerweise in den Data\Music\-Ordner von Oblivion).


Script

<tesscript>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 </tesscript>


Handhabung

Dieses Skript ist jetzt auf einem Aktivator in einer Zelle mit dem Music Type auf default und das Lied, dass man hören will ,kommt. Der Algorithmus sollte aber auch als Questskript genutzt werden können. Man sollte sich auch überlegen, ob es sich lohnt...oder ob man nicht OBSE benutzen will, genauer die OBSE Sound Commands


Weiterführende Hinweise



Weitere Scripts aus dieser Kategorie

Level 1

 

Level 3

Level 4

 



{{#if: Musik | }} {{#if: Level_4_Scripts | }}