Script auf fremdem Schiff starten

Hier ist der ideale Ort um über Scripts und Mods für X²: Die Bedrohung zu diskutieren.

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

User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Script auf fremdem Schiff starten

Post by ThalonMook »

Hi,

ich hab ein Problem mit einem Script das gerade schreibe.

Ich möchte das ein TL den ich per Script erzeuge und der als Homebase das Terracorp HQ hat, den Befehl geben zur Station X zu fliegen und dort irgendwas zu machen. Danach soll er wieder zu seiner HB zurück fliegen.
Das Script soll durch einen Befehl von meinem Schiff aus gestartet werden.

Ich hab das igentlich schon so weit das der TL brav das macht was er soll wenn ich das Script per Hand starte. Nur wenn ich es von meinem Schiff (Kommando >>Fremd>> machwas) aufrufe macht der TL nix. Er hat zwar als Ziel die angegeben Station, aber er fliegt einfach nur dumm duch die Gegend.

Hier mal ein Auszug aus meinem Script:

Hier wird der Befehl gesetzt:

Code: Select all

global script map: set: key=WPLiefern, class=Ship, race=Player, script='a.wp.move.install', prio=0
002   set script command upgrade: command=WPLiefern  upgrade=WP Liefervertrag
003   return null
Das ist das Script das den TL zur Station schickt:

Code: Select all

Arguments
1: schiff , Var/Ship , 'Schiff' 
2: Station , Var/Station , 'Station' 
3: variation , Nummer , 'Ausstattung' 
Source Text

001   $homebase = $schiff -> get homebase
002 @ = $schiff -> call script 'a.waffenpl.move.tl' :  Ziel Station=$Station  Schiff=$schiff
003 @ = wait 500 ms
004 @ = $schiff -> call script 'a.waffenpl.pos' :  WP.Variation=$variation  fabrik=$Station
005 @ = wait 60000 ms
006   $tmp = [PLAYERSHIP] -> add -1 units of WP Liefervertrag
007 @ = $schiff -> call script 'a.waffenpl.move.tl' :  Ziel Station=$homebase  Schiff=$schiff
008 @ = wait 1000 ms
009   return null
und das ist das eigentliche Move Script 'a.waffenpl.move.tl' :

Code: Select all

Arguments
1: target , Var/Station , 'Ziel Station' 
2: schiff , Var/Ship , 'Schiff' 
Source Text

001   infinite loop detection enabled=[TRUE]
002   * Position bestimmen
003   $x = $target -> get x position
004   $y = $target -> get y position
005   $z = $target -> get z position
006   $sec = $target -> get environment
007   $size = $target -> get size of object
008   $homebase = $schiff -> get homebase
009   *write to player logbook $size
010   $size = $size / 222 + 2500
011   *if $target == $homebase
012    $x = $x + $size
013    $y = $y + $size
014    $z = $z + $size
015   *$size = $size + 3000
016   *write to player logbook 'Homebase'
017   *end
018   *write to player logbook $size
019   * Zum Ziel springen
020 @  $tor = $schiff -> call script 'Xai.lib.find.nearest.gate' :  target=$target
021    $schiff -> set destination to $target
022 @  = wait 10000 ms
023    $jmp.status = $schiff -> use jump drive: target=$tor
024    if not $jmp.status
025     send incoming message 'Sprung fehlgeschlagen' to player: display it=[TRUE]
026 @   = wait 100 ms
027     return null
028    end
029    $schiff -> set destination to $target
030 @  $done = $schiff -> call script '!move.movetoposition' :  sector=$sec  position x=$x  position y=$y  position z=$z  precision=$size
031   *$done = 'Schiff ist an Station ' + $target + ' angekommen!'
032   *send incoming message $done to player: display it=[FALSE]
033    write to player logbook: printf: pageid=17111 textid=5, $schiff, $sec, $target, null, null
034    return null
Was mach ich da falsch ????

Bis denn Thalon
Last edited by ThalonMook on Tue, 31. May 05, 18:45, edited 1 time in total.
Deleted User

Post by Deleted User »

Keine Ahnung ob es daran liegt aber Positionsbestimmung mach ich immer anderst.

Vorher:

Code: Select all

003   $x = $target -> get x position 
004   $y = $target -> get y position 
005   $z = $target -> get z position 
006   $sec = $target -> get environment 
Nacher:

Code: Select all

003   $x = $target[0]
004   $y = $target[1]
005   $z = $target[2]
006   $sec = $target[3]
User avatar
Darklord2 [USC]
Posts: 2142
Joined: Mon, 9. Aug 04, 14:49
x3tc

Post by Darklord2 [USC] »

@Gyver ich machs auch so wie du.
User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Post by ThalonMook »

Danke für die Antworten, aber ist ja wohl gleich wie ich die Koordinaten ermittle. Das Ergebniss ist das Gleiche.

Gibts hier niemand der mir helfen kann..

Noch was wenn ich das Script starte kommt "Autopilot bla bla" und mein Schiff schaltet den Autopilot ein, kann man das irgendwie umgehen ????

Tja da dieses Script wichtig für den Flaggschiff-Mod ist dauert es halt länger bis ich den Mod veröffentlichen kann.. Ich werd schon alles selber rausfinden....

Bis denn Thalon
Deleted User

Post by Deleted User »

ThalonMook wrote:Noch was wenn ich das Script starte kommt "Autopilot bla bla" und mein Schiff schaltet den Autopilot ein, kann man das irgendwie umgehen ????
Das geht nur wenn du es in die sekundären Schiffskommandos legst. Einfach in der Textfile das Kommando von xxyy nach 12yy umschreiben.

Bei dem Rest kann ich nichts zu sagen. Vielleicht ist die Routine die den TL erfassen soll fehlerhaft. Dürfe vermute ich in der a.waffenpl.move.tl sein nehme ich an.
User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Post by ThalonMook »

Hi...

Das Script 'a.waffenpl.move.tl' ist das zweite Script aus meinem ersten Posting. Habs dort dazugeschrieben.

Das Script ist noch etwas wirr werd es wenns läuft noch etwas entschlacken....

Zum Thema Autopilot... Bei anderen Scripts z.B. BHP kommt das mit dem Autopiloten ja auch nicht... Naja werd mir mal ein paar Scripte als vergleich anschauen vielleicht finde ich ja eine Lösung...


Bis denn Thalon
Deleted User

Post by Deleted User »

ThalonMook wrote:Zum Thema Autopilot... Bei anderen Scripts z.B. BHP kommt das mit dem Autopiloten ja auch nicht... Naja werd mir mal ein paar Scripte als vergleich anschauen vielleicht finde ich ja eine Lösung...
Da kommt es nicht weil das Kommando NICHT auf dem Spielerschiff gegeben wurde :wink:

zu den Scripten:
Aha, jetzt blicke ich erst durch :roll:. Das zweite Script trägt also den Namen a.wp.move.install und im ersten Parameter wird der TL gewählt nehme ich an.

Trotzdem hab ich immernoch keinen Fehler gefunden :(
User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Post by ThalonMook »

Hi,

ich hab noch ein Problem...

Ich möchte ein Schiff finden aber komm mit dem "find ship" Befehl nicht ganz klar.
Wenn das Schiff erzeugt wird setze ich eine globale Variable, deren Inhalt die Homebase des Schiffes ist ($home).

Code: Select all

 $home = get global variable: name='TerracorpTL'
004   $schiff = $home -> find ship: class or type=Argon Mammut race=Argonen flags=[Find.Nearest] refobj=$home maxnum=null  with homebase=$home
Was muss ich als 2 Variable (jetzt $home) angeben ???

Bis denn Thalon
User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

Post by StarTrekMarc »

ThalonMook wrote:Hi,

ich hab noch ein Problem...

Ich möchte ein Schiff finden aber komm mit dem "find ship" Befehl nicht ganz klar.
Wenn das Schiff erzeugt wird setze ich eine globale Variable, deren Inhalt die Homebase des Schiffes ist ($home).

Code: Select all

 $home = get global variable: name='TerracorpTL'
004   $schiff = $home -> find ship: class or type=Argon Mammut race=Argonen flags=[Find.Nearest] refobj=$home maxnum=null  with homebase=$home


Was muss ich als 2 Variable (jetzt $home) angeben ???

Bis denn Thalon

Code: Select all

 $home = get global variable: name='TerracorpTL'
004   $schiff = $home -> find ship: class or type=Argon Mammut race=Argonen flags=[Find.Nearest] refobj=null maxnum=null  with homebase=$home
Einmal, warum hast du die Variable $home bei refobj gesetzt? Dies führt dazu das du nicht das richtige Schiffe findest und sehr wahrscheinlich garkeins ;)

Ich kann ebenfalls keine Fehler bei den anderen Scripts finden :gruebel:

Gruß
StarTrekMarc

PS: Ich schaus mir morgen nochmal an ;)
PPS: Thalon hat mich PN't deswegen schreibe ich hier :)
User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Post by ThalonMook »

Danke für die schnelle Antwort.

Aber ich bekomme als Ergebniss nur NULL und nicht das Schiff...

So hab ich es jetzt im Script:

Code: Select all

003  $home = get global variable: name='TerracorpTL'
004   $schiff = $home -> find ship: class or type=Large Transport TL race=Argonen flags=[Find.Nearest] refobj=null maxnum=null  with homebase=$home

Ich lass dann $schiff ins Logbuch schreiben, also sollte ich ja den Schiffsnamen oder sonst irgenwas als Ergebnis bekommen ....

Bis denn Thalon
User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

Post by StarTrekMarc »

ThalonMook wrote:Danke für die schnelle Antwort.

Aber ich bekomme als Ergebniss nur NULL und nicht das Schiff...

So hab ich es jetzt im Script:

Code: Select all

003  $home = get global variable: name='TerracorpTL'
004   $schiff = $home -> find ship: class or type=Large Transport TL race=Argonen flags=[Find.Nearest] refobj=null maxnum=null  with homebase=$home
Bis denn Thalon

Code: Select all

003  $home = get global variable: name='TerracorpTL'
004   $schiff = $home -> find ship: class or type=Large Transport TL race=Argonen flags=null refobj=null maxnum=null  with homebase=$home
Vielleicht stört der Find.Nearest Flag.. teste es mal ;)

Gruß
StarTrekMarc
User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Post by ThalonMook »

Nein wenn ich anstatt [Find.Nearest] NULL nehme kommt auch nix raus ...

Ich dachte das ich als refobj die Station angebe zu der der TL fliegen soll. So das der TL der am nächsten am Objekt ist gefunden wird....


Ist gar nicht so einfach mit dem Scripteditor von X2... PHP wäre mir lieber :-)

Bis denn...
User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Post by ThalonMook »

Jipie,

ich habs und zwar muss man als 2. Parameter nicht $home angeben sondern den Sector.

So funzt es

Code: Select all

003   $home = get global variable: name='TerracorpTL'
004   $homesec = $home -> get environment
005   
006   $schiff = $homesec -> find ship: class or type=Large Transport TL race=Argonen flags=[Find.Nearest] refobj=$target maxnum=null  with homebase=$home
Also geht doch...
User avatar
MADxHAWK
Posts: 710
Joined: Tue, 1. Mar 05, 17:49
x4

Post by MADxHAWK »

Hi Thalon,

zu deinem Problem das der TL sinnlos in der gegend rumgondelt, fliegt er denn in den entsprechenden sector ? wenn ja, kann es daran liegen das du die Zielposition des TL zu nah an die station gelegt hast. so wie ich das gesehen habe fragst du die grösse der station ab und nimmst diese als abstand der zielcoordinate des TL. frag einfach nur die position der station ab, rechen zu x,y,oder z einfach 2000 - 3000m hinzu und setze dies dann als zielcoordinaten. wenn die zielcoordinaten zu dicht bei der station sind kommt das signal.collisionalert oder so ähnlich, der tl fliegt die station an, bremst, und beschleunigt wieder um der station auszuweichen. dieses problem hatte ich in meinem script auch bereits.

zu deinem anderen problem, hab dir meine mailadresse per PM geschickt, schick mir mal das script ich schaue es mir dann mal an.

greetz
Martin
***modified*** und stolz drauf
Why does it hurt when my heart misses the beat? Propaganda - Dr. Mabuse (1984)
User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Post by ThalonMook »

Hi,

der TL fliegt oder springt nicht zum Sector. Ich addiere ja zur grösse des Objektes oder der Station, 2500 m dazu also sollte er keine probs haben.

Das Script ist das welches ich oben im Thread gepostet habe..

Aber ich schick es Dir mal mit allen Subscripts vielleicht findest Du was...

EDIT

muss erst mal alles zusammen basteln dauert ein bischen...

Bis denn Thalon
User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Post by ThalonMook »

Also ich glaube den Fehler gefunden zu haben....

Wenn ich das Script über den Befehl "Fremd -> WP liefern" auf meinem Schiff starte kommt die Meldung "Autopilot aktiviert" und der TL fliegt los.
Er liefert auch schön und fliegt wieder zu seiner Homebase.
Wenn ich nun den Autopiloten auf meinem Schiff deaktiviere stopt der TL und macht nichts mehr. Das heisst das Script wird abgebrochen wenn ich den AP stoppe.

Wie kann ich es nun realisieren das dieses Script auf dem TL läuft und nicht auf meinem Schiff ????


Ok bis denn Tahlon
User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

Post by StarTrekMarc »

Du verbindest deinen Kommando Konsolen Befehl mit einem Script, in dem dein Hauptscript per Call Script aufgerufen wird, und zwar mit START, natürlich musste die Benutzereingaben mit übergeben ;)

Gruß
StarTrekMarc
User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Post by ThalonMook »

Danke dachte schon das muss ich auch wieder alleine rausfinden :D

Könntest Du mir etwas genauer sagen wie ich das machen soll,
bin noch nicht so fit mit den ganzen Befehlen in X2...
Modden ist ja ok aber mit dem X2-Editor bin ich noch nicht so bewandert..


Bis denn Thalon...
Deleted User

Post by Deleted User »

Habs zwar noch nie gemacht aber von der Logik sollte es so gehen:

Zuerst brauchst du ein neues Dummyscript mit diesem Inhalt:

Code: Select all

Arguments 
1: schiff , Var/Ship , 'Schiff' 
2: Station , Var/Station , 'Station' 
3: variation , Nummer , 'Ausstattung' 
Source Text 

001   START $dummy -> call script 'a.wp.move.install' :  Schiff=$schiff Station=$Station Ausstattung=$variation
002   return null 
Nun musst du noch ein Setupscript auf dieses Dummyscript umlenken.
Last edited by Deleted User on Wed, 1. Jun 05, 00:01, edited 1 time in total.
User avatar
ThalonMook
Posts: 1296
Joined: Tue, 3. Feb 04, 12:11
x4

Post by ThalonMook »

Hmm

so wie Du das geschrieben hast find ich das nicht ich finde nur unter General Commands >> Script Calls >> call script hier kann ich dann als ersten parameter Start angeben. Wenn ich das mache ist es genau so wie wenn ich es so starte wie ich es schon hatte...

Naja hab jetzt keine Lust mehr, Morgen ist auch noch ein Tag...


Danke und gute Nacht...

Bis denn Thalon

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