Pfadfinder (Modul) *veraltet*
Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators
Pfadfinder (Modul) *veraltet*
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
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]
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
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!
Vergiss es
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
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
SChneller geht's nicht
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
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
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
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!
-
- Posts: 32
- Joined: Sat, 1. May 04, 18:29
@ 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
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!
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
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
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
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!
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.
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.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.
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 ?!)
@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
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!
Gesaugt und meiner Scriptsammlung hinzugefügt
Da leider noch von den bescheidenen Storyende traumatisiert
und von den jetzt ewigen lade / save Zeiten paralysiert
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 ) werde ich bestimmt darauf zurückgreifen.
Gruß
Orka
Da leider noch von den bescheidenen Storyende traumatisiert
und von den jetzt ewigen lade / save Zeiten paralysiert
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 ) werde ich bestimmt darauf zurückgreifen.
Gruß
Orka