Null-Sektor (Unbekanntes Objekt) wieder unentdeckt machen

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

gnasirator
Posts: 1114
Joined: Mon, 13. Dec 04, 16:15
x3tc

Null-Sektor (Unbekanntes Objekt) wieder unentdeckt machen

Post by gnasirator »

Hi Leute.

Bin ein wenig mit ein paar skripts am rumspielen und habe dabei ausversehen einmal ein schiff von mir nach environment -> null geschickt.

zum glück hatte es dabei einen aktiven auftrag und kam kurze zeit später aus einem nahegelegenen sprungtor wieder heraus.

Nur leider habe ich seitdem immer den sektor "Unbekanntes Objekt" in meiner besitzübersicht, was mich doch ziemlich nervt.

Daher würde ich den Sektor gerne wieder auf den status unentdeckt setzen.

Nur, wie benutze ich folgenden befehl:

Code: Select all

set discovered status: type = <value> status = <boolean>
?
Denn wenn ich für type = null eingebe, tut sich nichts. und der sektor ist ja nun mal null, muss er ja sein, habe ja das schiff nach env -> null geschickt.
Das ist jedenfalls der einzige befehl, bei dem ich mir hoffnungen mache, dass es damit funktioniert.

gruß,
gnasirator
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »


$Sector = null
$Sector -> set known status to [FALSE]

Müsste gehen ...

Gruß
Lucike
Image
gnasirator
Posts: 1114
Joined: Mon, 13. Dec 04, 16:15
x3tc

Post by gnasirator »

danke für die schnelle antwort.

funktioniert nur leider nicht.

set know status to <var/Number> steht da.

ist [FALSE] vll das falsche argument?

Habs gerade mal durchgespielt, der sektor "null" wird definitiv als bekannt erkannt.

Nur das umstellen auf unbekannt funktioniert nicht.
User avatar
MODIFIED
Posts: 1365
Joined: Tue, 30. Mar 04, 00:15
x3

Post by MODIFIED »

set known status to NULL
[ external image ]
Saya Kho hat ihren Raumanzug verlassen, dieser Raumanzug gehört nun ihnen.
Bret Serra hat diese Welt verlassen, diese Welt gehört nun ihnen.
gnasirator
Posts: 1114
Joined: Mon, 13. Dec 04, 16:15
x3tc

Post by gnasirator »

grad mal weiter getestet. mit Linie der Energie als sektor funktioniert es wudnerbar, wenn ich FALSE als argument nutze.

NULL als argument hat beim unbekannten objekt leider auch nicht funktioniert.

:(
User avatar
MODIFIED
Posts: 1365
Joined: Tue, 30. Mar 04, 00:15
x3

Post by MODIFIED »

NULL hat bei mir auch funktioniert, allerdings mit einem realen Sektor.
Wie ermittelst du den Null-Sektor als RefObjekt ?
[ external image ]
Saya Kho hat ihren Raumanzug verlassen, dieser Raumanzug gehört nun ihnen.
Bret Serra hat diese Welt verlassen, diese Welt gehört nun ihnen.
gnasirator
Posts: 1114
Joined: Mon, 13. Dec 04, 16:15
x3tc

Post by gnasirator »

ja ich vermute, weil die scriptsprache bei boolean argumenten keinen unterschied zwischen 0, null und FALSE macht.

ich habe mehrere versionen getestet, einmal als argument null übergeben, dann mal ne var erstellt mit null als inhalt, dann nen schiff dorthin geschickt und über get sector den sektor geholt.

erkannt hat er den sektor ja jeweils, weil ich danach mal über trace getestet hab, ob das script auf

if null -> is know to player

reagiert und dann in die bedingung hinein geht. das tut es, also geht null als argument scheinbar.
gnasirator
Posts: 1114
Joined: Mon, 13. Dec 04, 16:15
x3tc

Post by gnasirator »

Neuigkeiten und sry für Doppelpost:

Wenn ein Schiff von mir im Königstal ist, wird es in der Besitzübersicht unter Schiffe im Unbekannten Objekt angezeigt.

ich komme dann aus der besitzübersicht auch nicht direkt in die sektorkarte (mit ".").

allerdings kann ich über die normale universumskarte in die sektorkarte vom königstal rein und sehe dort auch mein schiff.

scheinbar sind das beides dieselben sektoren?
Sgt_Baker
Posts: 16
Joined: Wed, 29. Oct 08, 04:23

Post by Sgt_Baker »

Moinsen.

Ich habe jetzt nicht versucht das ganze mal nachzuscipten, ... den Mist hol ich mir nicht an den Hals :)

Aber die "Wie ermittelst du den Null-Sektor als RefObjekt ?" Frage von
Modified ist der Knackpunkt der ganzen Nummer.

Wenn die Scriptsprache nicht ganz abartig ist, sind sämtliche Versuche mit

Code: Select all

null -> irgendeine Fkt mit Parametern
zum scheitern verurteilt.

Modified beschreibt aber auch die Lösung:
Nimm irgendeine Funktion, die Dir eine Referenz auf diesen misteriösen Sektor zurückgibt...
Dann kannst Du auf die Variable dieser Referenz die "verstecken" -
Funktion ausführen.

Falls Dir keine Funktion eine Referenz auf den Sektor zurückgibt biste echt angesch****. Viel Glück.

Achja.. spiel mal mit der "get sector by x y" (o.Ä.) rum.
2 Laufvariablen, einmal das Universum durchackern und alles was "unbekanntes Objekt" ist auf "nicht entdeckt" setzen.
Aber: mit "get sector by x y" kriegt man nen ganzen Stapel "unbekannte Objekte"...

Probier Dein Glück. ;)

MfG,
Sgt_Baker
stefanbs
Posts: 60
Joined: Fri, 15. Sep 06, 14:29
x3tc

Post by stefanbs »

Ich weiß zwar nicht, ob das Problem schon gelöst wurde und meine Erfahrungen stammen aus X³-R, aber dennoch ein paar Anmerkungen:

Der Sektor null existiert nicht. Man kann auf ihn keine Referenz erhalten, da bei den "verunglückten" Schiffen als Sektor die Nullreferenz eingetragen ist. Daher ist es unnötig, die galaktischen Koordinaten durchzugehen: Überall, wo kein Sektor ist, kommt einfach null heraus. An die Schiffe kann man daher, falls sie verschollen bleiben, nur über die Besitztümerliste herankommen.

Dort scheint der Nullsektor mit Königstal zu korrespondieren (Ähnlichkeit null <-> (0|0) als galaktische Koordinaten des Sektors?), wobei die Umbenennung in "Unbekanntes Objekt" bei mir von selbst verschwand.
(Galaxy Editor: nach Betreten des Sektors; Spiel: nach Laden eines Spielstandes, obwohl sich das Schiff noch auf null befand).
User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz »

Kann durchaus sein, daß der Nullsektor das known flag überhaupt nicht hat, da er ja kein Sektor ist. Kein Objekt.

Ähnlich wie es in HGTTG Tee und kein Tee gab. Kein Tee war nicht etwa die Abwesenheit von Tee sondern tatsächlich "kein Tee".
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.
Gladia
Posts: 58
Joined: Sat, 18. Oct 08, 19:05
x3tc

Post by Gladia »

ich hab auch mal ne Frage zu nem ähnlichen problem. Als ich mal bissi mit dem SE rumgeblödelt hab, hab ich ein Schiff in einem "Unbekannten Objekt" erhalten. Dieses Schiff störtz mich ziemlich in meiner Besitztümer Liste. Gibt es eine möglichkeit das Schiff zu zerstören, damit das aus der Liste verschwindet? normal würd ich das ja mit "Destruct: Show no explosion null/TRUE" ja machen, aber bei meinen derzeitigen Wissen mit dem SE muss ich das Schiff dafür immernoch anvisieren. Das ist aber ja net möglich da das Schiff irgentwie ...nicht da ist^^ ich werd gleich nochmal die Sektoren durchgucken ob das i-wo rumdümpelt. Gibt es denn sonst ne möglichekeit das Schiff zu vernichten?
MfG Gladia

Egal ob Xenon, Pirat, Kha'ak oder Borone. Ich knall alles ab! Warte mal? Boronen? EGAL - Auf den Fischköpfen hacken ja sogar die von Egosoft selber rum. Überschrift einer BBS-Meldung: Dummer Borone
stefanbs
Posts: 60
Joined: Fri, 15. Sep 06, 14:29
x3tc

Post by stefanbs »

Wie schon gesagt, das Schiff ist in keinem Sektor. Daher muss man die Besitztümerliste verwenden: Mit dem Befehl "<RetVar/IF> <RefObj> get owned ships: class or type=<Value>" lässt sich ein Array der Besitztümer eines Volkes, also auch des Spielers erhalten.
Dieses muss man mit einer Laufvariable durchlaufen und kann dabei alle Schiffe, deren Sektor = null ist zerstören oder in einen anderen Sektor versetzen.

Für die Scriptbefehle siehe auch MSCI Onlinereferenzreferenz
gnasirator
Posts: 1114
Joined: Mon, 13. Dec 04, 16:15
x3tc

Post by gnasirator »

ja, wobei man dem schiff, wenn es in königstal/im nullsektor ist, auch in der besitztümerliste keine befehle mehr geben kann.

du kriegst es also höchstens noch über die scriptauflistung der besitztümer, vermute ich.

ich habe bei mir inzwischen aufgegeben, den sektor wieder wegzubekommen.
es hat nichts geklappt. da man einfach mit null -> keine befehle ausführen kann. da der sektor aber eben scheinbar genau null ist, ist das ein hoffnungsloses unterfangen.

mann müsste bei egosoft in die standard moveskripte eine abfrage einbauen, die verhindert, dass jegliche objekte nach "null" fliegen können.
dann kann das garnicht erst passieren ...
User avatar
SuperVegeta
Posts: 1611
Joined: Tue, 20. Dec 05, 11:13
x3tc

Post by SuperVegeta »

vll mit $Sektor = get sector from univers index x= 0; y=0
also Königstal
$Sektor set know status to [FALSE]

und danach Königstal wieder entdecken
könnte vll den Null Sektor killen

das Schiff aus dem Null Sektor zu bekommen ist mehr umständlich als schwer:

wie schon erwähnt das Race Ship Array verwänden
alle Schiffe durchlaufen lassen
und die Rausfiltern die ein Sektor mit Universindex x+y 0 OR null haben
und die dann in den wasweißich PLAYER Sektor verschieben
Wenn man das mach kann man auch gleich den Sektor mit
$Sektor = $Ship -get sector erfassen und Checken und know Falsen

könnt ich ja mal ausprobieren :gruebel: ich hab nämlich auch vergessen
bei Create Ship ein Sektor einzutragen, und hab jetz ein Ship im Nirgendwo :D
User avatar
MADxHAWK
Posts: 710
Joined: Tue, 1. Mar 05, 17:49
x4

Post by MADxHAWK »

gnasirator wrote: mann müsste bei egosoft in die standard moveskripte eine abfrage einbauen, die verhindert, dass jegliche objekte nach "null" fliegen können.
dann kann das garnicht erst passieren ...
Schiffe fliegen nicht nach NULL, zumindest hab ich das bisher nicht hinbekommen. Man kann Sie nur per Script dorthin bekommen z.b. mit set environment oder gleich in NULL erstellen. Schiffe die als Flugziel NULL haben fliegen für gewöhnlich nach Königstal.


Greetz
MADxHAWK
***modified*** und stolz drauf
Why does it hurt when my heart misses the beat? Propaganda - Dr. Mabuse (1984)
|K.O.S.H.
Posts: 3728
Joined: Fri, 19. Dec 03, 10:36
x3tc

Post by |K.O.S.H. »

was ihr hier alle vorshclagt wird nicht funktionieren.

"unbekanntes pbjekt" wird (anscheinend) angezeigt, wenn das environment == NULL ist.
nun und NULL aber der nullpointer.
jetzt wollt ihr alle ne schreiboperation auf einem nullpointer ausführen.
der derefenzierte nullpointer hat aber keine membervarible, die "known" heißt, weil er "nichts" ist.
somit könnt ihr amchen, was ihr wollt und es wird nicht gehen.

klar, NULL == NULL, das bedeutet aber nicht, dass man irgendwelche werte setzen kann.
kannst nur froh sein, dass solche exception gecatch werdne, sonst würde x3 gnadenlos abrauchen.

fazit: nicht möglich.
außer egosoft schafft per patch ne lösung: nämlich nullpointer nicht als sektor anzuzeigen - soltle ein einzeiler sein...
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!
gnasirator
Posts: 1114
Joined: Mon, 13. Dec 04, 16:15
x3tc

Post by gnasirator »

top,

versuchs mal.

bei mir hats nicht geklappt. auch wenn königstal wieder unbekannt ist, das unbekannte objekt bleibt :)
User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz »

Wie schon mehrfach gesagt, man kann null nicht beeinflussen weil es kein Objekt ist. Es ist null.

Da hilft nur, das Objekt im Nullsektor zu zerstören.

Das bekommt man nur über eine Schleife, die alle Spielerschiffe durchläuft.
Wenn ein Schiff dann nicht in einem existierenden Sektor ist -> destroy.
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.
User avatar
SpaceTycoon
Posts: 1190
Joined: Wed, 6. Nov 02, 20:31
x4

Post by SpaceTycoon »

Gazz wrote:Wie schon mehrfach gesagt, man kann null nicht beeinflussen weil es kein Objekt ist. Es ist null.

Da hilft nur, das Objekt im Nullsektor zu zerstören.

Das bekommt man nur über eine Schleife, die alle Spielerschiffe durchläuft.
Wenn ein Schiff dann nicht in einem existierenden Sektor ist -> destroy.
Jupp, genau SO hat es bei mir funktioniert. Danke für den Hinweis!

Ich hatte in allen Sektoren der Galaxis Satelliten ausgesetzt:

Code: Select all

001   $SectorsX = get max sectors in x direction
002   while $SectorsX > 0
003    dec $SectorsX = 
004    $SectorsY = get max sectors in y direction
005    while $SectorsY > 0
006     dec $SectorsY = 
007     $Sector = get sector from universe index: x=$SectorsX, y=$SectorsY
008     $Satellite =  create ship: type=Erweiterter Satellit owner=Player addto=$Sector x=0 y=-30000 z=0
009    end
010   end
011   return null
Anschliessend hatte ich ebenfalls das Problem mit dem Sektor namens "Unbekanntes Objekt". :evil: :evil: :evil: :evil:

Nur dieses Script hat das wieder lösen können und mir den Satelliten aus dem komischen Sektor "Unbekanntes Objekt" wieder entfernt (und damit den Sektor "Unbekanntes Objekt" aus der Besitztümer-Liste):

Code: Select all

001   $Player = [OWNER]
002   $Satellites = $Player -> get owned ships: class/type=Stationary Ship
003   $SatellitesCount =  size of array $Satellites
004   while $SatellitesCount
005    dec $SatellitesCount = 
006    $Satellite = $Satellites[$SatellitesCount]
007    $Sector = $Satellite -> get sector
008    skip if $Sector != null
009     $Satellite -> destruct: show no explosion=[TRUE]
010   end
011   return null
Abfangen kann man das Problem wenn man im ersten Script den Sektor auf "null" prüft, bevor man was macht:

Code: Select all

007     $Sector = get sector from universe index: x=$SectorsX, y=$SectorsY
008     skip if $Sector != null
009      continue

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