XRebirth - Mod Research & Development-Topic

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

Moderators: Moderators for English X Forum, Scripting / Modding Moderators

danke
Posts: 146
Joined: Wed, 6. Nov 02, 20:31
x4

Post by danke » Sun, 5. Jan 14, 23:20

add_to_player_squad und move.follow:

Ein Schiff in der Staffel führt standardmäßig move.follow aus. Es folgt mir also ständig.
Besser für Handelsschiffe wäre move.patrol oder move.idle, statt move.follow, finde ich.
Ich wollte das also ändern.

Fakten:
add_to_player_squad ist die einzige Möglichkeit, ein Schiff in meine Staffel und somit ins Handelsmenü zu bringen.
add_to_player_squad ruft player.default auf.
player.default führt move.follow aus.
abort_scripts kann player.default (inkl. move.follow) beenden, ohne das Shiff aus der Staffel zu entfernen.
start_script kann player.default wieder starten.

Lösung:
player.default erhält einen Parameter $wait, dessen Wert bestimmt, ob move.follow oder move.patrol gestartet wird.

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<diff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<!-- 
The default command for ships in squad is command.follow. The following adds changes this default command to command.patrol, so
the pilot will not go out of his actual zone. He patrol the zone without searching for enemies.
Optional the variable $wait kann set to 0 when call the script. That will activate command.follow
-->
	<add sel="/aiscript/params">
		<param name="wait" default="1" />
	</add>

	<replace sel="/aiscript/attention/actions/do_if[@value='this.ship.commander']">
      <!-- move.patrol or move.follow player. End if is not in squad -->
			
			<do_if value="this.ship.commander" exact="player.primaryship">
				<do_if value="$wait == 1">
					<show_notification caption="'new command'" timeout="5s" details="'Wait there ! ... confirmed, sir'" queued="true"/>
					<set_command command="command.patrol" />
					<run_script name="'move.patrol'">
					  <param name="range" value="'zone'" />
						<param name="engageenemies" value="false" />
					</run_script>
				</do_if>
				<do_else>
					<show_notification caption="'new command'" timeout="5s" details="'Follow the Skunk ! ... confirmed, sir'" queued="true"/>
					<run_script name="'move.follow'">
						<param name="target" value="player.primaryship" />
					</run_script>
				</do_else>
      </do_if>
			
			
	</replace>


	
</diff> 
Die Menüpunkte werden in Untermenü "andere Befehle" (o. ä.) erstellt und behandelt.

md/Orders.xml

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>

<!--
The orders submenu will be extended by this changes. The option "wait"/"follow" is placed on top left of the submenu.
-->
<diff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<add sel="/mdscript/cues/cue/actions/do_if/add_player_choice_return[@text='{1002,20}']" pos="before">
		<do_if value="event.object.command.value != command.patrol">
			<add_player_choice_sub text="{1004,31}" section="gOrders_wait" position="top_right" choiceparam="[event.object.ship]" comment="wait"/>
		</do_if>
		<do_else>
			<add_player_choice_sub text="{1004,7}" section="gOrders_follow" position="top_right" choiceparam="[event.object.ship]" comment="follow"/>	
		</do_else>
	</add>
	<add sel="/mdscript/cues/cue/actions">
				<do_elseif value="event.param == 'gOrders_wait'">
						<!--remove_from_player_squad object="event.param2.{1}" />
						<set_value name="event.param2.{1}.commander" exact="player.primaryship" /-->
						<abort_scripts entity="event.object" />
						<start_script name="'player.default'" object="event.object">
							<param name="wait" value="1" />
						</start_script>
						<show_notification caption="'new command'" timeout="5s" details="'Wait there ! ... '" queued="true"/>
        </do_elseif>
				
				<do_elseif value="event.param == 'gOrders_follow'">
						<!--remove_from_player_squad object="event.param2.{1}" />
						<set_value name="event.param2.{1}.commander" exact="player.primaryship" /-->
						<abort_scripts entity="event.object" />
						<start_script name="'player.default'" object="event.object">
							<param name="wait" value="0" />
						</start_script>
						<show_notification caption="'new command'" timeout="5s" details="'Follow the Skunk ! ... '" queued="true"/>
        </do_elseif>
	</add>

</diff>
Und damit das Orders-Submenü auch bei aktivem Patrol-Kommando angeboten wird, muss das Hauptmenü angepasst werden.

md/NPC_Staff.xml

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<diff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<!--
The  Main Menu offers on position "left" the orders submenu. Is the pilots command.patrol activ, the orders submenu is not available.
This following replacements activate the orders submenu for pilots on patrol too.
-->

	<replace sel="/mdscript/cues/cue/cues/cue[@name='DefaultComm']/actions/do_else/do_if[@value='$actor.type == entitytype.pilot or $actor.type == entitytype.commander']/do_if/do_elseif[@value='$actor.ship.commander == player.primaryship']/do_if/@value">(event.object.command.value == command.follow) or (event.object.command.value == command.support) or (event.object.command.value == command.patrol)</replace>

	<replace sel="/mdscript/cues/cue/cues/cue[@name='DefaultComm']/actions/do_else/do_if[@value='$actor.type == entitytype.pilot or $actor.type == entitytype.commander']/do_if/do_elseif[@value='$actor.ship.commander == player.primaryship']/do_if/add_player_choice_sub/@selectable">(not @event.object.$shiptrader_docking) and (not @event.object.$ship_parking) and (not event.object.ship.dockslot) and (not event.object.ship.docklink) and ((event.object.command.value == command.follow) or (event.object.command.value == command.patrol))</replace>

</diff>
Funktioniert soweit ganz gut.

Eigentlich muss ich noch herauskriegen, wodurch md/Conversations.xml angesprochen wird, denn da gibt es auch entsprechende Menü-Punkte.

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Sun, 5. Jan 14, 23:28

und warum nimmst du nicht statt <add_to_player_squad> einfach <set_object_commander commander="player.primaryship" /> ? erspart dir die ganze handhabung des rattenschwanzes ;) (besser: du musst dich dann selber drum kümmern, dass alles nötige auf dem betreffenden Schiff gestartet wird und so)

EDIT: gelöscht.. ich sollte kurz nach dem qaufwachen keine so langen posts lesen -.-''
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

Lc4Hunter
Posts: 2170
Joined: Sun, 2. Apr 06, 16:15
x4

Post by Lc4Hunter » Mon, 6. Jan 14, 10:19

Ich weiß das passt jetzt nicht 100%ig hier rein aber ich wollte auch nicht unbedingt ein neues Thema erstellen:

Wie wäre es mal eine Übersicht zu machen die wir oben anpinnen können zwecks "Mod-Übersicht"?
Nicht jeder schaut permanent ins englische Forum rein (so wie UniTrader und ich ;) ).
Gerade der Sektorhändler scheint mir doch eine saubere Sache zu sein die durchaus Erwähnung finden sollte :)

User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 24961
Joined: Sun, 2. Apr 06, 16:38
x4

Post by X2-Illuminatus » Wed, 8. Jan 14, 22:59

Wir (die deutschen S&M Moderatoren) sind schon am Diskutieren deswegen. Zeit ist aber gerade recht knapp bemessen, wodurch sich das alles etwas hinzieht.
Nun verfügbar! X3: Farnham's Legacy - Ein neues Kapitel für einen alten Favoriten

Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)

Neuauflage der fünf X-Romane als Taschenbuch

The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!

Lc4Hunter
Posts: 2170
Joined: Sun, 2. Apr 06, 16:15
x4

Post by Lc4Hunter » Thu, 9. Jan 14, 18:41

Danke für die Info :-)
Das ist doch eine Antwort mit der ich leben kann :)

Cappy1401
Posts: 313
Joined: Sun, 27. Apr 08, 02:16
x4

Post by Cappy1401 » Fri, 21. Feb 14, 12:03

So mal was von mir zum Thema.

Das die LUA mit dem JitCompieler bearbeitet sind stimmt.

Hier ein Link zu einem Decompieler, der Sie in normale funktionsfähige LUA-Dateien zurückverwandeln kann.
Ist nicht von mir, sondern von einem Dritten.
Die erzeugten LUA-Dateien funktionieren ohne probleme, was bedeutet das der Code vollständig zurückübersetzt wurde, denn LUA ist was Fehler anbelangt, nicht so tollerant, wie XML.

Hier der Link zum Decompieler
https://github.com/NightNord/ljd

Hier die Heimat des JIT-Compielers den ES benutzt :D
http://luajit.org/index.html

Das Conversationsmenü ist in sachen Anzahl der Buttons und der Bedienung in der "dialogmenu.lua" niedergelegt und kann durch die "MainMenu.xml" gesteuert werden.
Der Grund für das Compilieren mit dem JIT-Compieler, liegt in der um ein vielfaches höheren Geschwindigkeit der Compilierten LUA-Dateien.
Über die LUA-Dateien kann die gesammte UI verändert werden.
Durch eine Veränderung der LUA Dateien, kann man bestimmt auch die mit Anark erstellte UI gegen eine neue und bessere ersetzen.
Es müssen einzig die Aufrufkonventionen der in der EXE einkompilierten Teile der Scripte eingehalten werden.
Da der LUA-Interpreter aber Teil des Spiels ist, steht uns somit die geballte Macht von LUA zu Verfügung.



Gruß Cappy
Jedes Kriegsschiff, das unsere Werften verlässt, jedes abgefeuerte Geschütz bedeutet letztlich einen Diebstahl an denen, die sich nicht wehren können, nämlich an unseren Kindern. Eine Welt bewaffnet bis an die Zähne feuert nicht nur gebündelte Energie allein. Sie feuert auch oft genug die Hoffnung ihrer Kinder nutzlos in den Weltraum hinaus. Doch hin und wieder lässt man uns keine Wahl, dann jedoch besteht jede Salve aus der geballten Hoffnung das endlich wieder Frieden herrscht.

Der Amazone

Lc4Hunter
Posts: 2170
Joined: Sun, 2. Apr 06, 16:15
x4

Post by Lc4Hunter » Sun, 23. Feb 14, 08:35

Du scheinst dich ja mit dem Thema etwas genauer beschäftigt zu haben....
Heißt das man könnte das gesamte UI "abändern"?
Mein Gedankengang zielt in die Richtung X3-Menü ab...

Cappy1401
Posts: 313
Joined: Sun, 27. Apr 08, 02:16
x4

Post by Cappy1401 » Sun, 23. Feb 14, 11:55

Ich bin keine :idea: in sachen Programmieren, wie ich offen zugebe.
Wenn ich das jedoch richtig sehe, kann man Sie völlig verändern, denn die UI selbst, liegt ja in externen Dateien vor, die das aussehen beinhalten.
Ich weis jetzt nur nicht, ob es der gesamte Bereich der UI ist oder nur ein Teil, es hat jedoch den Anschein, als wenn die ganze UI an sich ein Stück ist.
Es stellt sich aber auch die Frage, wie ist der LUA-Interpreter beschaffen, denn das kann man ihm nicht ansehen.
Wurde er von ES nur auf das Kastriert, was für die UI, wie Sie jetzt ist, notwendig ist, dann ist für uns eine änderung der UI, ohne hilfe von ES, sehr wahrscheinlich nicht möglich. Da hilft momentan leider nur ausprobieren, mehr kann ich dazu leider nicht sagen.

Gruß Cappy



Aber mal als Frage am Rande zum Nachdenken.: Wie Real ist die die UI von X3? Setze Dich mal in einen Kampfjet und Du weis wie real Sie ist, nämlich absolut unreal.
Jedes Kriegsschiff, das unsere Werften verlässt, jedes abgefeuerte Geschütz bedeutet letztlich einen Diebstahl an denen, die sich nicht wehren können, nämlich an unseren Kindern. Eine Welt bewaffnet bis an die Zähne feuert nicht nur gebündelte Energie allein. Sie feuert auch oft genug die Hoffnung ihrer Kinder nutzlos in den Weltraum hinaus. Doch hin und wieder lässt man uns keine Wahl, dann jedoch besteht jede Salve aus der geballten Hoffnung das endlich wieder Frieden herrscht.

Der Amazone

Cappy1401
Posts: 313
Joined: Sun, 27. Apr 08, 02:16
x4

Post by Cappy1401 » Fri, 7. Mar 14, 11:58

Ich habe ein Problem mit den Stationsbuildmodulen.
Bei mir Quittiert das Spiel das hinzufügen einer Station oder eines weiteren Baumoduls für neue Stationen, mit einem Kommentarlosen CTD bei 12-22% des Ladeforgangs.
Es steht absolut nichts im Log über den Grund, es wird also nicht angezeigt, ob etwas fehlt oder falsch ist, nicht einmal ein Crash-Dump wird angelegt.

Ist dies ein Fehler den nur ich habe, oder haben dieses Problem noch andere hier?

An den Fabs selbst, kann es eigentlich nicht liegen, ich kann Sie ohne jedes Problem mit hilfe der Map, direkt ins Spiel bringen.
Wenn mit den Fabs etwas nicht stimmen würde, würden Sie nicht oder nur unvollständig gespwant werden und auch nicht funktionieren, was Sie jedoch tun. Auch werden im Log keine Fehler angezeigt was die Fabs betrifft.
Die Fabs arbeiten korrekt und sind auch vollständig, ich kann alles machen, was mit den anderen auch möglich ist. Selbst die KI handelt ohne jedes Problem mit den Fabs und der Manager arbeitet und versorgt mit den Ihm zugewisenen Schiffen die Fab.
Das hinzufügen neuer Schiffe ist jedoch kein Problem, habe zwei weitere Hybriden erstellt und hinzugefügt, Schiffe arbeiten korrekt und können auch ohne Probleme gebaut und genutzt werden, auch von den Fabs.
Muss nur noch einen Eintrag in wares.xml erstellen, weil die Schiffe bis jetzt Kostenlos sind, bis auf Waffen und Drohnen.

Hier mal der Inhalt beider Versionen des Baumoduls (Hinzufügen und neu), sowie der Eintrag in der macros.xml
Ich kann gerne, wenn es sich einer nachsehen will, auch die Stationen und die nötigen Dateien, als Archiv verfügbar machen.
Die Stationen haben nur neue Produktionsmodule, die eine höere Produktion haben. Ebenso sind die Macros der Stationen im Namen anders, damit Sie zu eigeneständigen Fabs werden, deren Änderungen die anderen Fabs nicht beeinflussen.


1.) Code Hinzufügen der Stationen zum Baumodul von Devries

Code: Select all

<?xml version="1.0" encoding="utf-8"?>

<diff>
   <add sel="/macros/macro/properties/builder">
        <macro ref="struct_bt_constructionmaterial_production_macro" />
        <macro ref="struct_bt_big_ships_yard_macro" />
        <macro ref="struct_bt_cell_refinery_macro" />
        <macro ref="struct_bt_fuelstation_macro" />
  </add>
</diff>
2.) Code Neues Baumodul nur für diese Stationen.

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<macros>
  <macro name="buildmodule_stations_pl_macro" class="buildmodule">
    <component ref="standardbuildmodule" />
    <properties>
      <identification unique="0" />
      <builder>
        <macro ref="struct_bt_constructionmaterial_production_macro" />
        <macro ref="struct_bt_big_ships_yard_macro" />
        <macro ref="struct_bt_cell_refinery_macro" />
        <macro ref="struct_bt_fuelstation_macro" />
      </builder>
    </properties>
  </macro>
</macros>

3.) Eintag in der macros.xml

Code: Select all

    <entry name="buildmodule_stations_pl_macro" value="extensions\Updates\assets\props\SurfaceElements\macros\buildmodule_stations_pl_macro"/>

Danke im voraus für die Hilfe.

Gruß Cappy
Jedes Kriegsschiff, das unsere Werften verlässt, jedes abgefeuerte Geschütz bedeutet letztlich einen Diebstahl an denen, die sich nicht wehren können, nämlich an unseren Kindern. Eine Welt bewaffnet bis an die Zähne feuert nicht nur gebündelte Energie allein. Sie feuert auch oft genug die Hoffnung ihrer Kinder nutzlos in den Weltraum hinaus. Doch hin und wieder lässt man uns keine Wahl, dann jedoch besteht jede Salve aus der geballten Hoffnung das endlich wieder Frieden herrscht.

Der Amazone

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Fri, 7. Mar 14, 12:06

hast du ne Rekursion drin? wenn ein Konstro-Schiff ne Werft bauen kann und diese Werft das Konstro-Schiff kommt das Spiel in ne endlosschleife, da in einem macro angegebene macros ebenfalls dazugeladen werden, die darin werden ebenfalls geladen etc.
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

Cappy1401
Posts: 313
Joined: Sun, 27. Apr 08, 02:16
x4

Post by Cappy1401 » Fri, 7. Mar 14, 12:47

Die Werft kann auch das Bauschiff bauen, ja, aber nur meine Werft, die auch oben im Baumodul steht.
Die Werft ist die von Albion, sie hat nur eigene Macros für den Bau mit einem Bauschiff und eigene Baumodule für die Schiffe.
(Veränderte Copien der Orginalwerft, wo nur das macro (auch intern) umbenannt wurde, sowie neue Baumodule eingetragen sind.)
Das selbe beim Bauschiff, anderer Macroname und anderes Baumodul.
Lassen wir den Namen in der t.xml mal weg, der auch anders ist.
Es heist PL-Bauschiff.
Grundlegend unterscheiden sich also die Stationen sowie das Bauschiff nicht von den anderen.
Aber mal sehen, vielleicht gibt es einen Fehler in der macros.xml
Ich sehe mal in der orginalen nach, denn die Station und das Bauschiff, sind in der macros.xml eingetragen.
Bei den Stationen ein muss, weil Sie sonst nicht funktionieren.


Edit:

Das Problem ist die Werft, ich glaube ich habe auch schon eine Lösung für das Problem.
Ich muss dazu jeder vorhandenen Werft, ein Bauschiff geben, das wiederum nur die Werft bauen kann, die Werft des Spielers, darf jedoch kein Bauschiff haben, welches die Spielerwerft bauen kann.
Immer diese Umwege. :x

Edit2:

Problem gelöst, das mit dem zusätzlichen Bauschiff das nur die Spielerwerft bauen kann und in der Spielerwerft dann nicht vorhanden ist funktioniert.

Danke für den Hinweis mit der Rekursion UniTrader, das war tatsächlich das Problem.
Jetzt kann ich überall eine funktionierende Werft bauen, muss nur noch ein Script machen, das dafür sorgt, das die Werft die URVs anfordert, was Sie nämlich nicht von allein tut, da hilft momentan nur ein Savegame Edit.

Gruß Cappy
Jedes Kriegsschiff, das unsere Werften verlässt, jedes abgefeuerte Geschütz bedeutet letztlich einen Diebstahl an denen, die sich nicht wehren können, nämlich an unseren Kindern. Eine Welt bewaffnet bis an die Zähne feuert nicht nur gebündelte Energie allein. Sie feuert auch oft genug die Hoffnung ihrer Kinder nutzlos in den Weltraum hinaus. Doch hin und wieder lässt man uns keine Wahl, dann jedoch besteht jede Salve aus der geballten Hoffnung das endlich wieder Frieden herrscht.

Der Amazone

Post Reply

Return to “X Rebirth - Scripts und Modding”