[DISKUSSION] Allgemeine MD-Fragen
Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators
-
- Moderator (Script&Mod)
- Posts: 14571
- Joined: Sun, 20. Nov 05, 22:45
ah, ums mapping gehts.. wenn ich mich recht erinnere werden stationen entweder mit den Produkten/Ressourcen/Waren ausgestattet, die in der Map direkt definiert sind (hat vorrang, wird bei allen Stationen mit abweichendem Sortiment verwendet) oder die waren werden aus der WareTemplate.xml genommen (falls nicht in der map definiert). Wenn es beides nicht gibt bleibt die Station leer..
Da Piratenbasen iirc immer nen anderes Sortiment haben gibt es kein Template für diese, es muss also in der map definiert werden (ich glaube der GE hatte ne entsprechende funktion, wenn nicht einfach nen Script im SE erstellen, was diese Waren einfügt und die Map speichern)
Da Piratenbasen iirc immer nen anderes Sortiment haben gibt es kein Template für diese, es muss also in der map definiert werden (ich glaube der GE hatte ne entsprechende funktion, wenn nicht einfach nen Script im SE erstellen, was diese Waren einfügt und die Map speichern)
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
-
- Posts: 859
- Joined: Mon, 13. Feb 12, 17:23
Ich danke Dir für die schnelle Antwort.
Inzwischen habe ich schon im Galaxie Editor nachgeschaut. Die Station war wie erwartet leer. Die Waren und Produkte, die ich eingefügt habe sind dann wie erwartet erst nach einem Neustart sichtbar geworden.
Da werden sich die Piloten aber “freuen”.
Inzwischen habe ich schon im Galaxie Editor nachgeschaut. Die Station war wie erwartet leer. Die Waren und Produkte, die ich eingefügt habe sind dann wie erwartet erst nach einem Neustart sichtbar geworden.
Da werden sich die Piloten aber “freuen”.
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
-
- EGOSOFT
- Posts: 11887
- Joined: Fri, 21. May 04, 17:15
Map Änderungen benötigen immer ein Neustart. Deswegen nutzt mach den MD um ds zu umgehen.
Man erstellt ne map wo es die Objekte drin sind die man updaten will, und nutzt den load_map Befehl um die Datei zu laden, dabei achten das man Objekte nur HINZUFÜGEN kann, alle bestehende Objekte bleiben zuzüglich da.
MFG
Ketraar
PS. man kann am ende des Shady Business Plots nach gucken wie so was geht.
Man erstellt ne map wo es die Objekte drin sind die man updaten will, und nutzt den load_map Befehl um die Datei zu laden, dabei achten das man Objekte nur HINZUFÜGEN kann, alle bestehende Objekte bleiben zuzüglich da.
MFG
Ketraar
PS. man kann am ende des Shady Business Plots nach gucken wie so was geht.
-
- Posts: 859
- Joined: Mon, 13. Feb 12, 17:23
Ich danke Dir, für Deinen Einwurf.
Das klingt interessant. Dann werde ich mir das im Shady Business Plot mal anschauen. Vielleicht ist da noch was zu retten.
mfG
Das klingt interessant. Dann werde ich mir das im Shady Business Plot mal anschauen. Vielleicht ist da noch was zu retten.
mfG
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
-
- Posts: 1386
- Joined: Sat, 20. Feb 10, 17:47
ich möchte in einem MD Script das Turret eines (schon existierenden) Frachters dazu bringen, auf feindliche Schiffe zu feuern. Leider bringt die reine Feindeinstellung...
... das Turret nicht dazu zu feuern, so lange ich als Player nicht als erstes schieße.
Der Befehl ...
...führt aber leider dazu, dass der Frachter auch sein ursprüngliches Ziel vergisst und dem Spielerschiff hinterherfliegt - das soll es aber nicht.
Wie kann ich nur die Turrets auf "Vernichte Feinde" stellen, ohne das ganze Schiff angreifen zu lassen?[/code]
Code: Select all
<set_relation object="TRPRSC101.A2 JonFerco Contractor">
<relation object="{player.ship}" relation="enemy" mutual="1"/>
</set_relation>
Der Befehl ...
Code: Select all
<set_command object="TRPRSC101.A2 JonFerco Contractor" command="attack" commandobject="{player.ship}"/>
Wie kann ich nur die Turrets auf "Vernichte Feinde" stellen, ohne das ganze Schiff angreifen zu lassen?[/code]
-
- Posts: 5203
- Joined: Thu, 23. Jun 11, 14:57
Die turret comands sind SE scripte auf den task ids 1-6
dann baust du dir noch ein script, das heist run.turret.killenemies.std
und startet !turret.killenemies.std auf allen turrets des als argument übergebenen schiffes.
so grob sähe das aus, !grob! musst noch etwas arbeit investieren.
Code: Select all
<run_script script="run.turret.killenemies.std" taskid="1">
<scriptvalue datatype="object" datavalue="{object@TRPRSC101.A2 JonFerco Contractor}
</run_script>
und startet !turret.killenemies.std auf allen turrets des als argument übergebenen schiffes.
so grob sähe das aus, !grob! musst noch etwas arbeit investieren.
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
-
- Posts: 859
- Joined: Mon, 13. Feb 12, 17:23
So ein ähnliches Problem habe ich auch. Ich möchte per Skript ein Turret auf Raketenabwehr einstellen. Es ist mir aber nicht gelungen, dafür einen geeigneten Skriptbefehl zu finden.Aldebaran_Prime wrote:ich möchte in einem MD Script das Turret eines (schon existierenden) Frachters dazu bringen, auf feindliche Schiffe zu feuern. Leider bringt die reine Feindeinstellung...... das Turret nicht dazu zu feuern, so lange ich als Player nicht als erstes schieße.Code: Select all
<set_relation object="TRPRSC101.A2 JonFerco Contractor"> <relation object="{player.ship}" relation="enemy" mutual="1"/> </set_relation>
Der Befehl ......führt aber leider dazu, dass der Frachter auch sein ursprüngliches Ziel vergisst und dem Spielerschiff hinterherfliegt - das soll es aber nicht.Code: Select all
<set_command object="TRPRSC101.A2 JonFerco Contractor" command="attack" commandobject="{player.ship}"/>
Wie kann ich nur die Turrets auf "Vernichte Feinde" stellen, ohne das ganze Schiff angreifen zu lassen?[/code]
Solltest du eine Lösung finden, würde ich sie gerne sehen wollen.
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
-
- Posts: 5203
- Joined: Thu, 23. Jun 11, 14:57
ds Problem ist, dass es eine weile her ist, das ich mit MD/SE interaktion gebastelt habe.
ziel ist es jedenfalls auf den task ids 1-6 des schiffes die turret scripts zu starten.
da ich nicht weiß wie man im MD rauskriegt wie viele turrets ein schiff hat würde ich ein SE script starten, welches dann die turretcomands startet.
Also brauchen wir ein paar dinge:
- den namen des gewünschten turret scripts Thereshallbewings im SE die additional infos anwerfen passendes komando(per komandozeile) auf nem schiff starten in die info gehen und schauen, was auf task 1-6 am boden des stacks läuft.
- ein script, welches die commands startet:
- und ein mdstatement was das script startet und hier weiß ich nicht mehr genau wie das run_script ging.
ziel ist es jedenfalls auf den task ids 1-6 des schiffes die turret scripts zu starten.
da ich nicht weiß wie man im MD rauskriegt wie viele turrets ein schiff hat würde ich ein SE script starten, welches dann die turretcomands startet.
Also brauchen wir ein paar dinge:
- den namen des gewünschten turret scripts Thereshallbewings im SE die additional infos anwerfen passendes komando(per komandozeile) auf nem schiff starten in die info gehen und schauen, was auf task 1-6 am boden des stacks läuft.
- ein script, welches die commands startet:
Code: Select all
args: $ship
$length = 1
while $length <= 6
$slots = $ship -> get max. number of lasers in turret $length
if not $slots
inc $length =
continue
end
$missile.turret = [FALSE]
$slots = $ship -> get compatible laser array: turret=$length
skip if size of array $slots
$missile.turret = [TRUE]
$ship ->start task $length with script '!turret.missiledefense.std' and prio 0: arg1=null arg2=null arg3=null arg4=null arg5=null
inc $length =
end
Last edited by ubuntufreakdragon on Mon, 6. Feb 17, 12:51, edited 1 time in total.
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
-
- Posts: 1386
- Joined: Sat, 20. Feb 10, 17:47
Also wenn ich Dein Script in das X-Studio eingebe, wirft es ein paar Fehler. Mit den Boolschen Variablen in ' ' und statt "start task" "Begin task" meckert er nicht mehr.
1. Muss der Übergabeparameter des Scripts einen bestimmten Typ bekommen? Standard ist ja "Value", es gibt aber auch den Typ "var/ship"
2. In einem Codea-Script habe ich zudem gefunden, dass arg1=$TurretID gesetzt wurde - müssen wir das auch? also in unserem Fall: $length
Code: Select all
$length = 1
while $length <= 6
$slots = $ship -> get max. number of lasers in turret $length
if not $slots
inc $length
continue
end
$missile.turret = 'FALSE'
$slots = $ship -> get compatible laser array: turret=$length
skip if size of array $slots
$missile.turret = 'TRUE'
$ship ->begin task $length with script '!turret.missiledefense.std' and priority 0: arg1=null arg2=null arg3=null arg4=null arg5=null
inc $length
end
return null
2. In einem Codea-Script habe ich zudem gefunden, dass arg1=$TurretID gesetzt wurde - müssen wir das auch? also in unserem Fall: $length
Code: Select all
[THIS]-> begin task $TurretID with script '!turret.killenemies.std' and priority 0: arg1=$TurretID arg2=null arg3=null arg4=null arg5=null
-
- Posts: 5203
- Joined: Thu, 23. Jun 11, 14:57
was externe Editoren betrifft hab ich keine Ahnung das ganz stammt aber 1zu1 kopiert aus der Webansicht eines funktionierenden Scripts mit geänderten variablen. In der Befehlübersicht heißt es auch Start und nicht Begin
ob Scripte ein Argument verlangen muss für jedes Script einzeln nachgeschaut werden, !turret.missiledefense.std braucht wohl keines sonst stünde das nicht so in einem getesteten Script.
Der Typ eines Argumentes ist Schall und Rauch und wird nur für die manuelle Ausführung per r drücken benötigt, im normalen betrieb sind das alles Blackbox Variablen.(man kann einer Var/Number locker ein Array of Arrays of ships füttern z.b.)
ob Scripte ein Argument verlangen muss für jedes Script einzeln nachgeschaut werden, !turret.missiledefense.std braucht wohl keines sonst stünde das nicht so in einem getesteten Script.
Der Typ eines Argumentes ist Schall und Rauch und wird nur für die manuelle Ausführung per r drücken benötigt, im normalen betrieb sind das alles Blackbox Variablen.(man kann einer Var/Number locker ein Array of Arrays of ships füttern z.b.)
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
-
- Posts: 1386
- Joined: Sat, 20. Feb 10, 17:47
bei AP ist der MD Befehl etwas aufgebohrt und wie folgt definiert:
Wenn das Schiff definitiv nur ein turret hat, könnte ich dann nicht auch direkt aus dem MD heraus auf dem Schiff das Script !turret.killenemies.std starten? etwa so:
Das habe ich gerade versucht, man kann sich auch ansehen, dass nun auf dem Schiff das killenemies Script unter taskid 1 ausgeführt wird. Dann stelle ich aber fest, dass auf dem Schiff die PID des Prozesses laufend größer wird, als wenn das Script sich dauernd beendet und wieder neu gestartet wird. Feuern tut es auch nicht...
Code: Select all
<run_script> Startet Script
task booleanexpression Starte Aktion als neuen Task?
chance expression Prozentuale (oder gewichtete wenn in <do_any>) Chance das die Aktion ausgeführt wird (wenn nicht wird die Aktion übersprungen)
comment string Kommentar - Zusätzliche Beschreibung ohne Einfluß auf das Spiel
script script Name des Scripts
object object Objekt auf dem das Script laufen soll (läuft Global wenn nicht angegeben) - Name des Objekts
taskid expression Script Task ID (benutzt task 0 wenn nicht angegeben)
<scriptargs> Script Argumente
comment string Kommentar - Zusätzliche Beschreibung ohne Einfluß auf das Spiel
<scriptvalue> Script Wert - Erforderlich - mehrere
datatype datatype Datentyp des Wertes
datavalue string Script Wert (nicht benutzt wenn Datentype='array')
comment string Kommentar - Zusätzliche Beschreibung ohne Einfluß auf das Spiel
<scriptarray> Array daten (nur Datentyp='array')
<scriptvalue> Script Wert - Erforderlich - mehrere
Code: Select all
<run_script script="!turret.killenemies.std" object = "{object@TRPRSC101.A2 JonFerco Contractor}" taskid="1">
<scriptargs>
<scriptvalue datatype="integer" datavalue="1"/>
</scriptargs>
</run_script>
-
- EGOSOFT
- Posts: 11887
- Joined: Fri, 21. May 04, 17:15
-
- Posts: 859
- Joined: Mon, 13. Feb 12, 17:23
Ich habe vom MD ein Skript aufgerufen, das eine Station errichten sollte.
Dieses Skript wiederholte sich auch viele Male. Im Sektor entstanden viele Stationen.
Erst, als ich eine Abfrage an den Anfang stellte, war das Problem gelöst.
Die Abfrage war in etwa: „wenn die Station nicht existiert, dann führe aus.“
Dieses Skript wiederholte sich auch viele Male. Im Sektor entstanden viele Stationen.
Erst, als ich eine Abfrage an den Anfang stellte, war das Problem gelöst.
Die Abfrage war in etwa: „wenn die Station nicht existiert, dann führe aus.“
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
-
- Posts: 1386
- Joined: Sat, 20. Feb 10, 17:47
Es geht doch ohne zusätzliches MSCI Script - ich habe nur den Parameter Task="1" vergessen. Das hat dazu geführt, dass auf dem Schiff das Script dauernd neu gestartet wurde.
SO geht es, aber eben nur, wenn das Schiff nur ein Turret hat:
SO geht es, aber eben nur, wenn das Schiff nur ein Turret hat:
Code: Select all
<set_relation object="TRPRSC101.A2 JonFerco Contractor">
<relation object="{player.ship}" relation="enemy" mutual="1"/>
</set_relation>
<run_script script="!turret.killenemies.std" object = "{object@TRPRSC101.A2 JonFerco Contractor}" task="1" taskid="1">
<scriptargs>
<scriptvalue datatype="integer" datavalue="1"/>
</scriptargs>
</run_script>
-
- EGOSOFT
- Posts: 11887
- Joined: Fri, 21. May 04, 17:15
-
- Posts: 58
- Joined: Tue, 30. Oct 07, 16:57
-
- Posts: 5203
- Joined: Thu, 23. Jun 11, 14:57
@zorry such im Übersichtsthema http://forum.egosoft.com/viewtopic.php?t=216571
@Aldebaran_Prime mein SE script macht alles was es braucht, mir fehlt nur der md start@Ketraar das script kann global oder local ausgeführt werden und erwartet genau ein Argument(das schiff, auf dem die Turrets aktiviert werden sollen), kannst du mir den run_script statement basteln? Edit also etwa so: Läuft das ganze dann global oder auf einem objekt?
@Aldebaran_Prime mein SE script macht alles was es braucht, mir fehlt nur der md start
Code: Select all
script: start.missile.defence args: $ship
$length = 1
while $length <= 6
$slots = $ship -> get max. number of lasers in turret $length
if not $slots
inc $length =
continue
end
$missile.turret = [FALSE]
$slots = $ship -> get compatible laser array: turret=$length
skip if size of array $slots
$missile.turret = [TRUE]
$ship ->start task $length with script '!turret.missiledefense.std' and prio 0: arg1=null arg2=null arg3=null arg4=null arg5=null
inc $length =
end
Code: Select all
<run_script script="start.missile.defence">
<scriptargs>
<scriptvalue datatype="ship" datavalue="theshipgoeshere"/>
</scriptargs>
</run_script>
Last edited by ubuntufreakdragon on Fri, 10. Feb 17, 00:43, edited 3 times in total.
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
-
- EGOSOFT
- Posts: 11887
- Joined: Fri, 21. May 04, 17:15
Code: Select all
<cue name="mycue">
<condition>
<!--add conditions to trigger here-->
</condition>
<action>
<do_all>
<run_script script="name of script goes here">
<scriptargs>
<scriptvalue datatype="integer" datavalue=""/>
<scriptvalue datatype="string" datavalue=""/>
<scriptvalue datatype="ship" datavalue=""/>
<scriptvalue datatype="station" datavalue=""/>
<scriptvalue datatype="object" datavalue=""/>
<scriptvalue datatype="array" datavalue=""/>
</scriptargs>
</run_script>
</do_all>
</action>
</cue>
MFG
Ketraar
-
- Posts: 1378
- Joined: Fri, 21. Mar 14, 20:51
da gibts nochwas zubeachten:
der task="1" parameter war (bei mir zumindest) nötig, damit man das script "entkoppelt" startet, sonst spinnte der MD rum wenn das zu startende script nicht sofort return-t, ist dann praktisch dasselbe wie:
task="1" bewirkt, was im script editor der START prefix bewirkt
wie gesagt: task="1" is wichtig, sonst spinnt der md rum (wenn ich mich recht erinner' startete er sonst das script tausendfach hintereinander o.ä. ...)
global startet das script, wenn du niix beim "object" parameter setzt (oder das gesetzte object nicht existiert)
lokal startet das script, wenn du object="{value@...referenz_zum_object...}" setzt, guck dir unser OBS stuff nochmal an
http://forum.dvbtechnics.info/showthread.php?t=31743
das startet das script "plugin.adv.OBS.equipment" auf dem schiff" {param@OBS Cue}.Temp Ship" auf task 7777 (unwichtiger / unbenutzter task), & zwar OHNE zu blockieren (d.h. task="1" ist gesetzt)
Code: Select all
<run_script task="1" ... etc pp ...
Code: Select all
START null -> call script: ... etc pp ...
heiß zwar nich' Ketraar, aber was soll's ( )ubuntufreakdragon wrote:@Ketraar das script kann global oder local ausgeführt werden und erwartet genau ein Argument(das schiff, auf dem die Turrets aktiviert werden sollen), kannst du mir den run_script statement basteln? Edit also etwa so:Läuft das ganze dann global oder auf einem objekt?Code: Select all
<run_script script="start.missile.defence"> <scriptargs> <scriptvalue datatype="ship" datavalue="theshipgoeshere"/> </scriptargs> </run_script>
wie gesagt: task="1" is wichtig, sonst spinnt der md rum (wenn ich mich recht erinner' startete er sonst das script tausendfach hintereinander o.ä. ...)
global startet das script, wenn du niix beim "object" parameter setzt (oder das gesetzte object nicht existiert)
lokal startet das script, wenn du object="{value@...referenz_zum_object...}" setzt, guck dir unser OBS stuff nochmal an
http://forum.dvbtechnics.info/showthread.php?t=31743
Code: Select all
<run_script script="plugin.adv.OBS.equipment" object="{param@OBS Cue}.Temp Ship" task="1" taskid="7777"></run_script>
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