Schiff per Schiff-ID ansprechen

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators

Post Reply
Barid
Posts: 4
Joined: Mon, 17. Aug 09, 15:15
x3ap

Schiff per Schiff-ID ansprechen

Post by Barid » Wed, 5. Jan 11, 16:48

Hallo!

Ich hab jetzt glaub ich eine Stunde lang versucht eine Antwort auf meine Frage zu finden, aber hier im Forum ist einfach zu viel Content und wie ich die Suchanfrage auch formuliere - ich komm zu nichts oder 500 Threads :p

Ich hab ein kleines Problem... ich wollte mir ein Schiff ingame skripten, habs auch geschafft, aber jetzt ist es irgendwo im Nirgendwo (kein Sektor angegeben), weil ich das ein wenig verbockt habe :oops:

Das Schiff wird aber bei meinem Besitz angezeigt, und das stört mich. Ich suche daher nach einer Möglichkeit es zu entfernen. Entweder indem ich es ferngesteuert selbstzerstören lasse (hab das aber nicht gefunden, wenn das geht) oder per Skript.

Bei letzterem hab ich das Problem, dass ich zwar ein Schiff zum Entfernen über die Sektorkarte auswählen kann, mein Schiff aber natürlich auf keiner Karte verzeichnet ist.
Gibt es eine Möglichkeit ein Schiff per Schiff-ID auszuwählen in einem Skript? Ich hab herumgesucht aber nichts entsprechendes gefunden...

Wenn ich es ansprechen kann, könnte ich ihm auch Energiezellen aufladen und es zu mir springen lassen, aber auch das geht glaub ich nur, wenn ich es irgendwie über die ID ins Skript kriege... :?

Falls das alles nicht geht - kann ich das Schiff irgendwie manuell aus dem Savegame entfernen?

User avatar
Reacecor
Posts: 383
Joined: Mon, 22. Nov 10, 20:26
x3tc

Post by Reacecor » Wed, 5. Jan 11, 17:33

So müsste der SE-Code aussehen, um ein Schiff mit bestimmter ID zu zerstören:

Code: Select all

$ship.id.destroy = 'Hier die ID des Schiffes, welches zerstört werden soll, als String eingeben'
$array.ships = get ship array of race {Spieler} (also deine Rasse)
$size = size of array $array.ships
while $size 
dec $size =
$ship = $array.ships [$size]
$ship.id = $ship -> get ID code
skip if not $ship.id == $ship.id.destroy
  $ship -> destruct: show now explosion = [TRUE]
= wait 10 ms
end
Ist natürlich alles aus dem Kopf und nicht getestet. Es sollte aber funktionieren. Bin jetzt auch nicht sicher, ob du das verstehst...

Gruß

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Wed, 5. Jan 11, 17:41

warum nicht einfacher und die Spielerschiffe im Sektor null allesamt zerstören??

Code: Select all

$array.ships = get ship array of race {Spieler} (also deine Rasse)
$size = size of array $array.ships
while $size
| dec $size =
| $ship = $array.ships [$size]
| $ship.sector = $ship -> get Sector
| if $ship.sector == null
| | $ship -> destruct: show now explosion = [TRUE]
| end
end
(geht auch effizienter, aber ich wollte jetzt nicht so viel tippen..)
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

User avatar
Reacecor
Posts: 383
Joined: Mon, 22. Nov 10, 20:26
x3tc

Post by Reacecor » Wed, 5. Jan 11, 17:49

Natürlich geht es noch einfacher. :wink: Ich wollte es halt nur mit dem ID-Code haben. :P

Gruß

Barid
Posts: 4
Joined: Mon, 17. Aug 09, 15:15
x3ap

Post by Barid » Wed, 5. Jan 11, 18:05

Danke euch beiden, ich werd mal schauen ob ich das hinbekomme! :)


Edit: Danke, hat funktioniert, und ich hab auch gleich noch mal eine Menge über die Verwendung des Skript Editors gelernt :D

Whiteblade
Posts: 206
Joined: Thu, 30. Aug 07, 21:11
x3tc

Post by Whiteblade » Thu, 6. Jan 11, 12:18

Cycrows cheatpaket. Da kannst du problemlos dieses schiff zerstören.

User avatar
eMYNOCK
Moderator (DevNet)
Moderator (DevNet)
Posts: 2060
Joined: Thu, 21. Aug 03, 10:37
x4

Post by eMYNOCK » Fri, 7. Jan 11, 18:11

Whiteblade wrote:Cycrows cheatpaket. Da kannst du problemlos dieses schiff zerstören.
wenn er dem schiff via console kommandos erteilen kann klar, aber selbst mit cycrows cheatpack kann man den Sektor Null nicht auswählen. ;)

User avatar
Sublogics
Posts: 197
Joined: Tue, 24. Oct 06, 12:53
x4

Post by Sublogics » Fri, 14. Jan 11, 19:38

Klasse Sache!
Da ein anderes Script (Race Response Fleets von LV höchstwahrscheinlich) alle TLs in den Sektor null verschoben hat, habe ich mir mittels Cycrows Cheat-Sammlung einfach ersetzend neue in ihre jeweiligen Heimatsektoren gescriptet, diese übernehmen offenbar auch anstandslos automatisch die Aufgaben ihrer Vorgänger (selbstständig GODs Fabriken aufbauen...).
Nun fand ich es aber unschön daß da im Sektor null noch die ganzen alten Pötte hingen, also hab ich mal mit diesem Script erste Schritte im Script-Editor gesammelt:
UniTrader wrote:

Code: Select all

$array.ships = get ship array of race {Spieler} (also deine Rasse)
$size = size of array $array.ships
while $size
| dec $size =
| $ship = $array.ships [$size]
| $ship.sector = $ship -> get Sector
| if $ship.sector == null
| | $ship -> destruct: show now explosion = [TRUE]
| end
end
Ich hatte dabei dann jeweils einmal alle Rassen nacheinander eingegeben und das Script gestartet, was dann auch so funktionierte. Nur fänd ich es irgendwie cooler, wenn man mit einem Scriptdurchlauf gleich alle Rassen nehmen könnte. Was muss ich dafür tun? Reichts dann einfach sowas wie "all" anstatt des Rassennamens einzugeben?

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Fri, 14. Jan 11, 20:22

-> vielleicht klappt es, wenn du null als Rasse angibst..

-> oder du nimmst den Befehl "get Ship Array from Sector null" (ohne Rassenangabe) - dafür entfällt die Prüfung, wo sich das Schiff befindet..(

Code: Select all

| $ship.sector = $ship -> get Sector
| if $ship.sector == null
…
| end 
)

-> eine weitere Alternative wäre es, sämtliche Rassen nacheinander automatisch abzuarbeiten.. da sie intern wie eine Zahl behandelt werden kann man das so lösen, dass das von mir gepostete Script in eine weitere Schleife verpackt wird:

Code: Select all

$race = 16
while $race
| dec $race =
| $array.ships = get ship array of race $race
| » dieser teil steht oben «
end
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

Post Reply

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