EnglishGermanFrenchRussianItalianSpanish
Log inRegister
 
[DISKUSSION] Allgemeine MD-Fragen
Post new topic Reply to topic Goto page Previous  1, 2, 3 ... , 71, 72, 73  Next
View previous topic :: View next topic
Author Message
Ketraar
Moderator (Português)
Moderator (Português)

MEDALMEDAL

Joined: 21 May 2004
Posts: 8530 on topic
Location: Guimarães (Portugal)
Thank you for registering your game
modified
PostPosted: Thu, 1. Mar 18, 22:15    Post subject: Reply with quote Print

Klaus11 wrote:
Aus Deinem Beispiel habe ich folgendes gemacht:

Hali hallo hier haben wir ein paar kleinigkeiten in deinem code ich versuchen werde so gut wie es get zu erläutern.

Code:
<find_station name="Schiffswerft_KlausTeladi01" race="teladi" typename="SS_FAC_A_SHIP_BIG" silent="1">

in name= soltest du immer this.eigenername nutzen. Wobei this. für den cue steht wo die ref (also eigenername) gespeichert wird. Nutzt man this. ist der cue name der selbe wo diese action genestet ist. Beispiel:

Code:
<cue name="Cue_1">
  <action>
    <do_all>
      <find_station name="this.station" typename="SS_FAC_A_SIL_1" race="argon">
        <sector x="0" y="0"/>
      </find_station>
    </do_all>
  </action>
</cue>

damit wäre this.station die ref für das gefundene Objekt (in diesem Fall eine Station). Will man also dieses Objekt nun "aufrufen" außerhalb (bzw "unterhalb") von Cue_1, so ist die ref Cue_1.Station.
Damit man hier nicht gross ins grübeln kommt empfiehlt sich aber immer selber den cue anzugeben beim erstellen oder finden von Objekten. Oft nutzt man den "obersten" cue und erspart sich so langes rätseln wie die Objekte referenziert wurden. In dem Plot code ist das L2M019. und so werden alle Objekte (außer in speziellen Fällen) immer in diesem cue gespeichert.

Nutzt man keine this. werden die Objekte global gespeichert, hat den vorteil das man diese auch ausserhalb deren Dateien nutzen kann (was selten nötig ist), doch strapaziert das sehr an der Performance wenn oft genutzt wird. Das gilt für alle "Objekte" (Actors, Sektoren, Schiffe, etc).


Quote:
In Deinem Beispiel bezog sich die Text ID auf eine andere Page ID als 17.

Bist du sicher? War das vielleicht eine 350017? Wenn ja das ist das weiterhin page 17 ingame, die 35 ist ne art prefix um von den Vorgängern zu unterscheiden (35 ist TC, 38 ist AP, etc)

Quote:
Ich habe auf YouTube mal versucht, Deine Tutorials zum MD zu verstehen. Leider ist mein Englisch viel zu schlecht. Schade, dass es so etwas nicht auf Deutsch gibt. Crying or Very sad

Naja englisch war halt eher übergreifend, auch wenn es in DE einfacher gewesen wäre. Wenn sicher einer findet der evtl. Untertitel machen möchte (was ich nicht glaube) dann könnte man diese auch hinzufügen.

Anyway, hoffe das war einigermaßen verständlich, es ist oft nicht einfach MD zu beschreiben in Textform.

Quote:
Hast du noch eine andere idee warum 0.30 was anderes als 1 oder 0 returnt und zwar auch nach reset que?

Ich verstehe deine Frage nicht, kannst du das mal bitte genauer erklären?

MFG

Ketraar



Last edited by Ketraar on Thu, 1. Mar 18, 23:01; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
Klaus11



MEDALMEDALMEDAL

Joined: 13 Feb 2012
Posts: 777 on topic

Thank you for registering your game
PostPosted: Thu, 1. Mar 18, 22:50    Post subject: Reply with quote Print

Cool Very Happy ,
ich habe dieses "This." nun davor gesetzt und es funktioniert noch besser. Vorher musste ich auf das Model einer argonischen Werft ausweichen, weil die falsche Werft umbenannt wurde. Nun wird genau die Werft umbenannt, die ich neu hinzugefügt habe. (In dem Sektor gibt es ja schon eine Werft.)

Der Text: <t id="20521">Plutarch Siliziummine</t> ist aus AP, also 380017. Du hattest also recht. Ich bin trotzdem bei meinem Namen geblieben.

Nun möchte ich noch ein Ausrüstungsdock hinzufügen. Hoffentlich kriege ich es hin, dass es auch produziert.

Btw, ich habe in YouTube deutsche Untertitel gewählt. Es ist aber zu anstrengend, ständig hin und her zu schauen.


_________________
Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
Back to top
View user's profile Send private message
JSDD





Joined: 21 Mar 2014
Posts: 759 on topic
Location: Belt of Aguilar ... JSDD Headquarters
Thank you for registering your game
PostPosted: Fri, 2. Mar 18, 08:25    Post subject: Reply with quote Print

... kann man nich direkt im <create_station/> kommando die textid angeben ??

zum MD tutorial: hier gibts ja die anleitung auf deutsch
ok, videos sind manchmal besser "verdaulicher" ... aber sofern du schon etwas vom MD verstanden hast: im tutorial wird nur die absoluten basics angeschnitten. wenn du kleine "briefings" im game sehen willlst und mini-plots machen willst, das fehlt leider im tutorial, musste dir selbst aneignen .. oder eben hier fragen Wink

hier hatte ich schonmal n kleine übersicht gemacht, wie man die hyroglyphen lesen kann ... wie der code abläuft etc


_________________
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
Back to top
View user's profile Send private message
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)

MEDAL

Joined: 20 Nov 2005
Posts: 13641 on topic

Thank you for registering your game
PostPosted: Fri, 2. Mar 18, 15:41    Post subject: Reply with quote Print

Klaus11 wrote:
Der Text: <t id="20521">Plutarch Siliziummine</t> ist aus AP, also 380017. Du hattest also recht. Ich bin trotzdem bei meinem Namen geblieben.

Wird trotzdem Intern unter Page 17 zusammen gefasst..

Klaus11 wrote:
Nun möchte ich noch ein Ausrüstungsdock hinzufügen. Hoffentlich kriege ich es hin, dass es auch produziert.

ADs können nix Produzieren, sind schliesslich keine Fabriken Razz wenn du damit meinst "mit der Werft verbinden": iirc müssen Sektor und Volk dafür einfach gleich sein, das wars..
(Produktionszyklus musst du glaube ich trotzdem an werfen, damit es gelegentlich waren konsumiert..)


_________________
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 Wink

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help Wink
Back to top
View user's profile Send private message
Klaus11



MEDALMEDALMEDAL

Joined: 13 Feb 2012
Posts: 777 on topic

Thank you for registering your game
PostPosted: Fri, 2. Mar 18, 15:44    Post subject: Reply with quote Print

JSDD wrote:
... kann man nich direkt im <create_station/> kommando die textid angeben ??

Kann man. Very Happy Mit diesem Code habe ich die "find" Sache eingespart.
Code:
<create_station name="this.Schiffswerft_KlausTeladi01" race="teladi" typename="SS_FAC_T_SHIP_BIG" invincible="1" pageid="17" textid="5151">


JSDD wrote:
zum MD tutorial: hier gibts ja die anleitung auf deutsch
ok, videos sind manchmal besser "verdaulicher" ... aber sofern du schon etwas vom MD verstanden hast: im tutorial wird nur die absoluten basics angeschnitten. wenn du kleine "briefings" im game sehen willlst und mini-plots machen willst, das fehlt leider im tutorial, musste dir selbst aneignen .. oder eben hier fragen Wink

hier hatte ich schonmal n kleine übersicht gemacht, wie man die hyroglyphen lesen kann ... wie der code abläuft etc

Langsam verstehe ich die Syntax, glaube ich. Solche Hilfestellungen, wie diese hier von Dir, sind mir sehr willkommen. Danke Dir dafür.
Ich hatte mal eine Übersicht über alle möglichen Befehle. Kann diese aber schon eine Weile nicht mehr finden. Crying or Very sad


_________________
Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
Back to top
View user's profile Send private message
Klaus11



MEDALMEDALMEDAL

Joined: 13 Feb 2012
Posts: 777 on topic

Thank you for registering your game
PostPosted: Fri, 2. Mar 18, 15:47    Post subject: Reply with quote Print

UniTrader wrote:
Klaus11 wrote:
Der Text: <t id="20521">Plutarch Siliziummine</t> ist aus AP, also 380017. Du hattest also recht. Ich bin trotzdem bei meinem Namen geblieben.

Wird trotzdem Intern unter Page 17 zusammen gefasst..

Klaus11 wrote:
Nun möchte ich noch ein Ausrüstungsdock hinzufügen. Hoffentlich kriege ich es hin, dass es auch produziert.

ADs können nix Produzieren, sind schliesslich keine Fabriken Razz wenn du damit meinst "mit der Werft verbinden": iirc müssen Sektor und Volk dafür einfach gleich sein, das wars..
(Produktionszyklus musst du glaube ich trotzdem an werfen, damit es gelegentlich waren konsumiert..)

Für die Erweiterungen (Software), die man dort kaufen kann, muss wohl eine Art Produktion laufen.


_________________
Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
Back to top
View user's profile Send private message
ubuntufreakdragon



MEDALMEDALMEDAL

Joined: 23 Jun 2011
Posts: 3837 on topic
Location: Das Randland des Wahnsinns!
Thank you for registering your game
PostPosted: Fri, 2. Mar 18, 16:38    Post subject: Reply with quote Print

Ketraar wrote:

Quote:
Hast du noch eine andere idee warum 0.30 was anderes als 1 oder 0 returnt und zwar auch nach reset que?

Ich verstehe deine Frage nicht, kannst du das mal bitte genauer erklären?

der plot ruft den library cue "L0M30" zu finden in 0.30 Transport Passengers.xml auf, dieser bietet einen Parameter "FeedbackName", der einen Wert von 0-7 annimmt.
bei 0 wartet der Plot, bei 1 ist die mission geschafft und bei allem anderen wird der transportteil des Plots resetet.
Code:
          <return name="{param@FeedbackName}" type="number" description="1 = Successfuly transported all passengers"/>
          <return name="{param@FeedbackName}" type="number" description="2 = Fail but with some passengers"/>
          <return name="{param@FeedbackName}" type="number" description="3 = Timeout with no passengers"/>
          <return name="{param@FeedbackName}" type="number" description="4 = Player destroyed a passenger"/>
          <return name="{param@FeedbackName}" type="number" description="5 = Passenger was destroyed without AllowLoss parameter"/>
          <return name="{param@FeedbackName}" type="number" description="6 = Passenger was destroyed with AllowLoss parameter. No passengers transported"/>
          <return name="{param@FeedbackName}" type="number" description="7 = Destination Station was destroyed"/>

soweit ich das sehe kann nur Fall 7 nach einem reset sofort wieder erscheinen, oder siehst du etwas anderes was WIEDERHOLT passieren könnte(Passagiere werden jedes mal neu erstellt).


_________________
My X3 Mods

XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist
Back to top
View user's profile Send private message
Ketraar
Moderator (Português)
Moderator (Português)

MEDALMEDAL

Joined: 21 May 2004
Posts: 8530 on topic
Location: Guimarães (Portugal)
Thank you for registering your game
PostPosted: Fri, 2. Mar 18, 17:01    Post subject: Reply with quote Print

Das ist alles ne weile her und mit generischen Missionen hab ich mich nur sporadisch auseinander gesetzt (generell etwas "convoluted"). Ich denke aber nicht das ein Reset im Fall von is_plot=1 "erlaubt" ist. Werde mal die Plotdatei anschauen, aber in Plot Fall ist das nicht eine "normale" Transport Mission und weiss nicht was XS da eingebaut hat.

Ich guck mal heute Abend wenn ich zu hause bin.

MFG

Ketraar

Back to top
View user's profile Send private message Send e-mail
ubuntufreakdragon



MEDALMEDALMEDAL

Joined: 23 Jun 2011
Posts: 3837 on topic
Location: Das Randland des Wahnsinns!
Thank you for registering your game
PostPosted: Fri, 2. Mar 18, 17:10    Post subject: Reply with quote Print

Der reset kommt vom plot her.


_________________
My X3 Mods

XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist
Back to top
View user's profile Send private message
JSDD





Joined: 21 Mar 2014
Posts: 759 on topic
Location: Belt of Aguilar ... JSDD Headquarters
Thank you for registering your game
PostPosted: Fri, 2. Mar 18, 21:40    Post subject: Reply with quote Print

Klaus11 wrote:
Ich hatte mal eine Übersicht über alle möglichen Befehle. Kann diese aber schon eine Weile nicht mehr finden. Crying or Very sad


die 7 .. ähh .. 6 sachen zum md-scripten kennste ja !? darunter ist "director.xsd", diese öffnest du via firefox, dann siehste alle befehle & variablen im browser, strg+f dich dann durchs geschehen um dinge zu finden Wink


_________________
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
Back to top
View user's profile Send private message
Klaus11



MEDALMEDALMEDAL

Joined: 13 Feb 2012
Posts: 777 on topic

Thank you for registering your game
PostPosted: Fri, 2. Mar 18, 22:40    Post subject: Reply with quote Print

JSDD wrote:
Klaus11 wrote:
Ich hatte mal eine Übersicht über alle möglichen Befehle. Kann diese aber schon eine Weile nicht mehr finden. Crying or Very sad


die 7 .. ähh .. 6 sachen zum md-scripten kennste ja !? darunter ist "director.xsd", diese öffnest du via firefox, dann siehste alle befehle & variablen im browser, strg+f dich dann durchs geschehen um dinge zu finden Wink

Ich danke Dir. Very Happy Ich wußte doch, dass ich es eigentlich habe.


_________________
Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
Back to top
View user's profile Send private message
JSDD





Joined: 21 Mar 2014
Posts: 759 on topic
Location: Belt of Aguilar ... JSDD Headquarters
Thank you for registering your game
PostPosted: Sun, 4. Mar 18, 20:19    Post subject: Reply with quote Print

Beispiel 1: Code-Aufbau
Code:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">

  <cues>
   
    <cue name="beispiel1_cue001">
     
      <!--beim zutreffen dieser bedingungen werden sub-cues aktiviert, timing abgewartet, dann actions ausgefuehrt-->
      <condition>
        <check_all>
          <check_age min="10s"/>
        </check_all>
      </condition>
     
      <!--nach abwarten des timings werden actions ausgefuehrt-->
      <timing>
        <time exact="5s"/>
      </timing>
     
      <!--handlungen im spiel-->
      <action>
        <do_all>
          <incoming_message text="... hallo welt!"/>
        </do_all>
      </action>
     
      <!--sub-cues werden aktiviert, sobald conditions erfolgreich gecheckt wurden-->
      <cues>
       
      </cues>
 
    </cue>
   
  </cues>
 
</director>


Kommentare im code sind immer hilfreich. Damit sie vom Spiel ignoriert werden, werden sie <!----> Block geschrieben:
Code:
<!--HIER EIN KOMMENTAR-->


Ein cue (a.k.a "code-ansammlung") checkt seine Bedingungen ("condition"-Block), sobald diese erfolgreich gecheckt wurden, aktiviert es seine "sub-cues" ("cues"-Block nach dem "action"-Block), wartet sein "time"-Block (wenn vorhanden) ab und führt dann erst seine Handlungen aus ("action"-Block). Sind keine Bedingungen gesetzt, dann triggert es sofort ohne nötige checks. Cancelt/resettet man ein cue, werden auch all seine sub-cues gecancelt/resettet. Vernichtet man ein cue via <destroy_cue/>, so existiert es (und all seine sub-cues) nicht mehr im Spiel. Der Name eine cue muss einzigartig sein, damit es eindeutig identifizierbar bleibt. Sonderzeichen und Punkte im Namen sind nicht erlaubt (außer Unterstrich _).

In diesem Beispiel ist ein cue dargestellt, welches frame-weise die Bedingungen checkt. Frameweise heißt bis zu etwa 60x pro Sekunde. Viele cues, die frameweise checken, können die Performance beeinflussen, drum ist es ratsam, wenn möglich "delays" ("Zeitverzug" zwischen 2 checks) in der cue-zeile zu setzen.
Code:

    <cue name="beispiel1_cue001" delay="2s">

Das hätte zur Folge, dass nur alle 2 Sekunden die Bedingungen gecheckt werden statt frameweise. Es gibt Bedingungen, die nur einmalig für 1 Frame zutreffen, also "Ereignisse" ("events"). Diese müssen frameweise gecheckt werden, d.h. ohne "delay"-Angabe in der cue-zeile. Beispiel hierfür wäre <object_docked/>, welches nur im Moment (Frame) des Andockens zutrifft. Will man allerdings den Zustand "angedockt" checken, nutzt man <object_is_docked>, welches zutrifft, solange Objekt A an Objekt B angedockt ist.

<check_all> im condition-Block und <do_all> im action-Block sind dazu da, dass man mehr als nur 1 Bedingung checken bzw. Handlung ausführen kann.


_________________
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
Back to top
View user's profile Send private message
JSDD





Joined: 21 Mar 2014
Posts: 759 on topic
Location: Belt of Aguilar ... JSDD Headquarters
Thank you for registering your game
PostPosted: Sun, 4. Mar 18, 20:22    Post subject: Reply with quote Print

Beispiel 2: Code-Ausführung
Code:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">

  <cues>
   
    <cue name="beispiel2_cue001">
     
      <!--beim zutreffen dieser bedingungen werden sub-cues aktiviert, timing abgewartet, dann actions ausgefuehrt-->
      <condition>
        <check_all>
          <check_age min="10s"/>
        </check_all>
      </condition>
     
      <!--nach abwarten des timings werden actions ausgefuehrt-->
      <timing>
        <time exact="5s"/>
      </timing>
     
      <!--handlungen im spiel-->
      <action>
        <do_all>
          <incoming_message text="... hallo welt 1!"/>
        </do_all>
      </action>
     
      <!--sub-cues werden aktiviert, sobald conditions erfolgreich gecheckt wurden-->
      <cues>

        <cue name="beispiel2_cue002">

          <action>
            <do_all>
              <incoming_message text="... hallo welt 2!"/>
            </do_all>
          </action>
         
        </cue>
       
      </cues>
 
    </cue>
   
  </cues>
 
</director>


Dieses Beispiel zeigt, dass der action-Block eines sub-cues VOR dem action-Block seines parent-cue (wovon es sub-cue ist) ausgeführt werden kann. Das soll drauf aufmerksam machen, dass die cue-Hierarchie nicht eindeutig die Ausführ-Reihenfolge vorgibt. Für Synchronisierung muss man selbst sorgen. Z.B. so:
Code:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">

  <cues>
   
    <cue name="beispiel2_cue001">
     
      <!--beim zutreffen dieser bedingungen werden sub-cues aktiviert, timing abgewartet, dann actions ausgefuehrt-->
      <condition>
        <check_all>
          <check_age min="10s"/>
        </check_all>
      </condition>
     
      <!--nach abwarten des timings werden actions ausgefuehrt-->
      <timing>
        <time exact="5s"/>
      </timing>
     
      <!--handlungen im spiel-->
      <action>
        <do_all>
          <incoming_message text="... hallo welt 1!"/>
        </do_all>
      </action>
     
      <!--sub-cues werden aktiviert, sobald conditions erfolgreich gecheckt wurden-->
      <cues>

        <cue name="beispiel2_cue002">

          <condition>
            <check_all>
              <cue_is_complete cue="beispiel2_cue001"/>
            </check_all>
          </condition>
         
          <action>
            <do_all>
              <incoming_message text="... hallo welt 2!"/>
            </do_all>
          </action>
         
        </cue>
       
      </cues>
 
    </cue>
   
  </cues>
 
</director>

Jetzt wird der action-Block des ersten cue zuerst ausgeführt. Danach wird es auf Zustand "complete" gesetzt. Diesen Zustand fragt das zweite cue ab, und handelt entsprechend.

Ein cue can 4 Zustände haben:
--> inactive (noch nicht activiert)
--> active (checkt sein condition-Block)
--> complete (war active, hat action-Block erfolgreich ausgeführt)
--> cancelled (wurde gecancelled)

Das Spiel setzt sofort nach dem Laden seine cues auf "active". Ausnahme hierzu ist das "library"-cue, welches von anderen cues aufgerufen werden muss.


_________________
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
Back to top
View user's profile Send private message
JSDD





Joined: 21 Mar 2014
Posts: 759 on topic
Location: Belt of Aguilar ... JSDD Headquarters
Thank you for registering your game
PostPosted: Sun, 4. Mar 18, 20:23    Post subject: Reply with quote Print

Beispiel 3: Missions-Marker setzen
Code:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">

  <cues>

    <cue name="beispiel3_cue001">

      <action>
        <do_all>
          <!--finde eine station und setze marker drauf-->
          <find_station name="beispiel3_cue001.gefundene_station" nearest="1"/>
          <!--ne IF ELSE abfrage-->
          <do_choose>
            <!--abfrage, ob die station nicht existiert-->
            <do_when value="{object.exists@beispiel3_cue001.gefundene_station}" exact="0">
              <incoming_message text="... keine station gefunden ..."/>
            </do_when>
            <!--anderenfalls-->
            <do_otherwise>
              <!--setze marker FLIEGE ZUR STATION-->
              <set_objective cue="beispiel3_cue001">
                <flyto object="beispiel3_cue001.gefundene_station"/>
              </set_objective>
            </do_otherwise>
          </do_choose>
        </do_all>
      </action>

    </cue>
   
  </cues>
 
</director>


Dieses Beispiel-cue hat keine Bedingungen / Timer / Sub-cues oder sonstiges, nur ein action-Block. In diesen finden wir zuerst die Station, die am nächsten zum Spieler liegt. Danach kommt eine Fall-Unterscheidung via <do_choose>. Wenn keine Station gefunden wurde, wird eine Nachricht ausgegeben, anderenfalls setzen wir den Missions-Marker auf die Station mit dem Hinweis "Fliege zu ...". Danach passiert allerdings nichts mehr, unabhängig davon ob wir dort sind oder nicht. Diese Möglichkeiten müssen ebenfalls von uns gescriptet werden.

Variablen-Namen können lokal unter einem gewissen cue gespeichert werden, oder global. Wenn lokal gespeichert, ist sie gelöscht, wenn man das cue cancelt. Anderenfalls bleibt sie auch nach dem canceln des cue bestehen. Lokal speichert man eine Variable, indem man sie <cue_name>.<variable_name> benennt. Ansonsten ist sie global. Zu viele globale Variablen sollte man u.A. aus Übersichtsgründen vermeiden.

Werte von Variablen werden über spezielle Funktionen erfragt, z.B. {value@variable_name}. Diese Funktionen sind alle in director.xsd gelistet und können mit z.B. Mozilla Firefox eingesehen werden (ganz unten). Existenz-Abfrage von Objekten z.B. werden via {object.exists@variable_name} gemacht, sie gibt 1 bei Existenz und anderenfall 0 zurück. Die Variable für die gefundene Station wurde unter dem cue beispiel3_cue001 gespeichert und heißt gefundene_station:
Code:
<find_station name="beispiel3_cue001.gefundene_station" nearest="1"/>


Damit die Mission identifizierbar ist, wird sie unter eine cue gespeichert (beispiel3_cue001).


_________________
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
Back to top
View user's profile Send private message
JSDD





Joined: 21 Mar 2014
Posts: 759 on topic
Location: Belt of Aguilar ... JSDD Headquarters
Thank you for registering your game
PostPosted: Sun, 4. Mar 18, 20:24    Post subject: Reply with quote Print

Beispiel 4: Reaktion auf Annäherung, Missions-Abbruch
Code:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">

  <cues>

    <cue name="beispiel4_cue001">

      <action>
        <do_all>
          <!--finde ne station und setze marker drauf-->
          <find_station name="beispiel4_cue001.gefundene_station" nearest="1"/>
          <!--ne IF ELSE abfrage-->
          <do_choose>
            <!--abfrage, ob die station nicht existiert-->
            <do_when value="{object.exists@beispiel4_cue001.gefundene_station}" exact="0">
              <incoming_message text="... keine station gefunden ..."/>
              <cancel_cue cue="beispiel4_cue001"/>
            </do_when>
            <!--anderenfalls-->
            <do_otherwise>
              <!--setze marker FLIEGE ZUR STATION-->
              <set_objective cue="beispiel4_cue001">
                <flyto object="beispiel4_cue001.gefundene_station"/>
              </set_objective>
            </do_otherwise>
          </do_choose>
        </do_all>
      </action>

      <cues>
       
        <!--reagiert auf annaeherung-->
        <cue name="beispiel4_cue002" delay="3s">

          <condition>
            <check_all>
              <cue_is_complete cue="beispiel4_cue001"/>
              <object_exists object="beispiel4_cue001.gefundene_station"/>
              <!--distanz zwischen spieler und station unter 2km-->
              <object_position object="{player.ship}" max="2km">
                <position object="beispiel4_cue001.gefundene_station"/>
              </object_position>
            </check_all>
          </condition>

          <action>
            <do_all>
              <incoming_message text="...bist unter 2km an der station ran."/>
            </do_all>
          </action>
         
        </cue>
       
      </cues>

    </cue>
   
  </cues>
 
</director>


Das sub-cue hier muss zuerst mal abwarten, bis das obere fertig ist (1. Bedingung). Danach check es, ob die Station noch existiert. Dann check es die Objekt-Position von dem Objekt {player.ship}, welches die Funktion für das Spielerschiff ist. Und zwar muss diese unter "2km" (2 Kilometer) sein, bezogen auf das objekt "beispiel4_cue001.gefundene_station" (die gefundene Station). Trifft alles zu, wird eine Nachricht ausgegeben. Die Bedingungen werden alle 2 Sekunden gecheckt (delay="3s").


Code:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">

  <cues>

    <cue name="beispiel4_cue001">

      <action>
        <do_all>
          <!--finde ne station und setze marker drauf-->
          <find_station name="beispiel4_cue001.gefundene_station" nearest="1"/>
          <!--ne IF ELSE abfrage-->
          <do_choose>
            <!--abfrage, ob die station nicht existiert-->
            <do_when value="{object.exists@beispiel4_cue001.gefundene_station}" exact="0">
              <incoming_message text="... keine station gefunden ..."/>
              <cancel_cue cue="beispiel4_cue001"/>
            </do_when>
            <!--anderenfalls-->
            <do_otherwise>
              <!--setze marker FLIEGE ZUR STATION-->
              <set_objective cue="beispiel4_cue001">
                <flyto object="beispiel4_cue001.gefundene_station"/>
              </set_objective>
            </do_otherwise>
          </do_choose>
        </do_all>
      </action>

      <cues>
       
        <!--reagiert auf annaeherung-->
        <cue name="beispiel4_cue002" delay="3s">

          <condition>
            <check_all>
              <cue_is_complete cue="beispiel4_cue001"/>
              <object_exists object="beispiel4_cue001.gefundene_station"/>
              <!--distanz zwischen spieler und station unter 2km-->
              <object_position object="{player.ship}" max="2km">
                <position object="beispiel4_cue001.gefundene_station"/>
              </object_position>
            </check_all>
          </condition>

          <action>
            <do_all>
              <incoming_message text="...bist unter 2km an der station ran."/>
            </do_all>
          </action>
         
        </cue>

        <!--reagiert auf abbruch-->
        <cue name="beispiel4_cue003">

          <condition>
            <check_all>
              <objective_cancelled cue="beispiel4_cue001"/>
            </check_all>
          </condition>

          <action>
            <do_all>
              <!--zeige an, dass mission abgebrochen wurde-->
              <remove_objective cue="beispiel4_cue001" status="aborted"/>
              <!--stoppe alle cues-->
              <cancel_cue cue="beispiel4_cue001"/>
            </do_all>
          </action>

        </cue>
       
      </cues>

    </cue>
   
  </cues>
 
</director>


Ein weiteres sub-cue für das oberste (beispiel4_cue001) ist nun dazu da, um darauf zu reagieren, wenn der Spiieler die Mission abbricht. Wenn das geschieht, wird eine Nachricht ausgegeben und alle cues werden gecancelt (indem man das oberste cue cancelt).


_________________
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
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic Reply to topic Goto page Previous  1, 2, 3 ... , 71, 72, 73  Next
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum
Control Panel
Login Data
The time now is Mon, 25. Jun 18, 02:15

All times are GMT + 2 Hours

[ Disclaimer / Impressum ] | [ Privacy Policy / Datenschutz ]

Board Security

Copyright © EGOSOFT 1989-2018
Powered by phpBB © 2001, 2005 phpBB Group
Template created by Avatar & BurnIt!
Debug: page generation = 0.20837 seconds, sql queries = 29