[S][19.01.07][1.4] Lib-Scripts (uA 'get stations of complex' und 'get ship hardware')

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

Post Reply

Findet ihr diese Scripts nützlich?

Poll ended at Thu, 7. Dec 06, 00:07

Immer doch! Mehr davon!
5
56%
Naja... ich bin kein Scripter, das klingt aber irgendwie gut...
3
33%
Nö... das ist absolut überflüssig
1
11%
 
Total votes: 9

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

[S][19.01.07][1.4] Lib-Scripts (uA 'get stations of complex' und 'get ship hardware')

Post by X-Freak Cartman » Thu, 30. Nov 06, 00:07

Diese Scripts sollen anderen Scriptern eine Grundlage für ordentliche Scripts, vor Allem im Bereich der Komplexe und Stationen, bieten. Das Problem der Erkennung, welche Station zu welchem Komplex gehört, ist mit diesen Scripts beispielsweise gelöst.

[ external image ] Version 1.4
Die Readme wrote:libscripts by X-Freak Cartman

Beschreibung : verschiedene Scripts für andere Scripter, um das Scripten schwieriger Passagen zu erleichtern.
Version : 1.4
Datum : 19.01.2007
Autor : X-Freak Cartman

Files:
scripts\
lib.cm.find.gates.xml
lib.cm.getcomplex.xml
lib.cm.getcomplexes.xml
lib.cm.installedhardware.xml
lib.cm.isincomplex.xml
lib.cm.isknown.xml
lib.cm.stationsofcomplex.xml
lib.cm.tl.payment.xml

###########################################################################


Installation:
¯¯¯¯¯¯¯¯¯¯¯¯¯
Einfach in den scripts-Ordner werfen, Scripts laden / Spiel starten und schließlich nutzen

Benutzung:
¯¯¯¯¯¯¯¯¯¯
Per "call script" könnt ihr diese Scripts aufrufen. Je nach Script und Argument führen die Scripts dann unterschiedliche Rechenoperationen durch:

lib.cm.find.gates.xml
- sucht im angegebenen Sektor alle Gates und gibt sie als Array aus. Gibt man ein Objekt an (zweites Argument), so werden die Tore nach der Entfernung zu diesem Objekt sortiert. Bestätigt man 'only known gates', werden nur bereits erkundete Tore ausgegeben.

lib.cm.installedhardware.xml
- gibt das Array der auf dem Object installierten Hardware zurück. Auf Wunsch werden auch Tunings (Laderaumerweiterhungen, Triebwerkstunings und Ruderoptimierungen) und/oder Spielerobjekte (Bergungsversicherungen, Lizenzen, Datenspeicher) mit ausgegeben. Die Story-Kristalle werden nicht abgefragt.

lib.cm.isknown.xml
- gibt 1 oder null zurück, je nachdem, ob das Schiff in Scannerreichweite eines Schiffes der angegebenen Rasse liegt. Dieser Script wurde geschrieben, da das Kommando "is known" für Schiffe nicht korrekt funktioniert.

lib.cm.tl.payment.xml
- Gibt die Kosten eines TL des jeweiligen owners pro Torflug zurück.

>-Komplexscripte-<

lib.cm.getcomplex.xml
- gibt das Kontrollzentrum der angegebenen Station aus. Ähneln sich Komplexe zu 100%, so wird der nächstgelegene Hub als Hub der Station gesehen.

lib.cm.getcomplexes.xml
- gibt entweder alle Hubs oder alle Komplexe der angegebenen Sektors aus. Wählt man das multidimensional array?', so wird ein multidimensionales Array ausgegeben, das wie folgt gegliedert ist:
Im ausgegebenen Array sind die Komplexe als Arrays gespeichert.
Die Komplex-Arrays enthalten im index 0 das Kontrollzentrum, nachfolgend sind die Stationen des Komplexes nach Namen geordnet eingetragen.

lib.cm.isincomplex.xml
- prüft, ob die Station in einem Komplex ist

lib.cm.stationsofcomplex.xml
- gibt die Stationen eines Komplexes als Array aus, welches auf dem index 0 das CC und nachfolgend alle Stationen alphabetisch nach Namen sortiert enthält. Als Argument muss eine verbaute Station oder das Kontrollzentrum angegeben werden.

Versionhistorie:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
1.4
lib.cm.installedhardware und lib.cm.tl.payment hinzugefügt

1.32
lib.cm.isknown gab manchmal einfach [TRUE] zurück, obwohl das Objekt nicht der angegebenen Rasse bekannt war
- gefixt
1.31
lib.cm.isknown hat das Spielerziel teilweise als unbekannt erfasst - gefixt
1.3
lib.cm.stationsofcomplex kann nun auch den Komplex einer im Komplex verbauten Station ausgeben

1.2
Aktualisierung von lib.cm.isincomplex und lib.cm.isknown

1.1
Performanceoptimierung, Entfernung eines unlokalisierbaren Abfragefehlers

1.0
Release

__________________________________
© 2006/07 X-Freak Cartman

Ich wünsche weiterhin einen guten Profit
[ external image ] Version 1.4

Ich hoffe, dass ihr was draus machen könnt. Viel Spaß damit.
Last edited by X-Freak Cartman on Fri, 19. Jan 07, 16:17, edited 8 times in total.

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

Post by X-Freak Cartman » Thu, 30. Nov 06, 16:25

Trotz mangelndem Interesse hab ich noch ein paar performancetechnische Probleme behoben. Version 1.1 ist veröffentlicht.

User avatar
-Ford-
Posts: 2064
Joined: Wed, 18. Jan 06, 18:40
x4

Post by -Ford- » Thu, 30. Nov 06, 17:05

Ich hab Version 1.1 mal bei mir auf den Webspace hochgeladen - Mal sehen vllt. werde ich sie in einem Script brauchen können.

Auf jeden Fall danke für die Libs

Gruß
Ford
Last edited by -Ford- on Fri, 1. Dec 06, 12:51, edited 1 time in total.
Ponyfabulous

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

Post by X-Freak Cartman » Thu, 30. Nov 06, 22:22

Ich danke für den Mirror.

Du kannst den Link aus deinem Post ruhig wieder entfernen ^^

Eins wäre vielleicht noch zu erwähnen:
In den Scripts sind keine wait-Befehle eingebaut, da diese in Tests selbst bei der Minimalzeit die Berechnungszeit auf bis zu 30 Sekunden gehoben haben, der Script selbst allerdings maximal eine halbe Sekunde rechnen musste. Solange ihr den Script nur aller paar Minuten startet, sollte es kein Problem sein... aber wer will aller paar Minuten alle Komplexe eines Sektors ausführlich kennen?

Viel Spaß weiterhin.

User avatar
Orka
Posts: 817
Joined: Wed, 7. Apr 04, 15:19
xr

Post by Orka » Sat, 2. Dec 06, 07:01

Code: Select all

Script lib.cm.isknown
Version: 110
for Script Engine Version: 32
Description
fixed is known-command for ships
Arguments

    * 1: Object , Value , 'Object'
    * 2: Race , Var/Race , 'Race for check'

Source Text

001   skip if $Object -> exists
002    return null
003   
004   $Race = $Race -> get owner race
005   
006   $Sec = $Object -> get sector
007   $Flags = [Find.Multiple] | [Find.Nearest]
008   
009   $Array =  find ship: sector=$Sec class or type=Ship race=$Race flags=$Flags refobj=$Object maxdist=40000 maxnum=2147483647 refpos=null
010   gosub Check
011   $Array =  find station: sector=$Sec class or type=Station race=$Race flags=$Flags refobj=$Object maxdist=20000 maxnum=2147483647 refpos=null
012   gosub Check
013   return [FALSE]
014   
015   Check:
016   $Size =  size of array $Array
017   $Count = 0
018   while $Count < $Size
019    $Refobj = $Array[$Count]
020    $Scanner = $Refobj -> get scanner range
021    $Distance = get distance between $Refobj and $Object
022    skip if $Distance > $Scanner
023     return [TRUE]
024    inc $Count = 
025 @  = wait randomly from 1 to 5 ms
026   end
027   endsub
028   
029   return [FALSE]

Kannst du mir erklären wie das script arbeiten soll?

004 $Race = $Race -> get owner race

Was soll das?

Und warum den die "find" befehle wenn das obj doch schon bekannt ist, oder nicht?

Und für maxdist könnest du gleich $Scanner = this -> get scanner range einsetzten.

Und in Check: beendest du das script sobald du irgendwas gefunden hast was in reichweite liegt.
[/b]

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

Post by X-Freak Cartman » Sun, 3. Dec 06, 16:40

Du missverstehst da etwas.

Der Script sucht Objekte (Ships/Stations) des entsprechenden Volkes, die dieses Objekt in Scannerreichweite haben. Ist dem der Fall, ist das Objekt auch dem jeweiligen Volk bekannt.

Der Ansatz in Zeile 4 ist leider in einer Zeit jenseits des Tages verloren gegangen. ich habe es am We korrigiert und lade gleich die Version 1.2 des Paketes hoch. lib.cm.isincomplex hatte auch eine kleinere Überholung verdient.

User avatar
Orka
Posts: 817
Joined: Wed, 7. Apr 04, 15:19
xr

Post by Orka » Sun, 3. Dec 06, 18:41

Jetzt versteh ich. Du prüfst ob das obj "jemand anderen" bekannt ist.
Ich dachte du sucht sichtbare Feinde in Reichweite. :oops:

lib.cm.isincomplex find ich witzig. Auf die Idee muss man erstmal kommen.^^

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

Post by X-Freak Cartman » Sun, 3. Dec 06, 18:55

:D

Das hab ich nochmal überarbeitet. Jetzt prüft es alle zwei Möglichkeiten durch. gleich kommt das Update.

Edit: Done

isknown wurde optimiert und isincomplex hat ebenfalls ein kleines Update genießen dürfen.

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

Post by SymTec ltd. » Mon, 4. Dec 06, 17:02

Sehr schön! Ich arbeite an einer ähnlichen Sache, an einem "Kaufe Ware zum besten Preis" für Sprungantriebsschiffe und mit mehr Fehlerresistenz.

Erstmal werde ich aber dieses Script anschauen und gucken, ob ich es für mein zwischengeschobenes Projekt brauchen kann.

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

Post by X-Freak Cartman » Mon, 4. Dec 06, 20:19

Hmm... da ich die Egoscripts ersetze, kann ich einfach die Flugroutinen ersetzen... dadurch springen die Schiffe, wenn möglich, so dass dafür kein komplett neues Kommando nötig ist.

Dieses Projekt dauert aber noch ein paar Monate.

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

Post by SymTec ltd. » Mon, 4. Dec 06, 21:52

@Topic: get stations out of complex geht bei mir nicht wie gewünscht: er gibt mir als array nur die Station (komplex...) aus, die ich als argument eingegeben habe. fomisch.

@X-Freak Cartman [KBG]: Naja, ich wollte auch z.B., dass das Schiff zwei Waren kauft, vor Feinden flieht und sowas - wenn das die ganze KI macht, hat mein pc da ein problem mit.

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

Post by X-Freak Cartman » Mon, 4. Dec 06, 22:06

... "Get Stations of complex" hat ein Argument, das nicht umsonst "Complex" heißt: Hier musst du, wie in der Readme beschrieben, das Kontrollzentrum angeben. Im Notfall musst du vorher nochmal "Get complex of station" benutzen. Das hab ich einfach nicht eingearbeitet, vielleicht mach ich das in der nächsten Version (Sprich: Jetzt!)

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

Post by X-Freak Cartman » Mon, 4. Dec 06, 22:43

So:

[ external image ] Version 1.3

Viel Spaß. Änderung: stations of complex - man kann auch einfach irgendeine Station angeben, nicht den Hub

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

Post by X-Freak Cartman » Fri, 19. Jan 07, 16:17

[ external image ] Version 1.4
Verbesserungen wrote: lib.cm.installedhardware.xml
- gibt das Array der auf dem Object installierten Hardware zurück. Auf Wunsch werden auch Tunings (Laderaumerweiterhungen, Triebwerkstunings und Ruderoptimierungen) und/oder Spielerobjekte (Bergungsversicherungen, Lizenzen, Datenspeicher) mit ausgegeben. Die Story-Kristalle werden nicht abgefragt.

lib.cm.tl.payment.xml
- Gibt die Kosten eines TL des jeweiligen owners pro Torflug zurück.

Versionhistorie:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
1.4
lib.cm.installedhardware und lib.cm.tl.payment hinzugefügt

BadAngel1976
Posts: 185
Joined: Wed, 23. Nov 05, 19:47
x3tc

Post by BadAngel1976 » Sat, 20. Jan 07, 06:08

Auch in der gefahr, dass es nicht immer funktioniert (bei mir klappte diese Methode aber bisher immer) und ich vieleicht nie den Ruhm dafür ernten werde ( schertzhaft gemeint) und in der Hoffnung das noch kein anderer daruf gekommen ist (habe zumindest noch nirgendswo soetwas gefunden) ---- Hab ich noch ne einfachere Lösung gefunden für das finden aller Fabriken in einem Komplex und ob eine Fabrik zu einem Komplex gehört oder nicht....


1: - Fabriken eines Komplexes mit der Eingabe des Kontrollzentrums als Station

Code: Select all

Univers and Sector Commands 

<RetVar> = <RefObj> get factory array from sector

wobei aber als <RefObj> das Kontrolzentrum gewählt werden muss.
2: - Herrausfinden ob eine Fabrik zu einem (leider aber nur zu irrgendeinem) Komplex gehört

Code: Select all

General Object Commands

<RetVar> = <RefObj> is detectable

wobei als <RefObj> die Station übergeben werden muss. Rückgabewert <1> bedeutet hierbei Komplexfabrik. Vorher sollte aber noch die Station daraufhin überprüft werden, ob es eine Spieler-Eigene-Fabrik ist. Ausserdem werden keine Kontrollzentren so erfasst.


So das wars erstmal. Bei fragen - Hem - bitte fragen - Aber nicht steinigen falls das doch schon bekannt war...


MFG

BadAngel

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

Post by X-Freak Cartman » Sat, 20. Jan 07, 09:23

hmm...
Irgendwo haste Recht...

Verdammt ^^
na gut, ich duck mich und änder meine Scripts etwas ... blöd, dass sie dadurch Einzeiler werden...

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

Post by X-Freak Cartman » Sun, 18. Mar 07, 21:39

Done... Die Scripts wurden aktualisiert und funzen jetzt schneller und sicherer.

btw:
Das Libpaket-Projekt ist beendet und die Libscripts werden ab sofort allein veröffentlicht.
Dazu nutze ich SymTecs [Übersicht] lib.-Scripts // Script-Libraries für andere Scripter (welcher gepinnt werden sollte)

Dieser Thread kann ruhig geschlossen werden. Er wird nicht mehr gewartet oder aktualisiert.

Post Reply

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