ich habe mich in letzter Zeit ein wenig mit den Scriptbefehlen im Bereich "Audio Commands" des Scripteditors beschäftigt. Und Entsprechendes (Sprachausgaben) nun schon in meine Scripte der Tarnvorrichtung ST1 und der Navigationssoftware ST1 eingebaut.
Ein bischen mehr Sound und/oder Sprache an geeigneten Stellen bereichert das Spiel ja durchaus. Daher will ich hier meine "Forschungsergebnisse" mit Euch teilen.
1. Sprachausgabe
Hierfür ist nur der seit Version 1.4 neu hinzugekommene Befehl
<RetVar/IF/START>speak text:page=... wirklich geeignet.
Die Befehle "send audio message" und "send incoming message" können nur mit den vier Audios ([IncomingTransmission.Message], [IncomingTransmission.Greeting], usw.) die unter den Konstanten zu finden sind, verwendet werden. "Play Sample"-Befehle sind nur für die kleinen Geräusche (wav-Dateien) verwendbar.
Der Befehl "speak text" kann mit oder ohne einer Variablenbelegung aufgerufen werden oder aber mit dem Präfix START.
Hier gibt es folgenden Unterschied:
Mit Präfix START läuft das Script ohne Unterbrechung weiter, während die Sprachnachricht abgespielt wird.
Mit (oder ohne) Returnvariable bleibt das Script bis Ende der Sprachnachricht 'stehen' und läuft dann erst weiter. Weist man eine Variable zu, so enthält diese nur TRUE oder FALSE.
In der Sprach-Datei 490001.xml sind folgende Page-IDs für den Befehl "speak text" interessant, weil diese in der AudioDatei \mov\00149.dat (kann im Windows Media-Player 9 abgespielt werden) in gesprochener Form vorhanden sind:
- Page ID 7 - Die Sektornamen
Page ID 9 - Gesprochene Buchstaben A bis Z
Page ID 12 - Gesprochene griechische Buchstaben Alpha, Beta, etc.
Page ID 13 - Worte und Sätze (können zusammengesetzt werden!)
Page ID 17 - Alle Produkte, Schiffe, Fabriken und ihre Texterklärung
Page ID 1901 - Einige kurze Sätze (in der Story verwendet)
Code: Select all
001 START speak text: page=13 id=130 priority=10
002 return null
Code: Select all
001 $AudioMessage = speak text: page=13 id=130 priority=10
002 return null
Code: Select all
001 $AudioMessage = speak text: page=17 id=2133 priority=10
002 START speak text: page=13 id=24 priority=10
003 return null
Allerdings ist diese Methode nicht ganz sauber. Schöner ist es, für Sprachausgaben, die aus verschiedenen Teilen zusammengesetzt sind, wie folgt zu arbeiten:
1. Erstellen (oder erweitern) einer eigenen Sprach-xml im Ordner /t. Beispiel-> Datei 498765.xml mit Inhalt:
- <?xml version="1.0" encoding="UTF-8" ?>
<language id="49">
<page id="8765" title="Scriptmeldungen" descr="Sprachnachrichten an den Spieler">
<t id="1001">{17,2133}{13,24}</t>
</page>
</language>
Code: Select all
001 load text: id=8765
002 START speak text: page=8765 id=1001 priority=10
003 return null
Ich denke, das dürfte genügen um schöne Sprachausgaben in die Scripte 'zaubern' zu können. Ein bischen selber experimentieren kann auch nicht schaden

Die Befehle "send audio message" und "send incoming message" sind im MSCI-Handbuch (siehe Bonusdownloads) schon ausreichend erklärt. Damit lassen sich leider nur die vier Sprachtexte unter den Konstanten ausgeben, wie bereits oben beschrieben. Daher halte ich mich damit hier nicht weiter auf. Das Gleiche gilt für den Befehl "play sample:incoming transmission".
2. Geräusche
Zur Ausgabe von Geräuschen dient der Befehl "play sample <Var/Number>". Die Geräusche, die man ausgeben kann sind im MSCI-Handbuch unter Anhang A2 (Seite 91 folgende) aufgeführt. Folgender Code gibt beispielsweise das Geräusch des Mineralienscanners aus:
Code: Select all
001 play sample 966
002 return null
Nein, doch nicht! Es gibt Abhilfe

Mit folgendem Code ist das Geräusch 966 (Mineralienscanner) nicht nur viel lauter, sondern auch noch länger:
Code: Select all
001 $A = 10
002 while $A > 0
003 play sample 966
004 dec $A =
005 end
006 return null

Ich hatte mit verschiedensten Schleifenlängen ($A=60, usw.) und den verschiedensten Geräuschen (Nummern im MSCI-Handbuch) experimentiert. Je nach Länge der Schleife hörten sich dieselben Geräusche sogar ziemlich unterschiedlich an. So kommt man also durch die Schleifenlänge auch noch an andere Geräusche als die vorgegebenen.
Der Sound wird immer noch ausgegeben, wenn die Schleife schon lange durchlaufen ist und im Script schon längst die nächsten Befehle abgearbeitet werden...
Auch hier denke ich, das sollte reichen, um wirklich nette Geräusche in Scripten zu produzieren. Für weiteres muß jeder damit selber nun mal experimentieren.
