Neuer Notsprung für Ferngesteuerte Schiffe!

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

Andras89
Posts: 357
Joined: Sun, 12. Aug 07, 23:57

Neuer Notsprung für Ferngesteuerte Schiffe!

Post by Andras89 »

Wer kennt es nicht.. man attackiert einen Sektor mit der Flotte und erfährt hinterher, dass einige der eigenen Schiffe zerstört wurden, weil sie dem Gefecht nicht entkommen konnten oder weil das Tor nicht frei war und kein Notsprung funktionierte! Btw an Egosoft kurz gewand, ich find ja ein NOTsprung sollte in der Notsituation eig. immer funktioniern und nicht wenn das Tor grad frei ist... das wäre in etwa so effizient wie ein Airbag beim Auto, der nur dann aufgeht wenn der Kofferraum grad leer ist..

Okay ich hab da folgende Idee für mein eigenes Notsprungskript. Ich bräuchte allerdings eure Unterstützung... es ist eig. nicht sehr kompliziert ich möchte nur wissen auf welche Fehler ich achten und abfangen muss. Also ich möchte ein Skript schreiben, dass den Notsprung ausführt wenn Notsprung aktiv ist, der Sprungantrieb vorhanden ist und der Schildwert unterschritten wurde, den man eingestellt hat. Das Schiff springt dann in den gleichen Sektor aber in den jeweils anderen Quadranten und möglichst weit außen. D.h. es gibt ja 4 Quadranten im 2 dim. Koordinatensystem x+ z+ , x+ z- . x- z+ und x- z- ! D.h. wenn mein Schiff sagen wir im Quadranten x+ z+ ist beispielsweise auf +20000 und + 5000 dann soll er alle Vorzeichen ändern und an die koordinaten mit -30000 und -30000 springen beispielsweise. An sich kann ich das skripten, nur im X3 Notsprungskript gibts dann sowas wie Skript priorität raufsetzen usw. wo ich nicht ganz sicher bin, was da gemacht gehört und wieso es wichtig ist... daher wär toll wenn mir einer sagen könnte auf was ich da unbedingt achten muss, um Fehler zu vermeiden...!
User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz »

Zu schreiben was das Script tut, ist einfach. Hierhin oder dorthin teleportieren, in andere Sektoren oder in Stationen reinpacken - alles easy.

Die Schwierigkeit ist immer, festzustellen wann gesprungen werden soll.
Wenn du auf jedem Schiff ein Script laufen hast, das 1x pro Sekunde Dinge Tut, dann kannst du den Resourcenverbrauch kaum kontrollieren.
Beim AI Ammo Cheat Script habe ich so ein Watcher Script über SIGNAL_ATTACKED gestartet. Das beendet sich dann auf dem jeweiligen Schiff wenn es nicht mehr gebraucht wird. Ist nicht ganz zuverlässig aber läßt sich noch kontrollieren.

Ein großer Vorteil ist auch, daß dann alle Scripts temporär sind, Versionsupgrades also keine Arbeit machen.
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.
Andras89
Posts: 357
Joined: Sun, 12. Aug 07, 23:57

Post by Andras89 »

Ja genau sowas mein ich! Ich möcht auf jedenfall verhindern, dass da n Script ständig ALLE Schiffe überprüft, des wär völlig unsinnig. Aber ich weis eben nicht wie man das bewerkstelligt auf welche Signale man da achten muss oder kann und wie man das am besten implementiert. Ich denk halt sinnvoll wäre es, wenn sich das Script einschaltet sobald das Schiff beschossen wird. Ich mein es ist ein Notsprungskript es soll nicht losgehen nur weil das Schiff dumm gegn nenn Asteroiden geflogen ist oder dergleichen. Versteh ich das richtig, dass dieses Watcherscript nichts weiter tut als zu schaun ob ein SIGNAL_ATTACKED reinkommt??.
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

nein.


du kannst ein Script an ein SIGNAL binden, sprich wenn das Schiff z.B. beschossen wird wird darauf dieses Script gestartet (ANMERKUNG: du wirst ziemlich schnell feststellen, dass SIGNAL_ATTACKED teilweise gar nicht ausgelöst wird, z.B. bei OOS-1Hit-Kills, SIGNAL_KILLED ist da zuverlässiger, aber reagiert für deinen zweck definitiv zu spät :D also lässt sich dafür nen watcher-script kaum vermeiden)


ich würde es so ansetzen, dass
A) das Script an das SIGNAL_CHANGEDSECTOR gebunden ist
B) sich das Script SOFORT beendet wenn [ENVIRONMENT] != Var/Sector (wenn das Schiff auf ner Station ist schützen es die Stationsschilde ;) )
C) sich die aktuelle Instanz des Scriptes bei Sektorwechsel beendet
D) das Script zuerst auf die präsenz von Feinden im Sektor prüft und die Sleep-Zeiten entsprechend staffelt
-» wenn keine Feinde im Sektor sehr lange Wartezeit (z.B. 5 Minuten)
-» wenn Feinde im Sektor lange Wartezeit (z.B. 1 Minute)
-» wenn Feinde im umkreis von z.B. 10 km kurze wartezeit (z.B. 10 sekunden)
-» wenn Feinde im umkreis von z.B. 5 km sehr kurze Wartezeit / permanent prüfen (also so 500ms Wartezeit)
E) zur prüfung, ob ein Schiff beschossen wird die Schilde/Hülle in betracht ziehen statt SIGNAL_ATTACKED oder $Object -» ist attacked zu nutzen - wie gesagt: ersteres ist nicht absolut zuverlässig und zweiteres basiert iirc auf ersterem, ist also auch kaum besser)
Andras89
Posts: 357
Joined: Sun, 12. Aug 07, 23:57

Post by Andras89 »

:oops: Okay nur wie sieht so ein Watcherscript im Detail aus? Und an welches Signal ausser Sektorchanged sollte ich das Script dann am besten binden?

Okay seh ich das richtig, dass das Watcherscript am besten nichts weiter tut als zu schaun ob das Schild sich verändert hat?

EDIT : Wie kann ich denn ein script automatisch starten bzw. beenden? Ich werds denk ich genauso machn wie du es beschrieben hast UniTrader also sprich ich werd immer einfach den aktuellen Schild vergleichen sollte ein Feind im sector sein! Und die wartezeit hängt dann davon ab ob oder in welcher Entfernung der Feind ist.

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