Mod Frage
Moderators: Moderators for English X Forum, Scripting / Modding Moderators
-
- Posts: 3548
- Joined: Sun, 8. Apr 12, 09:40
-
- Posts: 28
- Joined: Wed, 16. Oct 13, 08:51
hi:)
ja genau ein Enterschiff.
Theoretisch wäre das eine ähnliche Funktion wie die von Architekt.
Der sietzt auch auf einem anderen Schiff und bekommt von der skunk einen Befehl.
Statt also eine Station zu bauen soll der MArineofficer die drohnen starten.
Als Schiff man ja als erstes nen normalen Frachter nehmen.
Die nächste Frage wäre dann noch wie man die Funktion "Entern" ( vom "Mauscursor") mit dem Officer auf dem Frachter verlinkt
ja genau ein Enterschiff.
Theoretisch wäre das eine ähnliche Funktion wie die von Architekt.
Der sietzt auch auf einem anderen Schiff und bekommt von der skunk einen Befehl.
Statt also eine Station zu bauen soll der MArineofficer die drohnen starten.
Als Schiff man ja als erstes nen normalen Frachter nehmen.
Die nächste Frage wäre dann noch wie man die Funktion "Entern" ( vom "Mauscursor") mit dem Officer auf dem Frachter verlinkt
-
- Posts: 3548
- Joined: Sun, 8. Apr 12, 09:40
an den Schnelloptionen herumpfuschen wird wohl schwer
MD/Boarding.xml
scheint aber auf den ersten Blick so ausgelegt zu sein dass prinzipiell auch ein anderes als das Playership Marine und Stoßtrupp stellen kann
vermutlich kann man das Event also auch per Conversation triggern, z.b. auf Schiffe in einem bestimmten Abstand
um die Zerstörung der Subsysteme und den ganzen anderen Zauber muss sich aber weiterhin der Player kümmern, außer man strickt das noch mit der SchiffsAI um
einfacher wäre es aber wohl beim Start der Boarddingpods einfach noch auf Gefolgsschiffen nach Marines zu suchen, was die Enterstärke erhöhen würde und weit weniger Zauberei bedarf
Die Marines kann man wie gesagt einfach in die Drohnenrampe stecken und von dort anfordern
MD/Boarding.xml
scheint aber auf den ersten Blick so ausgelegt zu sein dass prinzipiell auch ein anderes als das Playership Marine und Stoßtrupp stellen kann
vermutlich kann man das Event also auch per Conversation triggern, z.b. auf Schiffe in einem bestimmten Abstand
um die Zerstörung der Subsysteme und den ganzen anderen Zauber muss sich aber weiterhin der Player kümmern, außer man strickt das noch mit der SchiffsAI um
einfacher wäre es aber wohl beim Start der Boarddingpods einfach noch auf Gefolgsschiffen nach Marines zu suchen, was die Enterstärke erhöhen würde und weit weniger Zauberei bedarf
Die Marines kann man wie gesagt einfach in die Drohnenrampe stecken und von dort anfordern
-
- Posts: 28
- Joined: Wed, 16. Oct 13, 08:51
-
- Posts: 28
- Joined: Wed, 16. Oct 13, 08:51
da habe ich doch gleich ne neue Anfängerfrage.
Also ich erstelle also eine eigenden Mission "Enterschiff" die
mehr oder weniger Boarding.xml ist.
Damit übernehm ich erstmal die übriege Handlung.
Die Frage ist wie kommen die Mariens ursprünglich auf das Enterschiff.
Sie sollen nicht beim Enter event erstellt werden sondern schon vorher gekauft werden. Also beim Recruter kauf event einhaken?
wenn man übrings statt marins ->androiden kaufen würden könnte man sich unter umständen (immersions mässig) erklären (kann sich super klein packen) wieso die alle in die skunk rein gehen.
so ala http://jedipedia.wikia.com/wiki/Pistoek ... age-Droide
Der Umstand das die rund 50 Soldaten irgendwo zwischen toilette und bad in der skunk versteckt sind stört mich total.
Das wäre dann nur den Textstring von marines in android marins ändern
rest macht die Vorstellung.
Also ich erstelle also eine eigenden Mission "Enterschiff" die
mehr oder weniger Boarding.xml ist.
Damit übernehm ich erstmal die übriege Handlung.
Die Frage ist wie kommen die Mariens ursprünglich auf das Enterschiff.
Sie sollen nicht beim Enter event erstellt werden sondern schon vorher gekauft werden. Also beim Recruter kauf event einhaken?
wenn man übrings statt marins ->androiden kaufen würden könnte man sich unter umständen (immersions mässig) erklären (kann sich super klein packen) wieso die alle in die skunk rein gehen.
so ala http://jedipedia.wikia.com/wiki/Pistoek ... age-Droide
Der Umstand das die rund 50 Soldaten irgendwo zwischen toilette und bad in der skunk versteckt sind stört mich total.
Das wäre dann nur den Textstring von marines in android marins ändern
rest macht die Vorstellung.
-
- Posts: 3548
- Joined: Sun, 8. Apr 12, 09:40
mach dir keine Gedanken dazu, die Features der Skunk passen zu einem kleinem Großschiff, aber nicht zur Skunk
Betrachte die Mühle einfach als Tardis, sonst kannst du nie erklären warum da 8 Drohnen die eine ähnliche Größe wie die Skunk haben und die besagten Marines MIT Enterkapseln die ebenfalls ziemlich groß sind reinpassen
eine eigene Boarding.xml würde ich da nicht unbedingt verwenden, eher die vorhandene modifizieren
weitere Schiffe kannst du damit finden
und diese dann neben dem Boardingship in der
cue name="LaunchBoardingPods" starten und dich im weiteren des Quellcodes dann an request_units, remove_units, return_units orientieren wo du das alles auf die Schiffe verteilst
Tja, die Marines auf ein Schiff zu bekommen ist relativ einfach per scripting
eine MD die ungefähr so aussehen könnte (ungetestet, nur kurz zusammengezimmert)
Transfer erfolgt dann über den Marine der Skunk zu einem beliebigen Gefolgsschiff das freie Drohnenplätze hat
EDIT: aktueller Stand http://forum.egosoft.com/viewtopic.php? ... 29#4561629
Betrachte die Mühle einfach als Tardis, sonst kannst du nie erklären warum da 8 Drohnen die eine ähnliche Größe wie die Skunk haben und die besagten Marines MIT Enterkapseln die ebenfalls ziemlich groß sind reinpassen
eine eigene Boarding.xml würde ich da nicht unbedingt verwenden, eher die vorhandene modifizieren
weitere Schiffe kannst du damit finden
Code: Select all
<create_group groupname="$boardingfleet"/>
<do_all exact="$boardership.subordinates.count" counter="$i">
<do_if value="$boardership.subordinates.{$i}.availableunits.{unitcategory.marine}.count and $boardership.zone == $boardership.subordinates.{$i}.zone">
<add_to_group groupname="$boardingfleet" object="$boardership.subordinates.{$i}" />
</do_if>
</do_all>
cue name="LaunchBoardingPods" starten und dich im weiteren des Quellcodes dann an request_units, remove_units, return_units orientieren wo du das alles auf die Schiffe verteilst
Tja, die Marines auf ein Schiff zu bekommen ist relativ einfach per scripting
eine MD die ungefähr so aussehen könnte (ungetestet, nur kurz zusammengezimmert)
Transfer erfolgt dann über den Marine der Skunk zu einem beliebigen Gefolgsschiff das freie Drohnenplätze hat
EDIT: aktueller Stand http://forum.egosoft.com/viewtopic.php? ... 29#4561629
Last edited by Marvin Martian on Sat, 31. Oct 15, 19:35, edited 1 time in total.
-
- Moderator (Script&Mod)
- Posts: 14571
- Joined: Sun, 20. Nov 05, 22:45
Auch wenn ich gerade nix beitragen kann - interessantes Thema, ich werde es bestimmt verfolgen vor allem auch weil mich die TARDIS Skunk ebenfalls stört, wobei mein Vorhaben noch ein wenig radikaler ist: die Skunk kann keine Marines und Drohnen mehr tragen sondern diese werden von den Schiffe im Player-squad zur Verfügung gestellt
aber bis ich damit anfange vergeht bestimmt noch ein Jahr, gibt bei meinem Projekt erst noch eine Menge anderer Sachen die zuerst fertig werden müssen....
aber bis ich damit anfange vergeht bestimmt noch ein Jahr, gibt bei meinem Projekt erst noch eine Menge anderer Sachen die zuerst fertig werden müssen....
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
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
-
- Posts: 28
- Joined: Wed, 16. Oct 13, 08:51
he ihr beiden - erstmal vielen lieben Dank für solche prominente Aufmerksamkeit:)
Ich programmieren zwar schon relative lange(java und c#) aber ich bin ich noch sehr am Anfang was das Thema X Rebirth Modding angeht.
Eigentlich ist das ganze gestern Abend bei jede Menge Bier entstanden
und dem Bedürfnis etwas positives beizutragen statt immer nur über das Spiel zu nörgeln was nicht geht.
Nach Marvins Post gabs erstmal jede menge Google auch wo man denn da ansetzt,und vor allem welche Programmiersprache etc.
so nun schau ich mir erstmal in ruhe Marvins beispiel Code an:-)
Ich programmieren zwar schon relative lange(java und c#) aber ich bin ich noch sehr am Anfang was das Thema X Rebirth Modding angeht.
Eigentlich ist das ganze gestern Abend bei jede Menge Bier entstanden
und dem Bedürfnis etwas positives beizutragen statt immer nur über das Spiel zu nörgeln was nicht geht.
Nach Marvins Post gabs erstmal jede menge Google auch wo man denn da ansetzt,und vor allem welche Programmiersprache etc.
so nun schau ich mir erstmal in ruhe Marvins beispiel Code an:-)
-
- Posts: 3548
- Joined: Sun, 8. Apr 12, 09:40
zum einfügen/ersetzen von Code per patch in der bestehenden boarding.xml dürfte dir http://forum.egosoft.com/viewtopic.php?t=354310 helfen
ich würde hier wirklich nur das Handling der Marines aus dem Boardingship auf mehrere Schiffe aufbohren, den Rest kann man dann erst mal lassen
Final muss man dann einfach sehen ob es noch Sinn macht eine Enterfregatte zu basteln
zwar wird aktuell der Entertrupp nahe der Skunk einfach irgendwo erstellt, aber auch das könnte man für die Gefolgsschiffsmarines noch verbessern in dem die Landepods beim Schiff/Dock erstellen lässt
womöglich kann man diese sogar irgendwie an der Drohnenrampe selbst starten lassen - müsste man mal experimentieren
persönlich würde mir statt einer Fregatte eher sowas wie ein Hymir mit ~20-30 Drohnen-bzw. Marineslots ohne Laderaum vorschweben der mit besseren Antrieben dann auch mit der Skunk mithält
dann reduziert man die Skunkmarines auf einige wenige und muss seine Mannschaften aus den Gefolgsschiffen beziehen - ist wahrscheinlich auch eher machbar, da IMO der [Entern] button irgendwo in der Engine tiefer verdrahtet ist
ich würde hier wirklich nur das Handling der Marines aus dem Boardingship auf mehrere Schiffe aufbohren, den Rest kann man dann erst mal lassen
Final muss man dann einfach sehen ob es noch Sinn macht eine Enterfregatte zu basteln
zwar wird aktuell der Entertrupp nahe der Skunk einfach irgendwo erstellt, aber auch das könnte man für die Gefolgsschiffsmarines noch verbessern in dem die Landepods beim Schiff/Dock erstellen lässt
womöglich kann man diese sogar irgendwie an der Drohnenrampe selbst starten lassen - müsste man mal experimentieren
persönlich würde mir statt einer Fregatte eher sowas wie ein Hymir mit ~20-30 Drohnen-bzw. Marineslots ohne Laderaum vorschweben der mit besseren Antrieben dann auch mit der Skunk mithält
dann reduziert man die Skunkmarines auf einige wenige und muss seine Mannschaften aus den Gefolgsschiffen beziehen - ist wahrscheinlich auch eher machbar, da IMO der [Entern] button irgendwo in der Engine tiefer verdrahtet ist
-
- Posts: 28
- Joined: Wed, 16. Oct 13, 08:51
ja. danke:)
ich muss glaub erstmal viel lesen.
Ich bin auch über
http://www.egosoft.com/download/x_rebir ... rGuide.pdf gestolpert ich werde beide links mal durchakern.
Die nächste Frage wird dann wohl sein wie entpacke ich die Scripts weil im Rebirth Verzeichnis war davon nichts zu sehen aber vielleicht erübrigt sich bald die Frage von selbst:)
Einen xml Editor habe ich schon über das Forum gezogen.
Ich hätte gern das die Skunk eher die Rolle eines Kommandoschiffs einnehmen würde. Das meint das Ren mehr delegiert.
zu dem Enterschiff selbst.
Von der Idee her hätte ich gern das der Spieler ein oder mehrerer Enter-Schiff haben kann die quasi autonom agieren.
Autonom meint :die Spieler Aktion soll sich auf Auswahl des Ziels beschränken.
Also auch kein "ich hab dir mal ein paar Ziele ausgewählt" bla.
Entweder ist die Entermannschaft elite und schaffts allein oder das
Schiff wird zerblassen.
Natürlich kann der Spieler nachhelfen aber es sollte ihm überlassen bleiben ob er hilft oder nicht. Das Missions design von Boarding ist derzeit wie ein Tutorial und zwingt den Spieler jedesmal die selben Schritte zu tun. Was irgendwann nicht nur sehr schnell langweilig wird sondern
es ist auch seltsam bevormundend für ein Sandkasten-Spiel.
-->Auf einen einzelnen Befehl hin soll das Schiff zum Ziel beschleunigen
, Schilde und Türme selbstständig angreifen es also "enter fertig" machen und dann im Anschluss die marines entsenden
Zwischen werden Status Updates an den Spieler gesendet.
Auch schick wärs wenn man der job Ai dieses Enterschiffs
unterschiebt und Piraten eben auch Schiffe entern könnten.
aaaaaaber ich denke ich werde es erstmal so machen wie du gesagt hast.
Marines werden normal gekauft aber dann Manuel oder automatisch auf ein neues Enterschiff übertragen.Erst dachte ich es würde reichen sich einfach eine Zahl irgendwo zu merken aber die marines haben ja selbst auch Zustände die irgendwo ja auch gespeichert werden. vermutlich im marin Objekt selbst ...wenns sowas gibt:).
Nach "Enter" Befehl wird halt das normale Mission desgin abgefeuert und dann am ende geschaut bei welchen Schiff die Marines sind und von dort aus die Kapseln gespawnt.
ich muss glaub erstmal viel lesen.
Ich bin auch über
http://www.egosoft.com/download/x_rebir ... rGuide.pdf gestolpert ich werde beide links mal durchakern.
Die nächste Frage wird dann wohl sein wie entpacke ich die Scripts weil im Rebirth Verzeichnis war davon nichts zu sehen aber vielleicht erübrigt sich bald die Frage von selbst:)
Einen xml Editor habe ich schon über das Forum gezogen.
Ich hätte gern das die Skunk eher die Rolle eines Kommandoschiffs einnehmen würde. Das meint das Ren mehr delegiert.
zu dem Enterschiff selbst.
Von der Idee her hätte ich gern das der Spieler ein oder mehrerer Enter-Schiff haben kann die quasi autonom agieren.
Autonom meint :die Spieler Aktion soll sich auf Auswahl des Ziels beschränken.
Also auch kein "ich hab dir mal ein paar Ziele ausgewählt" bla.
Entweder ist die Entermannschaft elite und schaffts allein oder das
Schiff wird zerblassen.
Natürlich kann der Spieler nachhelfen aber es sollte ihm überlassen bleiben ob er hilft oder nicht. Das Missions design von Boarding ist derzeit wie ein Tutorial und zwingt den Spieler jedesmal die selben Schritte zu tun. Was irgendwann nicht nur sehr schnell langweilig wird sondern
es ist auch seltsam bevormundend für ein Sandkasten-Spiel.
-->Auf einen einzelnen Befehl hin soll das Schiff zum Ziel beschleunigen
, Schilde und Türme selbstständig angreifen es also "enter fertig" machen und dann im Anschluss die marines entsenden
Zwischen werden Status Updates an den Spieler gesendet.
Auch schick wärs wenn man der job Ai dieses Enterschiffs
unterschiebt und Piraten eben auch Schiffe entern könnten.
aaaaaaber ich denke ich werde es erstmal so machen wie du gesagt hast.
Marines werden normal gekauft aber dann Manuel oder automatisch auf ein neues Enterschiff übertragen.Erst dachte ich es würde reichen sich einfach eine Zahl irgendwo zu merken aber die marines haben ja selbst auch Zustände die irgendwo ja auch gespeichert werden. vermutlich im marin Objekt selbst ...wenns sowas gibt:).
Nach "Enter" Befehl wird halt das normale Mission desgin abgefeuert und dann am ende geschaut bei welchen Schiff die Marines sind und von dort aus die Kapseln gespawnt.
-
- Moderator (Script&Mod)
- Posts: 14571
- Joined: Sun, 20. Nov 05, 22:45
die grundlagen vom XR-Modding hab ich auch hier beschrieben:
http://forum.egosoft.com/viewtopic.php?t=370503
denke das hilft dir weiter als die englische Anleitung, weils wirklich von ganz vom Anfang anfängt, nicht mittendrin
http://forum.egosoft.com/viewtopic.php?t=370503
denke das hilft dir weiter als die englische Anleitung, weils wirklich von ganz vom Anfang anfängt, nicht mittendrin
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
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
-
- Posts: 28
- Joined: Wed, 16. Oct 13, 08:51
-
- Posts: 3548
- Joined: Sun, 8. Apr 12, 09:40
da ich mich jetzt doch noch etwas damit beschäftigt habe hier der aktuelle Stand
MySpBoarding.xml (für den Transfer der Marines zwischen Skunk<>Geleitschffe)
das Patchscript für die Boarding.xml
ist jetzt nicht groß getestet, einige Entermanöver wurden aber jeweils erfolgreich mit mehreren Schiffen absolviert, wobei incl. Beförderungen alles wie erhofft funktionierte
MySpBoarding.xml (für den Transfer der Marines zwischen Skunk<>Geleitschffe)
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<mdscript name="My_Specialboarding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="md.xsd">
<cues>
<cue name="SectionHandler_MyBoarding_Marine" instantiate="true" >
<conditions>
<check_any>
<event_conversation_started conversation="default" />
<event_conversation_returned_to_section section="default" />
</check_any>
<check_value value="event.object.type" exact="entitytype.marine" />
<check_value value="event.object.trueowner" exact="faction.player" />
<check_value value="event.object.iscontrolentity" />
</conditions>
<actions>
<add_player_choice_sub text="'Truppen verlegen'" section="mysp_transfer" selectable="event.object.container.availableunits.{unitcategory.marine}.count" comment="INIT" />
</actions>
</cue>
<cue name="MyBoarding_work" instantiate="true">
<conditions>
<check_any>
<event_conversation_next_section sectionprefix="mysp_"/>
<event_conversation_returned_to_section sectionprefix="mysp_" />
</check_any>
</conditions>
<actions>
<do_if value="event.param" exact="'mysp_do_transfer'">
<do_if value="event.param2? and event.param2.{3}?">
<set_value name="$from" exact="event.param2.{2}" />
<set_value name="$to" exact="event.param2.{3}" />
</do_if>
<do_all exact="unitcategory.marine.maxmk" counter="$i" reverse="true" comment="Best first">
<do_if value="$from.availableunits.{unitcategory.marine}.mk.{$i}.count" min="1">
<set_value name="$amount" exact="[$from.availableunits.{unitcategory.marine}.mk.{$i}.count, $to.units.maxcount - $to.units.count ].min" />
<do_all exact="$amount">
<add_units object="$to" macro="$from.availableunits.{unitcategory.marine}.mk.{$i}.list.{1}" exact="1" />
<remove_units object="$from" macro="$from.availableunits.{unitcategory.marine}.mk.{$i}.list.{1}" exact="1" />
</do_all>
</do_if>
<do_if value="$to.units.maxcount - $to.units.count" exact="0">
<break />
</do_if>
</do_all>
<remove_value name="$from"/>
<remove_value name="$to"/>
<remove_value name="$amount"/>
</do_if>
<do_if value="event.param" exact="'mysp_transfer'">
<add_player_choice_sub text="'von Skunk'" position="top_left" section="mysp_select" choiceparam="[1, 'free']" />
<add_player_choice_sub text="'zu Skunk'" position="top_right" section="mysp_select" choiceparam="[1, 'skunk']" />
</do_if>
<do_elseif value="event.param" exact="'mysp_select'">
<create_group groupname="$boardingfleet"/>
<create_group groupname="$freespace"/>
<create_group groupname="$boardingfleet_freespace"/>
<do_all exact="event.object.container.subordinates.count" counter="$i">
<do_if value="event.object.container.subordinates.{$i}.availableunits.{unitcategory.marine}.count and event.object.container.zone == event.object.container.subordinates.{$i}.zone">
<add_to_group groupname="$boardingfleet" object="event.object.container.subordinates.{$i}" />
<do_if value="event.object.container.subordinates.{$i}.units.maxcount - event.object.container.subordinates.{$i}.units.count">
<add_to_group groupname="$boardingfleet_freespace" object="event.object.container.subordinates.{$i}" />
</do_if>
</do_if>
<do_elseif value="event.object.container.subordinates.{$i}.units.maxcount - event.object.container.subordinates.{$i}.units.count and event.object.container.zone == event.object.container.subordinates.{$i}.zone">
<add_to_group groupname="$freespace" object="event.object.container.subordinates.{$i}" />
</do_elseif>
</do_all>
<do_if value="event.param2? and event.param2.{2}?">
<set_value name="$do" exact="event.param2.{2}" />
<set_value name="$lstart" exact="event.param2.{1}" />
</do_if>
<do_else>
<set_value name="$do" exact="'free'" />
<set_value name="$lstart" exact="1" />
</do_else>
<do_if value="$do" exact="'free'">
<create_group groupname="$to"/>
<add_to_group groupname="$to" list="$boardingfleet_freespace.list" />
<add_to_group groupname="$to" list="$freespace.list" />
<set_value name="$from" exact="event.object.container" />
<set_value name="$lmax" exact="$to.count" />
<do_all exact="unitcategory.marine.maxmk" counter="$i">
<do_if value="$fromlist?">
<set_value name="$fromlist" exact="$fromlist + '/%1'.[$from.availableunits.{unitcategory.marine}.mk.{$i}.count]" />
</do_if>
<do_else>
<set_value name="$fromlist" exact="'%1'.[$from.availableunits.{unitcategory.marine}.mk.{$i}.count]" />
</do_else>
</do_all>
</do_if>
<do_elseif value="$do" exact="'skunk'">
<create_group groupname="$from"/>
<add_to_group groupname="$from" list="$boardingfleet.list" />
<set_value name="$to" exact="event.object.container" />
<set_value name="$lmax" exact="$from.count" />
</do_elseif>
<remove_value name="$boardingfleet"/>
<remove_value name="$freespace"/>
<remove_value name="$boardingfleet_freespace"/>
<do_all exact="6" counter="$i">
<do_if value="$i == 6 and ($lstart + 1) le $lmax">
<add_player_choice text="'Next 5, start with %1 of %2'.[$lstart, $lmax]" position="bottom_right" section="mysp_select" choiceparam="[$lstart, $do]"/>
</do_if>
<do_elseif value="$lstart le $lmax">
<do_if value="$do" exact="'free'">
<add_player_choice text="'%1 [%2/%3][%4]'.[$to.{$lstart}.name, $to.{$lstart}.units.{unitcategory.marine}.count, $to.{$lstart}.units.maxcount - $to.{$lstart}.units.count, $fromlist]" position="$i" section="mysp_do_transfer" choiceparam="[1 ,$from, $to.{$lstart}]" />
</do_if>
<do_elseif value="$do" exact="'skunk'">
<do_all exact="unitcategory.marine.maxmk" counter="$j">
<do_if value="$fromlist?">
<set_value name="$fromlist" exact="$fromlist + '/%1'.[$from.{$lstart}.availableunits.{unitcategory.marine}.mk.{$j}.count]" />
</do_if>
<do_else>
<set_value name="$fromlist" exact="'%1'.[$from.{$lstart}.availableunits.{unitcategory.marine}.mk.{$j}.count]" />
</do_else>
</do_all>
<add_player_choice text="'%1 [%2/%3][%4]'.[$from.{$lstart}.name, $to.units.{unitcategory.marine}.count, $to.units.maxcount - $to.units.count, $fromlist]" position="$i" section="mysp_do_transfer" choiceparam="[1 ,$from.{$lstart}, $to]" selectable="$to.units.maxcount - $to.units.count" />
<remove_value name="$fromlist"/>
</do_elseif>
<set_value name="$lstart" operation="add" exact="1" />
</do_elseif>
<do_elseif value="$i == 6">
<add_player_choice_return text="{1002,20}" position="bottom_right" comment="Back"/>
</do_elseif>
</do_all>
<remove_value name="$from"/>
<remove_value name="$to"/>
<remove_value name="$fromlist"/>
<remove_value name="$lstart"/>
<remove_value name="$lmax"/>
</do_elseif>
</actions>
</cue>
</cues>
</mdscript>
Code: Select all
<?xml version="1.0" encoding="utf-8" ?>
<diff>
<add sel="//set_value[@name='$boardership']" pos="after">
<do_if value="$boardership?">
<create_group groupname="$BoardingFleet"/>
<add_to_group groupname="$BoardingFleet" object="$boardership" />
<do_all exact="$boardership.subordinates.count" counter="$i">
<do_if value="$boardership.subordinates.{$i}.availableunits.{unitcategory.marine}.count and $boardership.zone == $boardership.subordinates.{$i}.zone">
<add_to_group groupname="$BoardingFleet" object="$boardership.subordinates.{$i}" />
</do_if>
</do_all>
</do_if>
</add>
<add sel="//cue[@name='Finish']/actions" pos="prepend">
<remove_value name="$BoardingFleet"/>
</add>
<add sel="//library[@name='ClearOnFail']" pos="after">
<!--
<set_value name="$objectmacro" exact="macro.character_argon_male_marine_mk1_macro" />
<include_actions ref="DeleteUnitFleet"/>
-->
<library name="DeleteUnitFleet">
<actions>
<do_all exact="unitcategory.marine.maxmk" counter="$xi">
<do_if value="unitcategory.marine.mk.{$xi}.list.indexof.{$objectmacro}">
<set_value name="$mk" exact="$xi" />
<break />
</do_if>
</do_all>
<do_all exact="$BoardingFleet.count" counter="$xi">
<do_if value="$BoardingFleet.{$xi}.units.{unitcategory.marine}.mk.{$mk}.count" negate="true">
<continue />
</do_if>
<do_if value="$BoardingFleet.{$xi}.units.{unitcategory.marine}.mk.{$mk}.count - $BoardingFleet.{$xi}.availableunits.{unitcategory.marine}.mk.{$mk}.count">
<remove_units object="$BoardingFleet.{$xi}" macro="$objectmacro" exact="1" unavailable="true"/>
<break />
</do_if>
</do_all>
<remove_value name="$objectmacro"/>
<remove_value name="$xi"/>
<remove_value name="$mk"/>
</actions>
</library>
<library name="AddUnitFleet">
<actions>
<do_all exact="unitcategory.marine.maxmk" counter="$xi">
<do_if value="unitcategory.marine.mk.{$xi}.list.indexof.{$objectmacro}">
<set_value name="$mk" exact="$xi" />
<break />
</do_if>
</do_all>
<do_all exact="$BoardingFleet.count" counter="$xi">
<do_if value="$BoardingFleet.{$xi}.units.maxcount - $BoardingFleet.{$xi}.units.count" negate="true">
<continue />
</do_if>
<add_units object="$BoardingFleet.{$xi}" macro="$objectmacro" exact="1"/>
<break />
</do_all>
<remove_value name="$objectmacro"/>
<remove_value name="$xi"/>
<remove_value name="$mk"/>
</actions>
</library>
<library name="ReturnUnitFleet">
<actions>
<do_all exact="unitcategory.marine.maxmk" counter="$xi">
<do_if value="unitcategory.marine.mk.{$xi}.list.indexof.{$objectmacro}">
<set_value name="$mk" exact="$xi" />
<break />
</do_if>
</do_all>
<do_all exact="$BoardingFleet.count" counter="$xi">
<do_if value="$BoardingFleet.{$xi}.units.{unitcategory.marine}.mk.{$mk}.count" negate="true">
<continue />
</do_if>
<do_if value="$BoardingFleet.{$xi}.units.{unitcategory.marine}.mk.{$mk}.count - $BoardingFleet.{$xi}.availableunits.{unitcategory.marine}.mk.{$mk}.count">
<return_units object="$BoardingFleet.{$xi}" macro="$objectmacro" exact="1"/>
<break />
</do_if>
</do_all>
<remove_value name="$objectmacro"/>
<remove_value name="$xi"/>
<remove_value name="$mk"/>
</actions>
</library>
</add>
<replace sel="//cue[@name='LaunchBoardingPods']/actions">
<actions>
<!--TODO: Should this be $boardership, not player.primaryship-->
<!-- remove marine commander from playership-->
<dismiss_control_entity object="player.primaryship" actor="$commander"/>
<remove_actor_from_room actor="$commander" comment="remove marine-commander from playership"/>
<create_cue_actor actor="$commander" cue="Start" comment="Commander has to be 'somewhere' or we have savegame problems"/>
<do_if value="not $training">
<signal_cue_instantly cue="md.Notifications.PlayerBoarding" param="[$target, 'boarding started']"/>
</do_if>
<!-- create boarding pods and send towards target -->
<create_list name="$BoardingPodsList"/>
<set_value name="$commander_on_pod" exact="false"/>
<create_group groupname="$MarinePilots"/>
<debug_text text="'marine.maxmk ' + unitcategory.marine.maxmk" chance="$debugoutputchance"/>
<do_all exact="unitcategory.marine.maxmk" counter="$i" comment="Loop thorough the number of Marks marine units have">
<append_to_list name="$BoardingPodsList" exact="[]" comment="... create a new list for this Mk"/>
<do_all exact="$BoardingFleet.count" counter="$b">
<set_value name="$UnitList" exact="$BoardingFleet.{$b}.availableunits.{unitcategory.marine}.mk.{$i}.list"/>
<debug_text text="$UnitList" chance="$debugoutputchance"/>
<do_all exact="$UnitList.count" counter="$j" comment="#marines of this Mk">
<!-- This also marks the marine as "unavailable" on the playership, they can be made available again with "return_units" -->
<request_units object="$BoardingFleet.{$b}" macro="$UnitList.{$j}" exact="1" comment="marks the marine as 'unavailable' on the playership"/>
<create_ship name="$boardingpod" groupname="$boardingpodsinflight" group="boardingpods" zone="$BoardingFleet.{$b}.zone">
<pilot macro="$UnitList.{$j}">
<owner exact="$BoardingFleet.{$b}.trueowner"/>
</pilot>
<position object="$BoardingFleet.{$b}" x="$i * 40m" y="$j*20m" z="-200m + $i*10" max="10m"/>
<!--position object="$BoardingFleet.{$b}" x="$i * 1m" y="$j*1m" z="-200m + $i*1" comment="all together - for testing"/-->
</create_ship>
<add_to_group groupname="$MarinePilots" object="$boardingpod.pilot"/>
<append_to_list name="$BoardingPodsList.{$i}" exact="$boardingpod" comment="End up with a list per Mk"/>
<find_object_surface posname="$targetpos" rotname="$targetrot" object="$target" />
<set_value name="$randomdelay" min="2" max="5"/>
<!--do_if value="$commander_on_pod == false" comment="Alternative savegame-solution">
<debug_text text="'Putting commander on board of pod' + $i + ':' + $j"/>
<set_value name="$commander_on_pod" exact="true"/>
<assign_boarding_commander object="$boardingpod" actor="$commander"/>
</do_if>
<do_else>
<debug_text text="'Set object commander of pod' + $i + ':' + $j"/>
<set_object_commander object="$boardingpod" commander="$boardingpods.{1}" />
</do_else-->
<start_script name="'boarding.pod'" object="$boardingpod.pilot">
<param name="target" value="$target" />
<param name="targetpos" value="$targetpos" />
<param name="targetrot" value="$targetrot" />
<param name="initialwaittime" value="$randomdelay + $i * 2s" />
<param name="debugoutputchance" value="$debugoutputchance"/>
</start_script>
</do_all>
</do_all>
</do_all>
<remove_value name="$UnitList"/>
<set_value name="$FirstArrived" exact="false" />
<set_value name="$EarliestAttackedConvTime" exact="player.age" />
<!-- Ensure that the boarding pods arrive at their target -->
<debug_text text="'Setting objective: Protect boarding pods'" />
<set_objective cue="Start" action="objective.protect" group="$boardingpodsinflight" />
<start_conversation actor="$commander" conversation="BoardingSupport_ProtectPods_Started_Conversation" />
</actions>
</replace>
<add sel="//library[@name='ClearOnFail']/actions/do_all/do_if[@value='$boardingpodsinflight.{$Counter}.pilot']/remove_units" type="@chance" >0</add>
<add sel="//library[@name='ClearOnFail']/actions/do_all/do_if[@value='$boardingpodsinflight.{$Counter}.pilot']/remove_units" pos="after">
<do_if value="$boardingpodsinflight.{$Counter}.pilot.macro?">
<set_value name="$objectmacro" exact="$boardingpodsinflight.{$Counter}.pilot.macro" />
<include_actions ref="DeleteUnitFleet"/>
</do_if>
</add>
<add sel="//library[@name='ClearOnFail']/actions/do_all/do_all[@exact='$ArrivedMarines.{$Counter}.count']/remove_units" type="@chance" >0</add>
<add sel="//library[@name='ClearOnFail']/actions/do_all/do_all[@exact='$ArrivedMarines.{$Counter}.count']/remove_units" pos="after">
<do_if value="$ArrivedMarines.{$Counter}.{$i}?">
<set_value name="$objectmacro" exact="$ArrivedMarines.{$Counter}.{$i}" />
<include_actions ref="DeleteUnitFleet"/>
</do_if>
</add>
<add sel="//cue[@name='MarinePilotKilled']/actions/remove_units" type="@chance" >0</add>
<add sel="//cue[@name='MarinePilotKilled']/actions/remove_units" pos="after">
<do_if value="event.object.macro?">
<set_value name="$objectmacro" exact="event.object.macro" />
<include_actions ref="DeleteUnitFleet"/>
</do_if>
</add>
<add sel="//library[@name='LoseMarines']/actions/do_if/do_if/do_all/do_if/remove_units" type="@chance" >0</add>
<add sel="//library[@name='LoseMarines']/actions/do_if/do_if/do_all/do_if/remove_units" pos="after">
<do_if value="$ArrivedMarines.{$KilledMarineMK}.{$KilledMarineIndex}?">
<set_value name="$objectmacro" exact="$ArrivedMarines.{$KilledMarineMK}.{$KilledMarineIndex}" />
<include_actions ref="DeleteUnitFleet"/>
</do_if>
</add>
<add sel="//library[@name='LoseMarines']/actions/do_else/do_all/do_all/remove_units" type="@chance" >0</add>
<add sel="//library[@name='LoseMarines']/actions/do_else/do_all/do_all/remove_units" pos="after">
<do_if value="$ArrivedMarines.{$i}.{$o}?">
<set_value name="$objectmacro" exact="$ArrivedMarines.{$i}.{$o}" />
<include_actions ref="DeleteUnitFleet"/>
</do_if>
</add>
<add sel="//cue[@name='Success']/actions/do_all/do_all/do_all/do_if/do_if/do_if[@value='true']/remove_units" type="@chance" >0</add>
<add sel="//cue[@name='Success']/actions/do_all/do_all/do_all/do_if/do_if/do_if[@value='true']/remove_units" pos="after">
<do_if value="$ReturnedMarine?">
<set_value name="$objectmacro" exact="$ReturnedMarine" />
<include_actions ref="DeleteUnitFleet"/>
</do_if>
</add>
<add sel="//cue[@name='Success']/actions/do_all[@exact='$PromotedMarines.count']/add_units" type="@chance" >0</add>
<add sel="//cue[@name='Success']/actions/do_all[@exact='$PromotedMarines.count']/add_units" pos="after">
<do_if value="$PromotedMarines.{$i}?">
<set_value name="$objectmacro" exact="$PromotedMarines.{$i}" />
<include_actions ref="AddUnitFleet"/>
</do_if>
</add>
<add sel="//cue[@name='Success']/actions/do_all[@exact='$ReturningMarines.count']/return_units" type="@chance" >0</add>
<add sel="//cue[@name='Success']/actions/do_all[@exact='$ReturningMarines.count']/return_units" pos="after">
<do_if value="$ReturningMarines.{$i}?">
<set_value name="$objectmacro" exact="$ReturningMarines.{$i}" />
<include_actions ref="ReturnUnitFleet"/>
</do_if>
</add>
</diff>
-
- Posts: 28
- Joined: Wed, 16. Oct 13, 08:51
haha wie geil - da hab ich ja was angefangen.
ich bin noch nicht so weit.
mein letztes Projekt ,ein Gebäude für Skylines, habe ich grade beendet
und nun wollt ich mich ab morgen mit Xrebirth modding beschäftigen:)
so marines adden und marines von Schiffen anfordern hast du wohl schon realisiert.
Haste schon mehr geplant?
lg
ich bin noch nicht so weit.
mein letztes Projekt ,ein Gebäude für Skylines, habe ich grade beendet
und nun wollt ich mich ab morgen mit Xrebirth modding beschäftigen:)
so marines adden und marines von Schiffen anfordern hast du wohl schon realisiert.
Haste schon mehr geplant?
lg
-
- Posts: 3548
- Joined: Sun, 8. Apr 12, 09:40
außer dass ich noch einen kurzen Hinweis zu den Stärkeverhältnissen hinzugefügt habe ist eigentlich nichts weiter geplant
(wird offensichtlich auch wie erwartet korrekt Anhand der gelandeten Marines errechnet, hatte jedenfall mit 140 Elite Marines einen Enterwert von ~700)
es empfiehlt sich aber wie mir scheint immer zu warten bis die Enterschiffe Nahe am Ziel sind, da die Enterkapseln schließlich von den jeweiligen Positionen starten (zwar nur so plump wie von der Skunk, nicht so shiny wie richtige Drohnen, aber es erfüllt seinen Zweck)
(wird offensichtlich auch wie erwartet korrekt Anhand der gelandeten Marines errechnet, hatte jedenfall mit 140 Elite Marines einen Enterwert von ~700)
es empfiehlt sich aber wie mir scheint immer zu warten bis die Enterschiffe Nahe am Ziel sind, da die Enterkapseln schließlich von den jeweiligen Positionen starten (zwar nur so plump wie von der Skunk, nicht so shiny wie richtige Drohnen, aber es erfüllt seinen Zweck)
-
- Posts: 28
- Joined: Wed, 16. Oct 13, 08:51
Also ich hab mir die beiden erwähnten Guides angetan und weis nun
die commands und schlüsselworte dieser xml (scriptsprache) zu deuten:-)
.. es wird wohl noch bischen dauern bis ich einfach frank und frei deinen gepostet quellcode verwenden kann.
Nach zweit Tagen bin ich immer noch etwas verwirret wenn ich ihn betrachte.
Bzw ich bin froh das du dran geschrieben hast was die Abschnitte bewirken...
Aber das wird wohl hoffentlich bald vergehen:)
die commands und schlüsselworte dieser xml (scriptsprache) zu deuten:-)
.. es wird wohl noch bischen dauern bis ich einfach frank und frei deinen gepostet quellcode verwenden kann.
Nach zweit Tagen bin ich immer noch etwas verwirret wenn ich ihn betrachte.
Bzw ich bin froh das du dran geschrieben hast was die Abschnitte bewirken...
Aber das wird wohl hoffentlich bald vergehen:)
-
- Posts: 3548
- Joined: Sun, 8. Apr 12, 09:40
ich habe zwar ein Enterschiff gebastelt, welches sich aber in bestehenden Spielen nicht wirklich gut einbinden lässt, daher verzichte ich auf ein veröffentlichen
den aktuellen Modstatus habe ich mal zu einem fertigen Mod zusammengepackt und hier http://forum.egosoft.com/viewtopic.php?t=383486 veröffentlicht, ist wohl einfach als immer weiter die Quelltexte zu posten
den aktuellen Modstatus habe ich mal zu einem fertigen Mod zusammengepackt und hier http://forum.egosoft.com/viewtopic.php?t=383486 veröffentlicht, ist wohl einfach als immer weiter die Quelltexte zu posten
-
- Posts: 28
- Joined: Wed, 16. Oct 13, 08:51
he,
ja fein:-)
Was fehlt ist das das Schiff mit marins noch zum ziel hinfliegt.
Bzw das die Pods nicht 10-20 Kilometer fliegen müssen.
Ich hab in verschiedenen scripts bischen gefischt.
die cats entpackt und die scriptpropertie entdeckt.
Ich würde gern wissen ob der nachfolgenden code theoretisch geht,
weil ich kann nicht testen da ich noch nciht gerafft habe wie ich
das einbinden soll. danke:)
also irgendwo sollte command.move.totarget aufgerufen werden.
das dann command.move.totarget startet.
[/code]
ja fein:-)
Was fehlt ist das das Schiff mit marins noch zum ziel hinfliegt.
Bzw das die Pods nicht 10-20 Kilometer fliegen müssen.
Ich hab in verschiedenen scripts bischen gefischt.
die cats entpackt und die scriptpropertie entdeckt.
Ich würde gern wissen ob der nachfolgenden code theoretisch geht,
weil ich kann nicht testen da ich noch nciht gerafft habe wie ich
das einbinden soll. danke:)
also irgendwo sollte command.move.totarget aufgerufen werden.
das dann command.move.totarget startet.
Code: Select all
<run_script name="'command.move.totarget'">
<param name="target" value="player.target" />
</run_script>
<?xml version="1.0" encoding="iso-8859-1" ?>
<aiscript name="command.move.totarget" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="aiscripts.xsd">
<params>
<param name="target" />
</params>
<init>
<set_command command="command.move" param="$target" />
</init>
<do_if value="not $target.exists">
<return />
</do_if>
<run_script name="'move.generic'">
<param name="destination" value="$target"
<param name="position" value="850mt"/>
</run_script>
</aiscript>