Hinzufügen von Schiffsmenus

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

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

Post Reply
XereppC
Posts: 150
Joined: Sun, 25. Sep 16, 08:27

Hinzufügen von Schiffsmenus

Post by XereppC » Sun, 25. Sep 16, 08:42

Hallo,

also ich bin hier neu im Forum, wobei ich das Game schon jahrelang spiele.
Ich habe mich die letzten Wochen ans scripten gewagt und es läuft ganz gut
allerdings habe ich ein Problem, bei dem mir bisher kein Guide oder anderes
Script wirklich weiterhelfen konnte.
Das zufügen von Schiffskommandos, die /t files sind nicht das Problem, eher
die verknüpfung von Script zum Schiffsmenu.

Könnte mir da jemand einen Denkanstoß geben, wäre sehr nett und Hilfreich.

User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 » Sun, 25. Sep 16, 10:11

Hallo XereppC,

willkommen im Kreis der Scripter und Modder. Eigene Scripte an Schiffsbefehle zu knüpfen habe ich bisher vermieden. Einfacher ist das Verknüpfen mit einem Hotkey.

Installiere Dir mal den Super Tractor von Gazz oder eine andere Mod. von ihm. Dann schau Dir die Setup.plugin.gz.super.tractor.xml mal genauer an. So findest Du mindestens ein Beispielscript für Dein Vorhaben.

Aber Achtung! In X3TC und X3AP können sich diese Scripte unterschiedlich verhalten.

Gruß Klaus
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE

XereppC
Posts: 150
Joined: Sun, 25. Sep 16, 08:27

Post by XereppC » Sun, 25. Sep 16, 11:16

Danke, da habe ich durchgesehen :D
Läuft auch gut aber gibt es eine Möglichkeit die Menus dem Playership
only zu geben, bei rasse und klasse geht es nicht wirklich.

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

Post by UniTrader » Sun, 25. Sep 16, 11:35

gibt es seit TC - dafür wurde ne art checkscript eingeführt, welches das kommando je nach rückgabewert einblendet oder nicht..

der Befehl hier wäre es:
set script command upgrade: command=<Object Command/Signal> upgrade=<Var/Ware> script=<Script Name>

und das genannte script müsste so ungefähr aussehen (nicht ganz sicher):
if [THIS] == [PLAYERSHIP]
return true
end
return false
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 ;)

User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 » Fri, 13. Jan 17, 09:50

Ich wollte jetzt auch mal ein Schiffskommando im Bereich „Spezial“ unterbringen.

Code: Select all

set script command upgrade: command=<Object Command/Signal> upgrade=<Var/Ware> script=<Script Name>
Diese Befehlszeile ist mir fast klar.
Was mir noch nicht klar ist, ist „:

Code: Select all

 command=<Object Command/Signal>
Wie wird so ein neues Command/Signal vereinbart? In der Auswahlliste des Editors existiert das neue Kommando noch nicht.

Muß ich vorher irgendwas beachten?

Gruß
Klaus
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE

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

Post by X2-Illuminatus » Fri, 13. Jan 17, 11:11

Klaus11 wrote:Was mir noch nicht klar ist, ist „:

Code: Select all

 command=<Object Command/Signal>
Wie wird so ein neues Command/Signal vereinbart? In der Auswahlliste des Editors existiert das neue Kommando noch nicht.

Muß ich vorher irgendwas beachten?

Gruß
Klaus
Der Befehlsslot lässt sich über das genannte Eingabefeld festlegen. Wenn du im Editor das Feld auswählst, werden dir in der Auswahlliste zunächst alle Egosoft eigenen Befehle angezeigt, anschließend folgen die freien Kommandoslots und zu guter Letzt die Signals. Unbelegte Kommandoslots folgen dabei dem Bennenungsschema COMMAND_TYPE_<Typ des Kommandoslots>_<Zahl zwischen 1 und 63>. Der Typ des Kommandoslots gibt Aufschluss für welches Objekt er genutzt wird bzw. in welchem Kommandomenü-Unterpunkt er dann schlussendlich angezeigt wird. COMMAND_TYPE_SPECIAL_ dann eben im Bereich "Spezial".
Um dir nun selbst einen passenden Slot zu wählen, solltest du zunächst herausfinden, welche Slots noch frei sind und nicht von anderen Scripts genutzt werden. Hierbei hilft die Kompatibilitätsliste in der Übersicht der unsignierten Erweiterungen sowie ihr englisches Gegenstück. Sobald du dir einen Kommandoslot ausgesucht hast, kannst du ihn in deinem Setup-Script verwenden. Damit jeder weiß, dass der entsprechende Kommandoslot zu deinem Script gehört, musst du nun noch Befehlsnamen vergeben sowie eine Kurz-Info schreiben. Beides wird komplett über die Textdatei geregelt:

Code: Select all

<page id="2008" title="script objects commands" descr="0">
  <t id="1261">COMMAND_X2I_releasepassengers</t>
 </page>

 <page id="2010" title="commands" descr=" ">
  <t id="1261">Passagiere freilassen</t>
 </page>

 <page id="2011" title="commands" descr=" ">
  <t id="1261">Pass.frei</t>
 </page>

 <page id="2022" title="command info" descr=" ">
  <t id="1261">Mit diesem Befehl können Passagiere an Stationen freigelassen werden.\n\033B©X2-Illuminatus\033X</t>
 </page>
Ich habe hier mal den Ausschnitt aus meinem "Passagiere freilassen"-Script gepostet. Dieses nutzt den Kommandoslot COMMAND_TYPE_SHIP_61, welcher sich auf page 2008 - unter der alle Kommandoslots gelistet sind - unter der t id 1261 findet. Die Ids sind in den Kompatibilitätslisten mit angegeben. Alternativ kannst du in der Haupttextdatei (0001-L0xx.xml) aber auch einfach nach dem entsprechenden Kommandoslot suchen. Die Id ist wichtig, da das Spiel unter der gleichen t id (in diesem Fall t id="1261") auf den zugehörigen pages nach den jeweiligen Informationen suchen wird. Dabei sind die folgenden pages relevant:
  • page id="2008" - Enthält den Namen des Kommandoslots, so wie er im Script Editor in den Commands/Signal-Auswahlsslots angezeigt wird. Obwohl dieser Eintrag für den Spieler nicht sichtbar ist, und man den Kommandoslot prinzipiell nicht umbenennen müsste, empfiehlt es sich trotzdem dies zu tun. So findet man selbst seinen Kommandoslot schneller und auch andere Scripter, wenn sie dein Script nutzen, sehen welche Slots schon belegt sind.
  • page id="2010" - Der Befehlsname, wie er in der Kommandoskonsole eines Schiffes/einer Station angezeigt wird.
  • page id="2011" - Eine abgekürzte Variante des Befehlsnamens, wie er in der Kommandoskonsole eines Schiffes/einer Station angezeigt wird.
  • page id="2022" - Eine Kurzinformation, was dieser Befehl tut, die angezeigt wird, wenn man den Befehl in der Kommandokonsole markiert hat und die "i"-Taste drückt.
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!

User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 » Fri, 13. Jan 17, 13:56

Tolle Anleitung. :D
Ich danke Dir X2. Sollte ich doch noch Fragen haben, melde ich mich wieder.
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE

User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 » Fri, 13. Jan 17, 20:32

Nach einigem Hick Hack funktioniert es jetzt tatsächlich. :lol:

Ich habe mich für den Handelsbefehl 20 und für die Seite 1721 und der Text ID 420 entschieden.

Bei meinem Skript soll der Spieler die Möglichkeit erhalten, eine eigene Fabrik an ein anderes Volk zu verkaufen. Das klappt soweit auch.

Aber jetzt kommt das Aber. :wink:
Ich konnte noch keinen Befehl finden, mit dem ich den Preis der Fabrik auslesen kann. So musste ich erst einmal einen Pausch Betrag festlegen. :roll:

Bitte, weiß jemand Rat?

Edit:
Ach ja, da ist noch so ne Sache. Betty sagt immer: "Autopilot aktiviert." Wie kommt das?
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE

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

Post by X2-Illuminatus » Fri, 13. Jan 17, 22:58

Klaus 11 wrote:Ich konnte noch keinen Befehl finden, mit dem ich den Preis der Fabrik auslesen kann. So musste ich erst einmal einen Pausch Betrag festlegen. Rolling Eyes

Bitte, weiß jemand Rat?
Zunächst mit dem Befehl "get ware type code of object" (General Object Commands) den Wareneintrag (Stationstyp) der Station ermitteln. Anschließend mit den "get min/average/max price of ware"-Befehlen (Trade Commands) den Preis ermitteln.
Klaus 11 wrote:Ach ja, da ist noch so ne Sache. Betty sagt immer: "Autopilot aktiviert." Wie kommt das?
Scripte, die über die Kommandokonsole eines Schiffes gestartet werden, werden immer auf Task 0 auf diesem Schiff ausgeführt. Task 0 ist für den Autopiloten reserviert. Damit wird jeder Befehl der über einen Kommandoslot ausgeführt wird, immer den aktuellen Befehl des Autopiloten überschreiben/unterbrechen. Genau dieses Verhalten quittiert der Autopilot/Schiffscomputer mit besagter Meldung auf dem Spielerschiff. Beim nicht vom Spieler gesteuerten Schiffen sollte die Meldung "Kommando akzeptiert" lauten. Umgehen lässt sich das nur, in dem man ein Script an die zusätzlichen Schiffskommandos bindet. Diese werden auf Task 10 und 11 gestartet.
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!

User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 » Sat, 14. Jan 17, 10:03

Hallo X2-Illuminatus,

ich danke Dir für die ausführliche Antwort. Mal sehen ob ich das auch so umsetzen kann.

MFG
Klaus
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE

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

Post by UniTrader » Sat, 14. Jan 17, 11:17

X2-Illuminatus wrote:Scripte, die über die Kommandokonsole eines Schiffes gestartet werden, werden immer auf Task 0 auf diesem Schiff ausgeführt. Task 0 ist für den Autopiloten reserviert. Damit wird jeder Befehl der über einen Kommandoslot ausgeführt wird, immer den aktuellen Befehl des Autopiloten überschreiben/unterbrechen. Genau dieses Verhalten quittiert der Autopilot/Schiffscomputer mit besagter Meldung auf dem Spielerschiff. Beim nicht vom Spieler gesteuerten Schiffen sollte die Meldung "Kommando akzeptiert" lauten. Umgehen lässt sich das nur, in dem man ein Script an die zusätzlichen Schiffskommandos bindet. Diese werden auf Task 10 und 11 gestartet.
wenn es darum geht ne Station zu verkaufen wären die Zusätzlichen Stationskommandos vielleicht sinnvoller - da ist afaik weniger gedränge um die Kommandoslots ;) und es spart ne zusätzliche Stationswahl - einfach sämtliche referenzen zur Station mit [THIS] ersetzen ;)
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 ;)

User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 » Sat, 14. Jan 17, 13:40

UniTrader wrote:
X2-Illuminatus wrote:Scripte, die über die Kommandokonsole eines Schiffes gestartet werden, werden immer auf Task 0 auf diesem Schiff ausgeführt. Task 0 ist für den Autopiloten reserviert. Damit wird jeder Befehl der über einen Kommandoslot ausgeführt wird, immer den aktuellen Befehl des Autopiloten überschreiben/unterbrechen. Genau dieses Verhalten quittiert der Autopilot/Schiffscomputer mit besagter Meldung auf dem Spielerschiff. Beim nicht vom Spieler gesteuerten Schiffen sollte die Meldung "Kommando akzeptiert" lauten. Umgehen lässt sich das nur, in dem man ein Script an die zusätzlichen Schiffskommandos bindet. Diese werden auf Task 10 und 11 gestartet.
wenn es darum geht ne Station zu verkaufen wären die Zusätzlichen Stationskommandos vielleicht sinnvoller - da ist afaik weniger gedränge um die Kommandoslots ;) und es spart ne zusätzliche Stationswahl - einfach sämtliche referenzen zur Station mit [THIS] ersetzen ;)
Da hast Du nu auch wieder recht. Das müsste die Sache sogar stark vereinfachen. :D
Danke für Deinen Einwurf.
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE

Post Reply

Return to “X³: Terran Conflict / Albion Prelude - Scripts und Modding”