Bibliotheken

Hier ist der ideale Ort um über Scripts und Mods für X²: Die Bedrohung zu diskutieren.

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

ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Bibliotheken

Post by ticaki »

Hallo,
in diesem Topic geht es zur Zeit nicht um dass von mir beschriebene,
sondern um eine Bibiothek mit der man Feindschiff abfragen und sortieren kann.

Erkennungsbibliothek

Verwendungszweck:
Eine Bibiothek die Grundfunktionen bereitstellt im Bereich Scannen, Racen/Feinderkennung, Racen/Feindstärkebewertung für Station, Schiffe und Objekte... Dazu müsste Mr.Gee noch eine Beschreibung liefern...


Mr.Gee Erkennungsbibliothek



------------------

Reparaturdockroutine:

Verwendungszweck:
Einfach im eigenen Script aufrufen und das Schiff fliegt wenn nötig zum nächsten Raumdock.

ticaki's RepDockLib





Mr.Gee und ich werde das bei Interesse gerne erweitern;)




-------------------------------------------------------------------------------------
Das hier machen wir später. :)


Vorab meine Beweggründe für den Topic

Im Zusammenhang mit dem Schiffnachkaufscript und der Kopierroutine ist mir aufgefallen, dass man zwar ein Kommando auslesen kann, aber anscheinend die Parameter nicht raus bekommt. Dazu wäre es gut, wenn wir uns auf einen Standard einigen. z.B. Array mit 4 Einträgen entweder vier einzel einträgen auf der lokalen Variabel "ship.parameter" so das ein fremdes Script auch dein Script aufrufen kann per
"Start X -> Command = xxx arg1 =....."

Die Verständigung untereinander wäre auch gut im Bezug auf Meldungen z.B.
BPH = Auchtung im Sektor Bla sind Khaak, bitte um eingreifen.
RG.Patrol = Feinde im Sektor Bla entdeckt greife an.
jnrk FlottenMK? = Das Problem in Sektor Bla können sie als erledigt betrachten.

Drei Meldungen die das gleiche Sagen und eigentlich sehr sinnvoll sind, aber zusammen wird der Spieler wohl zwei Scripts kicken, wenn nicht gar alle. Ich sag nur:
:| ('Achtung eines ihrer Schiffe wird angegriffen, Trantor') :headbang:

So und das mit der Komination eurer Angriffscripts bzw. Patrolscript wäre nun echt die Krönung. :thumb_up:
jnrk wrote:Vielmehr schwebt mir eine gemeinsame Schnittstelle vor, mit deren sich unterschiedliche Scripte gegenseitig Aktivieren können. Warum soll denn nicht zB TiCaKi's BPH-Erweiterungskit eine Patrouille (egal ob Route.Patrol oder AutoPatrol) -einfach der Bedrohung angemessene- herbeirufen können.

Die Entwicklung eines späteren FlottenPatrol würde dies stark vereinfach, es würde zB ausreichen wenn die FlottenPatrol die Koordination übernimmt und unsere eingesetzten Scripte "per Befehl von Oben" für einen "Sondereinsatz" umleitet... oder so...

Was haltet Ihr davon ?

Schnittstelle-Ideensammlung

benötigte Informationen:
-Wer hat den Gegner gefunden
-Wo wurde der Gegner gefunden
-Gegnerauflistung
-Dringlichkeitsstufe

Wenn man diese Infos in ein Globales Array reinpackt und danach die Schnittstelle aufruft, bräuchte diese die Daten nur noch auswerten und zB das zugehörige Signal eines Patrol-Scripts senden... oder per "interrupt with script ...."...
Besser ist wir arbeiten mit Globalen Variablen Scripterkennungsvariablen und lokalen Aktionsvariablen. Damit meine ich Global wird z.B. die Variabel RG.Sector.Patrol auf eine Array mit Befehlsschiffen gesetzt wenn dieses Script läuft ist der erste Eintrag kein NULL alle weiteren Einträge erhalten per "interrupt script" und "Get/Set Lokalvar" ein Array eingeschoben wo sich der aktuelle Frachter mit Append einträgt.

Jetzt muß das Patrolscript selber schauen, was es tun kann. Dadurch wird verhindert das z.B. Ich mucksbau bei der Prioritäten bewertung und deshalb das Patrolscript aus Sicht des Spielers nur Mist macht. Der Spieler weiß ja nicht, wer Schuld ist, er sieht nur die Auswirkungen.

Gruß ticaki
Last edited by ticaki on Tue, 11. May 04, 11:35, edited 17 times in total.
Zur Zeit nicht aktiv
jnrk
Posts: 231
Joined: Thu, 11. Mar 04, 12:00
x2

Post by jnrk »

Du bist ja :thumb_up:
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

jnrk wrote:Du bist ja :thumb_up:
Danke, weiß ich :D Du warst aber zu schnell jetzt ist der Eingangsbeitrag fertig.
Gruß ticaki
Zur Zeit nicht aktiv
Mr.Gee
Posts: 207
Joined: Wed, 6. Nov 02, 20:31
x3

Post by Mr.Gee »

Klingt gigantisch. :thumb_up:

@ ticaki
Wie ich Dich kenne ist das Array schon fast fertig oder ?

@jnrk
Sag mal das Feind-Script ist das bei Dir ein eingenständiges Script oder in ein anderes integriert ? wenn Ja welchen Namen hat es? Ich würde es dann genauso benennen, da es dann im Grunde nur einmal benötigt wird.
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

@Mr.Gee
Über die Benennung sollten wir auch diskutieren. ich nenne in Zukunft alle Scripts die zur Mehrfachnutzung ausgelegt sind
z.B.
lib.array.routinen <---- Sind zwei Array Routinen drin, die ich in der BPH brauche.
lib.array.shiptype <---- Gibt ein Array mit Shiptypen zurück
lib.auto.repdock <---- So heißt ab 1.30 die Auto Ich bin beschädigt und flieg zum Dock Routine

Ausserdem sollte man sich an Egosoftvorgaben halten.

Zum Bleistift: Meine neue Kopierroutine für Schiffe ist heute abend wohl fertig

lib.copy.ship ship=? race=? addto=? x=? y =? z =?
weil:
create ship shiptype =? race=? addto =? x=? y=? z=?

hat mkess auch schon angesprochen.

Gruß ticaki
Last edited by ticaki on Fri, 2. Apr 04, 16:40, edited 1 time in total.
Zur Zeit nicht aktiv
jnrk
Posts: 231
Joined: Thu, 11. Mar 04, 12:00
x2

...

Post by jnrk »

@Mr.Gee
Ich schreib gerade das gesamte Script um, sodass es am Ende hoffentlich signierungswürdig und konform ist. Vermutlich wird die Feinderkennung ausgelagert in ein extra Script. Da ich noch nicht weis inwieweit ichs noch modifizieren werde, nimms ruhig erstmal als eigenständiges.

Du möchtest Dein Route.Patrol doch sicher auch signieren lassen ?!
Ich werds vorraussichtlich plugin.jkpatrol.whoisenemy nennen und wenn Deins identisch ist (oder beide kompatibel), benenn ich es nach Deinem um, da ich nur an einer Stelle den Aufruf anpassen muss, ok ?

Bin da also voll flexibel :)

von BurnIt!:
Alle Scripte sollten mit "plugin." starten, dann dem eigenlichen Projektnamen z.B. "autotrade.", und zum Schluß mit einem Funktionsnamen z.B. "fuel.
Ich finds praktisch, wenn man den "Verantwortlichen" bereits am Scriptnamen erkennen kann.

Just my 2 cent,
jnrk
Last edited by jnrk on Fri, 2. Apr 04, 16:48, edited 1 time in total.
Mr.Gee
Posts: 207
Joined: Wed, 6. Nov 02, 20:31
x3

Post by Mr.Gee »

in dem zusammenhang wäre es klug, mit mkess mal über sig von libs zu reden. Ein allgemeiner Standard wäre sicher für alle von Vorteil. zudem würde die Rechenleistung sicher entlastet, wenn nicht jeder die selben Abfragen in eigenen Scripts paralell durchführt. meinst du nicht ?
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Schau mal auf die Topicbezeichnung!
Zur Zeit nicht aktiv
Mr.Gee
Posts: 207
Joined: Wed, 6. Nov 02, 20:31
x3

Post by Mr.Gee »

@jnrk

machen wir doch gleich ein lib daraus.
lib.find.enemy

wie findest Du die Idee?

Wenn man das script so gestalltet, dass es einfach ein array mit allen Feindschiffen zurück gibt, könnte man es ohne weitere Auswirkungen beliebig nachträglich verändern.

Das array arbeitet man dann einfach im eigenen script ab und fertig.

Ach ja: Also zum signieren - Ja ich will die signieren lassen, aber der einzige Grund dafür ist, damit die scripts auch für diejenigen nutzbar sind, die ohne aktiven editor spielen wollen. Mit Ruhm und Ehre habe ich in dem Zusammenhang gar nicht so viel am Hut......Das RG vorne dran dient auch eher der Zuordnung :D
jnrk
Posts: 231
Joined: Thu, 11. Mar 04, 12:00
x2

Post by jnrk »

libs - gute Sache, braucht man das Rad ja nicht tausendfach erfinden.

lib.find.enemy :thumb_up:

Wärs dann nicht noch praktischer, wenn man die mit Parametern zur Funktionsunterscheidung aufrufen kann. Sodaß ich je nach Aufrufparameter unterschiedliche Ergebnisse zurückerhalte, zB
(fortgeschrittene Kodierung :) )

0/NULL - Array alle Gegner unsortiert

1X - den räumlich nächsten Gegner
2X - den Stärksten
3X - den Schwächsten
4X - Array sortiert nach Stärke

für X:
1 - beliebig
2 - beweglich
3 - stationär

100 - Array M5-Gegner
101 - M5 Einzel-Gegner
110 - Array M4-Gegner
111 - M4 Einzel-Gegner
120 - Array M3-Gegner
121 - M3 Einzel-Gegner
130 - Array M6-Gegner
131 - M6 Einzel-Gegner
150 - Array M2-Gegner
151 - M2 Einzel-Gegner
160 - Array M1-Gegner
161 - M1 Einzel-Gegner
170 - Array TP-Gegner
171 - TP Einzel-Gegner
180 - Array TS-Gegner
181 - TS Einzel-Gegner
190 - Array TL-Gegner
191 - TL Einzel-Gegner


Mit so einer Lib müsste sich fast Alles was mir so einfällt erschlagen lassen.

Ok ? Zuviel / Ergänzungen ?

Edit1: Angepasst ohne Kodierung zu einem Wert nach Mr.Gee noch vereinfacht von mir

Code: Select all


Var3 = Array (0/NULL) oder Einzelgegner (1) 
Var4 = beliebig (0/NULL)
           beweglich (1)
           stationär (2)
Var5 = Klasse   Mx (x), 
           also zu jeder Klasse die Klassenzahl, ist einprägsam einfach
Var6 = race
Wie siehts mit diesen beiden aus ?
Vorschlag:

Var1 = Wer sucht Enemy ?
Var2 = In welchem Sektor ?
Last edited by jnrk on Fri, 2. Apr 04, 22:54, edited 2 times in total.
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

@MrGee & jnrk
Vergesst nicht die waits reinzubauen ich habe bei mir je Array durchgang einen wait von 2-10 je nach Whileschleifencodelänge.
Zur Zeit nicht aktiv
Mr.Gee
Posts: 207
Joined: Wed, 6. Nov 02, 20:31
x3

Post by Mr.Gee »

wieso waits ? Da kicken wir einfach das BPH-script und schon haben wir wieder genug rechenpower :lol:

Die Rückgabe wäre in de Form schon nicht schlecht. Willst Du das alles in einer Variablen übergeben oder mit mehreren ?
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

@Mr.Gee
:o ... :rant: ... :evil: ... :headbang: ... :gruebel: ... :twisted: ... :wink:
Zur Zeit nicht aktiv
jnrk
Posts: 231
Joined: Thu, 11. Mar 04, 12:00
x2

Post by jnrk »

dann haben wir zwar genug Rechenpower aber nichts zum Bewachen :lol: , wir können ja die Völkerschiffe verteidigen und von denen abkassieren :)

Rückgabe kann je nach Anwendung Var/VarShip/Array sein, oder irre ich da ?
Mr.Gee
Posts: 207
Joined: Wed, 6. Nov 02, 20:31
x3

Post by Mr.Gee »

Ich habe mich da vieleicht etwas ungenau ausgedrückt, ich meine die übergabe an das array (lib.enemy) script alles in einer zahl oder in mehreren ?

Nehme ich die oben genannten Ausgabeparameter als Basis, dann würde ich folgendes vorschlagen:

vier Variable zur Steuernung
Var1 = Array oder Einzelgegner (0/1)
Var2 = die 1x Geschichte wie oben (0x = unsortiert) + das "x" wie oben, nur beliebig=0
Var3 = Schiffsklasse (M5,M6 usw.) 1 bis XX + Null = alle
Var4 = race (damit könnte man unabhängig von freund/feind eine beliebige rasse auswählen. (z.b nur Khaak)

Übergibt man alles in einem Parameter hat man das gedons, das wieder auseinander zu wursteln. Bei 4 Variablen kann man sich das schenken.

übergibt man an das lib.enemy-script nun die variablen null,null,null,null

bekommt man ein array mit allen feindlichen stationen und schiffen.

je nach parameter kann man dann aber filtern.
jnrk
Posts: 231
Joined: Thu, 11. Mar 04, 12:00
x2

Post by jnrk »

s.o. hab eine überarbeitete Version nach Deiner, handlicheren Variante, hinzugefügt. Ich habs glatt vertorfft, das man die Werte natürlich locker lässig in mehreren Parametern übergeben kann.

Ok soweit ?
Was haltet Ihr von Var1/2 ?

Ich bin begeistert, wir machen richtige Fortschritte und das Ganze ohne kostspielige, sinnlose Meetings.

TGIF,
jnrk
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Var1:
Unnötig da du in der Regel das Script mit [this] aufrufen kannst und damit ist klar, wer es aufruft :wink:

Var2:
Wäre eine Überlegung wert. Weil sonst klappt das nicht mit dem Benachrichtigen, der Fighter muß ja in den Sektor kucken können.

Ich stimme mal:

Var1: :thumb_down:

Var2: :thumb_up:

Gruß ticaki

P.S. Hat jemand von euch die BPH laufen und wenn ja müsste ich die genaue Anzahl an Schiffen wissen. Danke :)
Zur Zeit nicht aktiv
Mr.Gee
Posts: 207
Joined: Wed, 6. Nov 02, 20:31
x3

Post by Mr.Gee »

Var 1/2 is ok.

klar den sector brauchen wir ja auch :headbang:
das mit mx ist gut gedacht, geht aber nicht. Denk mal an TS,TP,TL (wenn schon, denn schon). zudem ist eine zahl leichter zu handeln. Allerdings kann man ja einen M5 einfach mit 5 bezeichnen. Die TS,TP,TL können wir ja mit 10,11,12 benennen.


komme mit dem teil bisher ganz gut voran....(was gäbe ich hier für das gute Basic "go sub + return" würde vieles vereinfachen)..naja geht auch so.
Mr.Gee
Posts: 207
Joined: Wed, 6. Nov 02, 20:31
x3

Post by Mr.Gee »

@ticaki

ja, aber nur 3 schiffe und ist die BPH 1.20a

komme ja nicht mehr zum spielen vor lauter scripten. Stehe dauernd in der Station angedockt und in meinen Stationen feiern die vermutlich parties und verbrassen meine credits :wink:


Mit Var1 könnte man aber bei Bedarf auch andere Schiffe definieren.
jnrk
Posts: 231
Joined: Thu, 11. Mar 04, 12:00
x2

Post by jnrk »

@ticaki
aber was ist, wenn das Schiff dessen Feinde Du wissen willst nicht das THIS ist (zB weil da ein Script drauf läuft).

Beispiel:
Das BPH läuft und sendet seine Händler rum, jetzt kommt der Hilferuf, der Händler muss weiterarbeiten und ich muss trotzdem von ihm aus seine Gegner erkennen können, oder seh ich das falsch ?

dann müsste

Var1 = Für wen/von wem aus wird gescant sein

weil ich den Aufrufer in der Tat immer mit THIS rauskriege und per <RefObj> call script .... ja angeben kann wer die lib aufruft.

PS: Hab nachgesehen, meine letzte reguläre Abspeicherung ist vom 19.03 :) danach nur noch Scripttests :lol: bin gespannt wie sich X2 mit all unseren Erweiterungen irgendwann mal spielen läßt

Return to “X²: Die Bedrohung - Scripts und Modding”