Stationssuche per "find station in galaxy" ?
Moderators: Scripting / Modding Moderators, Moderatoren für Deutsches X-Forum
-
- Posts: 1611
- Joined: Wed, 6. Nov 02, 20:31
Stationssuche per "find station in galaxy" ?
Ich nutze "find station in galaxi" in einer Schleife um Stationen vom typ Equiptdock zu finden. Wie kann ich verhinderen, das ich mehrmals das selbe Dock angezeigt bekomme aber andere Docks nicht gefunden werden?
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
-
- Posts: 1611
- Joined: Wed, 6. Nov 02, 20:31
-
- Posts: 4861
- Joined: Wed, 6. Nov 02, 20:31
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
Ticaki meint wohl den Befehl denn Du schon verwendest, allerdings unter der Verwendung von [find.multipe].ticaki wrote:Es gibt auch einen Find station in galaxy der dir ein Array zurück liefert (glaube ich) Der neue der mit 1.4 zur Verfügung gestellt wurde. Versuche es einfach mal aus.
$Station = find station: sector=$SelSec class or type=Equipment Dock race=null flags=[Find.Multiple] refobj=null maxdist=null maxnum=500 refpos=null
$Station sind alle Ausrüstungsdocks im $SelSec-Sektor als Array.
Gruß
Lucike
Last edited by Lucike on Mon, 11. Oct 04, 00:08, edited 1 time in total.

-
- Posts: 4861
- Joined: Wed, 6. Nov 02, 20:31
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
-
- Posts: 4861
- Joined: Wed, 6. Nov 02, 20:31
-
- Posts: 1611
- Joined: Wed, 6. Nov 02, 20:31
Ich hab noch ein wenig rumprobiert und das kam raus:
Dummerweise konnte ich es nicht mal probieren, weil sich das Spiel aufhängt sobald ich versuche es mit "R" zu starten
Was ist falch daran?
Code: Select all
001 $zaehler = 0
002 $anzahl = 0
003 $liste = array alloc: size=0
004 $liste = find station: sector=Königstal class or type=Equipment Dock race=Boronen flags=[Find.Multiple] refobj=null maxdist=null maxnum=500 refpos=null
005 $anzahl = size of array $liste
006 while $zaehler < $anzahl
007 $dock = $liste[$zaehler]
008 write to player logbook $dock
009 end
010 return null

-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
-
- Posts: 2245
- Joined: Mon, 10. Nov 03, 18:22
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
-
- Posts: 4861
- Joined: Wed, 6. Nov 02, 20:31
-
- Posts: 1190
- Joined: Wed, 6. Nov 02, 20:31
Eine Endlosschleife. Du veränderst innerhalb der Schleife weder $zaehler noch $anzahl (Befehl "dec" oder "inc"). Um bei solchen Programmierfehlern das Aufhängen zu verhindern kann man an den Anfang eines Scriptes den Befehl "infinite loop detection enabled=[TRUE]" setzen. Dann wird das Script durch X2 nach gewisser Zeit "zwangsbeendet" und man bekommt darüber eine Nachricht ins Logbuch.fennry wrote:Code: Select all
001 $zaehler = 0 005 $anzahl = size of array $liste 006 while $zaehler < $anzahl 007 $dock = $liste[$zaehler] 008 write to player logbook $dock 009 end 010 return null
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
-
- Posts: 4861
- Joined: Wed, 6. Nov 02, 20:31
Wenn du eine Funktion oder ein Script aufrufst das ein Array zurück gibt brauchst du es nicht zu initialisieren.
Gruß ticaki
P.S. du musst aber überprüfen ob das array initialisiert wurde... eine Funktion liefert dir nur ein gültiges Array zurück wenn wenigstens ein Element gefunden wurde ansonsten ist der Rückgabewert null.
Gruß ticaki
P.S. du musst aber überprüfen ob das array initialisiert wurde... eine Funktion liefert dir nur ein gültiges Array zurück wenn wenigstens ein Element gefunden wurde ansonsten ist der Rückgabewert null.
Zur Zeit nicht aktiv
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
-
- Posts: 4861
- Joined: Wed, 6. Nov 02, 20:31