X3remote mod // diverse MSCI Script Fragen

Hier können Diskussionen rund ums scripten und modden zu X3 geführt werden.

Moderator: Moderatoren

Antworten
Benutzeravatar
Therion
Harmlos
Beiträge: 10
Registriert: Sa 07 Jul, 2012 6:04 pm
Lieblings X-Titel:
Kontaktdaten:

X3remote mod // diverse MSCI Script Fragen

Beitrag von Therion »

Hallo Forum

Seit einiger Zeit habe ich an der Arbeit eines Mod's angefangen,
ich weiß nicht so recht ob man das überhaupt als Mod bezeichnen kann.
Wenn dann ist X3 Reunion das 1. Spiel was ich modde... :cool:
Eigentlich habe ich gar keine Ahnung von game modding, ich bin eigentlich Programmierer aber das ist jetzt mal egal.

Ich habe ein mod geschrieben der es mir ermöglicht X3 Reunion von außerhalb zu steuern,
natürlich nicht das gesamte Spiel - aber halt so Kleinigkeiten wie zb. Stationen/Schiffe/Befehle.
Desweiteren soll er Statistiken exportieren, Credits, Anzahl Stationen, Schiffe etc.
Im Moment tut er auch nur das, aber es funktioniert schon mal - ich lasse also X3 semi-headless laufen im Hintergrund quasi und übers Netz soll das ganze dann funktionieren.

Vor einiger Zeit habe ich dafür auch ein Thread im englischen Teil des offiziellen Forums erstellt,
wen es interessiert:
http://forum.egosoft.com/viewtopic.php?t=332974&start=0

Mein erstes Problem was ich auch immernoch habe, ich benötige mal einen vernünftigen Editor für die XML Scripte.
Das ist ja eine kontraproduktive Idee die ganzen Scripte in XML zu kapseln, XML ist gut aber nicht dafür. :?
Hatte schon mal einen gefunden, der war allerdings sehr schlecht lokalisiert (wobei englisch only okay ist) aber die Scripte hat X3 Reunion dann z.T. nicht mehr akzeptiert die ich dadrin editiert habe.
Daher ist meine Frage, was benutzt ihr denn so?

Eine andere Sache ist natürlich das die MSCI Sprache da doch extrem begrenzt ist, gibt es eigentlich einer andere Möglichkeit als immer wieder die statements von zwei Dingen zu verknüpfen.
Zb.: ich muss erst die Variable a speichern mit dem player trade rank damit ich diesen Wert dann in einem anderen Statement benutzen kann - das ist ja sehr sehr umständlich.

In wie Weit ist X2/X3 eigentlich kompatibel, ist X2 im Grunde genau das selbe abzüglich einiger erweiterter Scriptanweisungen (bezüglich MSCI)?

Und weiß jemand von euch wie (in-)performant so Geschichten wie:
<RetVar> = get ship array: of race=<Var/Race> class/type=<Value> sind?
Mich interessiert in wieweit es sich negativ auf die Laufzeit der Engine auswirkt wenn ich zb. von mir alle Schiffe aufliste :?:

bis dann...
Bild
Benutzeravatar
Heretic
Ausbilder
Beiträge: 817
Registriert: Sa 11 Apr, 2009 1:34 pm
Lieblings X-Titel:
Wohnort: NRW

Re: X3remote mod // diverse MSCI Script Fragen

Beitrag von Heretic »

Hi,

Schiffzähl Arrays können durchaus für einen sekundenruckler verantwortlich sein.
Besonders auf schwächeren PCs.
Zum Bedauern ist die ganze Engine ja allgemein nicht sehr performant , wenns wirklich viel wird.

X2/X3 Scripts sind ansich kompertibel.
Was problematisch wird sind Befehle die in dem einen Spiel dann aber nicht exestieren und das ganze stoppen.
Auch kann es zu problemen bei Objekten kommen. Wie z.B den M7 oder XL Kraftwerke usw.

Ist also immer bhängig was du abfragst.

Was die Variablen anbelangt gibt es meines Erachtens keine alternativen. Da begrenst die Engine einfach.

Hoffe ich konnte dir zumindest teilweise weiterhelfen.

MfG Heretic
Hier findest du alle meine Projekte rund um X.

Sir, ich glaube der Navigationsoffizier hat die Falsche Station anvisiert...!

Warum ? ........... "Frachtraum enthält nun Torus" o.O
Benutzeravatar
Therion
Harmlos
Beiträge: 10
Registriert: Sa 07 Jul, 2012 6:04 pm
Lieblings X-Titel:
Kontaktdaten:

Re: X3remote mod // diverse MSCI Script Fragen

Beitrag von Therion »

Hi Heretic

Cool danke für die Antwort, ja das hab ich mir schon gedacht.
Im Grunde will ich nicht soviel, eigentlich nur bei einem commando dann alle Schiffe und/oder Stationen vom Spieler ziehn - nur die Namen/Kennungen.
Und dann bei Bedarf Informationen zu einem Objekt im nächsten Zyklus abfragen,
dass kommt jetzt drauf an wie das intern organisiert ist und ob die Engine diese Informationen schnell zusammen kratzen kann (durch Indexe etc.).

Zu dem Editor Problem hast du nichts geschrieben, kann ich also davon ausgehen wenn du mal scriptest dann einfach in-game MSCI?
Das mach ich so auch im Moment, ist allerdings bisschen umständlich halt...
Ansonsten habe ich mich schon an den Bernd gewendet, er sagte das die eigentliche Sprache der Engine KC sei - wurde an's devnet verwiesen, da gibts auch viel Informationen zu.
Ich frage mich nur wie ich KC kompilieren/linken darf damit ich etwas ins Spiel einbinde,
mal sehen ob der Bernd mir da noch was zu sagen mag.

Soweit wie ich gelesen habe, ist die in-game script Sprache nur ein kleines subset von KC.
Bild
Benutzeravatar
Marvelous
Ausbilder
Beiträge: 725
Registriert: So 02 Jan, 2011 2:51 pm
Lieblings X-Titel:

Re: X3remote mod // diverse MSCI Script Fragen

Beitrag von Marvelous »

Für .xml Dateien wird im Egosoft-Forum der "Mircrosoft Visual Web Developer 2010" empfohlen. Allerdings glaube ich nur für MD-"Skripte", weiß nicht in wie weit dir das weiterhilft.

Ein externes Programm um Skripte zu schreiben ist der EXSCRIPTOR. Der funktioniert anscheinend mit allen X-Versionen.
Ghostrider[FVP]
Senior-Ausbilder
Beiträge: 960
Registriert: Do 01 Nov, 2012 2:37 am
Lieblings X-Titel: XbtF bis X3:FL
Wohnort: Ceos Geldquelle

Re: X3remote mod // diverse MSCI Script Fragen

Beitrag von Ghostrider[FVP] »

Für Scripte kann man auch dieses Externe Tool nehmen von Mr. Bear :)

http://forum.egosoft.com/viewtopic.php?t=301433
Föderation Vereinter Planeten -=)FVP(=-
Since 1998... join the future - X3 Gateless

Bild
Ghostrider's X-Universum [INDEX]Lucikes Scripts & Mods
Benutzeravatar
Heretic
Ausbilder
Beiträge: 817
Registriert: Sa 11 Apr, 2009 1:34 pm
Lieblings X-Titel:
Wohnort: NRW

Re: X3remote mod // diverse MSCI Script Fragen

Beitrag von Heretic »

Hi,

Ja richtig ich mache alles mit dem internen Editor.
Hab zwar auch kleinigkeiten mal mit Notepad++ extern gemacht. Aber auch nur , weil ich keine lust hatte das Spiel zu starten.
Ansonsten reicht der interne mir aus.

Bzgl. Performanc.
Es sollte sich in grenzen lassen. Wenn der Spieler ca 100 Schiffe besitzt die durchgescannt werden ,
ist der unterbrechung des ganzen nicht so stark.
Was ggf hilfreich ist. Sind "Wait" befehle bei Schleifen.
Wenn du z.B 100 Durchläufe hast würde ich bei jedem durchlauf 10ms oder so ähnlich wait pausen am ende lassen,
damit das spiel weiterläuft. Natürlich nur , wenn der Spielfluss nicht gestört werden soll.
Ansonsten musste das nicht machen.

Wie du das mit dem Zyklus regels ist natürlich die frage was du machen willst.

Du kannst einer Innere Verkettung bauen. Die global den array durchschaltet und bei passendem objekt was ausführt.
Oder du lässt die schleife durchlaufen und fügst die objekte , mit denen was geschen soll nem array hinzu der extern weiter verarbeitet wird.

MfG Heretic
Hier findest du alle meine Projekte rund um X.

Sir, ich glaube der Navigationsoffizier hat die Falsche Station anvisiert...!

Warum ? ........... "Frachtraum enthält nun Torus" o.O
Antworten