[Übersicht] lib.-Scripts // Script-Libraries für andere Scripter

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

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

User avatar
SymTec ltd.
Posts: 4389
Joined: Mon, 11. Apr 05, 21:11
x3tc

[Übersicht] lib.-Scripts // Script-Libraries für andere Scripter

Post by SymTec ltd. » Sat, 3. Feb 07, 00:39

Da man häufig aus verschiedenen Scripts die gleichen Befehle aufrufen möchte/muss, ist man als Scripter gewöhnt, sich eine Library anzulegen, die, einmal geschrieben, häufiger verwendet werden kann. Um auch anderen Scriptern diese Erweiterungen anzubieten, werden die Scripts nicht selten hochgeladen und zum Download angeboten.

Im Englischen Forum gibt es in der Übersicht der unsignierten Erweiterungen einen Unterpunkt "Utility Scripts to be Used by Other Scripters", der einige Scripts auflistet. Da diese meist auch zur deutschen Version kompatibel sind, gibt es diese Liste im Deutschen scheinbar nicht. Ich werde hier einmal anfangen, einige per [url=http://forum.egosoft.com/search.php][b]Su[/b]ch[b]Fu[/b]nktion[/url] gefundene LibScripts zu listen. Da es in vielen Fällen nicht sinnvoll ist, für ein Script gleich einen ganzen Thread zu eröffnen, und in vielen Fällen der Thread auch schon im englischen Teil des Forums liegt, ist unter dieser Übersicht genug Platz, dass jeder Bibliothekar seine Library erklären kann.
Kürzel:
libscripts beginnen stets mit dem Präfix "lib.", danach kommt ein Kürzel des Autors, zum Schluss der Name, also "lib.{autor}.{name}". Das Kürzel des Autors hat zwei Stellen, die beide Buchstaben sind. Folgende Kürzel werden von folgenden Autoren verwendet: Was bedeutet ein libscript für den Nutzer eines normalen Scripts?
Ist eine Datei, die mit "lib." beginnt, schon im scripts-Ordner vorhanden, wenn man ein anderes Script desselben Scripters nutzt, wird die Library auch nur einmal benötigt. Meist reicht es dann, die neuere Datei im scripts-Ordner zu lassen, während man die ältere überschreibt oder gar nicht erst einfügt. Vorsicht: Bei der Deinstallation kann es gefährlich sein, ein libscript zu löschen, wenn es noch von anderen Scripts genutzt wird. Daher sollte man im Zweifelsfall nur Scripts entfernen, die sicher nicht mehr verwendet werden. Die Anzahl der inaktiven Scripts im scripts-Ordner steht in praktisch keinem Zusammenhang mit der Performance (lediglich das Laden kann etwas verzögert werden), und sofern das setup.-Script entfernt ist, läuft im Regelfall unter den übrigen Scriptdateien eines Scripts nichts mehr.

Daher bitte ich darum,
1.: Auf diesen Post nur einmal zu anworten, wenn ihr eure Lib/deren Downloadseite vorstellen und erklären wollt
2.: Nicht mit "Hä?", "Was?" oder "Ich mache das aber anders..." zu antworten
3.: Außer Links auch Erklärungen zu posten, und zwar nach dem folgenden Schema, erklärt an diesem (noch nicht hochgeladenen, aber schon existenten) Beispiel:


Beispiel:
---------
lib.st.saferoute - DE/EN - 02.02.2007 - .xml(.zip) - Link
Dieses Script überprüft, ob die Route zwischen zwei Objekten oder Sektoren sicher ist. Dabei überprüft es
a) Ob es feindliche Schiffe (Xenon, Khaak, Piraten) im Sektor gibt
b) Ob die Sektorrasse vom Schiff (oder, wenn das Script global läuft, vom Spielerschiff) als feindlich eingestuft wird
c) Ob es Satelliten/Erweiterte Satelliten im Sektor gibt.
  • Input:
  • 1: Object1 , Var/Ship/Station , 'Object1' - Erstes Objekt (Schiff/Station/Sektor)
  • 2: Object2 , Var/Ship/Station , 'Object2' - Zweites Objekt (Schiff/Station/Sektor)
  • 3: Sat , Var/Number , 'Use Satellites?' - Satelliten zur Überprüfung einbeziehen (Bln)
  • 4: IsKnown , Var/Number , 'Only known Enemy Ships?' - alle feindlichen Schiffe einbeziehen, oder nur die auf der Karte sichtbaren? (Bln)
  • 5: AvoidDanger , Var/Number , 'Avoid Enemy Secs?' - Als feindlich markierte Sektoren meiden? (Bln)

    Output:
  • [TRUE], wenn die Strecke frei ist
  • [FALSE], wenn die Strecke nicht frei ist
Hinweis: Setzt man Only known Enemy Ships? zu [FALSE], verbessert das die Performance erheblich!


---------
Also ist das Schema:
1.: Name (fett), Sprache (Sprache der Readme!, gelb), Release (gelb), Dateityp (gelb), Link (fett)
2.: Kurze Beschreibung (2-6 Zeilen, je nachdem)
3.: Input-Output-Liste (die farbe ist #11ff00)
4.: Weitere Hinweise zur Benutzung (hier kann ruhig noch mehr Text stehen)
5.: (hier nicht) Liste der genutzten Ressourcen (TextIDs etc.)


4.: Nach dem Posten (und jedem Edit) wird man auf eine Seite geleitet, die da sagt:
forum wrote:Ihre Nachricht wurde erfolgreich eingetragen.
Hier klicken, um deine Nachricht anzuzeigen
Hier klicken, um zum Forum zurückzukehren
An dieser Stelle sollte man den Link, der sich hinter dem ersten "Hier klicken" verbirgt, kopieren und dann gleich wieder den Post editieren und den Link unten hinzufügen. So kann von anderer Stelle direkt auf den post zugegriffen werden, Scrollen wird minimiert.
Last edited by SymTec ltd. on Fri, 11. Jan 08, 16:12, edited 10 times in total.

User avatar
SymTec ltd.
Posts: 4389
Joined: Mon, 11. Apr 05, 21:11
x3tc

Post by SymTec ltd. » Mon, 5. Feb 07, 18:34

Safe route library - Finde sicheren Weg

>>>Downloadseite<<<

Dieses Scriptpaket beinhaltet fünf Scripts die einem Schiff helfen, eine sichere Route durch das Universum zu finden.
Da die Scripts von anderen Scripts aufgerufen werden müssen, ist dieses Scriptpaket nur für Scripter nützlich und für normale Spieler in seiner Reinform eher nutzlos.

Das Script "lib.st.findsaferoute" ist der Gund, warum ich dieses Paket veröffentlicht habe. Es arbeitet wie einst die Terraformer: Es simuliert einen (virtuellen) Erkunder, der sich durch das Universum bewegt, weitergeht, solange er sichere Sektoren vorfindet, und stets einen Wegweiser zu seiner Startposition zurücklässt. An jeder Weggabelung klont sich der Erkunder, und er hält an, sobald er feindliches Gebiet vorfindet. Kommt einer der Klone an seine Zielposition, schickt er einen kleinen Läufer durchs Universum, der die Wegweiser einsammelt und zurück zum Startsektor läuft, sodass das Mutterscript weiß, welchen Weg der Erkunder erfolgreich zum Ziel genommen hat.
So funktionieren auch H5N1, Xenon, ein Buschfeuer, Wasser (und auch Ratten) in einem sinkenden Schiff (ich erinnere an diesen Thread), und ich denke es ist einer der einfacheren Wege, die Aufgabe zu lösen. Weitere Updates kündige ich an, ich bitte aber darum, bei Änderungen eurerseits die Namen der und in den Scripts zu ändern.


lib.st.safesector.xml - DE/EN - 04.02.2007 - .xml(.zip)
Dieses Script checkt, ob ein Sektor vor Feinden sicher ist oder nicht.
  • Input:
  • Var/Sector , 'Sector' - Sektor
  • Var/Array , 'Avoid Race Array' - Array aller als feindlich eingestufter Rassen. Nur Array einfügen!
  • Var/Array , 'Avoid Ship Type Array' - Array aller als feindlich/gefährlich eingestufter Schiffe.
  • Var/Array , 'Only Ply Ship Type Array' - Array der Schiffe, die von Spieler im Sektor sein müssen (ODER-Liste)
  • Var/Boolean , 'Only known Sectors' - Nur bereits bekannte Sektoren als sicher einstufen?

    Output:
  • TRUE - Sektor ist sicher
  • FALSE - Sektor ist nicht sicher

    Benötigte andere Scripts: keine
lib.st.saferoute.xml - DE/EN - 04.02.2007 - .xml(.zip)
Dieses Script checkt, ob der Weg von einem zu einem anderen Objekt/Sektor sicher ist
  • Input:
  • Var/Ship/Station , 'Object1' - Objekt 1
  • Var/Ship/Station , 'Object2' - Objekt 2
  • Var/Boolean , 'Use Satellites?' - Nur Sektoren mit Sats and E-Sats als sicher einstufen?
  • Var/Boolean , 'Only known Enemy Ships?' - Nur auf der Karte sichtbare Schiffe als Feinde einstufen?
  • Var/Boolean , 'Avoid Enemy Secs?' - Sektoren meiden, die in den Freund/Feind-Einstellungen von [THIS] (oder [PLAYERSHIP] für Global tasks) als Feinde gelistet sind?

    Output:
  • TRUE - Route ist sicher
  • FALSE - Route ist nicht sicher

    Benötigte andere Scripts: keine

lib.st.move.route.xml - DE/EN - 04.02.2007 - .xml(.zip)
Schiff bewegt sich entlang eines Arrays von Sektoren vom ersten bis zum letzten Eintrag.
  • Input:
  • Var/Ship , 'Ship' - [THIS] in den meisten Fällen - bitte auf einem Schiff nur eine Bewegung gleichzeitig befehlen!
  • Var/Array , 'Route Array' - Array von Sektoren

    Output:
  • FALSE wenn das Schiff nicht ankam
  • TRUE wenn das Schiff ankam

    Benötigte andere Scripts: keine

lib.st.findsaferoute.xml - DE/EN - 04.02.2007 - .xml(.zip)
Relativ komplexes Script, mit dem ein Schiff die "Ideallinie", also die beste Route von A nachB sucht. Dabei wird es nur sichere Sektoren passieren, Xenonsektoren, Khaakinvasionen und anderen Problemzonen aus dem Weg gehen. Da durch seine gewisse Komplexität und meine Bemühungen, die Performance so wenig wie möglich zu beeinflussen, das Script immer nur einmal gleichzeitig laufen wird und die Sektorsuche bis zu einer Minute (und länger!) dauern kann, sollte es nicht allzu häufig aufgerufen werden. Solange ein Script läuft, werden sich die weiteren Calls in einer Reihe anstellen und damit natürlich noch länger brauchen, bis die Route gefunden ist. Wenn diese Warteschleife länger als 15 Minuten besteht, werden automatisch alle Scripts dieser Art abgeschaltet, um einen Absturz zu verhindern.
Als Inputs werden entweder Arrays für besondere Einstellungen oder TRUE/FALSE für die Defaulteinstallungen akzeptiert.
  • Input:
  • Var/Sector , 'Start' - Startsektor
  • Var/Sector , 'Destination' - Zielsektor
  • Var/Array/Boolean , 'Avoid Race Array/Avoid Enemy' - Sektoren dieser Rasse vermeiden -
    Default: TRUE: Piraten, Xenon, Khaak FALSE: keine
  • Var/Array/Boolean , 'Avoid Ship Type Array/Avoid Ship' - Schiffstypen der oben genannten Rassen vermeiden-
    Default: TRUE: M5-M1 FALSE: keine
  • Var/Array/Boolean , 'Only Ply Ship Type Array/NavSat?' - Zur Sicherheit nötige Schiffe/Satelliten des Spielers (z.B. M6, M2, M1)
    Default: TRUE: Satelliten, Erw. Sats
  • Var/Boolean , 'Only known Sectors' - TRUE: Finde nur bekannte Sektoren - FALSE: Durchquere auch dem Spieler unbekannte Sektoren

    Output:
  • Array of Sectors: sichere Route
  • FALSE: keine sichere Route möglich

    Benötigte andere Scripts: lib.st.safesector.xml, lib.st.managesafesec.xml, lib.st.findsaferoute.reset.xml
lib.st.managesafesec.xml Script für internen Gebrauch. Dieses Script bitte nicht von außen aufrufen, da das eine Kettenreaktion von etwa 200 Scripts auslösen und jeden weiteren Gebrauch des Befehls verhindern könnte.

lib.st.findsaferoute.reset.xml Reset-Script - Manuell starten, um alle Globalen Variablen zu löschen und die aktuelle Routensuche zu beenden. Das haben die Programmierer der Terraformer wohl vergessen.

Direkt-Download:
Image

>>>Downloadseite<<<

Link hierher

User avatar
SymTec ltd.
Posts: 4389
Joined: Mon, 11. Apr 05, 21:11
x3tc

Post by SymTec ltd. » Sun, 18. Feb 07, 23:02

Drei neue, auch von mir kurz geschriebene, Libraries zur besseren Informationsverwaltung:


lib.st.reversearray - DE/EN - 18.02.2007 - .xml(.zip)
Dieses Script kehrt die Reihenfolge eines Arrays um, sodass das letzte Glied nun das erste ist und umgekehrt. Das Script beruht auf dem Script lib.ad.reversepath aus dem BonusPack.
  • Input:
  • 1: Array , Var/Array , 'Array' - Array zum Umkehren

    Output:
  • Array (ein anderes!)
Image


lib.st.formatnames - DE/EN - 18.02.2007 - .xml(.zip)
Dieses Script macht aus einem Array eine Liste, die mit einem beliebigen Zeichen zwischen jedem Eintrag getrennt werden kann. So können etwa Schiffs- oder Stationslisten für die Ausgabe im Nachrichtenlog formatiert werden, Wertereihen aufgeschrieben etc.
  • Input:
  • 1: Array , Var/Array , 'Array' - Array der Einträge
  • 2: Separator , Var/String , 'Separator' - String, der jeweils zwischen 2 Einträge geschrieben wird
  • 3: GetName , Var/Boolean , 'GetName' - Soll von den Objekten erst noch den Name genommen werden?

    Output:
  • String der Einträge
Image


lib.st.getsectorsize - DE/EN - 18.02.2007 - .xml(.zip)
Dieses Script errechnet den durchschnittlichen Abstand der Sprungtore von der Sektormitte. Gemessen wird in Metern. So kann etwa für Sektorerkundigungen, den Aufbau von Satellitennetzwerken usw. die Größe abschätzen.
  • Input:
  • 1: Sector , Var/Sector , 'Sector' - Sektor

    Output:
  • Number (Sektorgröße in Metern)
Image

Weiteres zum Thema: lib.st.appendtoarray

link hierher
Last edited by SymTec ltd. on Thu, 22. Mar 07, 21:26, edited 1 time in total.

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

Post by UniTrader » Sat, 17. Mar 07, 01:59

Mein erstes so veröffenlichtes Libary, ursprüngliche Verwendung war es, Positionen in ner Festgeschriebenen entfernung zu erhalten

lib.ut.pos.from.2.grades.and.rad - N/A - 2.05.2007 - .xml(.zip)
Dieses Script berechnet aus zwei gegebenen Winkeln und einer Entfernungsangabe eine Position und gibt diese als Positionsarray zurück.
Idealerweise entsprechen die Winkel alpha und Beta genau den Winkeln, die man über die Abfrage "<RetVar> = <RefObj> -> get rot alpha" und "<RetVar> = <RefObj> -> get rot beta" erhält, d.H. wenn man von der Sektormitte in eine beliebige Richtung schaut, die Rotation des Schiffes abfrägt und diese ins Script übergibt erhält man bei einer Positiven Entfernungsangabe immer eine Position, die genau vor dem Schiff ist. Mit der neuen Version kann man so auch immer eine Position genau vor dem Schiff erhalten, wenn man das Positionsarray des Schiffes eingibt.
  • Input:
  • 1: alpha , Var/Number , 'Angle alpha (0-65536)' - Erster Winkel (Zahl von 0 bis 65536)
  • 2: beta , Var/Number , 'Angle beta (0-65536)' - Zweiter Winkel (Zahl von 0 bis 65536)
  • 3: dis , Var/Number , 'Distance in m' - Entfernung in metern
  • 4: pos0.arr , Value , 'position array' - Ursprungsposition als X3-Positionsarray (wenn null ist die ursprungsposition 0/0/0) ; verbesserung von Gazz: hier kann auch ein Objekt als Ursprungsposition angegeben werden. In diesem Fall sind auch keine alpha- und beta- Winkel nötig, sie werden dann direkt von diesem Objekt genommen.

    Output:
  • ARRAY ( X , Y , Z ) X3-Positionsarray

    Ungenauigkeiten:
  • Bei Tests mit der erstellung einer Kugel mit dem Radius 10.000 m gab es eine maximale Ungenauigkeit von 2 metern, was auf X3-Interne abrundungen zurückzuführen ist (vernachlässigbar)
  • Ab einer Entfernung von 32.768 m halbiert sich die genauigkeit der Ausgabe. Dies wiederholt sich bei 65.536 m, 131.072 m, 262.144 m usw... dies lässt sich leider nicht vermeiden, weil sonst die Rückgabewerte fehlerhaft wären (Überlauf, vernachlässigbar)
Download (von Gazz verbesserte Version)
Image
Download (vorige Version):
Image

Hinweis: um zu prüfen, ob die lib in der aktuellen, von Gazz verbesserten Version vorliegt kann man folgenden Code im Setup verwenden:

Code: Select all

096   * Library check
097 @ $Dummy = [THIS] -> call script 'lib.ut.pos.from.2.grades.and.rad' :  Angle alpha (0-65536)=null  Angle beta (0-65536)=null  Distance in m=0  position array=[PLAYERSHIP]
098   $index = $Dummy[0]
099   if $index == 'null0'
100    $Msg = sprintf: pageid=$PageID textid=70, $Dummy, null, null, null, null
101 @  = wait 1 ms
102    send incoming message $Msg to player: display it=[TRUE]
103   end
Die Eingehende Nachricht sagt dabei aus, dass eine ältere Version von dieser library verwendet wird die nicht alle Funktionen der aktuellen Version bietet..

Link hierher
Last edited by UniTrader on Fri, 2. May 08, 20:06, edited 5 times in total.
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
Blacky_BPG
Posts: 2028
Joined: Tue, 24. Feb 04, 00:42
x4

Post by Blacky_BPG » Sat, 17. Mar 07, 11:31

Na dazu kann ich auch noch was beitragen:

lib.bp.numberreadable - DE/EN - 09.03.2007 - .xml (.zip)
Die Funktion des Scriptes erschließt sich schon aus dem Namen, es bringt eine sehr lange Nummer in eine lesbare Form mit Tausender Punkt.
Es stört doch schon wenn in Nachrichten die Zahl 1753923418 auftaucht, einfacher wäre doch zu lesen 1.753.923.418, und für genau sowas ist dieses Script gut.
  • Input:
  • 1: num , Var/Number , 'Number to decode' - Nummer zum decodieren bis max 2.000.000.000 (X3-Engine highest)
  • 2: zero , Var/Number , 'Bevor Zero Count' - Anzahl an Vornullen (max 2; Erklärung siehe unten)

    Output:
  • new.num Decodierte Version der über num eingegebenen Zahl

Die Vornullen richten sich immer nach einer angenommenen einstelligen Zahl. {angenommen deshalb weil auch eine 0 (Null) hier gezählt wird}
  • Beispiel: num == 200000
  • zero == 2
    - Ergebnis: 200.000
  • zero == 1
    - Ergebnis: 200.00
  • zero == 0
    - Ergebnis: 200.0
Im Normalfall ist zero immer 2

Direkt Download:
Image

Link hierher Link added - STL
Image
Image

User avatar
X-Freak Cartman
Posts: 3586
Joined: Mon, 2. Oct 06, 15:08
x3

Re: [Übersicht] lib.-Scripts // Script-Libraries für andere Scripter

Post by X-Freak Cartman » Sat, 17. Mar 07, 18:05

So, hier mal 11 Scripts von meiner Wenigkeit. Ich hab sie alle heute nochmal überarbeitet und angepasst.

lib.cm.find.gates - DE/EN - 03.06.2007 - 2.10 - .xml(.zip)
Dieser Script gibt ein Array aller Gates im Sektor zurück. Dabei kann geht es nach folgenden Kriterien vor:
a) Ist das Gate bekannt? (optional)
b) Sortierung des Arrays nach der Entfernung zu einem bestimmten Objekt oder einer Sector Position: Aufsteigende Entfernung
  • Input:
  • 1: Sec , Var/Sector , 'Sector' - Sektor zum Suchen
  • 2: relobj , Value , 'Object/Position to sort by dist.' - Sector Position oder Schiff, um das Array zu sortieren
  • 3: find.only.known , Value , 'only known gates?' - Sollen nur bekannte Gates zurückgegeben werden?

    Output:
  • $array.gates Array der Gates im Sektor, auf Wunsch sortiert
Image


lib.cm.getcomplex - DE/EN - 17.03.2007 - 2.00 - .xml(.zip)
Dieser Script gibt den Hub (Das Kontrollzentrum) der angegebenen Station zurück.
  • Input:
  • 1: Station , Var/Station , 'Station' - Station, deren Hub gesucht ist. Gibt man einen Hub an, wird der Hub selbst zurückgegeben.

    Output:
  • $Hub Der gesuchte Hub
  • null falls die Station in keinem Komplex ist

    Ressourcen:
  • lib.cm.ishub
  • lib.cm.isincomplex
  • lib.cm.getcomplexes
Image


lib.cm.getcomplexes - DE/EN - 17.03.2007 - 2.00 - .xml(.zip)
Gibt alle Komplexe eines Sektors zurück. Dabei kann es entweder
a.) nur die Hubs oder
b.) die Komplexe in einem zweidimensionalen Array mit dem Hub im Subarray an der Stelle 0
ausgeben.
  • Input:
  • 1: Sec , Var/Sector , 'Sector' - Sektor, in dem die Hubs gesucht werden
  • 2: getarray , Value , 'include facs as multidim. array' - zweidimensionales Array widergeben (Wahrheitswert)

    Output:
  • $Array.stations Das Array mit den Stationen. Je nach Eingabe zweidimensional. Das Array ist nach den Hubs bzw. deren Namen sortiert, die Subarrays mit den Komplexen sind nach den Stationstypen sortiert, allerdings befindet sich in diesen Subarrays der Hub an erster Stelle des Arrays. (klingt komplizierter als es ist)

    Ressourcen:
  • lib.cm.ishub
  • lib.cm.sort
Image


lib.cm.ishub - DE/EN - 17.03.2007 - 2.00 - .xml(.zip)
Prüft, ob angegebene Station ein Komplexhub ist.
  • Input:
  • 1: Station , Var/Station , 'Station' - zu prüfende Station

    Output:
  • [TRUE] falls die Station ein Hub ist
  • null falls nicht
Image


lib.cm.isincomplex - DE/EN - 17.03.2007 - 2.00 - .xml(.zip)
Prüft, ob angegebene Station in einem Komplex ist.
  • Input:
  • 1: Station , Var/Station , 'Station' - zu prüfende Station

    Output:
  • [TRUE] falls die Station in einem Komplex ist
  • null falls nicht
Image


lib.cm.stationsofcomplex - DE/EN - 17.03.2007 - 2.00 - .xml(.zip)
Gibt alle Stationen eines Komplexes sortiert zurück
  • Input:
  • 1: Station , Var/Station , 'Hub/Station' - Station des Komplexes - es muss nicht der Hub sein, kann aber natürlich

    Output:
  • $Complex nach Stationstyp sortiertes Array des Komplexes (Ohne Hub, nur die Fabriken)

    Ressourcen:
  • lib.cm.getcomplex
  • lib.cm.sort
Image

Link hierher
Last edited by X-Freak Cartman on Sun, 3. Jun 07, 14:28, edited 2 times in total.
Image
MSCI Referenz
Inaktiv

User avatar
X-Freak Cartman
Posts: 3586
Joined: Mon, 2. Oct 06, 15:08
x3

Post by X-Freak Cartman » Sun, 18. Mar 07, 22:25

Und die letzten 5...

lib.cm.getwingmen - DE/EN - 17.03.2007 - 2.00 - .xml(.zip)
Dieser Script speichert in einer Globalen Variablen ein Array aller Wingmen und hält es aktuell:
Man startet den Script entweder direkt per Scriptcall oder global (Kommt auf dasselbe hinaus). Der Script prüft das Array der Wingmen und alle Spielerschiffe darauf, ob sie Wingmen sind (Eines pro Millisekunde) und speichert sie alle in dem Array. Somit sind bei 2000 Spielerschiffen nach spätestens 2 Sekunden alle Wingmen neu erfasst.
Das Script kann unmöglich doppelt laufen, da hier eine Prüfung eingesetzt wurde. Es handelt also ähnlich dem Lockmaster der HSW MK3.

  • Input:
    - Nichts -

    Output:
    - kein direkter Output -
  • Globale Variable: 'wingmen' Array aller Wingmen
Image


lib.cm.installedhardware - DE/EN - 17.03.2007 - 2.00 - .xml(.zip)
Gibt die installierte Hardware eines Schiffes als Array entsprechend der angegebenen Kriterien zurück
  • Input:
  • 1: Object , Var/Ship , 'Object' - Schiff, dessen Hardware ausgegeben werden soll
  • 2: include.speedcargorot , Value , 'Include Speed/Cargo/Rot' - Sollen TWTs, Ruder-Optimierungen und Laderaumerweiterungen mit ausgegeben werden?
  • 3: include.playerwares , Value , 'Include player objects' - Sollen Spielerwaren mit ausgegeben werden? (Storykristalle, Bergungsversicherungen, Polizeilizenzen - nur möglich, wenn das Schiff das aktuelle Spielerschiff ist)

    Output:
  • $Array.installed Array aller installierter Hardware
  • null wenn als Schiff ein ungültiger Wert angegeben wurde
Image


lib.cm.isknown - DE/EN - 03.06.2007 - 2.10 - .xml(.zip)
Prüft, ob das angegebene Objekt der angegebenen Rasse bekannt ist. Wichtig für Realismus im Spiel, da ein Schiff Nichts angreifen kann, was er nicht kennt, und etwas kennen sollte, was seine Kumpels kennen.
  • Input:
  • 1: Object , Value , 'Object' - Objekt, auf dessen Bekanntheit geprüft werden soll
  • 2: Race , Var/Race , 'Race for check' - Rasse, der das Objekt bekannt sein soll

    Output:
  • [TRUE] wenn das Objekt angegebener Rasse bekannt ist
  • null wenn nicht
Image


lib.cm.sort - DE/EN - 18.03.2007 - 2.10 - .xml(.zip)
Sortiert das angegebene Array entsprechend der angegebenen Modi.
Die Rückgabe des Arrays beim CallScript-Befehl ist nmicht notwendig, da die Array-Variable nur ein Array-Pointer ist. Bei
006 @ $Complex2 = [THIS] -> call script 'lib.cm.sort' : Array=$Complex sort mode(s)='name'
wird das Array $Complex sortiert und dann im Array $Complex2 gespeichert. $Complex entspricht dabei $Complex2, da der X3SE mit Arrays anders umgeht, als man logisch denken würde.
Es reicht also, wenn man nur
006 @ = [THIS] -> call script 'lib.cm.sort' : Array=$Complex sort mode(s)='name'
angibt, da das Array $Complex danach sortiert ist.
(Oder: Sichert das Array vorher, wenn ihr es nachher noch unsortiert braucht!)
  • Input:
  • 1: Array , Value , 'Array' - Array, das sortiert werden soll
  • 2: mode.all , Value , 'sort mode(s)' - Modi, nach denen sortiert werden soll. Diese können entweder als Nummer oder als String angegeben werden:
    • 0 oder 'value' - Es wird nach dem Wert im Array selbst sortiert (Nur bei Integers oder Strings problos möglich)
    • 1 oder 'name' - Sortierung nach dem Namen ('Ihre Mamba')
    • 2 oder 'type' - Sortierung nach dem waretype code (Typ [Falke, Pirat Falke, ...])
    • 3 oder 'credits' - Menge des Geldes auf der Station
    • 4 oder 'shield' - aktuelle Schildstärke
    • 5 oder 'shield.percent' - aktuelle prozentuale Schildstärke
    • 6 oder 'max.shield' - maximale Schildstärke
    • 7 oder 'hull' - aktuelle Hüllenstärke
    • 8 oder 'hull.percent' - aktuelle prozentuale Hüllenstärke
    • 9 oder 'max.hull' - maximale Hüllenstärke
    • 10 oder 'hull.shield.percent' - prozentualle Schild&Hüllenstärke
    • 11 oder 'laser' - aktuelle Laserenergie
    • 12 oder 'laser.percent' - aktuelle prozentuale Laserenergie
    • 13 oder 'max.laser' - maximale Laserenergie
    • 14 oder 'size' - Größe des Objektes
    • 15 oder 'x' - X-Position im Sektor
    • 16 oder 'y' - Y-Position im Sektor
    • 17 oder 'z' - Z-Position im Sektor
    • 18 oder 'cargobay' - Frachtraumgröße
    • 19 oder 'free.cargobay' - freier Frachtraum
    Normalerweise wird aufsteigend sortiert, aber man kann auch absteigend sortieren, indem man dem Modus einfach "/d" anfügt: 'name/d' -> Array beginnt mit Z und endet mit A

    Zu guter Letzt kann man auch mehrere Modi hintereinander ablaufen lassen. Möchte man also primär nach dem (Schiffs)typ aufsteigend und sekundär nach dem Namen absteigend sortieren, so kann man die modi mit einem Komma trennen. Sind Schiffe mit gleichem Typ im Array vorhanden, werden sie sekundär also nach dem Namen sortiert:
    'type,name/d'
    Man kann auch die Nummer in den String setzen:
    '2,1/d' oder 'type,1/d'
    Wird ein ungültiger Befehl (z.B. 'typ', 'Name' oder 'Schild') eingegeben, wird die Sortierung sofort beendet und das Array zurückgegeben. Möglicherweise liegt dann ein halb sortiertes Array vor.

    Output:
  • $Array in sortierter Form, eigentlich ist die Rückgabe nicht nötig
  • null wenn kein Array angegeben wurde (lol)
Image


lib.cm.tl.payment - DE/EN - 17.03.2007 - 2.00 - .xml(.zip)
Gibt für das angegebene Volk die momentanen Kosten eines TLs "pro Tor" zurück
  • Input:
  • 1: Owner , Var/Race , 'Race' - Volk, denen der TL gehören sollte

    Output:
  • $Costs die Kosten in Credits pro Tor
  • null wenn das Volk keines der 5 Hauptvölker oder der aktuelle Rang zu niedrig ist
Image

Link hierher
Last edited by X-Freak Cartman on Sun, 3. Jun 07, 14:29, edited 2 times in total.
Image
MSCI Referenz
Inaktiv

XGamer
Posts: 1403
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer » Thu, 22. Mar 07, 20:35

lib.xg.waremanager - N/A - 21.03.2007 - 1.1 - .xml Download
Dieses Script ist ein sehr vielfältiges Script um mehrere Waren zu belibigen Stationen im All hinzuzufügen oder zu entfernen.
  • Input:
  • Var/Ware, 'Array of Wares/Single Ware' - Array der Waren / einzelne Ware
  • Var/Race, 'Race of the Stations to be affected' - Rassenangabe der Stationen wenn nur eine Rasse betroffen sein soll
  • Var/Number , 'Remove Wares(0) or Add(1) - Modus 1 für hinzufügen 0 für entfernen (Keine Angabe (null) wird als 1 gewertet.)
  • Var/String , '(P)roduct, (R)es, (S)ecRes' - Typ der Ware bei Fabriken. Sprich ob es ein Produkt eine Ressource oder Sekundäre Ressource sein soll. Nur beim hinzufügen wichtig andernfalls wird dies ignoriert.
  • Var/Station Type , 'Station Type to be affected' - Wenn nur ein bestimmter Stationstyp betroffen sein soll (z.B. Argon Kristallfabrik M) andernfalls null
  • Output:
  • Integer, Counter auf wievielen Stationen die Waren hinzugefügt bzw. entfernt wurden.
Dabei lässt sich genau festlegen welche Stationen betroffen sein sollen und welche nicht. Das Script wird am besten per scriptcall aufgerufen da es nur dann seine volle Wirkung entfalten kann. Natürlich lässt es sich auch direkt aus dem SE starten jedoch kann man nur eine Ware gleichzeitgi hinizufügen bzw. entfernen.

Image

Link this posting

greetz
XGamer
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (2.50 still pretty much unplayable due to bugs)

User avatar
SymTec ltd.
Posts: 4389
Joined: Mon, 11. Apr 05, 21:11
x3tc

Post by SymTec ltd. » Thu, 22. Mar 07, 20:56

ShipsInRadius

lib.st.appendtoarray - DE/EN - 22.03.2007 - .xml(.zip)
Dieses Script hängt zwei Arrays zu einem zusammen. Achtung: Das erste Array ist dasa Grundarray. Egal, wohin man die Ausgabe speichert, wird das eingegebene Array an dieses gekoppelt und jede weitere Änderung an beiden Arrays vorgenommen. Daher sollten "Array A" und das Ausgabearray das gleiche Array mit dem gleichen Variablennamen sein.
  • Input:
  • 1: Array , Var/Array , 'Array A' - Grundarray, der weiterbefüllt wird
  • 2: Array , Var/Array , 'Array B' - Array, der angehängt wird

    Output:
  • Array (Array A)
lib.st.sectorlist.within.jumps - DE/EN - 22.03.2007 - .xml(.zip)
Dieses Script gibt die Liste aller Sektoren in x Sprüngen Reichweite aus. Dieses Script ist eigentlich von Lucike und wurde nur minimal verändert - die größte Änderung ist der Name.
  • Input:
  • 1: SectorStart , Var/Sector , 'SectorStart' - Startsektor
  • 2: JumpDistance , Var/Number , 'JumpDistance' - Sprungweite
    Output:
  • Array (aller Sektoren in Reichweite)
lib.st.getshipsinradius - DE/EN - 22.03.2007 - .xml(.zip)
Dieses Script gibt die Liste aller Spielerschiffe in x Sprüngen Reichweite aus. Dazu nutzt es auch Sicherheitsabfragen.
  • Input:
  • 1: StartSector , Var/Sector , 'StartSector' - Startsektor
  • 2: Radius , Var/Number , 'Radius' - Sprungweite
  • 3: SecLevel , Var/Number , 'Secutirty Level?' - Sicherheit: 0: alle Sektoren - 1: alle satellitenüberwachten Sektoren - 2: Alle Satellitenüberwachten und freindfreien Sektoren
    Output:
  • Array (aller Schiffe in Reichweite)
  • Benötigte andere Scripts: lib.st.sectorlist.within.jumps, lib.st.appendtoarray
Direkt-Download:
Image

link hierher

User avatar
SymTec ltd.
Posts: 4389
Joined: Mon, 11. Apr 05, 21:11
x3tc

Post by SymTec ltd. » Thu, 22. Mar 07, 21:41

findstation.best

lib.st.findstation.best - DE/EN - 22.03.2007 - .xml(.zip)
Dieses Script findet die beste Station, um ein Produkt zu kaufen oder zu verkaufen, unter der Eingabe weiterer Prioritäten und einer Ignore-List.
  • Input:
  • 1: ware , Var/Ware , 'ware' - Gesuchte Ware
  • 2: price , Var/Number , 'price' - Min (v) bzw. Max (k) Preis
  • 3: amount , Var/Number , 'amount' - Anzahl gesuchter Einheiten
  • 4: jumps , Var/Number , 'jumps' - Sprungweite
  • 5: sector , Var/Sector , 'sector' - Startsektor
  • 6: buy , Var/Boolean , 'buy' - Kaufen? (sonst: verkaufen)
  • 7: mode , Var/Number , 'mode' - Mode: 1: Spielerstationen bevorzugen - 2: KI-Stationen bevorzugen - 3: Handelsstationen/Docks bevorzugen - 4: Ausschließlich Spielerstationen - 5: Ausschließlich KI-Stationen - 6: Ausschließlich Stationen, die für den allgemeinen Handel geöffnet sind
  • 8: ignore , Var/Array , 'ignore' - IgnoreList

    Output:
  • Station (beste Station)
  • Benötigte andere Scripts: lib.st.ad.sectortosectornumber, lib.st.sectorlist.within.jumps
Direkt-Download:
Image

link hierher

User avatar
SymTec ltd.
Posts: 4389
Joined: Mon, 11. Apr 05, 21:11
x3tc

Post by SymTec ltd. » Sat, 28. Apr 07, 00:44

lib.st.sprintf

lib.st.sprintf - DE/EN - 28.04.2007 - .xml(.zip)
Dieses Script kann eine beliebig große Nummer (maximal empfohlen: 99) von Variablen aus einem String oder Textfile durch den Inhalt eines Arrays substituieren. Dabei kann - im Gegensatz zu den normalen Scripteditor-Kommandos - eine Variable mehrmals eingesetzt und auch eine im Array spätere Variable an einer im Text früheren Stelle eingefügt werden. Die Beschränkung auf 5 Arguments besteht nicht mehr.
  • Input:
  • 1: pageid , Var/Number , 'pageid' - PageID der Seite, oder [TRUE], wenn bei 'textid' ein String eingefügt wird.
  • 2: textid , Var/Number , 'textid' - TextID des Strings im Textfile, oder Stringobjekt
  • 3: DataArray , Var/Array , 'arg.array' - Array der einzufügenden Werte

    Output:
  • string
  • Benötigte andere Scripts: keine
Im String oder Textfile werden die zu ersetzenden Stellen durch die Zeichenfolgen %00s, %01s, ... %10s, ... gekennzeichnet. Die Zahlen bezeichnen stets die Stelle im Array, an der der neue Wert steht. Die Zeichen können auch mehrmals vorkommen, es müssen nicht alle im String vorkommen: So kann etwa aus dem Array

ARRAY('SymTec ltd.',Argon Prime,Demeter,'Handelssoftware MK3',Linie der Energie)

mit dem String

%00s besitzt in %01s eine %02s. Auch die %02s in %04s gehört %00s

der Text

SymTec ltd. besitzt in Argon Prime eine Demeter. Auch die Demeter in Linie der Energie gehört SymTec ltd.

gemacht werden.

Direkt-Download:
Image

link hierher

User avatar
SymTec ltd.
Posts: 4389
Joined: Mon, 11. Apr 05, 21:11
x3tc

Post by SymTec ltd. » Fri, 11. Jan 08, 16:10

Incoming Question Handler - Fragen an Spieler stellen

>>>Haupttopic<<<

Der Incoming Question Handler ist ein Script (mit 2 Unterstützungsscripts und einem MD-plugin), das
  • durch einen einzigen Scriptcall eine Antwort vom Spieler erfragt und direkt zurückgibt
  • auf dem spezifischen Objekt läuft und kein Jonglieren mit globalen und lokalen Variablen mehr erfordert
  • sobald die Frage gesendet wird, diese als popup auf dem Bildschirm erscheinen lässt
  • nichts von dieser ganzen Nutzerinteraktion im Nachrichtenlog vermerkt.
lib.st.md.message.ask.xml - DE/EN - 03.01.2008 - .xml(.zip)
  • Input:
  • Var/String/Integer , 'pageid OR message string' - Entweder die pageid der Frage, die dem Spieler gestellt werden soll, oder die Frage selbst (als String)
  • Var/Integer , 'textid OR null' - Wurde eine pageid als arg1 eingegeben, ist hier die zugehörige Textid; sonst bleibt das Feld leer
  • Var/String , 'arg1 OR null' - Text, der in die Frage eingefügt werden soll (für %s).
  • Var/String , 'arg2 OR null' - Text, der in die Frage eingefügt werden soll (für %s).
  • Var/String , 'arg3 OR null' - Text, der in die Frage eingefügt werden soll (für %s).
  • Var/String , 'arg4 OR null' - Text, der in die Frage eingefügt werden soll (für %s).
  • Var/String , 'arg5 OR null' - Text, der in die Frage eingefügt werden soll (für %s).

    Output:
  • String/Integer - Antwort

    Benötigte andere Scripts: Incoming Question Handler

User avatar
Gazz
Posts: 12430
Joined: Fri, 13. Jan 06, 17:39
x3tc

Post by Gazz » Sun, 27. Jan 08, 23:03

lib.gz.is.a.core.sector.xml - N/A - 1.0 - xml(zip) Download

Script function um festzustellen ob ein Sektor ein Core-Sektor ist oder nicht. Dafür gab es leider überhaupt keinen MCSI Befehl.
Funktioniert mit X3 v2.5. Andere Versionen nicht getestet.
  • Input: Sector , Var/Sector , 'Sector'
  • Output: Is.Core.Sector , Var/Number , 'Is.Core.Sector'
  • = 1 : Core sector
  • = null : Border/Pirate/Unknown sector
  • = null : sector does not exist
Haupttopic

Code: Select all

@ $Test = [THIS] -> call script 'lib.gz.is.a.core.sector' :  Sector=$sector
Last edited by Gazz on Thu, 1. May 08, 14:05, edited 5 times in total.
My complete script download page. . . . . . I AM THE LAW!
There is no sense crying over every mistake. You just keep on trying till you run out of cake.

User avatar
SymTec ltd.
Posts: 4389
Joined: Mon, 11. Apr 05, 21:11
x3tc

Re: [Übersicht] lib.-Scripts // Script-Libraries für andere Scripter

Post by SymTec ltd. » Sun, 27. Jan 08, 23:24

SymTec ltd. wrote:[...]
---------
Also ist das Schema:
1.: Name (fett), Sprache (Sprache der Readme!, gelb), Release (gelb), Dateityp (gelb), Link (fett)
2.: Kurze Beschreibung (2-6 Zeilen, je nachdem)
3.: Input-Output-Liste (die farbe ist #11ff00)
4.: Weitere Hinweise zur Benutzung (hier kann ruhig noch mehr Text stehen)
5.: (hier nicht) Liste der genutzten Ressourcen (TextIDs etc.)[...]

?!?

User avatar
Gazz
Posts: 12430
Joined: Fri, 13. Jan 06, 17:39
x3tc

Post by Gazz » Thu, 3. Apr 08, 12:26

UniTrader wrote:lib.ut.pos.from.2.grades.and.rad - N/A - 2.05.2007 - .xml(.zip)
Der Download link ist falsch.
Sollte heißen:
http://www.madxhawk.com/downloads.php?v ... l&df_id=57
My complete script download page. . . . . . I AM THE LAW!
There is no sense crying over every mistake. You just keep on trying till you run out of cake.

Post Reply

Return to “X³: Reunion - Scripts und Modding”