[[http://www.siedler-games.de|{{:sg-link.jpg|}}]] ====== Sound Tutorial ====== [[http://www.siedler-portal.de/vb3/sendmessage.php?do=mailmember&u=2060|Robert]] \\ Wir kennen im DEDK zwei Arten von Sounds. Da ist einmal die Begleitmusik und zum Anderen einzelne Sprüche ("Es ist Zahltag") oder Geräusche (Kanonendonner) ==== Begleitmusik ==== Die Begleitmusiken liegen im Siedler-Verzeichnis unter "..\Base\shr\music" als MP3 - Dateien. Laut "Chef" ist es zwar durch Umwege auch möglich andere Mp3-Dateien abzuspielen. Dies ist aber nicht praktikabel. Niemand hat diese Dateien auf seinem PC. Sie müßten daher immer mitgeliefert werden und in das entsprechende Verzeichnis gepackt werden. \\ \\ Dann kann man im Map-Editor Gebieten mit dem XS_Ambient einen bestimmten Sound zuweisen. \\ \\ |{{ambient1.png}}|{{ambient3.png}}{{ambient2.png}}| Das Ambient erzeugt man im Map-Editor. Unter Punkt **Type** legt man die Art der Musik fest. Unter Punkt **Volume** die Lautstärke.| ==== GUI Sounds ==== Die anderen Sounds sind dagegen schon etwas interessanter. Die Namen der Sounds sind in dem [[tutorials:tables|Table]] Sounds gespeichert. Nach meinem Stand gibt es 1364 verschiedene davon. Man kann dort alle Geräusche, Sprüche finden, die wir andauernd beim Spielen hören. Alle Sprüche des Mentors, der Helden und sonstiger Personen. Dann Geräusche wie Wasserfall, Explosionen, Feuer und vieles mehr. Eine vollständige Liste ist [[reference:Sounds|hier]] zu finden. Nun können diese im Programm abgespielt werden. Dies geschieht mit: Sound.PlayGUISound( ausgesuchter Sound , Lautstärke ) Der ausgesuchte Sound ist aus der o.g. Liste; davor muß noch „**Sounds.**“ Lautstärke: Man kann die Lautstärke zwischen 1% und 100 % einstellen. Man muß nichts schreiben. Dann ist die Voreinstellung [default] = 0, was auch 100 % sind. Konkretes Beispiel: id = Sound.PlayGUISound( Sounds.VoicesMentor_HAPPY_Alchemist , 60 ) Hier sagt der Mentor mit 60 % der vollen Lautstärke, dass einer unserer Alchimisten sehr glücklich ist. \\ Als Rückgabe erhalten wir die **id** des Sounds. \\ Jetzt gibt es innerhalb der Sounds viele, die im Text „_r n d_“ stehen haben. Z.B.: ^Sounds.VoicesMentor_INFO_VillageCenterEmpty_//rnd//_01 \\ Sounds.VoicesMentor_INFO_VillageCenterEmpty_//rnd//_02 \\ Sounds.VoicesMentor_INFO_VillageCenterEmpty_//rnd//_03 \\ Sounds.VoicesMentor_INFO_VillageCenterEmpty_//rnd//_04^ \\ Nun wird nicht, wie ich angenommen hatte bei „01“ der Sound „01“ abgespielt. Hier wird dann durch Zufall ausgewählt einer der 4 abgespielt. Meine Nachfrage ob dies ein Fehler sei wurde von Chromix mit Das ist kein Fehler, das ist nur "unerwartetes Verhalten" durch eine kleine Designänderung. beantwortet. Also doch ein Fehler. Aber kein schlimmer. Die Dauer der Sounds ist vorgegeben kann aber nach Wunsch gestoppt werden. Es kann nicht deren Länge abgefragt werden. ==== Hilfscode/Funktionen ==== Durch einen kleine Umweg kann man aber wissen, wann der Sound zu ende ist. ... id = Sound.PlayGUISound( Sounds.VoicesMentor_HAPPY_Alchemist , 60 ) while Sound.IsSoundPlaying( id ) do DelayShort(2); end ... In der ersten Zeile wird unser gewünschter Sound gespielt. Dann bleibt das Programm in der [[tutorials:schleifen#While]]-[[tutorials:schleifen|Schleife]], bis der Sound zu ende ist. Dann gehts erst weiter. Das ganze muß innerhalb einer DelayFunc ablaufen. Da während eine DelayFunc läuft nicht gespeichert werden kann, sollte diese Funktion nur während Briefings verwendet werden, oder für Sounds die nur einmal abgespielt werden. Wenn ein Sound ständig, oder wiederholt abgespielt werden soll, muss dieses aus einem SimpleJob heraus geschehen, da es dem Spieler ja ermöglicht werden muss abzuspeichern. Um einen Sound zu stoppen, bevor dieser von sich aus zuende ist, hilft diese Funktion: Sound.StopSound( id ) \\ \\ [[:tutorials:index|Zur Tutorial-Übersicht]]