[LIB] [11.12.09] [V 1.0.01] Advanced Sector Search

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

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

User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

[LIB] [11.12.09] [V 1.0.01] Advanced Sector Search

Post by Reflexer »

Advanced Sector Search
(Version 1.0.01 - 11. Dezember 2009)

[ external image ]

Beschreibung

Diese Library richtet sich an andere Scripter/Modder/Entwickler und ist nicht zur Installation als eigentliche Erweiterung des Spiels gedacht. Die Library ist sowohl für erfahrene Entwickler, als auch für Neulinge geeignet. Ich habe den Code so gehalten, dass er „lesbar“ bleibt und jederzeit nachvollzogen werden kann, was passiert.

Nachdem die Funktionalitäten welche die Standard-Biliothek im Bezug auf Sektor- und Galaxyfunktionen bereitstellt eher dürftig sind, wurden in dieser Library diverse Erweiterungen implementiert.

Folgende Funktionen bietet die Library:
  • - Ermittlung aller Sektoren, die eine Grenze von Rasse 1 zu Rasse 2 haben (es werden die Sektoren der Rasse 1 ermittelt)
    - Ermittlung aller Sektoren, die eine Grenze zwischen 2 Rassen haben (es werden die Sektoren beider Rassen ermittelt)
    - Ermittlung aller Kernsektoren
    - Ermittlung aller Kernsektoren einer bestimmten Rasse
    - Ermittlung aller Sektoren, die kein Kernsektor sind
    - Ermittlung aller Sektoren einer bestimmten Rasse, die kein Kernsektor sind
    - Ermittlung aller Sektoren mit exakt n Sprungtoren
    - Ermittlung aller Sektoren einer bestimmten Rasse mit exakt n Sprungtoren
    - Ermittlung aller Sektoren mit mindestens n Sprungtoren
    - Ermittlung aller Sektoren einer bestimmten Rasse mit mindestens n Sprungtoren
    - Ermittlung aller Sektoren mit höchstens n Sprungtoren
    - Ermittlung aller Sektoren einer bestimmten Rasse mit höchstens n Sprungtoren
    - Ermittlung aller Sektoren einer bestimmten Rasse
Die Library kann selbstverständlich von jedem vollständig oder auszugsweise verwendet werde. Ebenso ist sie zur Verwendung in anderen Projekten freigegeben.

Installation
Zuerst die Lib runterladen:
--> Advanced Sector Search V1.0.01

Die Library in den script-Ordner und die beiden t-Files in den t-Ordner kopieren. Damit ist die Installation abgeschlossen.
lib.sectors.advanced.xml -> “…\scripts\...”
8955-L044.xml -> “…\t\...“
8955-L049.xml -> „…\t\...“

Das Plugin plugin.sectors.advanced.test.xml ist optional. Es dient dem Test der Library. Ich habe es der Vollständigkeit halber beigelegt.

Performance

Obwohl die Library mit ihren über 500 Zeilen Code nicht gerade klein ist, ist sie sehr performant. Das beiliegende Test-Script führt über 5.000 Operationen durch und erzeugt ein Log-File von über 200 KB. Trotzdem liegt die Laufzeit noch deutlich unter einer Sekunde.
Die Laufzeit eines normalen Aufrufs, wie ein Entwickler ihn durchführen wird, ist nicht mehr messbar, da er unter 1 ms liegt.

Aufruf
Das Script wird mittels

Code: Select all

$Array = [THIS]->call script 'lib.sectors.advanced' : Type=n  Race1=txt  Race2=txt  WarpGates=n  Station=null LogFile=bool NewLogFile=bool
aufgerufen.

Es werden nicht für jede Art der Ermittlung sämtliche Aufrufparameter benötigt. Der Parameter Type ist aber immer erforderlich. Wann welche Parameter benötigt werden kann dem jeweiligen Abschnitt der Beschreibung entnommen werden.
Der Parameter Station wird in der Version 1.0 noch nicht verwendet, weshalb er immer null ist. Er wurde bereits eingefügt, damit sich die Schnittstelle bei der kommenden Version nicht ändert.

Kurzübersicht der Aufrufparameter:
[ external image ]

Die Parameter LogFile und NewLogFile sind immer optional.

Rückgabewerte
Es gibt 2 Arten von Rückgabewerten. Es handelt sich in jedem Fall um ein zweidimensionales Array.
  • - Typ 1: Es werden Sektorname sowie die Sektorkoordinaten in X und Y zurückgegeben.
    - Typ 2: Enthält die Daten des Typ 1, sowie zusätzlich noch die Rasse des Sektorbesitzers.
Warum werden nicht einfach nur die Sektornamen zurückgegeben? Weil Sektornamen nicht eineindeutig sind. Es gibt z.B. über 10 „Unbekannter Sektor“. Um einen Sektor eindeutig zu identifizieren ist die Sektorposition erforderlich.

Bei allen Abfragearten, die eine Rasse übergeben, wird Typ 1 zurückgegeben, da die Rasse beim Aufruf bereits bekannt ist.
Bei allen anderen Abfragearten (also keine oder zwei Rassen) wird Typ 2 zurückgegeben.

War der script-Aufruf fehlerhaft (z.B. nicht alle notwendigen Parameter), so wird ein String mit dem Inhalt "Error" zurückgegeben.

Wurden keine Sektoren gefunden, dann ist der return-Wert null.

Abfrage des Rückgabewerts:
Wenn die Abfrage ein Ergebnis geliefert hat, dann handelt es sich beim Rückgabewert um ein zweidimensionales Array!!!!

Code: Select all

$DeinArray[i][0] = Sektorname
$DeinArray[i][1] = Sektorposition X
$DeinArray[i][2] = Sektorposition Y
$DeinArray[i][3] = Rassenname
Beispielcode, der das Auslesen verdeutlicht:

Code: Select all

$DeineSektoren = [THIS]->call script 'lib.sectors.advanced' : Type=1  Race1={Boronen}  Race2={Teladi}  WarpGates=null  Station=null LogFile=[TRUE] NewLogFile=[FALSE]

if $DeineSektoren != null AND $DeineSektoren != 'Error'
  $Iterator1 = size of array $DeineSektoren

  while $Iterator
    dec $Iterator =
    $DeinSektorname = $DeineSektoren[$Iterator][0]
    $DeinXWert = $DeineSektoren[$Iterator][1]
    $DeinYWert = $DeineSektoren[$Iterator][2]
    $DeineRasse = $DeineSektoren[$Iterator][3]
    .......
    ...  tue irgendwas mit den Daten
    ......
  end
end
Log-File
Der Nutzer hat die Möglichkeit sich ein Log-File erzeugen zu lassen. Das Log-File trägt den Namen „log08955.txt“.

Um ein Log-File zu erzeugen ist es notwendig den Aufrufparameter LogFile=[TRUE] zu setzen.

Soll ein neues Log-File erzeugt werden, dann ist der Parameter NewLogFile=[TRUE] - bei NewLogFile=[FALSE] werden die neuen Einträge an ein bestehendes Log-File angehängt.

Der Parameter NewLogFile wird ignoriert, wenn LogFile=[FALSE] ist.
Last edited by Reflexer on Tue, 11. Mar 14, 09:59, edited 10 times in total.
User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer »

Technische Daten ASS

Sprachdatei
8955-L044.xml (ID 8955)
8955-L049.xml (ID 8955)

Scriptdateien
lib.sectors.advanced.xml
plugin.sectors.advanced.test.xml

Bekannte Fehler

-keine-

Geplante Erweiterungen
  • - Ermittlung aller Sektoren, die mindestens eine Fabrik des Typs X haben
    - Ermittlung aller Sektoren einer bestimmten Rasse, die mindestens eine Fabrik des Typs X haben
    - Ermittlung aller Sektoren, die keine Fabrik des Typs X haben
    - Ermittlung aller Sektoren einer bestimmten Rasse, die keine Fabrik des Typs X haben
Last edited by Reflexer on Fri, 11. Dec 09, 17:46, edited 1 time in total.
User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer »

Hallo Leute,

dies ist ja mein erstes Script/meine erste Lib, die ich hochstelle.

Ich weiß nicht, ob sowas überhaupt jemand braucht. Ich habe es für mein neues "Add-On" Escalations benötigt und dachte mir einfach, dass ich eine allgemeingültige Lib draus mache. Könnte ja sein, dass es noch mehr Leute brauchen können.

Falls es keiner braucht isses auch nicht schlimm... gemacht isse eh ;) :p

Anregungen, Kritik, Lob.... immer an mich - entweder per PN oder einfach hier posten...

Lieben Gruß
Reflexer
User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 25130
Joined: Sun, 2. Apr 06, 16:38
x4

Post by X2-Illuminatus »

Frei nach dem Motto, wenn sich keiner beschwert hat, wird's wohl funktionieren, wollte ich nachfragen, ob irgendjemand diese Library auf seiner Festplatte hat und mir zukommen lassen könnte?
Reflexer selbst hatte ich vor rund einem Monat bereits angeschrieben, bisher hat er mir allerdings nicht geantwortet.
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!

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