XRebirth - Mod Research & Development-Topic

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

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

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

Post by UniTrader »

ich hab schon ne weile vor die wichtigsten Infos hier und im EN forum mal auf Deutsch zu sammeln und nen Sticky zu machen (dieser Topic hier ist aufgrund der unsortiertheit eher ungeeignet) - leider bisher keine zeit gehabt..

für die Mod-Übersicht hab ich btw ne sehr tolle idee, muss nur vorher was austesten.. (sollte die Wartung des Stickys vereinfachen und gleichzeitig dafür sorgen, dass man nicht mehr suchen muss woher man ne Mod hatte ^^ )
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
XWiki Moderator
XWiki Moderator
Posts: 2192
Joined: Sun, 2. Apr 06, 16:15
x4

Post by Lc4Hunter »

UniTrader wrote:ich hab schon ne weile vor die wichtigsten Infos hier und im EN forum mal auf Deutsch zu sammeln und nen Sticky zu machen (dieser Topic hier ist aufgrund der unsortiertheit eher ungeeignet) - leider bisher keine zeit gehabt..

für die Mod-Übersicht hab ich btw ne sehr tolle idee, muss nur vorher was austesten.. (sollte die Wartung des Stickys vereinfachen und gleichzeitig dafür sorgen, dass man nicht mehr suchen muss woher man ne Mod hatte ^^ )
Klingt schonmal gut :-)
Wenn du Hilfe brauchst, sag Bescheid, sofern ich kann, helfe ich gern mit :)
Ggf. wäre dann auch eine Unterteilung in grafisches Modding (also Modelle etc pp) und die Scripting-Thematik interessant. Würde der Übersicht auf jeden Fall helfen :-)
Ultramichy
Posts: 2
Joined: Fri, 26. Dec 03, 17:29
x3ap

Post by Ultramichy »

Nur mal so am rande hab mir mal die Lua Dateien im ui->core->lua Ordner angeschaut.

Es sind wirklich einfache Lua Scripte die mit LuaJit Compeliert worden sind.

Leider befinden sich darin solche sachen wie Handelsmenü, Gameover Screen, Speedanzeige usw...

Habe es zwar hinbekommen ein paar davon zu decompelieren :

hier mal die gameover.xpl

Code: Select all

function randomFunction	self.onInitialize ()
	var_0_2 = getElement("Scene.UIContract")
	private.contract = var_0_2
	var_0_2 = getElement("Scene.Layer.gameover")
	private.gameOverElement = var_0_2
	registerForEvent("showGameOver", private.contract, onShowGameOver)
	return
end


function randomFunction	self.onUpdate ()
	if private.autoHide ~= nil then
		--jump to 0015 (if previous if statement is false) --0015 JMP-JMP
		var_1_1 = getElapsedTime()
		if private.autoHide <= var_1_1 then
			--jump to 0015 (if previous if statement is false) --0015 JMP-JMP
			LockPresentation()
			HidePresentation()
		end 
	end
	return
end


function randomFunction	local randomFunction3 (INPUT_VAR_0_,INPUT_VAR_1_)
	var_2_3 = INPUT_VAR_1_
	showGameOver(var_2_3)
	return
end


function randomFunction(INPUT_VAR_0_)
	var_3_1 = 0 --var_3_1 NUMBER-NUMBER
	if var_3_1 < INPUT_VAR_0_ then
		--jump to 0009 (if previous if statement is false) --0009 JMP-JMP
		var_3_2 = getElapsedTime()
		var_3_2 = var_3_2 + INPUT_VAR_0_ --var_3_2 NUMBER-NUMBER
		private.autoHide = var_3_2
	end
	goToSlide(private.gameOverElement, "active")
	return
end


function someFunc4()
	var_4_0 = {} --to find out the contents of this table look inside the lua file
	var_4_1 = nil
	var_4_2 = nil
	local randomFunction0 = function() end -- starts at  gameover.lua:18
	self.onInitialize = randomFunction0
	local randomFunction1 = function() end -- starts at  gameover.lua:26
	self.onUpdate = randomFunction1
	local randomFunction2 = function() end -- starts at  gameover.lua:36
	local randomFunction3 = function() end -- starts at  gameover.lua:43
	return
end
Naja viel kann man daraus leider nicht lesen (jedenfalls ich).
Und es fehlen uns ein paar infos .

Code: Select all

var_4_0 = {} --to find out the contents of this table look inside the lua file
Aber vielleicht hilft es jemanden.
Lc4Hunter
XWiki Moderator
XWiki Moderator
Posts: 2192
Joined: Sun, 2. Apr 06, 16:15
x4

Post by Lc4Hunter »

Um mal kurz eine Anfängerfrage in dem Bereich zu stellen: Kann man damit ggf. ein ganz neues HUD bauen?

bzw. ganz neue Menüs erstellen und damit (im späteren Verlauf der Entwicklung) den ganzen Kram wieder auf X3-Niveau bringen?
Ich weiß zumindest das natürlich viel mehr dazu gehört, aber wäre das machbar?

Denn das wäre "die ultimative" Mod um die Bedienbarkeit endlich wieder auf eine gesunde Basis zu stellen.
Ultramichy
Posts: 2
Joined: Fri, 26. Dec 03, 17:29
x3ap

Post by Ultramichy »

Lc4Hunter wrote:Um mal kurz eine Anfängerfrage in dem Bereich zu stellen: Kann man damit ggf. ein ganz neues HUD bauen?

bzw. ganz neue Menüs erstellen und damit (im späteren Verlauf der Entwicklung) den ganzen Kram wieder auf X3-Niveau bringen?
Ich weiß zumindest das natürlich viel mehr dazu gehört, aber wäre das machbar?

Denn das wäre "die ultimative" Mod um die Bedienbarkeit endlich wieder auf eine gesunde Basis zu stellen.
Bin nicht gerade ein Profi was das angeht, aber wenn wir es schaffen würden alle LUA Scripte zu decompelieren könnten wir theoretisch fast alles machen was die Engine her gibt.

Denke mall dazu gehört dann auch ein eigenes HUD da es nicht in der Engine festgelegt ist (von das was ich bis jetzt gesehen habe).

Aber bitte korrigiert mich wenn ich falsch liege.
Lc4Hunter
XWiki Moderator
XWiki Moderator
Posts: 2192
Joined: Sun, 2. Apr 06, 16:15
x4

Post by Lc4Hunter »

Also das HUD als solches ist meines Wissens nach nicht in der Engine hinterlegt.
Es gibt ja schon Mods die Teile des ach so tollen Cockpits weg machen und die Anzeigen auf eine Art HUD projezieren welche dann halt angezeigt werden.
Mitunter auch an anderen, neuen, Positionen, von daher ist das wohl das geringste Problem :-)

Aber diese idiotische Menüführung muss weg... sonst wird das alles nie was wenn man nicht erst nach 100 Untermenüs dort landen will wo man hinkommt.
X3 war dahingehend nicht perfekt, aber weit näher an der Perfektion dran als das jetzige System.
wingcommander1
Posts: 89
Joined: Thu, 6. Sep 07, 10:55
x3tc

Post by wingcommander1 »

Kann man in einem Script eine globale also Objektbezogene Variable definieren?
Lc4Hunter
XWiki Moderator
XWiki Moderator
Posts: 2192
Joined: Sun, 2. Apr 06, 16:15
x4

Post by Lc4Hunter »

Modellexport ist zwar umständlich, aber es geht *muhar*

[ external image ]
danke
Posts: 146
Joined: Wed, 6. Nov 02, 20:31
x4

Post by danke »

Frage zu:
add_to_player_squad

Weiß jemand, welche Events und/oder Skripts/Skriptschnipsel dieser Aufruf erzeugt/anspricht?

gefunden in md/Conversations.xml:

<do_elseif value="event.param == 'g_addtosquad'">
<!-- See also cue OnAddToSquad -->
<add_to_player_squad object="event.object.ship" />
<add_npc_line line="1010" comment="Joining your squad" />
</do_elseif>
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

A)was hast du vor?

B)sollte es diese Events auslösen:
-> event_object_commander_set
und param == player.primaryship sowie object == ship
-> event_player_subordinate_added
und param == Ship
-> (evtl. auch noch event_object_subordinate_added
und object == player.primaryship sowie param == ship )

steht alles in der common.xsd :roll: ;)
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 ;)
danke
Posts: 146
Joined: Wed, 6. Nov 02, 20:31
x4

Post by danke »

Danke. Aber ich habe befürchtet, dass diese Events nicht erkennbar auf player.default o. ä. lenken.

event_player_subordinate_added finde ich nur in Verwendung, um eine Bestätigung an die Skunk zu senden.

event_object_commander_set und event_player_subordinate_added kann ich nirgends finden (außer in der common.xsd)

Naja. Wäre auch zu einfach gewesen.
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

wie gesagt: was willst du erreichen? es ist gut möglch, dass du denselben effekt hast ohne eines der bestehenden Scripte zu ändern bzw. das ganze völlig anders umsetzen als wie du denkst.
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 ;)
danke
Posts: 146
Joined: Wed, 6. Nov 02, 20:31
x4

Post by danke »

add_to_player_squad führt zu player.default.

Ich hatte einen Fehler beim Testen, nach dessen Beseitigung der Zusammenhang klarer wurde. Irgendwo muss add_to_player_squad ein start_script oder run_script für player.default ausführen und ship.commander = player.primaryship setzen.
Wenn ich aber testweise beide Dinge zu Fuß erledige, klappt es nicht. Vielleicht finde ich den Dreh aber noch raus.

Der Begriff "commander" ist übrigens von Egosoft verwirrend implementiert worden.
Zum einen ist er ein entitytype eines NPC (Kapitän) und
zum anderen ein Schiff, dass einem anderen Schiff überstellt ist.
Wenn man also von Schiffs-Commandern redet (z. B. ship.commander = player.primaryship), muss man ständig aufpassen, welche der beiden Verwendungen man meint.

Die Verwirrung wird komplett, wenn man erkennt, dass der NPC-Commander (Kapitän) eigentlich nichts anderes ist, als der NPC-Pilot (Pilot) von L- und XL-Schiffen. Man muss also den ship.pilot (nicht den ship.commander) wählen, wenn man den Kapitän eines L- und XL-Schiffes ansprechen will. Wer bitte denkt sich denn so was aus?
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

1. Debuglog aktivieren und Lesen ist meist sehr aufschlussreich ;) (parameter -logfile debuglog.txt anhängen ;) )

2. zeig mal deinen Code - ich hab da so ne ahnung..
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 ;)
ultraflash
Posts: 7
Joined: Wed, 20. Nov 13, 14:16
x4

Handelsfenster lua

Post by ultraflash »

@Ultramichy hast du zufällig auch ein paar Conversations Fenster wie zb das Handelsfenster decompiled?
Wäre insterressant vielleicht kann man da ansatzweise ne API rauslesen.
danke
Posts: 146
Joined: Wed, 6. Nov 02, 20:31
x4

Post by danke »

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 »

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
XWiki Moderator
XWiki Moderator
Posts: 2192
Joined: Sun, 2. Apr 06, 16:15
x4

Post by Lc4Hunter »

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: 25130
Joined: Sun, 2. Apr 06, 16:38
x4

Post by X2-Illuminatus »

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
XWiki Moderator
XWiki Moderator
Posts: 2192
Joined: Sun, 2. Apr 06, 16:15
x4

Post by Lc4Hunter »

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

Return to “X Rebirth - Scripts und Modding”