Pfadfinder (Modul) *veraltet*

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

User avatar
hraban
Posts: 97
Joined: Tue, 23. Mar 04, 10:00
x3

Pfadfinder (Modul) *veraltet*

Post by hraban » Wed, 5. May 04, 12:51

Liebe Leser und Scripter,

neue Version unter neuem Eintrag im Forum!

http://www.egosoft.com/x2/forum/viewtop ... pathfinder

hraban



Pathfinder ermittelt einen Flugweg zwischen zwei beliebigen Sektoren. Dabei können feindliche Sektoren geprüft und aus dem Flugweg ausgeklammert werden.

Der Scripter kann auch eine Liste von gesperrten Sektoren erstellen und dem Pathfinder übergeben.

Die Routine arbeitet als "selbstaufrufende" Funktion und liefert die abzufliegenden Sektoren in einem Array zurück.

Das sollte für alle gestressten User und Scripter, die permanent Schiffe in den Xenon-oder kurzfristig verfeindeten Sektoren verlieren, eine Wohltat sein.

MfG


** So fing alles an **

Liebe Leser,

habe gerade im X-DEVNET einen Beitrag gelesen. Dabei geht es um eine zukünftige Möglichkeit, einen Sektor für Schiffe zu sperren.

Nun hätte ich da eine Idee, habe diese aber noch nicht überprüft, weil mir 1. Die Zeit und 2. das umfangreiche Wissen um die Einbindung von Scripten fehlt.

Zur Idee:

Handelsschiffe sollen gewisse Sektoren nicht durchfliegen.

Möglicher Ansatz:

Das Script ermittelt die Volkszugehörigkeit des nächsten Sektors und vergleicht diesen mit den Freund/Feind-Einstellungen. Steht das Volk als Feind in der Liste, wird ... tja ... eine eigene Routine zur Flugsteckenermittlung gestartet :gruebel:

Das im Spiel Integrierte Script !move.tosector ...

Version: 1
for Script Engine Version: 20

Description
Fly ship to a sector
Arguments
1: targetsector , Var/Sector , 'sector'
Source Text

001 while [ENVIRONMENT] != $targetsector
002 if [SECTOR] == $targetsector
003 @ = [THIS] -> fly to sector $targetsector
004 else if get next sector on route from sector [SECTOR] to sector $targetsector
005 @ = [THIS] -> fly to sector $targetsector
006 else
007 @ = [THIS] -> move around 60000 ms
008 end
009 @ = wait randomly from 100 to 200 ms
010 end
011 return null

... scheint mir in diesem Fall nicht mehr Anwendbar. Überhaupt, scheint mir dieses Script nicht ganz richtig zu sein, denn wo wird denn bitte das nächste zu durchfliegende Tor gesetzt?

Verzeiht einem Script-Anfänger ;)

MfG[/url]
Last edited by hraban on Fri, 30. Jul 04, 23:06, edited 7 times in total.
Handel ist Krieg, der Einsatz von Waffen ist Ressourcenverschwendung!

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

Post by ticaki » Wed, 5. May 04, 12:54

Vergiss es :D

Hab ich schon gescriptet, wird zu aufwendig. Da müsste schon was intern geändert werden.

Mit 2 Wegepunkten klappt das, aber damit kannst du maximal einem bis zwei gesperrten Sektoren ausweichen und mit jedem Wegepunkt wird die Berechnung umfangreicher... Solange das nicht native verhanden ist, wirds zu rechenaufwendig.

Gruß ticaki

P.S. Das zu durchfliegende Tor wird native ermittelt.
P.P.S. Zum Rechenaufwand das läuft nachher auf jedem Frachter
Zur Zeit nicht aktiv

User avatar
hraban
Posts: 97
Joined: Tue, 23. Mar 04, 10:00
x3

SChneller geht's nicht

Post by hraban » Wed, 5. May 04, 13:01

Sag mal ticaki,

lebst du am Rand eines Ereignishorizontes, oder liest du die Nachrichten schon während der Entstehung. Die Geschwindigkeit, mit der Du antwortest widerspricht ja schon fast der Kausalität :D

Danke für die Info. Werde mir trotzdem etwas überlegen. Vielleicht finde ich ja eine Berechnungsmöglichkeit von Routen. Oder eine Routine zu Festlegung gewisser Handelswege.

Im Augenblick erscheint mir die verwendete Routenberechnung weniger nativ, als narrativ zu sein ;)

MfG
Handel ist Krieg, der Einsatz von Waffen ist Ressourcenverschwendung!

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

Post by ticaki » Wed, 5. May 04, 13:06

Da will ich dir in keinem Punkt widersprechen...:D

Gruß ticaki
Zur Zeit nicht aktiv

hyb
Posts: 1401
Joined: Tue, 20. May 03, 20:11
x3tc

Post by hyb » Wed, 5. May 04, 23:11

Ich weiß nicht wer's war, aber irgendwer hier im Forum hat einen Script geschrieben, mit dem man die Verbindung zu einzelnen Toren kappen kann.

Nur sind dann leider deine ganzen Schiffe davon betroffen.

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

Post by ticaki » Wed, 5. May 04, 23:12

MrMillti's Verbindungsmanager

Gruß ticaki
Zur Zeit nicht aktiv

Drogenkoala
Posts: 32
Joined: Sat, 1. May 04, 18:29
x2

Post by Drogenkoala » Mon, 10. May 04, 16:59

dann zerstör eins der Tore....
du kommst noch rein aber deine Schiffe fliegen nicht durch....

User avatar
hraban
Posts: 97
Joined: Tue, 23. Mar 04, 10:00
x3

Post by hraban » Mon, 10. May 04, 17:37

@ Ticaki

Den Verbindungsmanager sehe ich mir mal an.

@ Drogenkoala

Mir liegt nicht daran potentielle Handelswege zu zerstören. Wer weiss, vielleicht wird mit einem Update oder einem AddOn das Universum verändert und das "zerstörte Tor" zu einem wichtigen Handelsweg.
Ausserdem steht da was in meiner Signatur ;)
Handel ist Krieg, der Einsatz von Waffen ist Ressourcenverschwendung!

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

Post by ticaki » Mon, 10. May 04, 17:40

Da ist mir doch eine (un?) brauchbare Idee eingefallen... Vor dem Suchlauf per "find station" die Torverbindungen aufheben und nach dem Suchlauf wieder herstellen... Müsste mal jemand ausprobieren.

Gruß ticaki
Zur Zeit nicht aktiv

spacedet
Posts: 26
Joined: Thu, 8. Apr 04, 14:19
x2

Post by spacedet » Tue, 11. May 04, 00:09

:idea:
Hi
Was haltet Ihr von einem anderen Weg : Ich lege einen Sektor fest , in den das Schiff nicht darf !! So wie bei der Handelssoft : Ressource X darf nicht gehandelt werden ..
Damit sollte sich doch der (Berechnungs-) Aufwand in Grenzen halten , oder ?

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

Post by ticaki » Tue, 11. May 04, 00:26

:nö: Das macht er gerade und das ist sehr rechenaufwenig :)

Gruß ticaki
Zur Zeit nicht aktiv

User avatar
hraban
Posts: 97
Joined: Tue, 23. Mar 04, 10:00
x3

Post by hraban » Thu, 27. May 04, 22:58

Also: Erstens habe ich einen Script für das Finden eines Weges mit rekursivem Aufruf fast Fertig.
Zweitens prüft dieser Script alle Sektoren auf die relation "Feind/Foe"
Drittens findet das Script nicht den kürzesten Weg, aber sicher einen sicheren :wink:
Viertens muss ich den noch ein wenig Testen, dann stelle ich den Script zur Verfügung.

Allen Unkenrufen von Ticaki zum Trotz, scheint mir die Rechnerbelastung in einem Vernünftigen Rahmen zu liegen.

Last mir noch ein oder zwei Tage, dann ist er Fertig.

MfG
Handel ist Krieg, der Einsatz von Waffen ist Ressourcenverschwendung!

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

Post by ticaki » Thu, 27. May 04, 23:39

*hmpf* wieviele Frachter laufen mit dem Script gleichzeitig?

Gruß ticaki :D
Zur Zeit nicht aktiv

User avatar
hraban
Posts: 97
Joined: Tue, 23. Mar 04, 10:00
x3

Post by hraban » Thu, 27. May 04, 23:48

bisher 50 im test.
ich merk nix negatives 8)

MfG
Handel ist Krieg, der Einsatz von Waffen ist Ressourcenverschwendung!

Deleted User

Post by Deleted User » Fri, 28. May 04, 01:19

mal ne sau dumme frage am rande - warum macht ihr nicht ein script das ihr im frachter aktiviert - vorallem da es ja nur eine begrenzte zahl von sectoren gibt die man meiden muß?

so in der art - frachter menü sectorsperre - dort den sector wählen der den der frachter nicht anfliegen darf und fertig.

zugegeben es muß dan bei jedem Frachter die sektorsperre aktiviert werden - aber damit würde das ganze nur jene frachter betreffen die auch wirklich durch den sector fliegen würden.

das dürfte den rechenaufwand erheblich reduzieren.

Indoril
Posts: 796
Joined: Sat, 28. Feb 04, 20:36
x2

Post by Indoril » Fri, 28. May 04, 14:14

Londo Molari wrote:mal ne sau dumme frage am rande - warum macht ihr nicht ein script das ihr im frachter aktiviert - vorallem da es ja nur eine begrenzte zahl von sectoren gibt die man meiden muß?

so in der art - frachter menü sectorsperre - dort den sector wählen der den der frachter nicht anfliegen darf und fertig.

zugegeben es muß dan bei jedem Frachter die sektorsperre aktiviert werden - aber damit würde das ganze nur jene frachter betreffen die auch wirklich durch den sector fliegen würden.

das dürfte den rechenaufwand erheblich reduzieren.
Das Problem liegt warscheinlich eher bei der Wegfindung. Die KI würde dann immer einen neuen, schnellsten Weg zur Station wo sie hin wollte suchen, und der geht eben ducht das gesperrte Tor. Das Schiff würde also nie ankommen.
Man muss also eine eigene Wegfindung scripten.
Allerdings bin ich auch der Meinung, dass das Script nur auf, vom Spieler gewählten, Schiffen läuft (falls das nicht schon so geplant ist ?!)

User avatar
hraban
Posts: 97
Joined: Tue, 23. Mar 04, 10:00
x3

Post by hraban » Fri, 28. May 04, 15:40

@Indoril und alle Anderen

Das Script wird ein Script für Scripter ... sprich: Ein Modul.

Du hast es in Deinem Text absolut richtig erfasst, das Modul wird einen Weg zum Ziel suchen. Dabei wird weniger Wert auf den kürzesten Weg, als auf einen sicheren Weg gelegt.

Das Bedeutet im Detail:

Das Script ruft sich selbst auf (Rekursiv). Um die Performance nicht zu sehr zu belasten kann dem Modul in einer Variablen übergeben werden, wieviele Rekursionen durchlaufen werden sollen.

Das Script "errechnet" sich die Vorzugsrichtung und fragt danach alle angrenzenden Sektoren auf den Status ab. Ist ein Sektor den Einstellungen des Schiffes gegenüber Feindlich eingestellt, wird dieser Sektor nicht berücksichtigt.

In den Rekursionen wird das Array mit den "freundlichen" Wegpunkten (Sektoren) gefüllt, die zum Ziel führen.

Das Script liefert einen Array zurück in dessem ersten Element (0) entweder NULL (kein Weg gefunden) oder der Startsektor, gefolgt von allen zu passierenden Sektoren bis zum Ziel, zurückgegeben wird.

Danach kann das Schiff in einer einfachen Schleife durch Abarbeitung des Array zum Ziel geführt werden. Nachdem alle gefundenen Sektoren unmittelbar angrenzen kann hierfür der Standardbefehl !move.movetosector verwendet werden, ohne daß das Schiff sich verirrt.



Das Modul befindet sich im Augenblick noch in der Testphase (mit 50 TS). Ich hoffe, noch heute eine Freigabe machen zu können.

MfG
Handel ist Krieg, der Einsatz von Waffen ist Ressourcenverschwendung!

User avatar
hraban
Posts: 97
Joined: Tue, 23. Mar 04, 10:00
x3

Post by hraban » Wed, 2. Jun 04, 01:30

aktualisiert und nach oben geschoben!

Siehe Beitrag 1 Seite 1
Handel ist Krieg, der Einsatz von Waffen ist Ressourcenverschwendung!

User avatar
hraban
Posts: 97
Joined: Tue, 23. Mar 04, 10:00
x3

Post by hraban » Sun, 6. Jun 04, 17:06

*schieb*
Handel ist Krieg, der Einsatz von Waffen ist Ressourcenverschwendung!

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

Post by Orka » Mon, 7. Jun 04, 13:07

Gesaugt und meiner Scriptsammlung hinzugefügt 8)

Da leider noch von den bescheidenen Storyende traumatisiert :o
und von den jetzt ewigen lade / save Zeiten paralysiert :shock:
bin und somit mein Interesse an X2 deutlich nachgelassen hat, werde ich so bald das Script leider nicht testen.

Aber in einem Jahr oder so (also noch bevor 1.4 draußen ist :fg: ) werde ich bestimmt darauf zurückgreifen.

Gruß

Orka

Locked

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