(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
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
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.
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
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
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.