[X3TC] Script für Kanzel schreiben
Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators
[X3TC] Script für Kanzel schreiben
Hallo,
ich bin relativ neu beim Scripten, auch wenn ich mich schon länger damit beschäftige...
Ich würde jetzt gern ein eigenes Kommando für Geschützkanzeln schreiben, damit die automatisch den nächsten Klein-Asteroiden zerkleinern.
Nun habe ich dazu 2 Fragen:
1.Ist es überhaupt möglich, dass alle Kanzeln unabhängig von einander den für sie nächsten zerkleinerbaren Asteroiden anvisieren und angreifen? In einem "allgemeinen" Script kann ich ja den nächsten Kleinasteroiden auswählen lassen, also müsste dass doch auch für Kanzeln gehen, oder?
2. Wie kann ich ein Script so schreiben, dass es als Kanzelbefehl angesehen wird?
Ich habe schon länger gegoogelt, hab aber einfach nichts dazu gefunden...
Ich mag den mobilen Bergbau sehr gerne, aber auf Dauer nervt das Asteroiden zerkleinern etwas und den Mineraliensprengmeister gibt es ja leider nicht für TC...
Viele Grüße
Cherup
ich bin relativ neu beim Scripten, auch wenn ich mich schon länger damit beschäftige...
Ich würde jetzt gern ein eigenes Kommando für Geschützkanzeln schreiben, damit die automatisch den nächsten Klein-Asteroiden zerkleinern.
Nun habe ich dazu 2 Fragen:
1.Ist es überhaupt möglich, dass alle Kanzeln unabhängig von einander den für sie nächsten zerkleinerbaren Asteroiden anvisieren und angreifen? In einem "allgemeinen" Script kann ich ja den nächsten Kleinasteroiden auswählen lassen, also müsste dass doch auch für Kanzeln gehen, oder?
2. Wie kann ich ein Script so schreiben, dass es als Kanzelbefehl angesehen wird?
Ich habe schon länger gegoogelt, hab aber einfach nichts dazu gefunden...
Ich mag den mobilen Bergbau sehr gerne, aber auf Dauer nervt das Asteroiden zerkleinern etwas und den Mineraliensprengmeister gibt es ja leider nicht für TC...
Viele Grüße
Cherup
- ubuntufreakdragon
- Posts: 5195
- Joined: Thu, 23. Jun 11, 14:57
1 distanz geht glaub ich nur von Schiff zu objekt, aber du kannst trotzdem auf verschiedene ballern lassen, du holst einfach die nächsten 15 Astros und fragst wen das Geschütz am besten treffen kann.
2 jedes Script, das auf Task 1-6 läuft ist ein Kanzelbefehl, und du kannst auch die passenden Komandslots registrieren.
3 http://www.xuniversum.info/index.php?op ... Itemid=248
2 jedes Script, das auf Task 1-6 läuft ist ein Kanzelbefehl, und du kannst auch die passenden Komandslots registrieren.
3 http://www.xuniversum.info/index.php?op ... Itemid=248
My X3 Mods
XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist
XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist
... ist relativ einfach:Cherup wrote:... das mit den Tasks ...
... wenn du ein kommando-script schreibst und dieses in der kommandokonsole startest, dann startet das script immer auf task ID 0
... turret-scripts sind da ´ne ausnahme, denn pro turret läuft ein separates (wenn auch gleiches) script
... ein schiff kann max. 6 turrets haben
... problematisch wär´ nun, wenn du per autopilot nach argon prime (oder wohin auch immer) fliegst & während dessen ein turret-kommando startest, welches dann auch auf task ID 0 starten würde (das tut es natürlich nicht)
=> damit würde dein schiff stehen bleiben (weil task ID 0 [aka "autopilot"] überschrieben)
... kurz gesagt: jedes dieser turret-kommando-slots in der kommandokonsole stellt eine gewisse task ID dar, bei 1 beginnend und beim letzten turret endend
(angenommen: schiff hat 4 turrets => task 1, 2, 3 & 4 stehen für turret-scripts zur verfügung)
... die task ID wird außerdem als erstes argument an das script automatisch übergeben (ähnlich plugin ID bei AL-scripts)
(turret ID ist meist = task ID, kann aber auch anders gesteuert werden)
*klick-mich*
... es gibt da so 2...3 befehle, die ein script via kommandokonsole aufrufbar machen:Cherup wrote:2. Wie kann ich ein Script so schreiben, dass es als Kanzelbefehl angesehen wird?
1. global script map: set key $X1 class $X2 script $X3 prio $X4 usw. ... verknüpft ein script an einen kommandoslot (siehe hier: 9XY = turret-command)
2. set script command: $Y1 upgrade: $Y2 {script: $Y3} ... macht das kommando verfügbar, wenn {upgrade} auf schiff vorhanden
// {script} ist für den fall, dass du ein rückgabe-script verwendest, um zu entscheiden, wann genau ein kommando nicht / ausgegraut / verfügbar sein soll
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.
Mission Director Beispiele
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.
Mission Director Beispiele
Danke für diese ausführliche antwort.
Wenn ich das jetzt richtig verstehe schreibe ich ein "Start"-script, dass über die Kommandokonsole über die Kanzelbefehls-auswahl gestartet wird. Dieses Startscript bekommt dann automatisch als Argument die Task-ID der entsprechenden Kanzel übergeben?
Und aus dem Startscript heraus wird dann mit
global script map: set key = COMMAND_TYPE_TURRET_22,...
das entsprechende Script auf dem turret gestartet?
Wenn ich das jetzt richtig verstehe schreibe ich ein "Start"-script, dass über die Kommandokonsole über die Kanzelbefehls-auswahl gestartet wird. Dieses Startscript bekommt dann automatisch als Argument die Task-ID der entsprechenden Kanzel übergeben?
Und aus dem Startscript heraus wird dann mit
global script map: set key = COMMAND_TYPE_TURRET_22,...
das entsprechende Script auf dem turret gestartet?
anders rum: in einem Setup-Script weist du mit dem
global script map: set key = COMMAND_TYPE_TURRET_22 ....
dem Kommandoslot ein Script zu, welches beim Aufruf von diesem Kommando ausgeführt werden soll (und stellst im selben zuge noch ein, welche Software ggf. nötig ist; das wurde iirc in nem anderen, ähnlich lautenden Befehl erledigt)
wenn das getan ist kannst du dein Script über die Turret-Kommandslots aus der Kommandokonsole heraus starten, und wenn du dies tust bekommst du die turret-id als erstes Argument beim Scriptstart
global script map: set key = COMMAND_TYPE_TURRET_22 ....
dem Kommandoslot ein Script zu, welches beim Aufruf von diesem Kommando ausgeführt werden soll (und stellst im selben zuge noch ein, welche Software ggf. nötig ist; das wurde iirc in nem anderen, ähnlich lautenden Befehl erledigt)
wenn das getan ist kannst du dein Script über die Turret-Kommandslots aus der Kommandokonsole heraus starten, und wenn du dies tust bekommst du die turret-id als erstes Argument beim Scriptstart
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
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
Also irgendwie bin ich zu blöd...
ich habe jetzt die beiden folgenden scripts:
setup.turret.AstZerkl:
<Keine Argumente>
global script map: set: key: COMMAND_TYPE_TURRET_22, class="Schiff", race="Player", script="Plugin.turret.AstZerkl", prio=1
return null
plugin.turret.AstZerkl
<Argumente: TurretID, Var/Number, 'Turret ID'>
return null
Wenn ich es richtig verstanden habe, müsste doch jetzt ein neuer Befehl bei den Kanzelbefehlen auftauchen...
Dazu dann noch die Frage, wie ich diesen Befehl benennen kann?
Danke für die Hilfe
ich habe jetzt die beiden folgenden scripts:
setup.turret.AstZerkl:
<Keine Argumente>
global script map: set: key: COMMAND_TYPE_TURRET_22, class="Schiff", race="Player", script="Plugin.turret.AstZerkl", prio=1
return null
plugin.turret.AstZerkl
<Argumente: TurretID, Var/Number, 'Turret ID'>
return null
Wenn ich es richtig verstanden habe, müsste doch jetzt ein neuer Befehl bei den Kanzelbefehlen auftauchen...
Dazu dann noch die Frage, wie ich diesen Befehl benennen kann?
Danke für die Hilfe
@ cherry ... *klick-mich* // verbesserungswürdig, aber funktionstüchtig ^^
EDIT: ... mini-fehler entdeckt !! ... zeile 85 & 91 => gosub-check.target anstelle get.target muss da hin ^^ ... außerdem wär´ noch ßn check nötig um sicherzustellen, dass turret equipped
EDIT: ... mini-fehler entdeckt !! ... zeile 85 & 91 => gosub-check.target anstelle get.target muss da hin ^^ ... außerdem wär´ noch ßn check nötig um sicherzustellen, dass turret equipped
Last edited by JSDD on Tue, 6. May 14, 17:46, edited 1 time in total.
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.
Mission Director Beispiele
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.
Mission Director Beispiele
- ubuntufreakdragon
- Posts: 5195
- Joined: Thu, 23. Jun 11, 14:57
jup indem man abfragt ob sie sammelbar sind und falls ja den nächsten zerschießt.
My X3 Mods
XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist
XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist
Cherup wrote:Die Türme greifen leider auch die sammelbaren Asteroiden ein.
Code: Select all
Check.Target:
if not $Target -> exists
|$Target = null
else if not [THIS] -> is $Target in firing range of turret $Turret.ID
|$Target = null
else if $Target -> has collectible rocks
|$Target = null
end
endsub
// den fehlenden befehl else if $Target -> has collectible rocks findest du unter "general-object-commands"
// achja, das ganze ist immernoch "provisorisch", solltest dich also etwas um die feinheiten kümmern ^^
(z.B. ganz oben im "kopf" des scripts XXXXX => noch das entspr. command anklicken [momentan heißt´s noch "abc" laut t-file])
ps: ... nicht vergessen
JSDD wrote:... zeile 85 & 91 => gosub-check.target anstelle get.target muss da hin ^^ ... außerdem wär´ noch ßn check nötig um sicherzustellen, dass turret equipped
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.
Mission Director Beispiele
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.
Mission Director Beispiele
Hi,
Nochmal vielen vielen Dank für deine Mühe die Änderungen habe ich vorgenommen.
Bis auf eine Kleinigkeit funktioniert das Script super. Die Kleinasteroiden, die man sprengen muss um die sammelbaren Asteroiden zu erhalten werden nicht angegriffen. Weißt du woran das liegen könnte?
Edit: ich habe grade festgestellt, dass sie doch zerstört werden, aber nur selten...
VG
Cherup
Nochmal vielen vielen Dank für deine Mühe die Änderungen habe ich vorgenommen.
Bis auf eine Kleinigkeit funktioniert das Script super. Die Kleinasteroiden, die man sprengen muss um die sammelbaren Asteroiden zu erhalten werden nicht angegriffen. Weißt du woran das liegen könnte?
Edit: ich habe grade festgestellt, dass sie doch zerstört werden, aber nur selten...
VG
Cherup
- ubuntufreakdragon
- Posts: 5195
- Joined: Thu, 23. Jun 11, 14:57
Die kleinste und 2. kleinst stufe erscheint manmal erst richtig ingame, wenn man in sie hineinzoomt, vorher haben die auch keine Kollisionsabfrage.
My X3 Mods
XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist
XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist
Halli Hallo,
ich muss mein altes Thema mal wieder ausgraben. Ich habe wieder angefangen XTC zu zocken und möchte auch das Skript einsetzen (bin großer Mining-Fan ^.^). Jetzt habe ich festgestellt, dass das ja etwas Probleme macht.
Es wird nach wie vor die 2.kleinste Stufe nicht bzw. nur sehr selten angegriffen. Ich habe aus praktischen Gründen das Skript vom MBS zur PBK geändert.
Ich sitze gerade in meiner Hyperion und stehe quasi direkt vor ein paar entsprechenden Kleinasteroiden. Nur ein paar Meter und ich würde sie rammen . Trotzdem werden sie nicht angegriffen.
Weiß jemand eine Lösung dafür? Die Größeren werden alle ohne Probleme zerstört, aber die kleineren eben nicht.
Kann man das Skript dahingehend ändern, dass das Ziel der Turrets automatisch als Spieler-Target gesetzt wird? Das würde vllt helfen, damit man an die entsprechenden Brocken ranfliegen kann...
Und eine letzte Frage noch: Wie kann ich den Namen des Befehls ändern? Ich habe mir die XML-Dateien dazu schon angeschaut, habe den Namen aber nirgends gefunden...
Viele Grüße
Cherup
ich muss mein altes Thema mal wieder ausgraben. Ich habe wieder angefangen XTC zu zocken und möchte auch das Skript einsetzen (bin großer Mining-Fan ^.^). Jetzt habe ich festgestellt, dass das ja etwas Probleme macht.
Es wird nach wie vor die 2.kleinste Stufe nicht bzw. nur sehr selten angegriffen. Ich habe aus praktischen Gründen das Skript vom MBS zur PBK geändert.
Ich sitze gerade in meiner Hyperion und stehe quasi direkt vor ein paar entsprechenden Kleinasteroiden. Nur ein paar Meter und ich würde sie rammen . Trotzdem werden sie nicht angegriffen.
Weiß jemand eine Lösung dafür? Die Größeren werden alle ohne Probleme zerstört, aber die kleineren eben nicht.
Kann man das Skript dahingehend ändern, dass das Ziel der Turrets automatisch als Spieler-Target gesetzt wird? Das würde vllt helfen, damit man an die entsprechenden Brocken ranfliegen kann...
Und eine letzte Frage noch: Wie kann ich den Namen des Befehls ändern? Ich habe mir die XML-Dateien dazu schon angeschaut, habe den Namen aber nirgends gefunden...
Viele Grüße
Cherup
- ubuntufreakdragon
- Posts: 5195
- Joined: Thu, 23. Jun 11, 14:57
Hmmm dann klauen wir mal n paar Links aus JSDDs Sig:
http://cycrow.thexuniverse.us/scripts/help/index.html
@Commandname:
http://cycrow.thexuniverse.us/scripts/h ... mmand.html
@Spielerziel:
set player tracking aim to <RefObj> //fly-coms
http://cycrow.thexuniverse.us/scripts/help/index.html
@Commandname:
http://cycrow.thexuniverse.us/scripts/h ... mmand.html
@Spielerziel:
set player tracking aim to <RefObj> //fly-coms
My X3 Mods
XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist
XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist
... lustige idee, also das mit dem "spieler-ziel setzen", vor allem wenn man bedenkt, dass ein schiff mehrere turrets hat
... um deinem script nen namen zu geben:
--> erstelle eine text-file, in der du bei pageID 2008 (name im SE) / 2010 (name) / 2011 (kürzel) / 2022 (beschreibung) einträge für deinen gewählten kommandoslot machst
--> wähle deinen kommandoslot im script in der 3 zeile (unter den argumenten, da wo der scriptname steht) aus
--> lass deine text-file via setup laden
... siehe hierzu die ubuntu-links
... um deinem script nen namen zu geben:
--> erstelle eine text-file, in der du bei pageID 2008 (name im SE) / 2010 (name) / 2011 (kürzel) / 2022 (beschreibung) einträge für deinen gewählten kommandoslot machst
--> wähle deinen kommandoslot im script in der 3 zeile (unter den argumenten, da wo der scriptname steht) aus
--> lass deine text-file via setup laden
... siehe hierzu die ubuntu-links
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.
Mission Director Beispiele
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.
Mission Director Beispiele