Teladi HQ verschieben

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
STB2199
Posts: 180
Joined: Fri, 15. Aug 14, 08:38
x4

Teladi HQ verschieben

Post by STB2199 » Wed, 28. Aug 19, 06:40

Hallo Moin
Habe den mdscript FactionLogic ersetzt um das Teladi HQ zu verschieben

<diff>
<replace sel="/mdscript[@name='FactionLogic']">
<mdscript name="FactionLogic" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="md.xsd">

<Original Skript>
<Textzeile die verändert wurde>
<find_cluster name="$PreferredSpace" macro="macro.cluster_19_macro" comment="anderer Sektor"/>
<set_value name="$PreferredHQTypes" exact="[macro.landmarks_tel_tradestation_01_macro, 'tradestation', 'equipmentdock', 'shipbuilding']"/>
<Textzeile die verändert wurde>

<Original Skript>

</mdscript>
</replace>
</diff>
aus cluster_15 wurde cluster_19 und schon ist das Teladi HQ in Sektor19

das Dumme ist nur ich habe den ganzen Skript ersetzt dafür. Wie sollte der Replace Befehl ausehen wenn ich nur die beiden zeilen ersetzen will?

Gruß STB2199

STB2199
Posts: 180
Joined: Fri, 15. Aug 14, 08:38
x4

Re: Das HQ der Teladi muss verschoben werden

Post by STB2199 » Wed, 28. Aug 19, 08:37

Kann man das so zum Beispiel in einer Mod verwenden

<diff>
<replace sel="/mdscript[@name='FactionLogic']/cues/library[@name='Manager']/cues/cue[@name='Find_Faction_Headquarters'/actions/">

<actions>
<set_value name="$HQNecessary" exact="true"/>
<!--Even wrecked HQs are valid-->
<set_value name="$HQ" exact="$Faction.headquarters"/>
<do_if value="$HQ.exists">
<debug_text text="$Faction + ' already has headquarters ' + $HQ"/>
</do_if>
<do_else>
<!-- Preferred Faction HQ location and type depends on the faction -->
<debug_text text="'Finding Faction HQ for ' + $Faction" chance="$DebugChance" />
<set_value name="$PreferredSpace" exact="null"/>
<!--List of types by priority. Can be a station macro or strings 'shipbuilding', 'equipmentdock', 'tradestation', 'defencestation' or 'piratebase'-->
<set_value name="$PreferredHQTypes" exact="[]"/>
<do_if value="$Faction == faction.argon">
<find_cluster name="$PreferredSpace" macro="macro.cluster_14_macro" comment="Argon Prime"/>
<set_value name="$PreferredHQTypes" exact="['shipbuilding', 'equipmentdock', 'tradestation']"/>
</do_if>
<do_elseif value="$Faction == faction.antigone">
<find_cluster name="$PreferredSpace" macro="macro.cluster_28_macro" comment="Antigone Memorial"/>
<set_value name="$PreferredHQTypes" exact="['equipmentdock', 'shipbuilding', 'tradestation']"/>
</do_elseif>
<do_elseif value="$Faction == faction.hatikvah">
<find_sector name="$PreferredSpace" macro="macro.cluster_29_sector001_macro" comment="Hatikvah's Choice"/>
<set_value name="$PreferredHQTypes" exact="['tradestation', 'piratebase', 'equipmentdock']"/>
</do_elseif>
<do_elseif value="$Faction == faction.paranid">
<find_cluster name="$PreferredSpace" macro="macro.cluster_18_macro" comment="Trinity Sanctum"/>
<set_value name="$PreferredHQTypes" exact="['shipbuilding', 'equipmentdock', 'tradestation']"/>
</do_elseif>
<do_elseif value="$Faction == faction.holyorder">
<find_cluster name="$PreferredSpace" macro="macro.cluster_24_macro" comment="Holy Vision"/>
<set_value name="$PreferredHQTypes" exact="['shipbuilding', 'equipmentdock', 'tradestation']"/>
</do_elseif>
<do_elseif value="$Faction == faction.alliance">
<find_cluster name="$PreferredSpace" macro="macro.cluster_23_macro" comment="Sacred Relic"/>
<set_value name="$PreferredHQTypes" exact="['shipbuilding', 'equipmentdock']"/>
</do_elseif>
<do_elseif value="$Faction == faction.teladi">
<find_cluster name="$PreferredSpace" macro="macro.cluster_19_macro" comment="anderer Sektor"/>
<set_value name="$PreferredHQTypes" exact="[macro.landmarks_tel_tradestation_01_macro, 'tradestation', 'equipmentdock', 'shipbuilding']"/>
</do_elseif>
<do_elseif value="$Faction == faction.ministry">
<find_cluster name="$PreferredSpace" macro="macro.cluster_34_macro" comment="Profit Centre Alpha"/>
<set_value name="$PreferredHQTypes" exact="['equipmentdock', 'shipbuilding']"/>
</do_elseif>
<do_elseif value="$Faction == faction.scaleplate">
<find_cluster name="$PreferredSpace" macro="macro.cluster_42_macro" comment="Nopileos' Legacy"/>
<set_value name="$PreferredHQTypes" exact="['equipmentdock', 'piratebase']"/>
</do_elseif>
<do_else>
<set_value name="$HQNecessary" exact="false" />
<debug_text text="'Faction is ' + $Faction.name + ' - no Faction HQ is required'" chance="$DebugChance" />
</do_else>

<do_if value="$PreferredSpace and $PreferredHQTypes.count">
<!--2 passes. First with $PreferredSpace, second for the whole galaxy-->
<set_value name="$SearchSpace" exact="$PreferredSpace"/>
<do_all exact="2">
<do_all exact="$PreferredHQTypes.count" counter="$i">
<debug_text text="'Attempting to find a suitable HQ in space ' + $SearchSpace.knownname + ' of type ' + $PreferredHQTypes.{$i}" chance="$DebugChance"/>
<do_if value="typeof $PreferredHQTypes.{$i} == datatype.macro">
<find_station_by_true_owner name="$HQ" space="$SearchSpace" faction="$Faction" macro="$PreferredHQTypes.{$i}" />
</do_if>
<do_elseif value="$PreferredHQTypes.{$i} == 'shipbuilding'">
<find_station_by_true_owner name="$HQ" space="$SearchSpace" faction="$Faction" canbuildships="true" />
</do_elseif>
<do_elseif value="$PreferredHQTypes.{$i} == 'equipmentdock'">
<find_station_by_true_owner name="$HQ" space="$SearchSpace" faction="$Faction" equipmentdock="true" />
</do_elseif>
<do_elseif value="$PreferredHQTypes.{$i} == 'tradestation'">
<find_station_by_true_owner name="$HQ" space="$SearchSpace" faction="$Faction" tradestation="true" />
</do_elseif>
<do_elseif value="$PreferredHQTypes.{$i} == 'defencestation'">
<find_station_by_true_owner name="$HQ" space="$SearchSpace" faction="$Faction" defencestation="true" />
</do_elseif>
<do_elseif value="$PreferredHQTypes.{$i} == 'piratebase'">
<find_station_by_true_owner name="$HQ" space="$SearchSpace" faction="$Faction" piratebase="true" />
</do_elseif>
<do_if value="$HQ">
<break/>
</do_if>
</do_all>
<do_if value="$HQ">
<break/>
</do_if>
<do_else>
<set_value name="$SearchSpace" exact="player.galaxy"/>
</do_else>
</do_all>

<do_if value="$HQ">
<debug_text text="$Faction + ' HQ set to ' + $HQ.knownname + ' ' + $HQ + ' in ' + $HQ.sector.knownname + ', ' + $HQ.cluster.knownname" chance="$DebugChance" />
<set_value name="md.$FactionData.{$Faction}.$Headquarters" exact="$HQ" />
<set_faction_headquarters faction="$Faction" station="$HQ"/>
<signal_cue cue="CreateNewFactionRepresentative" />
</do_if>
</do_if>
<remove_value name="$PreferredSpace"/>
<remove_value name="$PreferredHQType"/>
</do_else>
</actions>
</replace>
</diff>

ist die Replacezeile Korrekt? könnte man das so in einer Mod anwenden?

Freue mich auf eure Antworten

Mit vielen lieben Grüßen STB2199

STB2199
Posts: 180
Joined: Fri, 15. Aug 14, 08:38
x4

Re: Das HQ der Teladi muss verschoben werden

Post by STB2199 » Wed, 28. Aug 19, 09:16

Das Problem liegt aber in der Zeile:

<set_value name="$PreferredHQTypes" exact="[macro.landmarks_tel_tradestation_01_macro, 'tradestation', 'equipmentdock', 'shipbuilding']"/>

es gibt im cluster_15 kein 'equipmentdock', 'shipbuilding' der Teladi darum wechselt die Fraktion auch nicht das HQ nachdem die Station zerstört wurde.

Da ist was nicht Korrekt!?

das macro.landmarks_tel_tradestation_01_macro steht nicht in den anderen zeilen der HQ Findung das wird wohl das Problem sein.

mit vielen lieben Grüßen STB2199

User avatar
bogatzky
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 6402
Joined: Tue, 3. Feb 04, 01:30
x4

Re: Teladi HQ verschieben

Post by bogatzky » Wed, 28. Aug 19, 09:31

Monolog aus diesem Thread abgetrennt.
Fragen zum Scripten gehören in dieses Forum.
Eigene Beiträge kann man auch selbst um Inhalte ergänzen, über die "Edit"-Funktion. Man braucht deshalb nicht mehrere Posts hintereinander verfassen.
Menschen. Das Böse daran ist das Dumme darin!

Mornar
Posts: 638
Joined: Sun, 22. Feb 04, 14:48
x4

Re: Teladi HQ verschieben

Post by Mornar » Fri, 30. Aug 19, 18:49

vllt hilfts dir weiter

HQ Move Mod

https://www.nexusmods.com/x4foundations ... ?tab=posts

mod funktioniert unter 2.5 , die neue Position wird aber als Illegaler Bauplatz klassifiziert und es gibt mecker von den örtlichen Behörden

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

Re: Teladi HQ verschieben

Post by Marvin Martian » Tue, 10. Sep 19, 08:48

glaub sich jetzt noch mit verschobenen HQ abzustrampeln ist etwas sinnlos, soll ja mit 3.0 eh verschiebbar werden - vielleicht gibts dann auch etwas weniger hardcodet Stuff in der FactionLogic

wäre zudem schön wenn @STB2199 den Code-Tag im Editor verwendet ;)
außerdem würde ich diese Patches so kurz wie möglich halten, statt deines ersetzen des kompletten <action /> Abschnitts - da hier die Fraktionen einzeln gehandhabt werden, ist bei einem Mod/DLC davon auszugehen, dass jemand hier ebenso einige Add -Patches hinzufügt! Mit deinem Vorgehen machst du deine Mod nur unnötig inkompatibel

Post Reply

Return to “X4: Foundations - Scripts und Modding”