ich bin seit Tagen auch am scripten und will's perfekt haben
Und da bin ich dann nach langer Suche drauf gekommen, wie die Sprachausgabe (und parallele Textausgabe unten rechts im Bildschirm) bei Stationswaren funktioniert.
Anmerkung:
@Alle Autoren der Beiträge die das Einbinden von Scripten und Sprachdateien erklärten, sollten vielleicht Ihre Beiträge ergänzen/ändern.
Und so sieht das aus:
Bisher ist in allen Tutorials zu lesen, man solle die Sprachdateien 49xxxx.xml/44xxxx.xml im Verzeichnis \t so aufbauen (Beispiel für eine Schiffsausrüstung für 1572 Credits in einem Ausrüstungsdock):
Code: Select all
- <language id="49">
- <page id="17" title="Boardcomp. objects" descr="Produktname">
<t id="5793">Irgendeine neue Schiffsausrüstung</t>
</page>
Im Abschnitt Page ID 17 dieser Datei ist dort jede Ware aufgeführt, die in irgendeiner Fabrik zu kaufen ist. Einmal mit ihrer Bezeichnung, so wie man sie in der Fabrik/Dock in der Liste sieht und darunter mit nächst höherer Nummer steht der Text, welcher bei Markierung der Ware in Dock oder Fabrik vorgelesen wird und rechts unten erscheint.
Insofern: Wenn obiger Code in einer eigenen 49xxxx.xml wie folgt ergänzt wird:
Code: Select all
- <language id="49">
- <page id="17" title="Boardcomp. objects" descr="Produktname">
<t id="5793">Irgendeine neue Schiffsausrüstung</t>
<t id="5794">{17,5665}</t>
</page>
Code: Select all
<t id="5665">Dies ist eine Softwareerweiterung für alle gängigen Schiffscomputer Modelle. Erweiterte Kommandos werden durch ihre Installation der Kommandokonsole eines Schiffs hinzugefügt.</t>
<t id="5794">{17,5665}</t>
die Nummer {17,9002} eintragen, käme in der Fabrik bei Markierung der Ware zum Beispiel der Text und die Sprachausgabe
Code: Select all
<t id="9002">Über dieses Objekt sind in der Datenbank des Bordcomputers keine Daten verfügbar.</t>
Die obige Nummer 5794 gibt es übrigens im ganzen X2-Programm nicht. Ich hab sie einfach "erfunden". Da in der originalen "490001.xml" der Sprachtext immer eine Nummer höher ist als die Nummer der Warenbezeichnung, habe ich das in der eigenen Sprachdatei (sh. obiges Beispiel) einfach mal genauso gemacht - und siehe da - es klappt. Das heißt, alle freien Artikelnummern von 17-57xx bis 17-59xx können mit einer vorhandenen Sprachausgabe aus der 490001.xml belegt werden, wenn man dafür einfach so vorgeht wie oben zu sehen.
-------------------------------
Und vielleicht noch zur Ergänzung, wie man passend zur üblichen "Verhaltensweise" von X2 einen Logbucheintrag gestalten sollte:
Code: Select all
001 play sample 1008
002 *Spielt das "Jingle" vor/bei Ansage "Eingehende Nachricht"
003 wait 500
004 * etwas Warten schadet bei Audiosachen nie sonst überschlägt sichs
005
006 play sample: incoming transmission [IncomingTransmission.Message], from object null
007 * Spricht eine von vier möglichen Sprachausgaben, die unter den
008 * Systemkonstanten (Select Constant - "Incoming..." aufgeführt sind
009 * in diesem Fall: "Eingehende Nachricht"
010
011 $nachricht = sprintf: pageid={DeineID} textid={DeineID}, [THIS], [ENVIRONMENT], null, null, null
012 * Die Nachricht, die aus Deinem Sprachfile 49xxxx.xml gelesen wird
013
014 send incoming message $nachricht to player: display it=[TRUE]
015 * Eintrag ins Log und gleichzeitige Anzeige
Um die Sache komplett zu machen, hier die Textzeile, die in obiger Codezeile 11 aus der Sprachdatei im \t-Verzeichnis gelesen wird:
Code: Select all
<t id="1001">[author] Schiff [b]%s[/b][/author][text colwidth='500'][b]Ziel %s erreicht![/b] ...gehe in Bereitschaft...[/text]</t>
Grüße und frohes Programmieren