[DISKUSSION] Allgemeine MD-Fragen

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

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

User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Folgender Code funktioniert nicht so wirklich. Er soll eine Station ersetzen, die vorher zerstört wurde. Die Condition funktioniert auch, nur irgendwie scheint das mit dem {event.object} nicht hinzuhauen.

Code: Select all

        <cue name="WR_CreateStations_Destroyed" comment="Get destroyed station and replace it">
          <condition>
            <check_any>
              <any_object_destroyed group="parent.stations"/>
              <any_object_destroyed_by_player group="parent.stations"/>
            </check_any>
          </condition>
          <timing>
            <time exact="5s"/>
          </timing>
          <action>
            <do_all>
              <incoming_message author="DEBUG" text="Station destroyed: {object.name@{event.object}}"/>
              <create_station name="this.station" group="parent.stations" typename="{object.type.name@{event.object}}">
                <position x="{object.position.x@{event.object}}m" y="{object.position.y@{event.object}}m" z="{object.position.z@{event.object}}m"/>
                <sector sector="{object.sector@{event.object}}"/>
                <equipment loadout="default"/>
                <shield exact="{object.maxshields@this.station}"/>
              </create_station>
              <reset_cue cue="WR_CreateStations_Destroyed"/>
            </do_all>
          </action>
        </cue>
Die Debug-Nachricht ist dann so etwas wie "Station destroyed: {object.name@-40923}.

Kann ich überhaupt auf ein zerstörtes Objekt so zugreifen wie ich es hier gemacht habe (z.B. die Positionsangaben)?

MfG,
ScRaT
XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer »

Kann ja auch nicht funktionieren da das Object welches du abfragst ja zu dem Zeitpunkt schon nichtmehr existiert und du daher auch nichtmehr drauf zugreifen kannst. ;)
Du musst wenn du die Stationen das erste mal erstellst / findest die Werte der Station speichern.

Code: Select all

<do_all exact="5">
   <create_station group="this.stations" name="this.tmpObj" typename="SS_DOCK_PIRATE">
      <position max="50km"/>
      <sector sector="{player.sector}"/>
   </create_station>
   <set_value name="this.Station {object@this.tmpObj} XPos" exact="{object.position.x.m@this.tmpObj}"/>
   <set_value name="this.Station {object@this.tmpObj} YPos" exact="{object.position.y.m@this.tmpObj}"/>
   <set_value name="this.Station {object@this.tmpObj} ZPos" exact="{object.position.z.m@this.tmpObj}"/>
</do_all>
dann kannst du später einfach

Code: Select all

<position x="{value@CueName.Station {event.object} XPos}m" y="{value@CueName.Station {event.object} YPos}m" z="{value@CueName.Station {event.object} ZPos}m"/>
machen und es dürfte funktionieren.

Code ohne Garantie und ohne getestet worden zu sein ;)

greetz
XGamer
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.
User avatar
Trickmov
Posts: 1431
Joined: Wed, 7. Nov 07, 19:48
x3tc

Post by Trickmov »

Ich habe auch mal eine Frage, die mir auf den Nägeln brennt:

wenn ich vom MD ein SE-script aufrufe, dann kann ich die scriptargs definieren.

Allerdings scheinen nur folgende datatypes unterstützt zu sein:

integer Integer
string String
ship Ship
station Station
object Object
typename Object typename (from types file)
array Array


Wenn ich jetzt also in meinem SE-Script z.B. einen datatype race oder sector or boolean erwarte, dann geht das irgendwie nicht, oder habe ich etwas übersehen?
XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer »

Race => Integer
Sector => Object
boolean => Integer

ich denke mal damit dürfte es gehn. Bool und Race funzen ziemlich sicher da es ja im grunde auch nur Zahlen sind.

greetz
XGamer
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.
User avatar
Trickmov
Posts: 1431
Joined: Wed, 7. Nov 07, 19:48
x3tc

Post by Trickmov »

Also boolean funktioniert auf jeden Fall so, bei den anderen Sachen muss ich noch rumprobieren, obwohl das für Rasse dann auch nervig ist, wenn man den int-wert erst noch in die richtige Rasse umwandeln muss.

der datatype den das SE-script eigentlich erwartet ist DATATYPE_VALUE... wobei das halt sector oder race oder ein array aus einem von beidem sein kann... naja irgendwie geht das, ist halt nur so, dass ich das SE-script dafür erweitern muss.
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

du musst den Integer nicht erst in ne Rasse umwandeln - verwende den Wert einfach direkt in den Befehlen die die Rasse erwarten ;) und wenn du es in ner Nachricht brauchst lies einfach die entsprechende Stelle aus der t/0001-L049 ;)
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 ;)
User avatar
Trickmov
Posts: 1431
Joined: Wed, 7. Nov 07, 19:48
x3tc

Post by Trickmov »

Also ich bin kein MD-scripter, aber es ist definitiv so, dass in den rassenspezifischen SE-befehlen, oder zumindest in Teilen von diesen nicht irgendwelche integer-werte benutzt werden können und dann auch das richtige Ergebnis rauskommt (zumindest keine Werte zwischen 0 und 4, andere habe ich nicht probiert).

D.h. ich müsste also den vom MD übergebenen Wert durchaus in irgendeiner Form umwandeln. Genauso sieht das übrigens auch bei Sektoren aus... sprich da erhalte ich dann ein Objekt und muss das (wenn es denn überhaupt geht) in einen Sektor umwandeln.

Alles in allem finde ich das wirklich Mist, dass der MD noch nicht einmal die normalen datatypes exportieren kann, immer vorausgesetzt, dass es nicht doch eine Lösung dafür gibt.
User avatar
Jens Ka
Posts: 468
Joined: Thu, 18. Jan 07, 15:32
x4

Post by Jens Ka »

Ich habe zwar nichts mit ES am Hut aber mal mein Senf da zu.
Ich würde es so versuchen:

Code: Select all

<find_sector name="cuename.sector" exact="{player.sector}"/>
          <set_value name="cuename.sectorX" exact="{sector.x@sector}"/>
          <set_value name="cuename.sektorY" exact="{sector.y@sector}"/>
          <set_value name="cuename.race" exact="{lookup.race@argon}"/>
          <run_script>
            <scriptargs>
              <scriptvalue datatype="integer" datavalue="{value@cuename.sectorX}"/>
              <scriptvalue datatype="integer" datavalue="{value@cuename.sectorY}"/>
              <scriptvalue datatype="integer" datavalue="{value@cuename.race}"/>
            </scriptargs>
          </run_script>
Und das in arguments packen. Da sollte es dann denke ich möglich sein aus den 3 Zahlen was zu machen. Ist Theorie

MfG
Jens Ka
MD IST NICHT MSCI!!!!
MD ist Eventdriven. Es passiert etwas - du reagierst darauf.
Bin nicht für weitere Mod Projekte zu haben.
ND VSM XTC
Allgemeine MD-Fragen
User avatar
Trickmov
Posts: 1431
Joined: Wed, 7. Nov 07, 19:48
x3tc

Post by Trickmov »

Code: Select all

            <scriptvalue datatype="integer" datavalue="{value@cuename.race}"/> 
scheint so nicht zu gehen, im SE kommt immer 0 an, egal welche rasse ich dabei wähle...

bei den x/y-werten ist es natürlich so, dass das gehen würde, das kann ich aber leider nicht machen, weil es sich zum einen um ein bereits veröffentliches library-script handelt, dessen Argumente ich nicht mehr einfach so ändern kann, zum anderen ist es auch so, dass dabei bereits die maximale Anzahl an Argumenten vorhanden ist.

D.h. ich habe für Sektor oder Rasse (bzw. Arrays der beiden) noch genau ein Argument zur Verfügung. Wenn das jetzt Array aus integern ist, dann weiss das SE-script nicht, welches jetzt gemeint ist, array von x/y oder Array von zwei Rassen (so es denn geht mit dem race-integer)...


Und natürlich geht das mit Fallunterscheidungen und string-interpretation, das ist aber sowas von nervig :evil:
User avatar
SunBlade
Posts: 43
Joined: Sun, 26. Dec 04, 16:56
x4

Post by SunBlade »

mein script funtzt zwar, ich hab da aber noch ein paar fragen :?:

auszug:

Code: Select all

...
<find_sector name="this.Hub_Sector" x="13" y="8"/>
<do_if value="{sector.race@this.Hub_Sector}" exact="{lookup.race@abandoned}">
  <do_if value="{sector.name@this.Hub_Sector}" exact="{7,1020914}">
    ...
  </do_if>
</do_if>
...
1. kann ich irgendwie auf die TextID vom sektor prüfen? (damit es garantiert keine verwechslungen gibt, "Unbekannter Sektor" taucht ja häufiger auf)

2. kann ich den sektor irgendwie direkt ansprechen ohne vorher eine variable benutzen zu müssen? z.B.: {sector.race@{universe.13.8}} oder {sector.13.8.race} , "this.Hub_Sector" ist die einzigste variable und die brauche ich nur dort

3. gibt es ein nachschlagewerk wo man nachschauen kann, was, wie und wo in die klammern zu setzen ist?

schonmal vielen dank im voraus.
Live your life, you got only one.
XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer »

SunBlade wrote:1. kann ich irgendwie auf die TextID vom sektor prüfen? (damit es garantiert keine verwechslungen gibt, "Unbekannter Sektor" taucht ja häufiger auf)
Jo kannst du und zwar mit

Code: Select all

{sector.name.pageid@sector} -> Page id of the name of the specified sector (for use in voice actions)  
{sector.name.textid@sector} -> Text id of the name of the specified sector (for use in voice actions) 
ich frage mich jedoch wozu du das brauchst / machen möchtest? Die ganzen do_if's in deinem Codeauszug sind überflüssig...

Code: Select all

<find_sector name="this.HubSector" x="13" y="8" exact="0"/>
findet immer und garantiert nur den einen Sektor den du über die x und y Koordinaten angegeben hast. Du kannst höchstens überprüfen ob es den Sektor auch wirklich gibt. Im Grunde ist auch das hinfällig weil du ja wohl kaum ungültige Koordinaten angeben wirst. Wenn du das exact="0" weglässt findet es afaik den Sektor an den angegebenen koordinaten oder (falls nichtexistend) den nächstliegenden Sektor.
SunBlade wrote:2. kann ich den sektor irgendwie direkt ansprechen ohne vorher eine variable benutzen zu müssen? z.B.: {sector.race@{universe.13.8}} oder {sector.13.8.race} , "this.Hub_Sector" ist die einzigste variable und die brauche ich nur dort
Nein.
SunBlade wrote:3. gibt es ein nachschlagewerk wo man nachschauen kann, was, wie und wo in die klammern zu setzen ist?
jo die director.htm im director Ordner.


-----------------------------------------------
Trickmov wrote:

Code: Select all

            <scriptvalue datatype="integer" datavalue="{value@cuename.race}"/> 
scheint so nicht zu gehen, im SE kommt immer 0 an, egal welche rasse ich dabei wähle...
Die Variable sowie die Cue zu der die Variable lokal ist muss natürlich auch existieren damit im SE was anderes als null ankommt.

Edit:
Also ich habs grad mal spasseshalber probiert und es klappt...

Code: Select all

    <cue name="Script Call test" version="1">
      <timing>
        <time exact="30s"/>
      </timing>
      <action>
        <do_all>
          <play_sound soundid="1006"/>
          <set_value name="this.race" exact="{lookup.race@argon}"/>
          <run_script script="Your.Script.Name.here">
            <scriptargs>
              <scriptvalue datatype="integer" datavalue="{value@this.race}"/>
            </scriptargs>
          </run_script>
        </do_all>
      </action>
    </cue>
Im Script habe ich mir das Argument einfach nur in ne Eingehende Nachricht packen lassen und es kommt bei obigem Beispiel ne 1 raus.
Desweiteren ist natürlich zu beachten das du im MD die Argumente der Reihenfolge nach übergeben musst wie sie im SE drinstehen. Das heisst du kannst nicht einfach nur das 5. Argument angeben alle anderen aber weglassen!! Du kannst zwar alle nachfolgenden weglassen, musst aber zwingend alle vorherigen angeben.

greetz
XGamer
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.
User avatar
Trickmov
Posts: 1431
Joined: Wed, 7. Nov 07, 19:48
x3tc

Post by Trickmov »

XGamer wrote:
Trickmov wrote:

Code: Select all

            <scriptvalue datatype="integer" datavalue="{value@cuename.race}"/> 
scheint so nicht zu gehen, im SE kommt immer 0 an, egal welche rasse ich dabei wähle...
Die Variable sowie die Cue zu der die Variable lokal ist muss natürlich auch existieren damit im SE was anderes als null ankommt.

Edit:
Also ich habs grad mal spasseshalber probiert und es klappt...
Ich dachte eigentlich, dass ich die Variable auch richtig zugewiesen hatte... aber wie schon gesagt, ich finde das halt sehr nervig, dass ich dann so oder so noch in mein SE-Script noch eine Interpretations-schleife schreiben muss. Das eigentliche Umgehen dieses Problems war nicht mein ursprüngliches Anliegen. Warum einfach, wenn man es denn auch kompliziert machen könnte.
Dabei geht es mir noch nicht einmal darum, irgendetwas mit dem MD zu programmieren, sondern ich will eigentlich nur die Zusatz-Leistung, die die SE-Library bietet, auch dem MD zur Verfügung stellen. Genau betrachtet steht der Aufwand, der dafür nötig ist, aber in keinem Verhältnis zu dem eventuellen Mehreffekt. Deswegen werde ich mir das wahrscheinlich sparen und die MDler müssen halt darauf verzichten.

Gruß
Trickmov
XGamer
Posts: 2355
Joined: Sun, 25. Apr 04, 19:09
x4

Post by XGamer »

was auch immer diese nicht näher spezifizierte "mehrleistung" auch sein mag...
X:BtF: 7/10 | X2: 8/10 | X3:R/TC/AP: 8/10 | X:R: 3/10 | X4: 0/10 (3 points for split ships and stations, 4.0 -> -50 points).
If you are raising pirate activity, give me meaningful ways to deal with them PERMANENTLY. Better things to do than replacing ships every 10 minutes, or babysitting ships getting harassed.
Stopped playing X4 with 4.0 due to outrageous, needless and pointless nerfs to everything. Don't change what wasn't broken in the first place.
User avatar
SunBlade
Posts: 43
Joined: Sun, 26. Dec 04, 16:56
x4

Post by SunBlade »

der MD is ja einfacher als ich dachte (besonders wenn man den VWD ans laufen bekommt) :D

so, und wieder ein paar fragen :?:

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="SectorRename" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">
 <documentation>
  <author name="SunBlade" alias="SunBlade" contact="Forums"/>
  <content reference="SBSR" name="SectorRename" description="rename the sector once you have the station"/>
  <version number="1.0" date="2009-12-14" status="release"/>
 </documentation>
 <cues>
  <cue name="SBSR init">
   <condition>
    <check_all>
     <cue_exists cue="SBSR init"/>
    </check_all>
   </condition>
   <action>
    <do_all>
     <load_text fileid="9110"/>
     <!--<incoming_message popup="1" author="DEBUG" text="init test"/>-->
     <destroy_cue cue="SBSR init"/>
    </do_all>
   </action>
  </cue>
  <cue name="SBSR PHQ change">
   <condition>
    <check_all>
     <count_stations negate="1" race="player" typename="SS_DOCK_P_HQ" exact="{value@SBSR PHQ Var Count}">
      <sector x="8" y="8"/>
      <jumps min="0" max="999"/>
     </count_stations>
    </check_all>
   </condition>
   <action>
    <do_all>
     <load_text fileid="9110"/>
     <find_station group="this.Stations" multiple="1" typename="SS_DOCK_P_HQ" race="player">
      <sector x="8" y="8"/>
      <jumps min="0" max="999"/>
     </find_station>
     <set_value name="SBSR PHQ Var Count" exact="{group.object.count@this.Stations}"/>

     <!--<incoming_message popup="1" author="DEBUG" text="HQtest begin"/>-->

     <do_all counter="secy" exact="17">
      <do_all counter="secx" exact="21">
       <do_if value="{counter@secy}*100+{counter@secx}" list="117|508|509|608|609|613|621|815|909|914|1019|1119|1604|1608|1708|1711|1719">
        <find_sector name="this.Sector {counter@secx} {counter@secy}" x="{counter@secx}-1" y="{counter@secy}-1"/>
        <find_station group="this.Stations {counter@secx} {counter@secy}" multiple="1" typename="SS_DOCK_P_HQ" race="player">
         <sector sector="this.Sector {counter@secx} {counter@secy}"/>
        </find_station>

        <do_choose>
         <do_when value="{group.object.count@this.Stations {counter@secx} {counter@secy}}" min="1">

          <do_if value="{sector.name.textid@this.Sector {counter@secx} {counter@secy}}" list="{counter@secy}*100+{counter@secx}+1020000|{counter@secy}*100+{counter@secx}+1027000|1029111">
           <do_choose>
            <do_when value="{value@SBSR PHQ Var Count}" min="2">
             <set_sector_override sector="this.Sector {counter@secx} {counter@secy}" textid="{counter@secy}*100+{counter@secx}+1027000"/>
            </do_when>
            <do_otherwise>
             <set_sector_override sector="this.Sector {counter@secx} {counter@secy}" textid="1029111"/>
            </do_otherwise>
           </do_choose>
          </do_if>

          <do_if value="{sector.race@this.Sector {counter@secx} {counter@secy}}" exact="{lookup.race@abandoned}">
           <set_sector_owner sector="this.Sector {counter@secx} {counter@secy}" race="player"/>
          </do_if>

         </do_when>
         <do_otherwise>

          <do_if value="{sector.name.textid@this.Sector {counter@secx} {counter@secy}}" list="{counter@secy}*100+{counter@secx}+1020000|{counter@secy}*100+{counter@secx}+1027000|1029111">
           <set_sector_override sector="this.Sector {counter@secx} {counter@secy}" textid="{counter@secy}*100+{counter@secx}+1020000"/>
          </do_if>

          <find_station group="this.Stations {counter@secx} {counter@secy}" multiple="1" typename="SS_DOCK_HUB|SS_DOCK_P_HQ" race="player">
           <sector sector="this.Sector {counter@secx} {counter@secy}"/>
          </find_station>
          <do_if value="{group.object.count@this.Stations {counter@secx} {counter@secy}}" max="0">
           <do_if value="{sector.race@this.Sector {counter@secx} {counter@secy}}" exact="{lookup.race@player}">
            <set_sector_owner sector="this.Sector {counter@secx} {counter@secy}" race="abandoned"/>
           </do_if>
          </do_if>

         </do_otherwise>
        </do_choose>

        <!--<incoming_message popup="1" author="DEBUG" text="{counter@secx} {counter@secy} {group.object.count@this.Stations {counter@secx} {counter@secy}} {sector.race.name@this.Sector {counter@secx} {counter@secy}} {sector.name@this.Sector {counter@secx} {counter@secy}}"/>-->
       </do_if>
      </do_all>
     </do_all>

     <reset_cue cue="SBSR PHQ change"/>
    </do_all>
   </action>
  </cue>
  <cue name="SBSR Hub change">
   <condition>
    <check_all>
     <count_stations negate="1" race="player" typename="SS_DOCK_HUB" exact="{value@SBSR Hub Var Count}">
      <sector x="13" y="8"/>
     </count_stations>
    </check_all>
   </condition>
   <action>
    <do_all>
     <load_text fileid="9110"/>

     <find_sector name="this.Sector" x="13" y="8"/>

     <find_station group="this.Stations" multiple="1" typename="SS_DOCK_HUB" race="player">
      <sector sector="this.Sector"/>
     </find_station>
     <set_value name="SBSR Hub Var Count" exact="{group.object.count@this.Stations}"/>

     <!--<incoming_message popup="1" author="DEBUG" text="hubtest {group.object.count@this.Stations}"/>-->

     <do_choose>
      <do_when value="{group.object.count@this.Stations}" min="1">

       <do_if value="{sector.race@this.Sector}" exact="{lookup.race@abandoned}">
        <set_sector_owner sector="this.Sector" race="player"/>
       </do_if>
       <do_if value="{sector.name.textid@this.Sector}" list="1020914|1027914|1029110|1029111">
        <set_sector_override sector="this.Sector" textid="1029110"/>
       </do_if>

      </do_when>
      <do_otherwise>

       <find_station group="this.Stations" multiple="1" typename="SS_DOCK_HUB|SS_DOCK_P_HQ" race="player">
        <sector sector="this.Sector"/>
       </find_station>
       <do_if value="{group.object.count@this.Stations}" max="0">
        <do_if value="{sector.race@this.Sector}" exact="{lookup.race@player}">
         <set_sector_owner sector="this.Sector" race="abandoned"/>
        </do_if>
       </do_if>

      </do_otherwise>
     </do_choose>

     <reset_cue cue="SBSR Hub change"/>
    </do_all>
   </action>
  </cue>
 </cues>
</director>

1. kann ich gruppen "entleeren"? andauernd eine neue variable benutzen zu müssen {group.object.count@this.Stations {counter@secx} {counter@secy}} nur um stationen in verschiedenen sektoren durchnummerieren finde ich etwas verschwenderisch. destroy_group entleert mehr als nur die variable :evil: .

2. gibt es eine "einfache" möglichkeit die sektorübername zu verzögern? z.B. daß die HQs 1 tag lang mit min 90% schild stehen bleiben müssen bevor der sektor an den spieler fällt. einmal unter 90% und der counter fängt wieder von vorne an :twisted:

3. funtzt das list attribut bei do_all wirklich nicht oder bin ich nur zu blöd das zu benutzen? einfach nur die liste der sektoren abzurattern währe einfacher als alle sektoren abzugrasen und mit der liste zu vergleichen.

4. ich bekomm die director.htm nich ans laufen. wenn ich die öffne hab ich nur ne schwarze seite mit nen paar formular elementen (search und sort). da kann ich soviel klicken und schreiben wie ich will, tut sich aber nix. muss ich beim firefox noch plugins installieren oder was anschalten, oder hab ich vergessen was auszupacken (hab nur den kompletten director order entpackt)?
Live your life, you got only one.
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

2. gibt es eine "einfache" möglichkeit die sektorübername zu verzögern? z.B. daß die HQs 1 tag lang mit min 90% schild stehen bleiben müssen bevor der sektor an den spieler fällt. einmal unter 90% und der counter fängt wieder von vorne an Twisted Evil
Du könntest mittels der Condition ""object_attacked" einen Angriff auf die Station abfangen. Dazu noch eine Condition die Überprüft, ob der Schildwert unter 90% ist, sowie eine, die überprüft, ob die Zeit schon abgelaufen ist.
Wenn alle Conditions wahr sind, den Counter neu starten.

So würde ich es versuchen. Vielleicht kennen die Experten hier einen besseren Weg.
3. funtzt das list attribut bei do_all wirklich nicht oder bin ich nur zu blöd das zu benutzen?
Meinst du

Code: Select all

<do_all counter="secy" exact="17"> 
?
Das müsste eigentlich dafür sorgen, dass der eingeschlossene Code 17 Mal ausgeführt wird.
4. ich bekomm die director.htm nich ans laufen.
Versuche mal sie mit dem IE zu öffnen. Der Firefox hat bei mir genau die von dir beschriebenen Probleme.

MfG,
ScRaT
User avatar
SunBlade
Posts: 43
Joined: Sun, 26. Dec 04, 16:56
x4

Post by SunBlade »

ScRaT_GER wrote:Meinst du

Code: Select all

<do_all counter="secy" exact="17"> 
Das müsste eigentlich dafür sorgen, dass der eingeschlossene Code 17 Mal ausgeführt wird.
bei exact zählt der den counter ja einfach in einser schritten hoch. ich meinte etwas wie:

Code: Select all

<do_all counter="Cntr" list="0|8|15">
daß der 3 durchläufe macht mit jeweils einmal 0, 8 und 15.
Live your life, you got only one.
User avatar
Ketraar
EGOSOFT
EGOSOFT
Posts: 12164
Joined: Fri, 21. May 04, 17:15
x4

Post by Ketraar »

SunBlade wrote:ich meinte etwas wie:

Code: Select all

<do_all counter="Cntr" list="0|8|15">
daß der 3 durchläufe macht mit jeweils einmal 0, 8 und 15.
naja 0 ist, wie soll ich sagen... komisch :roll:
Aber ansonsten sollte das gehen mit der list.

MFG

Ketraar
Image
User avatar
Jens Ka
Posts: 468
Joined: Thu, 18. Jan 07, 15:32
x4

Post by Jens Ka »

SunBlade wrote:1. kann ich gruppen "entleeren"? andauernd eine neue variable benutzen zu müssen {group.object.count@this.Stations {counter@secx} {counter@secy}} nur um stationen in verschiedenen sektoren durchnummerieren finde ich etwas verschwenderisch. destroy_group entleert mehr als nur die variable Evil or Very Mad .
Das was du suchst ist <remove_group/> damit löst die Gruppe auf, zerstörst aber die Objekte nicht.
ich meinte etwas wie:
Code:
<do_all counter="Cntr" list="0|8|15">
daß der 3 durchläufe macht mit jeweils einmal 0, 8 und 15.
Das was da jetzt passiert ist das eine der 3 zahlen zufällig ausgewählt wird.
um das 3 mal mit 0, 8, 15 zu bekommen ist bisel mehr arbeit nötig.

Code: Select all

<do_all>
            <do_all exact="4">
              ...
            </do_all>
            <do_all exact="8">
              ...
            </do_all>
            <do_all exact="16">
              ...
            </do_all>
          </do_all>
Um jede der drei werte durch laufen zu lasen.Wie gesagt das list ist zufällig kann also 1 mal 4 raus kommen beim nähsten mal 1 mal 8. Es wird also nur eine der drei zahlen abgearbeitet.
Und zur null denke ich das das nur als beispiel gedacht war 0 als counter ist keine gute Idee da sinn frei.

Edit: kommt davon wenn man sowas mit nur 10% Kaffee Level macht. :roll:

Edit2:
Habe mir den code oben mal im VWD angeschaut.
<load_text/> brauchst nur einmal zu laden dann ist gut. :wink:
Denn cue SBSR init kanst dir als toplevel machen dann ergibt er mehr sinn so ist er sinfrei auser um die t file zu laden. Was aber in den beiden anderen auch machst.

Für die condition <cue_exists cue="SBSR init"/> solltest dir Gedanken um was sinnigeres machen. Vorschlag von mir wäre
<check_age min="10s"/>

So wie ich das ganze sehe läuft das rund wird also im Millisekunden takt durch gebockst ist für ein nicht so betuchten Rechner dann eine harte Nuss die in Freeze enden. Was nicht so schön ist. Resets in subcues mit einer time dazwischen um die Wucht da raus zu nehmen auch eine cue delay wäre gut.
4. ich bekomm die director.htm nich ans laufen. wenn ich die öffne hab ich nur ne schwarze seite mit nen paar formular elementen (search und sort). da kann ich soviel klicken und schreiben wie ich will, tut sich aber nix. muss ich beim firefox noch plugins installieren oder was anschalten, oder hab ich vergessen was auszupacken (hab nur den kompletten director order entpackt)?
Mit firefox bekommst die HTML nicht geöffnet. nimm den IE damit geht es ohne Probleme. Zu irgend was muss de IE ja gut sein. :roll:

Ansonsten kann ich nur sagen weiter so liest sich schon sehr interessant der code :thumb_up:

MfG
Jens Ka
MD IST NICHT MSCI!!!!
MD ist Eventdriven. Es passiert etwas - du reagierst darauf.
Bin nicht für weitere Mod Projekte zu haben.
ND VSM XTC
Allgemeine MD-Fragen
User avatar
SunBlade
Posts: 43
Joined: Sun, 26. Dec 04, 16:56
x4

Post by SunBlade »

<remove_allesmögliche/> ist genau das was ich gesucht hatte :D

das mit dem sektor übernehmen lass ich erstmal weg (gibt schon genug mods die das machen)

nen "array" mit den sektornummern durchlaufen zu lassen, dürfte ressourcenschonender sein, als das universum nach sektoren zu durchsuchen. 8)

ich merk zwar keine hänger, selbst wenn ich massenweise HQs per script spawnen lasse (nur OOS, IS gibt es ein paar kleinere fps drops), aber zur sicherheit hab ich mal nen <cue delay="10s"> eingebaut.

hat schon jemand erfahrungen mit <reset_cue/>, <cancel_cue/> und <destroy_cue/> gemacht? zerstören alle drei die localen variablen?

das system mit den subcues versteh ich noch nicht so richtig. werden die subs erst "aktiv" geschaltet wenn die topcue durchgelaufen ist? wenn <reset_cue/>, <cancel_cue/> oder <destroy_cue/> auf die topcue angewendet wird was passiert mit den subs? wofür brauche ich subcues?

wer interessiert ist: hier der hq renamer von meinem mod

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="SectorRename" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">
	<documentation>
		<author name="SunBlade" alias="SunBlade" contact="Forums"/>
		<content reference="SBSR" name="SectorRename" description="rename the sector once you have a hq there"/>
		<version number="1.0" date="2009-12-24" status="release"/>
	</documentation>
	<cues>
		<cue name="SBSR HQ change" delay="10s">
			<condition>
				<check_all>
					<count_stations negate="1" race="player" typename="SS_DOCK_P_HQ" exact="{value@SBSR HQ Var Count}">
						<sector x="8" y="8"/>
						<jumps min="0" max="999"/>
					</count_stations>
				</check_all>
			</condition>
			<action>
				<do_all>
					<find_station group="this.Stations" multiple="1" typename="SS_DOCK_P_HQ" race="player">
						<sector x="8" y="8"/>
						<jumps min="0" max="999"/>
					</find_station>
					<set_value name="SBSR HQ Var Count" exact="{group.object.count@this.Stations}"/>
					<remove_group group="this.Stations"/>


					<set_value name="this.Sectors 1" exact="117"/>
					<set_value name="this.Sectors 2" exact="508"/>
					<set_value name="this.Sectors 3" exact="509"/>
					<set_value name="this.Sectors 4" exact="608"/>
					<set_value name="this.Sectors 5" exact="609"/>
					<set_value name="this.Sectors 6" exact="613"/>
					<set_value name="this.Sectors 7" exact="621"/>
					<set_value name="this.Sectors 8" exact="815"/>
					<set_value name="this.Sectors 9" exact="909"/>
					<set_value name="this.Sectors 10" exact="914"/>
					<set_value name="this.Sectors 11" exact="1016"/>
					<set_value name="this.Sectors 12" exact="1019"/>
					<set_value name="this.Sectors 13" exact="1116"/>
					<set_value name="this.Sectors 14" exact="1117"/>
					<set_value name="this.Sectors 15" exact="1119"/>
					<set_value name="this.Sectors 16" exact="1604"/>
					<set_value name="this.Sectors 17" exact="1608"/>
					<set_value name="this.Sectors 18" exact="1708"/>
					<set_value name="this.Sectors 19" exact="1711"/>
					<set_value name="this.Sectors 20" exact="1719"/>

					<do_all counter="Cntr" exact="20">
						<find_sector name="this.Sector"
							x="{value@this.Sectors {counter@Cntr}}-(({value@this.Sectors {counter@Cntr}}/100)*100)-1"
							y="({value@this.Sectors {counter@Cntr}}/100)-1"/>
						<find_station group="this.Stations" multiple="1" typename="SS_DOCK_P_HQ" race="player">
							<sector sector="this.Sector"/>
						</find_station>

						<do_choose>
							<do_when value="{group.object.count@this.Stations}" min="1">

								<!-- vv HQs found in sector vv -->
								<do_if value="{sector.name.textid@this.Sector}" list="{value@this.Sectors {counter@Cntr}}+1020000|{value@this.Sectors {counter@Cntr}}+1027000|1029111">
									<do_choose>
										<do_when value="{value@SBSR HQ Var Count}" min="2">
											<set_sector_override sector="this.Sector" textid="{value@this.Sectors {counter@Cntr}}+1027000"/>
										</do_when>
										<do_otherwise>
											<set_sector_override sector="this.Sector" textid="1029111"/>
										</do_otherwise>
									</do_choose>
								</do_if>
								<!-- ^^ HQs found in sector ^^ -->

							</do_when>
							<do_otherwise>

								<!-- vv no HQs found in sector vv -->
								<do_if value="{sector.name.textid@this.Sector}" list="{value@this.Sectors {counter@Cntr}}+1020000|{value@this.Sectors {counter@Cntr}}+1027000|1029111">
									<set_sector_override sector="this.Sector" textid="{value@this.Sectors {counter@Cntr}}+1020000"/>
								</do_if>
								<!-- ^^ no HQs found in sector ^^ -->

							</do_otherwise>
						</do_choose>

						<!--<incoming_message popup="1" author="DEBUG" text="{group.object.count@this.Stations} : {value@this.Sectors {counter@Cntr}} : {sector.name@this.Sector}"/>-->
						<remove_group group="this.Stations"/>
						<remove_sector sector="this.Sector"/>
					</do_all>

					<reset_cue cue="this"/>
				</do_all>
			</action>
		</cue>
	</cues>
</director>
Live your life, you got only one.
User avatar
Jens Ka
Posts: 468
Joined: Thu, 18. Jan 07, 15:32
x4

Post by Jens Ka »

Hi, SunBlade

<cue delay> Ist der Zeitintervall in dem der MD die Conditionen checkt. Nicht verwenden wenn in der Condition ein Event check ist.

<reset_cue> Resete denn cue der angegeben und deren sucues! Values nicht mehr verfügbar. Der cue der Reseted wurde fängt sofort an wider durch zu laufen wenn Conditionen es im erlauben. Ausnahme lib cue.
<cancel_cue> canceled denn cue der angegeben und deren subcues! Values bleiben erhalten! ist nur für lib cues sinnig da der cue der canceled nicht wider anfängt zu laufen.
<destroy_cue> wie der Name schon sagt zerstöre. das ist wörtlich zu nehmen und gilt auch für subcues. Nur dann zu empfehlen wenn der cue oder gar ein ganzes file ausm Spieler save verschwinden soll. (deinstall)

Subcue also mal einfach dargestellt.

Code: Select all

<cues>
<cue name="topcue">
...
<cues>
<cue name="subcue1">
...
<cues>
<cue name="subcue2">
...
</cue>
</cues>
</cue>
</cues>
</cue>
</cues>
der Ablauf. Ist Topcue durch gelaufen und die connditionen des subcue1 sind erfühlt wird dieser aktiv. Ist subcue1 compled und condition des subcue2 erfühlt läuft subcue2 durch. Das ist jetzt der Idealfall und sehr einfach dergestalt.
Der forteil ist das nur die conditionen von einem cue check wird statt alle 3. Bei einem file was ca. 50 cues hat ergibt es dann schon sinn. (Rechner Belastung um mal eine Sache zu nennen.)

MfG
Jens Ka
MD IST NICHT MSCI!!!!
MD ist Eventdriven. Es passiert etwas - du reagierst darauf.
Bin nicht für weitere Mod Projekte zu haben.
ND VSM XTC
Allgemeine MD-Fragen

Return to “X³: Terran Conflict / Albion Prelude - Scripts und Modding”