Logbuch erweitern, ist das möglich ?

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

XFiles
Posts: 196
Joined: Fri, 6. Feb 04, 08:07
x4

Post by XFiles »

Spotxxl wrote:Wo sind diese befehle?????? Erklärs mir bitte nochmal-.-

Code: Select all

001   $CurShip = [PLAYERSHIP]
Hier wird eine Variable festgelegt "$CurShip die erkennst du immer am Dollarzeiche "$" vor dem Wort. Diese hat den Inhalt "Dein aktuelles Schiff"

Code: Select all

002   $LogEintrag = 'Mein jetziges Raumschiff ist ' + $CurShip
Jetzt wird festgelegt was im LogBuch eingetragen werden soll. Normaler Text ist mit Hochkommas angegeben'Text, + $CurShip heist nichts anderes als Trage den Inhalt der Variable mit ins Logbuch. (Also wie gesagt dein aktuelles Schiff

Code: Select all

003   write to player logbook: sprintf: fmt=$LogEintrag, null, null, null, null, null
jetzt wird nur noch der Inhalt von $LogEintrag was wir oben gefühlt haben, ans LogBuch übergeben/eingetragen

Code: Select all

004   return null
Hier wird das Script beendet

Anbei Noch der Ausdruck der Script Log Befehle
X2soUrcerer wrote: 3 Logbook Commands

3.001 write to player logbook <Value>
3.002 write to player logbook: sprintf: fmt=<Var/String>,<Value>,<Value>,<Value>,<Value>,<Value>
3.003 write to player logbook: sprintf: pageid=<Var/Number> textid=<Var/Number>,<Value>,<Value>,<Value>,<Value>,<Value>
3.004 <RefObj> write to logbook <Value>
Ich bin selbst ein absoluter Scriptnoob, das hab ich mir alles selbst zusammengewurschtelt, ich hoffe das bringt dich weiter.
Wer die Wahrheit nicht weiß, der ist bloß ein Dummkopf. Aber wer
sie weiß und sie eine Lüge nennt, der ist ein Verbrecher

Bertold Brecht
TitanX
Posts: 38
Joined: Wed, 6. Nov 02, 20:31
x3tc

Post by TitanX »

Hi Spot!

Diese Befehle findest du im Script-Editor. Diesen aktivierst du im All mit Thereshallbewings (wichtig: großes T am Anfang), falls noch nicht geschehen. Jetzt findest du den Eintrag Script-Editor in der Komandokonsole. Um ihn zu öffnen drücke wenn du im All fliegst einfach ENTER - E - ENTER

Jetzt bist du im Hauptmenu des Script-Editors. Der oberste Eintrag lautet dann auch gleich Script-Editor, wo du zum Kernstück kommst, also mit ENTER auswählen. Im nächsten Menu findest du eine Auflistung aller Scripts, die du schon hast. Sollte dort nur <NEW SCRIPT> stehen, hast du keine.

So, dann legen wir mal ein neues Script an. Also <NEW SCRIPT> mit ENTER auswählen und im nächsten Bildschirm einen Namen dafür eingeben, nennen wir es mal TestLogbuch. Dann wieder ENTER.

Um jetzt an die Befehle zu kommen, einfach mit den Cursor-Tasten ganz nach unten auf <NEW LINE> gehen und ENTER drücken. Jetzt hast du mehrere Kategorien, aus denen du die Befehle auswählen kannst. Eine genaue Auflistung aller Befehle in den Kategorien findest du in folgendem Thread: http://www.egosoft.com/x2/forum/viewtopic.php?t=29054

Zu den einzelnen Zeilen im Script:

Zeile 001: Hier wird eine Variable angelegt, der das Spielerschiff (also das Schiff, in dem du gerade sitzt) zugewiesen wird. Dies geschieht mit dem Befehl 1.001, nachzulesen in oben genannten Thread. Um die Zeile so hinzubekommen mußt du folgendes tun: Gehe also auf General Commands und wähle den Befehl <RetVar/IF><Expression> aus. Im nächsten Menu gehst du runter bis <Variable> und drückst ENTER. Nun gib der Variablen einen Namen, in diesem Fall CurShip. Jetzt landest du wieder in deinem Script, wo dann folgendes steht: $CurShip = ... wobei ... rot markiert ist. Das heißt, daß du dort noch was eingeben kannst. Also wieder ENTER und jetzt bis [PLAYERSHIP] gehen und es auswählen. So, jetzt sollte die erste Zeile fertig sein.

Zeile 002: Ist im Prinzip der selbe Befehl wie in Zeile 001, nur noch etwas erweitert. Ich gehe jetzt mal davon aus, daß du die Zeile bis $LogEintrag = ... selber hinbekommen hast. Nun wählst du <String> aus und gibst dann halt den Text ein. So, nun ist die Zeile aber noch nicht fertig. Also wieder ENTER (bei diesem Befehl bleibt am Ende immer ein ... stehen, also nicht wundern). Jetzt wird das + ausgewählt. Und anschließend zum 3. und für die Zeile letzten mal ENTER. Jetzt die Variable CurShip auswählen und fertig sind wir.

Zeile 003: Dieser Befehl ist unter Logbook Commands zu finden. Also dorthin und auswählen (Befehl 3.002 laut Liste). Jetzt noch die Variable LogEintrag wählen und schon sind wir fertig.

Zeile 004: Diese Zeile wird vom Editor selbst hinzugefügt.

So, ich hoffe, das war ausführlich genug und es bringt dir was.
User avatar
M.Kessel
Posts: 1460
Joined: Wed, 13. Nov 02, 11:49
xr

Post by M.Kessel »

TitanX wrote:
Also bei mir funktioniert es. Bei <fmt> einwandfrei. Ich habe mal zum Test ein kleines Script geschrieben, das folgendes ausgibt:
"Mein jetztiges Schiff ist : [PLAYERSHIP]", wobei [PLAYERSHIP] eine Variable ist, die dein jetztiges Schiff angibt.

Natürlich will ich euch das Script nicht vorenthalten, also hier ist es:

Code: Select all

001   $CurShip = [PLAYERSHIP]
002   $LogEintrag = 'Mein jetztiges Raumschiff ist ' + $CurShip
003   write to player logbook: sprintf: fmt=$LogEintrag, null, null, null, null, null
004   return null

Code: Select all

001   $Fstring = 'Mein jetztiges Raumschiff ist %s. Und befindet sich in Sektor %s.'
002   write to player logbook: sprintf: fmt=$Fstring, [PLAYERSHIP], [SECTOR], null, null, null
003   return null
Mach es so, das ist besser: Alle im Formatstring befindlichen %s werden durch die Variablen, die danach eingetragen sind ersetzt.

Noch besser, wegen der Internationalisierung ist es, den String in eine 49nnnn.xml Datei zu packen.

Code: Select all

001  $MyPage = 4711
002  $mytext = 1 
002   write to player logbook: Page-id: $myPage text-id: $mytext, [PLAYERSHIP], [SECTOR], null, null, null
003   return null

Code: Select all

.......
<page ID="4711">
<text ID="1">Mein jetztiges Raumschiff ist %s. Und befindet sich in Sektor %s.</text>
</page>
........
Schaut dafür am besten im T-Verzeichnis in eine der XML-Dateien rein.
I'm depressed
TitanX
Posts: 38
Joined: Wed, 6. Nov 02, 20:31
x3tc

Post by TitanX »

Ja, da hast du schon recht. Doch ich habe das Beispiel am Anfang absichtlich so einfach gewählt, um in den Grundzügen zu zeigen, wie man ins Logbuch schreiben kann. Das man bei diesem Befehl mit %s-Parametern arbeiten kann, habe ich auch erst später herausgefunden. Und generell gebe ich dir natürlich recht, daß es besser ist mit Sprachdateien zu arbeiten. Allerdings, wenn ich nur ein kleines Script zum testen für meine Bedürfnisse schreibe, werde ich das wohl kaum tun.

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