Mission Director Grundlagen und Installation

Hier ist der ideale Ort um über Scripts und Mods für X³: Reunion zu diskutieren.

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

User avatar
enenra
Posts: 7150
Joined: Fri, 8. Apr 05, 19:09
x4

Post by enenra » Sat, 26. Jan 08, 11:46

Hi,

Ich versuche etwas mit dem MD herumzuspielen. Mit keinerlei anderwertiger Skripterfahrung oder ähnlichem fällt mir das doch recht schwer. ^^

1. Ich möchte eine bestimmte Station im Universum finden. Zum Beispiel die Handelsstation in Argon Prime. Wie kann ich es einrichten, dass der MD erst prüft ob die existiert und dann dort eine BBS Nachricht erstellt, die in anderen Stationen nicht erscheint?

2. Da ich mit viel Text arbeiten werde, würde ich gerne wissen, wie ich ein t-file aufbauen muss damit der MD gut darauf zugreifen kann und wie ich bestimmten Text von dem MD aus dem t-file holen lassen kann.

3. Was geschieht, wenn <timing></timing> fehlt? Wird die Aktion gar nicht ausgeführt? Oder nur einmal?

4. Ist es möglich, dem Spieler eine Anfrage zu senden, bei der er mehr als zwei Antwortmöglichkeiten hat, auf die je eine weitere Nachricht mit verschiedenen Antwortmöglichkeiten kommt? Und das wichtigste: Kann man diese entweder gezielt gleich wieder aus dem Logbuch löschen oder sie gar nicht erst ins Logbuch eintragen lassen?

Diamonddragon
Posts: 1957
Joined: Sat, 7. Feb 04, 20:26
x3tc

Post by Diamonddragon » Sat, 26. Jan 08, 15:35

Habe hier keine MD Files, kann daher nicht auf alles genau eingehen:

1.
In find_station gibst du den typename für die argon HST an und als class station. Es sollte afaik einen unternode sector in find_station geben, wo du sagst in welchem Sektor gesucht werden soll.

Zuerst prüfst du mit object_exists... auf die gefundene Station (was ja eh gelingen wird, wie hätte er sie sonst finden sollen wenn nicht existent) und machst dann den BBS Code rein wie im BBS Template gezeigt ist. Als Bedingung fürs hinzufügen der BBS machst du halt in den cue einen check, ob player_docked @ dockobject die HST true ist.

2. zu t-files müsste glaube etwas im pdf stehen, oder? Habe es selbst noch nie genutzt, müsste daher erst nachfragen, aber es läuft darauf hinaus extra Textdateien im t-Ordner zu haben und die in der MD Mission zu laden.

3. Je nachdem, wie du den cue definiert hast, (instantiate=...). Wenn du inst. nicht hast, wird er aktiviert wenn die Bedingungen wahr sind, einmal und geht sofort los. Timing ist nur ein Zusatz.

4. Da es nur Buttons gibt, hat der Player nie multiple Auswahlmöglichkeiten.
Es ist nicht das Schicksal, was die Zukunft bestimmt.
Script- und Modliste

User avatar
enenra
Posts: 7150
Joined: Fri, 8. Apr 05, 19:09
x4

Post by enenra » Sat, 26. Jan 08, 16:02

1a. Dann kann ich also den Existierungscheck weglassen?

1b. Welchen Befehl muss ich da benutzen?

Code: Select all

          <condition>
            <
          </condition>
2. Ich nehme mal an, dass es gleich wie bei Skripts funktioniert.

4. ? Ich weiss nicht, ob wir da grad aneinander vorbeireden - bzw. scheiben aber eine Nachricht an den Spieler, wo er einen von mehr als zwei buttons auswählen kann, gibt es sicherlich.

Diamonddragon
Posts: 1957
Joined: Sat, 7. Feb 04, 20:26
x3tc

Post by Diamonddragon » Sat, 26. Jan 08, 17:01

Falls andere an den Antworten intressiert sind, da ich mit DSE schon geschrieben hatte:

1a: wie gesagt, find_station findet nur Stationen, die vorhanden sind. Du kannst natürlich überprüfen ob eine Station gefunden wurde mit object_exists, falls ein Spieler die Station zerstört hat..

1b: <condition>
<object_is_docked dockobject="tradingstation"/>
</condition>

4. Nachrichten, um das Log nicht vollzuspammen, können afaik mit temporary=1 abgeschickt werden und sind nicht im Log.
Es ist nicht das Schicksal, was die Zukunft bestimmt.
Script- und Modliste

User avatar
enenra
Posts: 7150
Joined: Fri, 8. Apr 05, 19:09
x4

Post by enenra » Sat, 26. Jan 08, 18:07

Nächste Fragen:

1. Ich will einen Namen generieren lassen. Der soll als Autor einer BBS-Meldung auftreten. Ich möchte ihn aber später auch wieder benutzen. Wie kann ich das tun?

2. Kann man den Namen des Sektors indem sich der Spieler befindet mit {player.sector.name} abrufen? Und der Name der Station, an der er gedockt ist, mit {player.station.name}?

3. Ich möchte in einem t-file eine zufällige Zahl zwischen 15 und 25 generieren lassen. Wie geht das?

XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer » Mon, 28. Jan 08, 15:30

{random.name@argon}

2. probiere es aus ;) Müsste eigentlich aber nie gebraucht von daher nicht sicher.

3. IN einem T-File schonmal garnicht. EIn T File ist nichts als eine textdatei keinerlei Programm... Jedoch kannst du vorher in deiner Mission <set_value name="this.random1" min="15" max="25"> machen und dann (wenn die zahl im Text vorkommen soll was ich denke) im T-File {value@cuename.random1} schreiben. Dann klappt es ;)


PS: Ermm wie wärs mal mit Anleitung lesen?
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.

TheDukeNT
Posts: 4
Joined: Thu, 18. Mar 04, 14:17

Post by TheDukeNT » Mon, 28. Jan 08, 23:23

Hi,
ich bin grad mit den Dialog Befehlen am testen bekomme aber nur einen CTD zustande.

Code: Select all

<play_dialog task ="1" escape ="1">
  <dialog>
    <line actor ="me" dialogid ="00149" face ="102"/>
  </dialog>
</play_dialog>
1) Die line face kann ich ja noch auswählen aber was kommt bei dialogid rein?
Auf welche Datei in welchem Ordner greift er den hier zu?
Beim Play_Movie bezieht sich die movieid ja auf die *.dat files im MOV ordner und das funktioniert wunderbar.

2) Kann man Variablen vom MD an scripts im Spiel übergeben?

mfg

User avatar
SymTec ltd.
Posts: 5285
Joined: Mon, 11. Apr 05, 21:11
x3tc

Post by SymTec ltd. » Mon, 28. Jan 08, 23:38

TheDukeNT wrote:Hi,
ich bin grad mit den Dialog Befehlen am testen bekomme aber nur einen CTD zustande.

Code: Select all

<play_dialog task ="1" escape ="1">
  <dialog>
    <line actor ="me" dialogid ="00149" face ="102"/>
  </dialog>
</play_dialog>
1) Die line face kann ich ja noch auswählen aber was kommt bei dialogid rein?
Auf welche Datei in welchem Ordner greift er den hier zu?
Beim Play_Movie bezieht sich die movieid ja auf die *.dat files im MOV ordner und das funktioniert wunderbar.
Es kann gut sein, dass diese Funktion nicht geht. Andererseits ist es aber auch so, dass der MD an vielen Stellen Fehler nur sehr schwer verzeiht - wenn du also ein nötiges Attribut weggelassen hast, oder eine Variable falsch verwendest (siehe dazu auch XGamer auf der nächsten Seite), kann das schon genügen für einen Crash.

Ich habe heute ein Problem mit <create_actor> entdeckt - auch mit actors sollte man vorsichtig sein (sie auch wieder entfernen, ihnen bei Problemen besondere Aufmerksamkeit schenken).
TheDukeNT wrote:2) Kann man Variablen vom MD an scripts im Spiel übergeben?

mfg
Ja. <run script> hat einen <scriptargs>-subnode. Das hat den Vorteil, dass du mit MSCI andere Kommandos und Optionen hast, aber den Nachteil, dass du dann mehrere Files in verschiedenen Ordnern hast.


Edit: XGamer auf der nächsten Seite hat eher Recht als ich - edited.
Last edited by SymTec ltd. on Tue, 29. Jan 08, 16:07, edited 1 time in total.

XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer » Tue, 29. Jan 08, 15:13

Wieso sollte man vom MD aus keine Scripte ausführen sollen? Oder MD Variablen an SE Scripte übergeben? Das klappt und es gibt Sachen die mit MSCI einfacher gehen oder nur damit gehen. Deswegen gibt es ja die Action <run_script>. Das einzigste was nicht geht ist der umgekehrte Weg. Es ist zwar möglich den SE aufzurufen (bzw. ein Script) und dem die entsprechenden Parameter mitzuteilen jedoch nicht möglich das der SE dem MD irgendetwas zurückgibt. Sprich es ist eine Einbahnstrasse vom MD zum SE ;)

Zu dem Problem mit <play_dialog>:

1. Ist me ein gültiger Actor? Das Attribut actor erwartet einen actor welchen du vorher mit <create_actor> erstellt haben musst.
2. die DialogID zeigt auf die TextID in der Page ID der Voice die vom Actor benutzt wird. Wenn du also bei <create_actor> voice="13" schreibst dann muss dialogid irgendeine TextID in page 13 sein damit es funktioniert. Voice 101-108 sind zum Beispiel die Standard Argon Sätze die man so hört ;) Oh ganz vergessen natürlich muss die entsprechende PageID natürlich auch voice Records haben ;)

Kopiere einfach mal folgenden Code in deine MD Datei speichere sie und probiere es aus ;)

Code: Select all

    <cue name="Dialog Test Cue" version="1">
      <condition>
        <check_age value="{player.age}" min="8s"/>
      </condition>
      <action>
        <do_all>
          <create_actor voice="13" character="Damn Test Pilot" face="102" race="paranid" name="this.actor1"/>
          <play_dialog>
            <dialog>
              <line actor="this.actor1" dialogid="42" face="102"/>
            </dialog>
          </play_dialog>
        </do_all>
      </action>
    </cue>
du wirst sehen es funktioniert wunderbar :)
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.

TheDukeNT
Posts: 4
Joined: Thu, 18. Mar 04, 14:17

Post by TheDukeNT » Tue, 29. Jan 08, 20:38

Hi XGamer!
Danke für die Hilfe funktioniert jetzt wunderbar!:wink:

1) Für das Video greift er wohl auf die Datei \MOV\00001.dat zu.
Ist es Möglich hier einen andere Datei anzugeben Zwecks eigenen Dialog Videos? In welcher Datei stehen die Id's bzw. von wann bis wann welches Video abgespielt werden soll?

2) Die Sounds kommen aus der \MOV\00149.dat. Auch hier wieder andere source Datei möglich und welche Datei für die Zeitindexe zuständig ist?

3) Wie heisst das script, welches die StoryMissi startet oder ist das nicht aufrufbar?

Ich merke schon, dass ich mich wohl noch mächtig schlau machen muss was scripting angeht.

mfg The Duke

XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer » Tue, 29. Jan 08, 21:49

TheDukeNT wrote:Hi XGamer!
Danke für die Hilfe funktioniert jetzt wunderbar!:wink:

1) Für das Video greift er wohl auf die Datei \MOV\00001.dat zu.
Ist es Möglich hier einen andere Datei anzugeben Zwecks eigenen Dialog Videos? In welcher Datei stehen die Id's bzw. von wann bis wann welches Video abgespielt werden soll?

2) Die Sounds kommen aus der \MOV\00149.dat. Auch hier wieder andere source Datei möglich und welche Datei für die Zeitindexe zuständig ist?

3) Wie heisst das script, welches die StoryMissi startet oder ist das nicht aufrufbar?

Ich merke schon, dass ich mich wohl noch mächtig schlau machen muss was scripting angeht.

mfg The Duke
1. Nein
2. Nein
3. Wie meinst du das? Story Mission Script? oO

Scripte werden per <run_script> aufgerufen. Du kanst jedes existierende Script angeben wobei es nur selten notwendig ist da zum Beispiel funktionen der Flight und Fight Scripte viel einfacher und besser direkt im MD zu machen sind.

Missionen im MD werden überprüft und ausgeführt sobald der ScriptEditor aktiviert wurde. Was wie und wann geschieht hängt von der MD Datei ab bzw. was darin definiert wurde.
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.

DaOpa
Posts: 914
Joined: Sun, 28. Jan 07, 17:55

Post by DaOpa » Fri, 22. Feb 08, 21:22

Moin
Ich habe mal ein ganz banales Problem! Als ich den MD hinzugefügt habe war der SE an und der Shipcreator-MOD geladen. Dennoch funktioniert er nicht so wie er soll! Also habe ich ein neues Spiel begonnen (Testweise), den SE aktiviert und promt funktioniert es wie gewünscht.
Also wie bekomme ich den im aktuellen Spiel zum laufen?
Gruß

XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer » Fri, 22. Feb 08, 21:46

Wenn die Dateien im director Ordner vorhanden sind und der SE an ist funktioniert das normalerweise auch. Wichtig ist halt nur das der SE an ist. Und passieren kann auch garnichts solange du keine MD Missionsdateien im director Ordner hast.

greetz
XGamer
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.

DaOpa
Posts: 914
Joined: Sun, 28. Jan 07, 17:55

Post by DaOpa » Fri, 22. Feb 08, 23:27

Moin
Ich habe aber eine im "director"-Ordner! Ich nutze gerade "Temporäre "Incoming Question" als Scriptcall" von SymTec ltd.
Wie erwähnt, starte ich ein neues Spiel, dann klappt es. Nur in meinen Saves geht es einfach nicht!
Gruß

XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer » Sat, 23. Feb 08, 17:51

Was auch immer das fürn komischen Krams sein soll....

Wie auch immer es kann auch an der Programmierung der MD Datei die du verwendest liegen.
Es ist ein leichtes es so zu machen das es NUR bei einem neuen Save bzw. korrekter ausgedrückt neuen Spielstart triggert / ausgeführt wird und nicht bei Saves. Kopiere einfach mal eins der Samples in den director Ordner oder schreibe ne kurze eigene Datei. Muss ja nicht viel passieren aber du weisst dann sicher das es funzt. Fakt ist das der MD bei ALLEN Spielen funzt ob Uralt Save oder neues Spiel. Hauptsache der SE ist an.

Eine einfache MD Test Datei sähe z.b. so aus:

Code: Select all

<?xml version="1.0" encoding="iso-8859-1" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="MD Test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">
  <cues>
    <cue name="MD Test">
      <condition>
        <check_age value="{player.age}" min="5s"/>
      </condition>
      <action>
        <incoming_message author="XGamer Debugging Services" text="Der MD funktioniert einwandfrei." popup="1"/>
      </action>
    </cue>
  </cues>
</director>
Kopiere einfach den Code und speichere in als .xml Datei im Director Ordner und starte X3. Dann einfach Save mit aktivem SE laden und du wirst die Meldung bekommen das der MD funktioniert. Dasselbe passiert auch bei einem neuen Spiel.

greetz
XGamer
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.

DaOpa
Posts: 914
Joined: Sun, 28. Jan 07, 17:55

Post by DaOpa » Sat, 23. Feb 08, 18:38

Moin
Danke für deine Mühe! In dem Moment, wo ich den SE aktiviere (neues Spiel) bekomme ich die Nachricht. Egal welches Save (wo es funktioniert und wo nicht), ich bekomme keine Nachricht! Dein MD-File soll wirklich nach jedem Ladevorgang ausgeführt werden? Dann habe ich ein Problem!
Gruß
P.S.: Hättest du vielleicht noch ein anderes im Angebot?

XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer » Sat, 23. Feb 08, 19:27

Der Part in dem Code Tag des vorherigen Posts von mir WIRD immer nach JEDEM Ladevorgang ausgeführt wenn folgende Bedingungen zutreffen:
  • Verwendung von X3 2.5
  • Die Datei wurde als xyz.xml in X3 Reunion\director\ gespeichert
  • Der ScriptEditor ist in dem geladenen Savegame aktiviert
Sollten die Punkte zutreffen und dennoch keine Nachricht auftauchen dann hast du ein verdammt grosses Problem mit deiner X3 Installation.

greetz
XGamer
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.

DaOpa
Posts: 914
Joined: Sun, 28. Jan 07, 17:55

Post by DaOpa » Sun, 24. Feb 08, 00:04

Moin
Scheint wirklich so! Ich werde mal X3 neu aufsetzen und probieren.
Danke für deine Mühen! Wenn du nichts dagegen hast packe ich deinen MD-XML-Code mit in meinen Topic, damit auch andere mal probieren können.
Gruß

XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer » Sun, 24. Feb 08, 01:51

Hätte ich was dagegen hätte ich ihn ned hier öffentlich gepostet :D

Feel free to do so ;)

greetz
XGamer
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.

DaOpa
Posts: 914
Joined: Sun, 28. Jan 07, 17:55

Post by DaOpa » Sun, 24. Feb 08, 14:13

Moin
Dann mache ich das :D
Gruß

Return to “X³: Reunion - Scripts und Modding”