Script verändern aber wie?
Moderator: Moderatoren
-
- Senior-Scharfschütze
- Beiträge: 418
- Registriert: Sa 30 Jun, 2012 3:42 pm
- Lieblings X-Titel: AP
Script verändern aber wie?
Hallo Ihr,
ich habe hier ein Script Namens ej.findwares. Dieses scannt das gesammte bekannte Universum nach herrenlosen Gütern ab, gibt davon eine Liste aus und setzt gleichzeitig Erweiterte Satelliten an die Fundstellen.
Nun möchte ich dieses Script (als Kopie) derart verändern, dass es die Suche nur im aktuellen Sektor macht. Hintergrund ist der, dass ich mittels UFS in Unbekannte Sektoren springe und in diesen Tuningkisten suche. Bei der Standardversion des Scriptes funktioniert das zwar auch, aber da das gesamte Universum durchsucht wird, kommt es zu einer Flut von Erweiterten Satelliten im Universum. Zumal im Script evtl. noch ein kleiner Bug ist, der bei mir bei jeder Suche einen Astronauten im Sektor Gunners Kreuzzug auf Position 0,0,0 findet. Der aber gar nicht dort vorhanden ist.
ich habe hier ein Script Namens ej.findwares. Dieses scannt das gesammte bekannte Universum nach herrenlosen Gütern ab, gibt davon eine Liste aus und setzt gleichzeitig Erweiterte Satelliten an die Fundstellen.
Nun möchte ich dieses Script (als Kopie) derart verändern, dass es die Suche nur im aktuellen Sektor macht. Hintergrund ist der, dass ich mittels UFS in Unbekannte Sektoren springe und in diesen Tuningkisten suche. Bei der Standardversion des Scriptes funktioniert das zwar auch, aber da das gesamte Universum durchsucht wird, kommt es zu einer Flut von Erweiterten Satelliten im Universum. Zumal im Script evtl. noch ein kleiner Bug ist, der bei mir bei jeder Suche einen Astronauten im Sektor Gunners Kreuzzug auf Position 0,0,0 findet. Der aber gar nicht dort vorhanden ist.
- Taktkonform
- Feldwebel
- Beiträge: 3119
- Registriert: Di 24 Jun, 2008 4:28 pm
- Lieblings X-Titel:
- Wohnort: Saxonia
Re: Script verändern aber wie?
<ret/var>= <refobj> get position as array als Grundlage benutzen. <refobj> wäre hierbei die Konstante [PLAYERSHIP] oder die Anweisung <get player ship>.
Der Array selbst behinhaltet dann X,Y und Z-Achsenwert sowie den Sektor, in dem sich das Spielerschiff gerade befindet.
Ausgelesen, also die einzelnen Werte brauchbar gemacht, würde das dann so aussehen:
Nun kannst Du die Positionsdaten in jeder anderen Anweisung (z.B create ship (Satellit)) benutzen, um genau in diesem einen Sektor einen Satelliten zu setzen, und den Rest des Scriptes auszuführen.
noch nen netten Tag
Taktkonform
Der Array selbst behinhaltet dann X,Y und Z-Achsenwert sowie den Sektor, in dem sich das Spielerschiff gerade befindet.
Ausgelesen, also die einzelnen Werte brauchbar gemacht, würde das dann so aussehen:
Code: Alles auswählen
001 Sector.Pos = [PLAYERSHIP] get positon as array
002 $X = $Sector.Pos[0]
003 $Y = $Sector.Pos[1]
004 $Z = $Sector.Pos[2]
005 $Sector = $Sector.Pos[3]
[...]
noch nen netten Tag
Taktkonform
Komm wir essen Oma - Satzzeichen können Leben retten!
-
- Senior-Scharfschütze
- Beiträge: 418
- Registriert: Sa 30 Jun, 2012 3:42 pm
- Lieblings X-Titel: AP
Re: Script verändern aber wie?
Liebe Taktfonform,
ich muss mal wieder zugeben, dass ich absolut keine Ahnung vom Scripten habe. Und was dazu kommt ich komme auch überhaupt nicht mit diesem komischen Scripteditor von X3 zurecht. Ich versteh also (leider) nur Bahnhof
ich muss mal wieder zugeben, dass ich absolut keine Ahnung vom Scripten habe. Und was dazu kommt ich komme auch überhaupt nicht mit diesem komischen Scripteditor von X3 zurecht. Ich versteh also (leider) nur Bahnhof
- Taktkonform
- Feldwebel
- Beiträge: 3119
- Registriert: Di 24 Jun, 2008 4:28 pm
- Lieblings X-Titel:
- Wohnort: Saxonia
Re: Script verändern aber wie?
Na Du bist ein lustiger Zeitgenosse!
Willst ein bestehendes Script verändern, und weißt nicht wie, selbst wenn man einen konkreten Vorschlag macht?
Ich kenne das Script nicht, dass Du da verändern willst, aber mein Ansatz geht einfach davon aus, das Spielerschiff als Referenzpunkt zu verwenden, da es ja eh in den USFA-Sektor muss.
Beim Start meines Scriptbeispieles würde die Position des Spielerschiffes in einem Array abgelegt. Diesen Array kann man auslesen und die darin enthaltenen Positionsdaten dann weiterverwenden, z.b um einen Satelliten zu erstellen oder eine fliegende Ware zu finden.
Poste doch einfach mal den Quelltext des jetzigen Scripts hier...
...ganz einfach per RM auf das Script-->"Öffnen mit..."--->Firefox (oder Deinem Browser). Der Rest ist einfaches Copy&Paste.
Schliess den so erstelllten Quelltext bitte in ein, damit es nicht alle Dimensionen sprengt, wenn es dann doch etwas länger sein sollte.
noch nen netten Tag
Taktkonform
Willst ein bestehendes Script verändern, und weißt nicht wie, selbst wenn man einen konkreten Vorschlag macht?
Ich kenne das Script nicht, dass Du da verändern willst, aber mein Ansatz geht einfach davon aus, das Spielerschiff als Referenzpunkt zu verwenden, da es ja eh in den USFA-Sektor muss.
Beim Start meines Scriptbeispieles würde die Position des Spielerschiffes in einem Array abgelegt. Diesen Array kann man auslesen und die darin enthaltenen Positionsdaten dann weiterverwenden, z.b um einen Satelliten zu erstellen oder eine fliegende Ware zu finden.
Poste doch einfach mal den Quelltext des jetzigen Scripts hier...
...ganz einfach per RM auf das Script-->"Öffnen mit..."--->Firefox (oder Deinem Browser). Der Rest ist einfaches Copy&Paste.
Schliess den so erstelllten Quelltext bitte in
Code: Alles auswählen
noch nen netten Tag
Taktkonform
Komm wir essen Oma - Satzzeichen können Leben retten!
-
- Senior-Scharfschütze
- Beiträge: 418
- Registriert: Sa 30 Jun, 2012 3:42 pm
- Lieblings X-Titel: AP
Re: Script verändern aber wie?
Ok, Du hast es so gewollt. Hier ist das, was mir der Fuchs ausspuckt:
Code: Alles auswählen
ej.findwares
1.1
50
Reports the location of all ware containers and puts an Adv. Sat on them.
$menu = array alloc: size=0
add non selectable menu item: $menu, text='--CONTAINERS--'
$X = 0
$Y = 0
while $X < 30 AND $Y < 30
$Sector = get sector from universe index: x=$X, y=$Y
if $Sector -> exists
$Temp = find flying ware: sector=$Sector maintype=null subtype=null flags=[Find.Multiple] refobj=null maxdist=null maxnum=99, refpos=null
$count = size of array $Temp
while $count
dec $count =
$obj = $Temp[$count]
if $obj != null
$num = $obj -> get flying ware count
$pos = $obj -> get position as array
$Xpos = $pos[0]
$Ypos = $pos[1]
$Zpos = $pos[2]
$pos = sprintf: fmt='X=%s Y=%s Z=%s', $Xpos, $Ypos, $Zpos, null, null
$text = sprintf: fmt='%s %s in %s (at %s)', $num, $obj, $Sector, $pos, null
add non selectable menu item: $menu, text=$text
$sat = create ship: type=Advanced Satellite owner=Player addto=$Sector x=$Xpos y=$Ypos z=$Zpos
$text = sprintf: fmt='%s %s', $num, $obj, null, null, null
$sat ->set name to $text
end
end
end
if $X == 29
$X = 0
inc $Y =
else
inc $X =
end
end
add non selectable menu item: $menu, text='--SHIPS--'
$shipar = get ship array: of race Neutral Race class/type=null
$count = size of array $shipar
while $count
dec $count =
$obj = $shipar[$count]
if not $obj -> is of type Navigational Beacon
$Sector = $obj -> get sector
$pos = $obj -> get position as array
$Xpos = $pos[0]
$Ypos = $pos[1]
$Zpos = $pos[2]
$pos = sprintf: fmt='X=%s Y=%s Z=%s', $Xpos, $Ypos, $Zpos, null, null
$text = sprintf: fmt='%s in %s (at %s)', $obj, $Sector, $pos, null, null
add non selectable menu item: $menu, text=$text
$sat = create ship: type=Advanced Satellite owner=Player addto=$Sector x=$Xpos y=$Ypos z=$Zpos
$text = sprintf: fmt='%s', $obj, null, null, null, null
$sat ->set name to $text
end
end
$TheMenu = open custom info menu: title='Find Containers And Ships' description='All Floating Ware Containers And Abandoned Ships In Your Current Universe' option array=$menu maxoptions=null
return null
$menu = array alloc: size=0
add non selectable menu item: $menu, text='--CONTAINERS--'
$X = 0
$Y = 0
while $X < 30 AND $Y < 30
$Sector = get sector from universe index: x=$X, y=$Y
if $Sector -> exists
$Temp = find flying ware: sector=$Sector maintype=null subtype=null flags=[Find.Multiple] refobj=null maxdist=null maxnum=99, refpos=null
$count = size of array $Temp
while $count
dec $count =
$obj = $Temp[$count]
if $obj != null
$num = $obj -> get flying ware count
$pos = $obj -> get position as array
$Xpos = $pos[0]
$Ypos = $pos[1]
$Zpos = $pos[2]
$pos = sprintf: fmt='X=%s Y=%s Z=%s', $Xpos, $Ypos, $Zpos, null, null
$text = sprintf: fmt='%s %s in %s (at %s)', $num, $obj, $Sector, $pos, null
add non selectable menu item: $menu, text=$text
$sat = create ship: type=Advanced Satellite owner=Player addto=$Sector x=$Xpos y=$Ypos z=$Zpos
$text = sprintf: fmt='%s %s', $num, $obj, null, null, null
$sat ->set name to $text
end
end
end
if $X == 29
$X = 0
inc $Y =
else
inc $X =
end
end
add non selectable menu item: $menu, text='--SHIPS--'
$shipar = get ship array: of race Neutral Race class/type=null
$count = size of array $shipar
while $count
dec $count =
$obj = $shipar[$count]
if not $obj -> is of type Navigational Beacon
$Sector = $obj -> get sector
$pos = $obj -> get position as array
$Xpos = $pos[0]
$Ypos = $pos[1]
$Zpos = $pos[2]
$pos = sprintf: fmt='X=%s Y=%s Z=%s', $Xpos, $Ypos, $Zpos, null, null
$text = sprintf: fmt='%s in %s (at %s)', $obj, $Sector, $pos, null, null
add non selectable menu item: $menu, text=$text
$sat = create ship: type=Advanced Satellite owner=Player addto=$Sector x=$Xpos y=$Ypos z=$Zpos
$text = sprintf: fmt='%s', $obj, null, null, null, null
$sat ->set name to $text
end
end
$TheMenu = open custom info menu: title='Find Containers And Ships' description='All Floating Ware Containers And Abandoned Ships In Your Current Universe' option array=$menu maxoptions=null
return null
2827
Zuletzt geändert von Lilith am Do 13 Nov, 2014 5:53 am, insgesamt 1-mal geändert.
- Taktkonform
- Feldwebel
- Beiträge: 3119
- Registriert: Di 24 Jun, 2008 4:28 pm
- Lieblings X-Titel:
- Wohnort: Saxonia
Re: Script verändern aber wie?
Na, das Ding macht aber noch ein klein wenig mehr...
...als nur die Fliegenden Waren anzuzeigen.
Egal...
...ist alles da, was wir brauchen.
Ziemlich kompliziert, da er die Positionsdaten je fliegende Ware ausliest und dann ausgibt, aber egal.
Die Zeilen, die ich mit einem Sternchen gekennzeichnet habe, sind Menuanweisungen.
Wenn Du das als benutzerdefiniertes Menü haben möchtest, musst Du das Array, ganz am Anfang des Scripts, miteinbinden.
noch nen netten Tag
Taktkonform
...als nur die Fliegenden Waren anzuzeigen.
Egal...
...ist alles da, was wir brauchen.
Code: Alles auswählen
001 Sector.Pos = [PLAYERSHIP] get positon as array
$X = $Sector.Pos[0]
$Y = $Sector.Pos[1]
$Z = $Sector.Pos[2]
$Sector = $Sector.Pos[3]
$Temp = find flying ware: sector=$Sector maintype=null subtype=null flags=[Find.Multiple] refobj=null maxdist=null maxnum=99, refpos=null
$count = size of array $Temp
while $count
dec $count =
$obj = $Temp[$count]
if $obj != null
$num = $obj -> get flying ware count
$pos = $obj -> get position as array
$Xpos = $pos[0]
$Ypos = $pos[1]
$Zpos = $pos[2]
$pos = sprintf: fmt='X=%s Y=%s Z=%s', $Xpos, $Ypos, $Zpos, null, null
$text = sprintf: fmt='%s %s in %s (at %s)', $num, $obj, $Sector, $pos, null
*add non selectable menu item: $menu, text=$text
$sat = create ship: type=Advanced Satellite owner=Player addto=$Sector x=$Xpos y=$Ypos z=$Zpos
$text = sprintf: fmt='%s %s', $num, $obj, null, null, null
*$sat ->set name to $text
end
return null
Die Zeilen, die ich mit einem Sternchen gekennzeichnet habe, sind Menuanweisungen.
Wenn Du das als benutzerdefiniertes Menü haben möchtest, musst Du das Array, ganz am Anfang des Scripts, miteinbinden.
noch nen netten Tag
Taktkonform
Komm wir essen Oma - Satzzeichen können Leben retten!
-
- Senior-Scharfschütze
- Beiträge: 418
- Registriert: Sa 30 Jun, 2012 3:42 pm
- Lieblings X-Titel: AP
Re: Script verändern aber wie?
Erst mal vielen Dank, dass Du Dir die Mühe machst.
Aber wie bekomme ich das Script nun ins Spiel? Gibt es die Möglichkeit Dein Script mittels Copy&Paste in einen externen Editor zu übernehmen und dann das fertige Script einfach in das Script Verzeichnis von AP zu verschieben? Ich hatte das mal ganz unbedarft mittels Notepad++ probiert aber so einfach gehts scheinbar nicht. Oder muss man das Ganze in dem unsäglichen Editor des Spiels eintippen?
Aber wie bekomme ich das Script nun ins Spiel? Gibt es die Möglichkeit Dein Script mittels Copy&Paste in einen externen Editor zu übernehmen und dann das fertige Script einfach in das Script Verzeichnis von AP zu verschieben? Ich hatte das mal ganz unbedarft mittels Notepad++ probiert aber so einfach gehts scheinbar nicht. Oder muss man das Ganze in dem unsäglichen Editor des Spiels eintippen?
- Taktkonform
- Feldwebel
- Beiträge: 3119
- Registriert: Di 24 Jun, 2008 4:28 pm
- Lieblings X-Titel:
- Wohnort: Saxonia
Re: Script verändern aber wie?
Ach ja...
ich hab' das dann mal fertig gemacht.
Fertiges Script.
Beim nächsten Mal bitte angeben, dass Du AP spielst...
...ich habe mich nach <add non selectable item...> halb dusselig gesucht, da es diesen Befehl in TC noch nicht gibt.
Ok, das Script wird jetzt nur noch den aktuellen Sektor scannen und nur noch nach fliegenden Waren suchen. Ansonsten ist alles wie gehabt.
Installationsanleitung siehe readme.txt.
Gestartet wird das Script über einen neuen Eintrag in den erweiterten Schiffskommandos des Spielerschiffes. Der Eintrag lautet "Cheat: Fliegende Waren finden".
Sry für das Cheat...
...aber was anderes ist dieses Ding nicht.
noch nen netten Tag
Taktkonform
P.S.: Und ja, ich weiß das beim Downloadlink eine Größe von 0 MB angegeben wird. Ist korrekt, das ganze Scriptchen ist nun mal nur knappe 30k groß.
P.P.S.:
Um Konflikte zu vermeiden, bzw. zu beheben:
Benutzter Slot: Command_Type_Ship_57(1257)
T-File-Nummer:7855-L049.xml
ich hab' das dann mal fertig gemacht.
Fertiges Script.
Beim nächsten Mal bitte angeben, dass Du AP spielst...
...ich habe mich nach <add non selectable item...> halb dusselig gesucht, da es diesen Befehl in TC noch nicht gibt.
Ok, das Script wird jetzt nur noch den aktuellen Sektor scannen und nur noch nach fliegenden Waren suchen. Ansonsten ist alles wie gehabt.
Installationsanleitung siehe readme.txt.
Gestartet wird das Script über einen neuen Eintrag in den erweiterten Schiffskommandos des Spielerschiffes. Der Eintrag lautet "Cheat: Fliegende Waren finden".
Sry für das Cheat...
...aber was anderes ist dieses Ding nicht.
noch nen netten Tag
Taktkonform
P.S.: Und ja, ich weiß das beim Downloadlink eine Größe von 0 MB angegeben wird. Ist korrekt, das ganze Scriptchen ist nun mal nur knappe 30k groß.
P.P.S.:
Um Konflikte zu vermeiden, bzw. zu beheben:
Benutzter Slot: Command_Type_Ship_57(1257)
T-File-Nummer:7855-L049.xml
Komm wir essen Oma - Satzzeichen können Leben retten!
-
- Senior-Scharfschütze
- Beiträge: 418
- Registriert: Sa 30 Jun, 2012 3:42 pm
- Lieblings X-Titel: AP
Re: Script verändern aber wie?
Vielen Dank liebe Taktkonform *Keksereich*
Ja mit AP hatte ich vergessen anzugeben, tut mir Leid.
Trotzdem wäre es schön, wenn Du mir noch antworten könntest wie das generell mit der Übernahme von Skripten ist. Kann man die ausschließlich im Spieleigenen Editor schreiben/ändern oder geht das auch über externe Programme, bzw. Copy/Paste von Codezeilen?
Ja mit AP hatte ich vergessen anzugeben, tut mir Leid.
Trotzdem wäre es schön, wenn Du mir noch antworten könntest wie das generell mit der Übernahme von Skripten ist. Kann man die ausschließlich im Spieleigenen Editor schreiben/ändern oder geht das auch über externe Programme, bzw. Copy/Paste von Codezeilen?
- Taktkonform
- Feldwebel
- Beiträge: 3119
- Registriert: Di 24 Jun, 2008 4:28 pm
- Lieblings X-Titel:
- Wohnort: Saxonia
Re: Script verändern aber wie?
Das eigentliche Problem liegt ja nicht in der Unbedienbarkeit des SE, als vielmehr, dass man nicht weiß in welcher Drogenlaune die Entwickler die einzelnen Befehle den Gruppen zugeordnet haben.
Ich persönlich benutze nur den SE, wenn ich einen Befehl nicht finde, dann schau' ich bei "MSCI Online Referenz" nach.
Es gibt aber einige externe X3-Editoren, wie etwa den hier Exscriptor.
Ich habe allerdings keinerlei Erfahrung mit externen Editoren.
noch nen netten Tag
Taktkonform
Btw.: Hast Du den Autor um Erlaubnis gebeten, das Script zu verändern?
Wir mehren hier einfach so in einem fremden Script rum...
...nicht dass das Ärger gibt.
Ich persönlich benutze nur den SE, wenn ich einen Befehl nicht finde, dann schau' ich bei "MSCI Online Referenz" nach.
Es gibt aber einige externe X3-Editoren, wie etwa den hier Exscriptor.
Ich habe allerdings keinerlei Erfahrung mit externen Editoren.
noch nen netten Tag
Taktkonform
Btw.: Hast Du den Autor um Erlaubnis gebeten, das Script zu verändern?
Wir mehren hier einfach so in einem fremden Script rum...
...nicht dass das Ärger gibt.
Komm wir essen Oma - Satzzeichen können Leben retten!
-
- Senior-Scharfschütze
- Beiträge: 418
- Registriert: Sa 30 Jun, 2012 3:42 pm
- Lieblings X-Titel: AP
Re: Script verändern aber wie?
Danke nochmal und nein habe ich nicht. Ich werd die veränderte Version aber sicher nicht veröffentlichen und es wäre evtl. gut den Download dafür oben zu löschen.
edit: Habs gerade ausprobiert. Das Script funktioniert im Prinzip. Zwei unwesentliche Kleinigkeiten sind mir aufgefallen.
1. Bei der Positionsanzeige wird als Z-Position der Text "%" ausgegeben. Ist aber nur die Anzeige. Der Satellit ist an der korrekten Position.
2. Die Einbindung ins Kommandomenü funktioniert scheinbar nicht, was aber auch gar nicht schlimm ist. Ich habe mir das Script eh auf eine Taste gelegt. Geht sehr viel schneller als jedes Mal erst die ganzen Menüs aufploppen
P.S.: Der XML-Editor funktioniert wunderbar. Viiiiiiel besser als der Spielinterne.
edit: Habs gerade ausprobiert. Das Script funktioniert im Prinzip. Zwei unwesentliche Kleinigkeiten sind mir aufgefallen.
1. Bei der Positionsanzeige wird als Z-Position der Text "%" ausgegeben. Ist aber nur die Anzeige. Der Satellit ist an der korrekten Position.
2. Die Einbindung ins Kommandomenü funktioniert scheinbar nicht, was aber auch gar nicht schlimm ist. Ich habe mir das Script eh auf eine Taste gelegt. Geht sehr viel schneller als jedes Mal erst die ganzen Menüs aufploppen
P.S.: Der XML-Editor funktioniert wunderbar. Viiiiiiel besser als der Spielinterne.