Script für (zufällig verteilte) Herrenlose Schiffe?
Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators
Script für (zufällig verteilte) Herrenlose Schiffe?
Hallo, da ich mit der Suche nicht fündig werde, frage ich hier mal nach:
Gibt es bereits ein Script, mit dem man herrenlose Schiffe erstellen kann?
Mit dem create ship command bekomme ich einfach keine Schiffe ohne Piloten hin, die man wie früher finden und übernehmen kann
Ich würd mir gern wieder ein paar Schiffchen "verstecken" lassen, weil die Suche früher ganz lustig war
Gibt es bereits ein Script, mit dem man herrenlose Schiffe erstellen kann?
Mit dem create ship command bekomme ich einfach keine Schiffe ohne Piloten hin, die man wie früher finden und übernehmen kann
Ich würd mir gern wieder ein paar Schiffchen "verstecken" lassen, weil die Suche früher ganz lustig war
sollte mit create ship klappen, man braucht nur den richtigen owner (gibt da iirc einen speziell dafür)
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
Hallo UniTrader, danke erstmal für deine schnelle Antwort^^
...nach ein wenig "rumspielen" hab ich mal herrenlose M3 bekommen:
- ich hab nen feindlichen Piloten (Terraner) reingesetzt und ihn beim erstellen im Script zum Schluss gleich wieder aussteigen lassen
Aber weiter reichen meine Fähigkeiten diesbezüglich nicht - wie kann man nun diese Schiffe random in noch unentdeckten Sektoren auf zufälligen Positionen spawnen lassen (z.b. 50km radius ums Zentrum)
Und an welcher Schraube muss ich drehen, damit auch M2 und M1 Schiffe "übernehmbar" werden?
Gruss
...nach ein wenig "rumspielen" hab ich mal herrenlose M3 bekommen:
- ich hab nen feindlichen Piloten (Terraner) reingesetzt und ihn beim erstellen im Script zum Schluss gleich wieder aussteigen lassen
Aber weiter reichen meine Fähigkeiten diesbezüglich nicht - wie kann man nun diese Schiffe random in noch unentdeckten Sektoren auf zufälligen Positionen spawnen lassen (z.b. 50km radius ums Zentrum)
Und an welcher Schraube muss ich drehen, damit auch M2 und M1 Schiffe "übernehmbar" werden?
Gruss
kurzum wäre der Code sowas (Code aus der erinnerung geschrieben; Befehle können leicht anders heissen):
start: // define label
* Zufälligen Sektor im Uni auswählen (wird so lange wiederholt, bis ein gültiges Koordinatenpaar raus kommt)
$SecX = get max universe x index
$SecX = random value from 0 to $SecX - 1
$SecY = get max universe y index
$SecY = random value from 0 to $SecY - 1
$Sector = get Sectro from Universe Index: x= $SecX y=$SecY
do if $Sector -> exists
| * Ein Schiff an einer zufälligen Position im gefundenen Sektor spawnen
| $X = random value from -50000 to 50001 - 1
| $Y = random value from -50000 to 50001 - 1
| $Z = random value from -50000 to 50001 - 1
| $Ship = create ship: type=<Var/Ship> owner= <Var/Race> addto=$Sector x=$X y=$Y z=$Z
| * Alles weitere was du mit dem Schiff machen willst
else
| * Sektor nicht Existent; nochmal probieren
| goto label start
end
start: // define label
* Zufälligen Sektor im Uni auswählen (wird so lange wiederholt, bis ein gültiges Koordinatenpaar raus kommt)
$SecX = get max universe x index
$SecX = random value from 0 to $SecX - 1
$SecY = get max universe y index
$SecY = random value from 0 to $SecY - 1
$Sector = get Sectro from Universe Index: x= $SecX y=$SecY
do if $Sector -> exists
| * Ein Schiff an einer zufälligen Position im gefundenen Sektor spawnen
| $X = random value from -50000 to 50001 - 1
| $Y = random value from -50000 to 50001 - 1
| $Z = random value from -50000 to 50001 - 1
| $Ship = create ship: type=<Var/Ship> owner= <Var/Race> addto=$Sector x=$X y=$Y z=$Z
| * Alles weitere was du mit dem Schiff machen willst
else
| * Sektor nicht Existent; nochmal probieren
| goto label start
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
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
bei race muss man "Neutral Race" nehmen
afaik geht das erstellen herrenloser schiffe aber nur bei kleinen schiffen, bigships müssen anders erstellt werden (z.B. nach erstellen pilot aussteigen lassen o.ä.)
via MD bekomm ich's hin, einfach explizit capturable=1 setzen, via script hab ich noch nicht getestet ...
(nachdem man dieses capturable=1 gesetzt hat, lässt sich das schiff im raumanzug übernehmen wie beim goner TLS)
hier noch n link
afaik geht das erstellen herrenloser schiffe aber nur bei kleinen schiffen, bigships müssen anders erstellt werden (z.B. nach erstellen pilot aussteigen lassen o.ä.)
via MD bekomm ich's hin, einfach explizit capturable=1 setzen, via script hab ich noch nicht getestet ...
(nachdem man dieses capturable=1 gesetzt hat, lässt sich das schiff im raumanzug übernehmen wie beim goner TLS)
hier noch n link
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
MD = mission director, grob gesagt ne alternative zum SE (script editor), die schwerpunktmäßig zum erstellen von plots genutzt wird
vorteil: die befehle sind meist etwas genauer beschreibbar
nachteil: eine gewöhnungsbedürftige syntax
beispielcode:
so wollte ich die gleiche geschichte umsetzen ...
vorteil: die befehle sind meist etwas genauer beschreibbar
nachteil: eine gewöhnungsbedürftige syntax
beispielcode:
Code: Select all
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">
<!--
Abandoned Ship Spawner:
>>> to make also capital ships capturable
-->
<cues>
<cue version="1" name="ABS_System_Instance" instantiate="static" delay="15m">
<cues>
<cue ref="ABS_System"/>
</cues>
</cue>
<cue version="1" library="1" name="ABS_System">
<action>
<do_all>
<set_value name="ABS_System.Race" exact="{random.race@default|pirategroup|terran}"/>
<set_value name="ABS_System.SubRace" exact="{random.race@default}"/>
<set_value name="ABS_System.Class" exact="{random.class@m1|m2|m3|m4|m5|m6|m7|m8|tl|tm|ts|tp}"/>
<find_sector name="ABS_System.Sector" sector="{player.sector}" min="1" max="3"/>
<do_if value="{sector.exists@ABS_System.Sector}" exact="0">
<cancel_cue cue="ABS_System"/>
</do_if>
</do_all>
</action>
<cues>
<cue version="1" ref="SRST">
<params>
<param name="Race ID" value="{value@ABS_System.Race}"/>
<param name="Subrace ID" value="{value@ABS_System.SubRace}"/>
<param name="Class ID" value="{value@ABS_System.Class}"/>
<param name="Cue" value="ABS_System"/>
<param name="CancelCue" value="SRST"/>
<param name="Shiptype Address" value="ABS_System.ShipType"/>
<param name="Include M1P" value="1"/>
<param name="Include M2P" value="1"/>
<param name="Include M3P" value="1"/>
<param name="Include M4P" value="1"/>
<param name="Include M5P" value="1"/>
<param name="Include M6M" value="1"/>
<param name="Include M7M" value="1"/>
<param name="Include Unique" value="1"/>
</params>
</cue>
<cue version="1" name="ABS_System_SelectShip">
<condition>
<check_all>
<cue_cancelled cue="SRST"/>
</check_all>
</condition>
<action>
<do_all>
<do_choose>
<do_when value="{value@ABS_System.ShipType}" exact="0">
<cancel_cue cue="ABS_System"/>
</do_when>
<do_otherwise>
<create_ship name="ABS_System.Ship" typename="{value@ABS_System.ShipType}" race="neutral" capturable="1">
<position x="0" y="0" z="0" min="50km" max="100km"/>
<sector sector="ABS_System.Sector"/>
</create_ship>
<do_choose>
<do_when value="{object.exists@ABS_System.Ship}" exact="0">
<remove_object object="ABS_System.Ship"/>
<cancel_cue cue="ABS_System"/>
</do_when>
<do_when value="{object.type@ABS_System.Ship}" exact="{lookup.type@SS_SH_A_TL}">
<destroy_object object="ABS_System.Ship" explosion="0"/>
<cancel_cue cue="ABS_System"/>
</do_when>
<do_otherwise>
<run_script task="1" script="JSDD.MD.ABS.Ship.Created">
<scriptargs>
<scriptvalue datatype="ship" datavalue="{object@ABS_System.Ship}"/>
</scriptargs>
</run_script>
<set_hull object="ABS_System.Ship" min="5" max="30"/>
<remove_object object="ABS_System.Ship"/>
<cancel_cue cue="ABS_System"/>
</do_otherwise>
</do_choose>
</do_otherwise>
</do_choose>
</do_all>
</action>
</cue>
</cues>
</cue>
</cues>
</director>
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
... nicht ganz ... stell dir vor, du spielst sagen wir mal 2 ingame-tage:
2d * 24 h/d * 60min/h * 1ship/15min = 192 ships
nach 2 ingame-tagen wurden also 192 schiffe erstellt ... ist ne ziemliche menge !!
=> cleanup muss her
diese 1ship/15min kommt aus der zeile
<cue version="1" name="ABS_System_Instance" instantiate="static" delay="15m">
...ggf deinen vorstellungen entprechend anpassen
erstell n script (im script editor), nenn es "wasweisdennich.zeitbombe", ersetze "JSDD.MD.ABS.Ship.Created" durch "wasweisdennich.zeitbombe"
dieses script soll folgendes tun:
1. warte ne weile
2. teste ob schiff mittlerweile spieler gehört
3. wenn nicht, zerstöre schiff
außerdem lösche:
ersetze:
durch folgenden 1zeiler: (EDIT: code verbessert)
in deinem script "wasweisdennich.zeitbombe" kannst du mit der konstanten [THIS] arbeiten, welches das schiff entspricht
vereinfacht könnte das so aussehen:
ansonsten ... jepp, einfach den text in ne xml reinkopieren & file in den ordner \director\
ausführen brauchst du da nix, md-files führen sich selbstständig automatisch aus
ps:
<position x="0" y="0" z="0" min="50km" max="100km"/>
bedeutet mindestens 50km maximal 100km entfernt von sektormitte wird schiff gespawnt
=> lieber etwas verkleinern statt vergeblich zu suchen
<set_hull object="ABS_System.Ship" min="5" max="30"/>
setzt die schiffshülle auf 5% .. 30% (soll ja n wrack sein)
falls es dir nicht passt, dass auch m1/m2 etc gespawnt werden:
<set_value name="ABS_System.Class" exact="{random.class@m1|m2|m3|m4|m5|m6|m7|m8|tl|tm|ts|tp}"/>
hier ggf klasse löschen
2d * 24 h/d * 60min/h * 1ship/15min = 192 ships
nach 2 ingame-tagen wurden also 192 schiffe erstellt ... ist ne ziemliche menge !!
=> cleanup muss her
diese 1ship/15min kommt aus der zeile
<cue version="1" name="ABS_System_Instance" instantiate="static" delay="15m">
...ggf deinen vorstellungen entprechend anpassen
erstell n script (im script editor), nenn es "wasweisdennich.zeitbombe", ersetze "JSDD.MD.ABS.Ship.Created" durch "wasweisdennich.zeitbombe"
dieses script soll folgendes tun:
1. warte ne weile
2. teste ob schiff mittlerweile spieler gehört
3. wenn nicht, zerstöre schiff
außerdem lösche:
Code: Select all
<param name="Include M1P" value="1"/>
<param name="Include M2P" value="1"/>
<param name="Include Unique" value="1"/>
Code: Select all
<run_script task="1" script="wasweisdennich.zeitbombe">
<scriptargs>
<scriptvalue datatype="ship" datavalue="{object@ABS_System.Ship}"/>
</scriptargs>
</run_script>
Code: Select all
<run_script task="1" taskid="7777" object="{object@ABS_System.Ship}" script="wasweisdennich.zeitbombe"/>
vereinfacht könnte das so aussehen:
Code: Select all
time = random value from 30 to 120-1
time = time * 60 * 1000
@wait time ms
skip if [OWNER] == Player
... [THIS] -> jump out of existence
return null
ausführen brauchst du da nix, md-files führen sich selbstständig automatisch aus
ps:
<position x="0" y="0" z="0" min="50km" max="100km"/>
bedeutet mindestens 50km maximal 100km entfernt von sektormitte wird schiff gespawnt
=> lieber etwas verkleinern statt vergeblich zu suchen
<set_hull object="ABS_System.Ship" min="5" max="30"/>
setzt die schiffshülle auf 5% .. 30% (soll ja n wrack sein)
falls es dir nicht passt, dass auch m1/m2 etc gespawnt werden:
<set_value name="ABS_System.Class" exact="{random.class@m1|m2|m3|m4|m5|m6|m7|m8|tl|tm|ts|tp}"/>
hier ggf klasse löschen
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
Code: Select all
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">
<cues>
<cue name="hghgxcfxcgmfkjhnj">
<action>
<do_all>
<find_sector name="this.sector" min="1" max="99"/>
<do_if value="{sector.exists@this.sector}" exact="1">
<create_ship name="this.ship" typename="SS_SH_A_M1" race="neutral" capturable="1">
<position x="0" y="0" z="0" min="40km" max="60km"/>
<sector sector="this.sector"/>
</create_ship>
<incoming_message text="... {object.type.name@this.ship} created in sector {object.sector.name@this.ship}..." popup="1"/>
<remove_object object="this.ship"/>
</do_if>
<remove_sector sector="this.sector"/>
<cancel_cue cue="hghgxcfxcgmfkjhnj"/>
</do_all>
</action>
</cue>
</cues>
</director>
// nach erfolgreichem testen einfach die <incoming_message> zeile löschen
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
Perfekt!
Funktioniert super, vielen, vielen Dank^^
...zusammen mit den gemoddeten Strahlenwaffen, die jetzt wie lange Lichtschwerter aussehen, macht X3 wieder richtig gut Laune
Jetzt muss ich mir nur noch anschauen, wie ich die Texturen bei den Schiffen "tauschen" kann, damit ein paar ältere (Mod)Schiffe wieder in neuem Glanz erstrahlen
Funktioniert super, vielen, vielen Dank^^
...zusammen mit den gemoddeten Strahlenwaffen, die jetzt wie lange Lichtschwerter aussehen, macht X3 wieder richtig gut Laune
Jetzt muss ich mir nur noch anschauen, wie ich die Texturen bei den Schiffen "tauschen" kann, damit ein paar ältere (Mod)Schiffe wieder in neuem Glanz erstrahlen