[DISKUSSION] Allgemeine MD-Fragen

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

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

User avatar
TGG
Posts: 1172
Joined: Sun, 19. Oct 08, 00:45
x4

Post by TGG »

hi,
habe den Fehler gefunden.

Code: Select all

<flyto>
<position object="{object@Battlestar Galactica}"/>
</flyto>
Diese Zeile hat gefehlt.
Bleibt nur noch die eine Frage: Wie lösche ich dann wieder die Flotte?

mfg
TGG
Image
TGG ( Terra Ghost Gesellschaft )
User avatar
Jens Ka
Posts: 468
Joined: Thu, 18. Jan 07, 15:32
x4

Post by Jens Ka »

TGG wrote:Bleibt nur noch die eine Frage: Wie lösche ich dann wieder die Flotte?
Kurz und schmerzlos.

Code: Select all

<destroy_group group="cuename.fleetname" warp="1"/>
MfG
Jens Ka
MD IST NICHT MSCI!!!!
MD ist Eventdriven. Es passiert etwas - du reagierst darauf.
Bin nicht für weitere Mod Projekte zu haben.
ND VSM XTC
Allgemeine MD-Fragen
User avatar
TGG
Posts: 1172
Joined: Sun, 19. Oct 08, 00:45
x4

Post by TGG »

Jens Ka wrote:Kurz und schmerzlos.

Code: Select all

<destroy_group group="cuename.fleetname" warp="1"/>
So kurz und schmerzlos war es dann doch nicht. Hatt nicht funktioniert, also habe ich einwenig experimentiert.

Code: Select all

<destroy_object object="{Battlestar Galactica}" warp="1"/>
Diese Zeile bringt mir den erwünschten Effect. Muss nur wieder jedes Schiff ( Object ) einzeln benennen.

mfg
TGG
Image
TGG ( Terra Ghost Gesellschaft )
User avatar
Ketraar
EGOSOFT
EGOSOFT
Posts: 12103
Joined: Fri, 21. May 04, 17:15
x4

Post by Ketraar »

TGG wrote:Diese Zeile bringt mir den erwünschten Effect. Muss nur wieder jedes Schiff ( Object ) einzeln benennen.
Nicht wenn du diese beim erstellen bereits in eine group einfügst.

Code: Select all

  <create_ship name="this.Astral Queen" group="this.BSships" typename="SS_SH_Z_ASTQUEEN" race="terran" capturable="1" invincible="1">
    <position x="-80" y="-80" z="-80"/>
    <sector x="16" y="2"/>
    <!--Jupiter3-->
    <equipment loadout="default" />
    <command command="none"/>
  </create_ship>
dann mit

Code: Select all

<destroy_group group="{cuename}.BSships" warp="1"/>
Merke: du benutzt globale Namen (was du schnell wieder lassen solltest), wir gehen aber von lokalen aus, deswegen das 'this.' und {cuename}.

Auch hast du <command command="none"/>, ohne im create_* den racelogic=0 nützt dir das wenig, die machen das was sonst Terraner machen würden.
Dazu ist der command den du scheibar willst der 'stay' und nicht 'none'.

MFG

Ketraar
Image
User avatar
TGG
Posts: 1172
Joined: Sun, 19. Oct 08, 00:45
x4

Post by TGG »

O.K. Danke! Werde es gleich umsetzen.

mfg
TGG
Image
TGG ( Terra Ghost Gesellschaft )
User avatar
F.A.B.
Posts: 767
Joined: Fri, 27. Feb 09, 18:47

[REQ] wie objective in MD-script erweitern?

Post by F.A.B. »

ich hab das script um die obere gruppe...

Code: Select all

<do_all>

 [...]

 <do_all exact="1">
  <create_ship typename="SS_SH_K_QUEEN" race="khaak" group="L2M02 Scene 7.K Queen" boardable="0">
   <position min="15km" max="25km"/>
   <sector sector="L2M02.KhaakSec3"/>
   <equipment loadout="maximum"/>
   <command command="killenemies"/>
  </create_ship>
 </do_all>
 <do_all exact="{group.object.count@L2M02 Scene 7.K Queen}" counter="count">
  <do_all exact="25">
   <create_ship typename="{random.type@SS_SH_THINKER|SS_SH_THINKER6|SS_SH_THINKER14|SS_SH_THINKER27|SS_SH_K_M3|SS_SH_K_M4|SS_SH_K_M5}" group="L2M02 Scene 7.Swarm {group.object.{counter@count}@L2M02 Scene 7.K Queen}" race="khaak">
    <position object="{group.object.{counter@count}@L2M02 Scene 7.K Queen}" min="1km" max="3km"/>
    <sector sector="L2M02.KhaakSec3"/>
    <equipment loadout="maximum"/>
    <command command="protect"/>
   </create_ship>
  </do_all>
 </do_all>

 [...]

 <do_all exact="3">
  <create_station typename="SS_DOCK_K" race="khaak" group="L2M02 Scene 7.K Stations" invincible="1">
   <position min="20km" max="30km"/>
   <sector sector="L2M02.KhaakSec3"/>
   </create_station>
  </do_all>
  <do_all exact="{group.object.count@L2M02 Scene 7.K Stations}" counter="count">
   <do_all exact="5">
    <create_ship typename="SS_SH_K_HIVEGUARD" group="L2M02 Scene 7.Guardian {group.object.{counter@count}@L2M02 Scene 7.K Stations}" race="khaak">
    <position object="{group.object.{counter@count}@L2M02 Scene 7.K Stations}" min="5km" max="10km"/>
    <sector sector="L2M02.KhaakSec3"/>
    <equipment loadout="maximum"/>
    <command command="killenemies"/>
   </create_ship>
  </do_all>
 </do_all>
</do_all>
...erweitert und möchte nun L2M02 Scene 7.K Queen als objective vor {group.object.count@L2M02 Scene 7.K Stations}...

Code: Select all

<cue name="L2M02 Scene 7 Guidance Update" delay="9s" instantiate="static">
 <condition>
  <check_any>
   <check_all>
    <check_value value="{group.object.count@L2M02 Scene 7.Guardian {group.nearest@L2M02 Scene 7.K Stations}}" min="1"/>
    <check_any>
     <object_exists object="L2M02 Scene 7.LastGuard" negate="1"/>
     <check_value value="{group.nearest@L2M02 Scene 7.Guardian {group.nearest@L2M02 Scene 7.K Stations}}" exact="{object@L2M02 Scene 7.LastGuard}" negate="1"/>
    </check_any>
   </check_all>
   <check_all>
    <check_value value="{group.object.count@L2M02 Scene 7.Guardian {group.nearest@L2M02 Scene 7.K Stations}}" exact="0"/>
    <check_any>
     <object_exists object="L2M02 Scene 7.LastStation" negate="1"/>
     <check_value value="{group.nearest@L2M02 Scene 7.K Stations}" exact="{object@L2M02 Scene 7.LastStation}" negate="1"/>
    </check_any>
   </check_all>
  </check_any>
 </condition>
 <action>
  <do_choose>
   <do_when value="{group.object.count@L2M02 Scene 7.Guardian {group.nearest@L2M02 Scene 7.K Stations}}" min="1">
    <remove_object object="L2M02 Scene 7.LastStation"/>
    <set_object name="L2M02 Scene 7.LastGuard" value="{group.nearest@L2M02 Scene 7.Guardian {group.nearest@L2M02 Scene 7.K Stations}}"/>
     <set_objective cue="L2M02 Scene 7">
     <briefing cue="L2M02 Scene 7" step="3"/>
     <destroy object="L2M02 Scene 7.LastGuard"/>
    </set_objective>
   </do_when>
   <do_otherwise>
    <set_object name="L2M02 Scene 7.LastStation" value="{group.nearest@L2M02 Scene 7.K Stations}"/>
     <set_invincible object="L2M02 Scene 7.LastStation" invincible="0"/>
     <set_objective cue="L2M02 Scene 7">
     <briefing cue="L2M02 Scene 7" step="3"/>
     <destroy object="L2M02 Scene 7.LastStation"/>
    </set_objective>
   </do_otherwise>
  </do_choose>
 </action>
</cue>
...in die guidance einbauen, komme aber nicht auf die wahrscheinlich sehr einfache lösung.


ich hoffe jmd weiß rat und kann mir schnell und kompetent helfen! :)
Last edited by F.A.B. on Fri, 5. Mar 10, 04:28, edited 1 time in total.
best,
F.A.B.
User avatar
enenra
Posts: 7150
Joined: Fri, 8. Apr 05, 19:09
x4

Post by enenra »

Ich bin mir nicht ganz sicher, was du jetzt tun willst aber <set_objective/> scheint mir ein guter Start zu sein, um die Kha'ak Queen das Ziel zu machen. ^^
User avatar
Jens Ka
Posts: 468
Joined: Thu, 18. Jan 07, 15:32
x4

Post by Jens Ka »

Hi F.A.B.

Um die Khaak Queen als Missions ziel anzeigen zu lassen must 2 sachen anpassen.
1tens. im Creat ship dem schiff ein einmaligen namen geben.

Code: Select all

<create_ship typename="SS_SH_K_QUEEN" race="khaak" name="L2M02 Scene 7.K Queen" group="L2M02 Scene 7.K QueenGruope" boardable="0">
            <position min="15km" max="25km"/>
            <sector sector="L2M02.KhaakSec3"/>
            <equipment loadout="maximum"/>
            <command command="killenemies"/>
          </create_ship>
2tens denn namen im set objective angeben.

Code: Select all

<set_objective cue="L2M02 Scene 7">
            <briefing cue="L2M02 Scene 7" step="3"/>
            <destroy object="L2M02 Scene 7.K Queen"/>
          </set_objective>
dann wird die Queen als Missionsziel angezeigt.

MfG
Jens Ka
MD IST NICHT MSCI!!!!
MD ist Eventdriven. Es passiert etwas - du reagierst darauf.
Bin nicht für weitere Mod Projekte zu haben.
ND VSM XTC
Allgemeine MD-Fragen
User avatar
Ketraar
EGOSOFT
EGOSOFT
Posts: 12103
Joined: Fri, 21. May 04, 17:15
x4

Post by Ketraar »

Fragen für und rund um MD code bitte im gepinnten MD Thema posten.

*schubs und zusammenschweiss*

MFG

Ketraar
Image
Glumski
Posts: 1586
Joined: Tue, 8. Apr 08, 15:53
x3tc

[Frage]Einzelne Plots deaktivieren (start.xml)

Post by Glumski »

Ist das deaktivieren von einzelnen Plots möglich? Ich spreche jetzt nicht von Veränderungen in den Missionsdateien sondern nur in den Spielstartdateien start.xml bzw. gamestarts.xml.
In der gamestart.xml gibt es ja keine Einträge zu den Plots.
Es gibt in der start.xml folgende Einträge:

Code: Select all

        <do_choose>
          <do_when value="{player.age}" min="20">
            <do_choose>
              <do_when value="{player.gamestart}" exact="101" comment="Terran Defender">
                <set_value name="Terran Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="102" comment="USC Commander">
                <set_value name="Terran Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="104" comment="Argon Patriot">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="105" comment="Humble Merchant">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="106" comment="Bankrupt Assassin">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="110" comment="Tormented Teladi">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="111" comment="Poisoned Paranid">

                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="112" comment="Aldrin Adventurer">
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
                <set_value name="Terran Plot Complete" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="113" comment="Goner Witness">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="114" comment="Unholy Traitor">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="116" comment="Teladi Trafficker">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="117" comment="Yaki Insurgent">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="118" comment="Lost Lar">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="119" comment="Savage Split">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>


              <do_when value="{player.gamestart}" exact="141" comment="Anonymous Argon">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="142" comment="Boring Boron">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>

              <do_when value="{player.gamestart}" exact="143" comment="Pious Paranid">
                <set_value name="Terran Link Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>
			  
              <do_otherwise>
                <set_value name="this.temp" exact="1"/>
              </do_otherwise>
            </do_choose>
Bedeutet das jetzt, dass die Plots nur für Startcharaktere mit dem Alter 20 Jahre möglich ist?
Und sehe ich das richtig, dass man bei den Plot-Einträgen einfach die 1 durch eine 0 ersetzen könnte?
Wenn ja, wie lauten die Plot-Namen:
Terran Plot = Terraner-Plot
HUB Plot = HUB-Plot
HQ Plot = HQ Plot
Terran Link Plot = Aldrin-Plot (?)
(?) = Schatzsuche
etc.

Und dann gibt es ja plötzlich die Einstellung "Terran Plot Complete". Kann ich einfach ein Complete hinter jeden Plotnamen schreiben, sodass die Plots bereits abgeschlossen sind?

Ich hoffe auf baldige Hilfe!
Danke im Voraus!

Grüße
Glumski
User avatar
enenra
Posts: 7150
Joined: Fri, 8. Apr 05, 19:09
x4

Post by enenra »

Ich glaube du hast da ein ziemliches Durcheinander. ^^

Hier mal eine etwas längere Erklärung des Ganzen. ;)

Es gibt zwei Dateien, die Gamestarts beeinflussen:

gamestarts.xml (L\true)
start.xml (director)

Und natürlich die Sprachdateien, im Fall der vanilla Gamestarts die 0001-L49.xml (t).

Am besten ist es wohl, bei der gamestarts.xml zu beginnen. Diese Datei legt den Start an, der im Hauptmenü angezeigt wird, sozusagen. Hier werden mehrere grundlegende Parameter festgelegt. Ich werde das ganze anhand des 101 Main Plot Gamestarts (Terran Defender) erklären.

Code: Select all

<!-- Terran Defender -->
  <gamestart id="101" name="{1900,2001}" description="{1900,2101}" difficulty="{1900,2201}" image="start08" plot="1">
    <player name="{1900,2301}" species="{1900,2401}" gender="{1900,2501}" age="{1900,2601}"/>
    <!-- Uranus -->
    <sector x="10" y="1"/>
    <ship typename="SS_SH_USC_M4"/>
  </gamestart>
id - die Gamestart id, die benutzt wird um den Gamestart intern zu identifizieren: 101

name - Der Name des Gamestarts. Referenz zur Sprachdatei. Aus der entnehmen wir: <t id="2001">Terran Defender</t> (Ich benutze die englische als Referenz.)

description - Die Beschreibung des Gamestarts. Wiederum eine Referenz zur Sprachdatei: <t id="2101">Defend the Sol system from alien threats, use your advanced combat training to survive in an unforgiving new universe and find both friends and foes in the Commonwealth.</t>

difficulty - Die "Schwierigkeit" des Gamestarts. Wieder eine Referenz. Da könnte man irgendwas reinschreiben, es hat keinen Einfluss auf das Spiel selbst. <t id="2201">Normal</t>

image - Der Name der JPEG Datei im L\true\-Ordner, der beim Gamestart angezeigt werden soll.

plot - Sollen die Plots im Spiel aktiv sein oder nicht? 1 ist ja, 0 ist nein.

Nächste line.

name - Wieder eine Sprachfile-Referenz. Der Name des Spielers im Spiel: <t id="2301">Erin Iovis</t>

species - Sprachfile-Referenz, die Rasse des Spielers. <t id="2401">Terran</t>

gender - Das Geschlecht des Spielers, wieder eine Sprachfile-Referenz: <t id="2501">Female</t>

age - Das Alter des Spielers. Das ist? Bingo! Eine Sprachfile-Referenz. ;) <t id="2601">26</t>

Danach kommt die Angabe, in welchem Sektor der Spieler startet. Achtung: Der Spieler startet immer an den Koordinaten 0,0,0 im Sektor. Im Sektor Erde würde er dann z.B. zerstört werden. ;)

x - X-Koordinate in der Galaxiekarte. Königstal ist x=0.

y - Y-Koordinate in der Galaxiekarte. Königstal ist y=0.

Und zuletzt die Angabe welches Schiff der Spieler hat beim Spielstart. Hier eine terranische Sabre. Hier muss der typename des Schiffen angegeben werden. Am besten von der TShips entnommen. ;)

Als nächstes ist da die start.xml . Die legt verschiedene Parameter für das Spiel fest. Hier der erste für uns relevante Code:

Code: Select all

              <do_when value="{player.gamestart}" exact="101" comment="Terran Defender">
                <set_value name="Terran Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>
Über diesem Schnipsel findet man u.a. ein do_choose - das bedeutet dass das Spiel unter einem der folgenden Möglichkeiten auswählen soll.

Wenn der Gamestart des Spielers nun also als 101 identifiziert wird, weiss das Spiel, dass der Spieler mit dem Gamestart "Terran Defender" neu begonnen hat.

Nun werden hier verschiedene values festgelegt. Nämlich erstmal die values für drei plots. Die values für den Terran Plot, den HUB Plot und den HQ Plot werden auf 1 festgelegt, was bedeutet, dass diese drei Plot sicher mal im Spiel aktiv sein werden, also angeboten werden.

Das wäre der erste Teil. Nun gehen wir weiter runter im File bis zu diesem Code hier:

Code: Select all

              <do_when value="{player.gamestart}" exact="101" comment="Terran Defender">
                <reward_player>
                  <money exact="1000"/>
                  <notoriety>
                    <relation race="argon" operation="set" exact="neutral-8"/>
                    <relation race="boron" operation="set" exact="neutral-11"/>
                    <relation race="paranid" operation="set" exact="foe-2"/>
                    <relation race="split" operation="set" exact="foe-5"/>
                    <relation race="teladi" operation="set" exact="neutral-5"/>
                    <relation race="goner" operation="set" exact="neutral+5"/>
                    <relation race="pirate" operation="set" exact="enemy"/>
                    <relation race="khaak" operation="set" exact="min" mutual="1"/>
                    <relation race="xenon" operation="set" exact="min" mutual="1"/>
                    <relation race="atf" operation="set" exact="{lookup.notoriety@notop2}"/>
                    <relation race="terran" operation="set" exact="neutral+10" mutual="1"/>
                    <relation race="yaki" operation="set" exact="enemy" mutual="1"/>
                  </notoriety>
                  <equipment>
                    <ware typename="SS_SHIELD_B" exact="4"/>
                    <ware typename="SS_LASER_EMP" exact="2"/>
                    <ware typename="SS_WARE_BOOST" exact="1"/>
                    <ware typename="SS_WARE_SCANNER2" exact="1"/>
                    <ware typename="SS_MISSILE_POLTERGEIST" exact="3"/>
                    <ware typename="SS_WARE_TECH213" exact="({player.ship.equipment.SS_WARE_TECH213.maxcount}/5)*4" comment="Engine Tunings"/>
                    <ware typename="SS_WARE_TECH231" exact="1" comment="SETA"/>
                    <ware typename="SS_WARE_TECH242" exact="1" comment="Video Enhancement Goggles"/>
                    <ware typename="SS_WARE_TECH246" exact="{player.ship.equipment.SS_WARE_TECH246.maxcount}/4+1" comment="Rudder Optomisation"/>
                    <ware typename="SS_WARE_TECH251" exact="{player.ship.equipment.SS_WARE_TECH251.maxcount}/3+1" comment="Cargo Bay Extension"/>
                  </equipment>
                </reward_player>
                <set_value name="ATF Notoriety" exact="{lookup.notoriety@notop2}"/>
                <set_value name="Terran Plot" exact="1"/>
                <set_value name="HUB Plot" exact="1"/>
                <set_value name="HQ Plot" exact="1"/>
              </do_when>
Wie man sieht, wird wieder zuerst überprüft, was für eine id der Gamestart des Spielers hat. Da sie hier 101 ist, wissen wir dass das unser gesuchter Gamestart ist.

Per <reward_player>-Funktion des MDs wird hier nun dem Spieler seine Startausrüstung gegeben.

Zuerst bekommt er mal 1000 Cr.

<notorierty> legt das Verhältnis des Spielers zu den verschiedenen Rassen fest. race - die Rasse, operation bleibt hier immer "set", exact legt das Verhältnis fest. Wenn exact="min" steht, bedeutet dass, das der Spieler der Todfeind dieser Rasse ist. ;) "Mutual" wird dann da noch angehängt um sicher zu gehen, dass sie auch als Feind des Spielers eingeschaltet sind.

<equipment> rüstet das Spielerschiff mit verschiedenen Upgrades aus. Der MD identifiziert diese Upgrades, wie auch Schiffe, über deren typename, welche in den T-files festgelegt werden (TShips, TWares, etc.). exact legt immer die Anzahl fest.

Zuletzt werden nochmals values gesetzt. Es werden ein zweites Mal die plots aktiviert (kA wieso, ehrlich gesagt, ist wohl überflüssig). Ausserdem wird noch der ATF System Access festgelegt per ATF-Ansehen.

Das wars auch schon für die start.xml . Das sollte eigentlich alle Bereiche um Gamestarts abdecken.

Zuletzt noch, falls das nicht klar ist, Sprachdatei-Referenzen:

Eine übliche Sprachdatei-Referenz setzt sich aus zwei Komponenten zusammen, die mit einem Komma getrennt sind: Die PageID und die TextID.

{1900,2001} referenziert also folglich die TextID 2001 in der PageID 1900.
(ReadText-Fehler sind übrigens ähnlich aufgebaut.)
User avatar
Ketraar
EGOSOFT
EGOSOFT
Posts: 12103
Joined: Fri, 21. May 04, 17:15
x4

Post by Ketraar »

Posts ins gepinnte MD Thema gepackt.

*zusammenschnür*

MFG

Ketraar
Image
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Per <reward_player>-Funktion des MDs wird hier nun dem Spieler seine Startausrüstung gegeben.
Apropos <reward_player>: Mir hat sich bis jetzt entzogen, wann man diesen Befehl verwenden sollte. Man kann ja alles auch über den direkten Weg regeln (z.B. direkt über <set_relation>).

MfG,
ScRaT
User avatar
Ketraar
EGOSOFT
EGOSOFT
Posts: 12103
Joined: Fri, 21. May 04, 17:15
x4

Post by Ketraar »

Erm über set_relation wirst da kaum Schilde, Waffen oder sonstiges Equipment hinzufügen können ;-)

MFG

Ketraar
Image
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

<set_relation> war nur ein Beispiel. Equipment kann man doch auch mit <add_cargo> oder <add_equipment> hinzufügen.

MfG,
ScRaT
User avatar
Ketraar
EGOSOFT
EGOSOFT
Posts: 12103
Joined: Fri, 21. May 04, 17:15
x4

Post by Ketraar »

ScRaT_GER wrote:Man kann ja alles auch über den direkten Weg regeln (z.B. direkt über <set_relation>).
Also nochmals ausführlicher.

set_irgendwas braucht immer ein object="", in diesem Fall player.ship. Wenn ich aber reward_player benutze erübrigt sich das, ist also einfacher und sauberer.

Hofe das war gemeint.

MFG

Ketraar
Image
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Hofe das war gemeint.
Jo, das war's! Danke für die Aufklärung - ich hatte vermutet, dass es da noch andere Vorteile gäbe.

MfG,
ScRaT
User avatar
Ketraar
EGOSOFT
EGOSOFT
Posts: 12103
Joined: Fri, 21. May 04, 17:15
x4

Post by Ketraar »

Sagen wir das so, set_, add_ etcpp sind eher für NPC oder player KI Ojekte gedacht, der reward_player ist der direkte Weg ohne gross mit Variablen fummeln zu müssen.
Man kann sagen das es alles 2 mal gibt (naja fast alles). Einmal "normal" für NPC und einmal für Player.

Man wird auch schnell merken das es im MD eigentlich fast nie NUR ein Weg gibt, sondern meist zwei oder gar mehr. Doppelt gemogelt hält bekanntlich besser :-P

MFG

Ketraar
Image
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Ketraar wrote:Man wird auch schnell merken das es im MD eigentlich fast nie NUR ein Weg gibt, sondern meist zwei oder gar mehr. Doppelt gemogelt hält bekanntlich besser :P
Fluch und Segen des MD.
Da gibt es so viele Stellen, an denen man Fehler machen kann...

Wenn ich schon dabei bin, habe ich noch drei Fragen:

1. Sub-Cues werden nur ausgeführt, wenn die Parent-Cues fertig ausgeführt sind, oder? Macht es dann überhaupt Sinn, auf <cue_completed> eines Parent-Cues zu prüfen?

2. Wenn ich eine MD-Datei, nachdem das Spiel gespeichert wurde, aus dem "director" Ordner entferne, bleiben dann alle Cues erhalten? D.h. muss ich noch eine extra Uninstall-Routine einfügen, die die Cues auch wirklich löscht? Ich frage, weil ich bei meiner kleinen Betty-Spracherweiterung unsicher bin, ob es wirklich reicht die MD Datei einfach zu entfernen.

3. Hast du schonmal mit <cutscene_event> gearbeitet und weißt du eventuell wie das mit dem Cutscene-System zusammenwirkt?

MfG,
ScRaT
User avatar
Ketraar
EGOSOFT
EGOSOFT
Posts: 12103
Joined: Fri, 21. May 04, 17:15
x4

Post by Ketraar »

Klar gibts da vieles was man falsch machen kann, bei so einer Auswahl, aber das ist gut so, bzw. besser als weniger Auswahl.
Mit der Zeit verschwindet der Nebel und es ist klar, wann, welchen code benutzen. :-)

zu den Fragen:

1. Jein. Laut XS werden sub-cues erst dann ausgeführt wenn der parent fertig ist. Aaaaaber... hat man timings drin, ist dem eben nicht so und sofern die conditon im child-cue zutrifft triggert der während der parent noch auf die timigs wartet.
Das cue_completed oder cue_is_complete sind auch wichtig für conditions in cues die keine sub-cues sind. Generell gilt es wasserdichte conditions zu benutzen, wie ist hier einem recht frei gestellt.
Man merke das, wenn man Zeugs checkt, wie gefundene Objekte via find_ immer sicherstellen das der MD die auch wirklich kennt (tracking), sonst werden diese checks ignoriert!

2. Ja die cues sind nach dem laden im Save verankert, meist reicht ein destroy_cue auf den Toplevellcue und schon kann man alles entfernen. Hier ist ein einfacher cue mit name check recht effektiv und simple.

3. Nein mit cutscenes hab ich nicht viel am Hut, da ist Jens bestimmt besser informiert als ich.

MFG

Ketraar
Image

Return to “X³: Terran Conflict / Albion Prelude - Scripts und Modding”