Wie Texte aus XML Sprachdateien in Skripten nutzen bzw. Stringvariablen allgemein

Hier ist der ideale Ort um über Scripts und Mods für X²: Die Bedrohung zu diskutieren.

Moderators: Scripting / Modding Moderators, Moderatoren für Deutsches X-Forum

Teac
Posts: 62
Joined: Sun, 12. Mar 06, 19:46
x3

Wie Texte aus XML Sprachdateien in Skripten nutzen bzw. Stringvariablen allgemein

Post by Teac »

Ich habe eine XML Datein im \t Verzeichnis, bei den Kommandomenüs wird auch der gewünschte text richtig angezeigt, die Datei ist also soweit Fehlerfrei.

Nun möchte ich aber im Skript, je nach Situation, dem Spieler ausgewählte Meldungen schicken. z.B. wenn das Skript seine arbeit erfolgreich machte, dann den Text mit der ID 501, bei einem fehler, den text mit der ID 502 usw.

Doch mit welchem Skriptbefehl, bekomme ich nun den Text der Sprachdatei, in eine Variable des Skripts?

Und mit welchem Skriptbefehl kann man einen String formatieren? Also z.B. zwei Strings aneinanderketten?

Beispiel:
In der Sprachdatei steht "Versuche Computer der Station zu hacken:"
Im Skript soll dann noch der Stationsname angehängt werden und dies dann dem Sppieler als nachrichtenmeldung gesendet werden. So das der Spieler dann zu lesen bekommt:
"Versuche Computer der Station zu hacken: Argon Prime - Schiffswerft"
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

Für das auslesen aus so ner Sprachseite zum Speichern in ner Stringvariablen gibt es die Funktion

Code: Select all

<Retvar/IF> = read text PageID = <Var/Num> , TextID= <Var/Num>
oder so (müsste bei den General Commands sein; hab das jetzt aus dem Kopf geschrieben, der Befehl kann geringfügig anders heissen :roll:)

PS Ich hab mich nur in X3 wirklich mit dem Scripten befasst, müsste aber auch für x2 gelten ;)

PS2 hast du dir schon das MSCI-Handbook angesehen???

PS3 ach ja, hab die zweite Frage übersehen:

zum aneinanderketten von Strings reicht der Befehl

Code: Select all

<RetVar/IF> = <Expression>
, da kannst du mit "+" zwei Strings "Addieren"
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)
Teac
Posts: 62
Joined: Sun, 12. Mar 06, 19:46
x3

Post by Teac »

Danke UniTrader :)


Ich habe nun auch noch eine weitere Möglichkeit gefunden. Hier die erklärung, falls jemand mal das gleiche Problem hat...

Code: Select all

<RetVar> = sprintf: fmt=<Var/String>,<Value>,<Value>,<Value>,<Value>,<Value>
<RetVar> = sprintf: pageid=<Var/Number> textid=<Var/Number>,<Value>,<Value>,<Value>,<Value>,<Value>
Damit läst sich recht gut eine formatierte Ausgabe machen.
Für den Formatstring, kann ein String mit mehreren Platzhaltern (%s) angegeben werden, welche dann auf weitere Variablen zugreifen.

Blödes Beispiel *gg*

Code: Select all

001  $sTxtAusgabe = sprintf: fmt='Dein Schiff %s ist %s Credits wert.',$sSchiffsname,$iWert, null, null, null
002  send incoming message $sTxtAusgabe to player: display it=[TRUE]
Für diejenigen die sprintf aus anderen Sprachen kennen, bei X2, werden hier wohl keine unterschiede zwischen Datentypen gemacht, mann muss also immer %s verwenden, egal ob die Variable einen Text oder eine Zahl enthält.

Return to “X²: Die Bedrohung - Scripts und Modding”