Frage zum XML-Patchen: DIFF wie einzelnen Eintrag ändern?

Hier ist der ideale Ort um über Scripts und Mods für X4: Foundations zu diskutieren.

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

Post Reply
Trajan von Olb
Posts: 545
Joined: Wed, 4. Feb 04, 21:39
x3tc

Frage zum XML-Patchen: DIFF wie einzelnen Eintrag ändern?

Post by Trajan von Olb » Wed, 2. Jan 19, 00:01

Hi,

ich will in der Datei mapdefaults.xml konkrete Einzräge austauschen bzw. hinzufügen. Das ist mir auch gelungen, aber ich würde es gern kompatibler und vor allem "kleiner" gestalten, also quasi die Axt durch das Skalpell ersetzen.

Meine bisherige Methode:

Original-Eintrag in der Datei:

Code: Select all

  <dataset macro="Cluster_47_macro">
    <properties>
      <identification name="{20003,470001}" description="{20003,470002}" system="18" />
      <sounds>
        <music ref="music_cluster_18" />
      </sounds>
      <area sunlight="1" economy="0.75" security="0.75" />
    </properties>
  </dataset>
Mein funktionierender Patch (ohne diff-Befehle):

Code: Select all

	<replace sel="/defaults/dataset[@macro='Cluster_47_macro']">
		<dataset macro="Cluster_47_macro">
			<properties>
				<identification name="{20003,470001}" description="{20003,470002}" system="18" />
				<sounds>
					<music ref="music_cluster_47" />
				</sounds>
				<area sunlight="1" economy="0.75" security="0.75" />
			</properties>
		</dataset>
	</replace>
Wie man sehen kann, will ich eigentlich nur die Musikverknüpfung ändern, also aus >music ref="music_cluster_18"< den Eintrag >music ref="music_cluster_47"< machen. Dadurch würde es auch kompatibler mit Programmänderungen oder anderen Mods werden, die vielleicht die anderen Werte ändern (zur Beeinflussung der Wirtschaftsdichte zu Beginn z.B.)...

Wie geht das eleganter? Ich hatte es mit

Code: Select all

	<replace sel="/defaults/dataset/properties/sounds/music[@ref='music_cluster_18']">
		<music ref="music_cluster_47" />
	</replace>
probiert, das klappt aber offenbar nicht. Welchen Fehler mache ich?

Vielen Dank schon mal für die Hilfe.

lg. Schmollo
Mein Traum vom Glück ist der Traum von einer anderen Menschheit. (S. Lem)

User avatar
Blacky_BPG
Posts: 2030
Joined: Mon, 23. Feb 04, 23:42
x4

Re: Frage zum XML-Patchen: DIFF wie einzelnen Eintrag ändern?

Post by Blacky_BPG » Wed, 2. Jan 19, 21:35

Wenn es nur einen Eintrag zu ersetzen gilt dann sollte es so funktionieren

Code: Select all

	<replace sel="/defaults/dataset/properties/sounds/music/@ref">music_cluster_47</replace>

Dann müßte es 2 Lösungen geben welche funktionieren müßten, die 2te ist aber wenn mich nicht alles täuscht die kompatiblere falls sich an den vorgegebenen Einträgen etwas ändert, also einer wegfällt oder einer mehr ist

Code: Select all

	<replace sel="/defaults/dataset/properties/sounds">
		<sounds>
			<music ref="music_cluster_47" />
			<music ref="music_cluster_48" />
		</sounds>
	</replace>

Code: Select all

	<replace sel="/defaults/dataset/properties/sounds/music/@ref">music_cluster_47</replace>
	<replace sel="/defaults/dataset/properties/sounds/music/@ref">music_cluster_48</replace>
Bin mir allerdings nicht zu 100% sicher da ich mich mit XML-Patch noch nicht wirklich beschäftigt habe.

Trajan von Olb
Posts: 545
Joined: Wed, 4. Feb 04, 21:39
x3tc

Re: Frage zum XML-Patchen: DIFF wie einzelnen Eintrag ändern?

Post by Trajan von Olb » Thu, 3. Jan 19, 15:51

Hey vielen Dank, das probier ich heute abend aus...

UNd sag mal, dieses "[@macro='Cluster_47_macro']" oder so ähnlich braucht man nicht immer?

lg. Schmollo
Mein Traum vom Glück ist der Traum von einer anderen Menschheit. (S. Lem)

User avatar
Blacky_BPG
Posts: 2030
Joined: Mon, 23. Feb 04, 23:42
x4

Re: Frage zum XML-Patchen: DIFF wie einzelnen Eintrag ändern?

Post by Blacky_BPG » Thu, 3. Jan 19, 17:41

Ach natürlich, das hatte ich jetzt vergessen, es müßte also so aussehen:

Code: Select all

	<replace sel="/defaults/dataset[@macro='Cluster_47_macro']/properties/sounds/music/@ref">music_cluster_47</replace>
oder eben so

Code: Select all

	<replace sel="/defaults/dataset[@macro='Cluster_47_macro']/properties/sounds">
		<sounds>
			<music ref="music_cluster_47" />
			<music ref="music_cluster_48" />
		</sounds>
	</replace>

Code: Select all

	<replace sel="/defaults/dataset[@macro='Cluster_47_macro']/properties/sounds/music/@ref">music_cluster_47</replace>
	<replace sel="/defaults/dataset/properties[@macro='Cluster_47_macro']/sounds/music/@ref">music_cluster_48</replace>

User avatar
Marvin Martian
Posts: 3547
Joined: Sun, 8. Apr 12, 09:40
x4

Re: Frage zum XML-Patchen: DIFF wie einzelnen Eintrag ändern?

Post by Marvin Martian » Thu, 3. Jan 19, 18:10

theoretisch (hab das bei X4 nicht getestet, bei XR geht es bei Object-Macros bzw sub-Macros) kann man auch die verwiesenen Refs noch für den Eintrag modifizieren, bzw. Einträge überschreiben
IMO müsste das in etwa so aussehen - kann aber auch garnicht gehen, nur ne Theorie

Code: Select all

	<add sel="/defaults/dataset[@macro='Cluster_47_macro']/properties/sounds/music[1]">
		<sample selection="random">
		  <select start="music\Cluster\p1_amb_01"/>
		  <select start="music\Cluster\p1_amb_04"/>
		  <select start="music\Cluster\p1_amb_02"/>
		  <select start="music\Cluster\p1_amb_03"/>
		  <select start="music\Cluster\p1_amb_05"/>
		  <select start="music\Cluster\p1_amb_07"/>
		</sample>
	</add>

Trajan von Olb
Posts: 545
Joined: Wed, 4. Feb 04, 21:39
x3tc

Re: Frage zum XML-Patchen: DIFF wie einzelnen Eintrag ändern?

Post by Trajan von Olb » Fri, 4. Jan 19, 00:56

Danke an alle. Das klappt hervorragend.

Die Sounds (also die Musik) definiere ich nicht direkt in der mapdefaults.xml, weil sie normalerweise in der Datei sound_library.xml abgelegt sind. In der mapdefault sind nur Verweise auf die jeweiligen Einträge. Und manche wurden doppelt vergeben - vermutlich ist Ego am Ende die Zeit ausgegangen, weshalb sie einfach einige Zeiger so verbogen haben, dass sie woanders hin weisen, um nicht noch mehr Einträge machen zu müssen. Bei der wenigen mitgelieferten Sektormusik merkt das sowieso niemand :-(

In der sound_library herrscht aber völliges Chaos, in "description" angegebene Sektornamen stimmen nicht mit den realen Sektoren überein, manchmal gibt es Einträge für Untersektoren, manchmal nicht (auch wenn eigentlich IMMER ein Untersektor definiert ist in der mapdefault). Gezielt Sektormusik vergeben funktioniert so definitiv nicht. An einer Stelle gibts auch einen Hinweis darauf, was passiert ist. Da steht was von Neuordnung der Map, vorher wurden die Cluster offenbar mit "cluster_a" etc. bezeichnet. Vermutlich ist das deshalb so unübersichtlich...

Aber langsam blicke ich durch :-)

Und verstehe mehr von XML. Dank Euch hier. :thumb_up:

lg. Schmollo
Mein Traum vom Glück ist der Traum von einer anderen Menschheit. (S. Lem)

Post Reply

Return to “X4: Foundations - Scripts und Modding”