MD Frage

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
Joda
Posts: 217
Joined: Sun, 18. Jan 04, 23:44
xr

MD Frage

Post by Joda »

habe da ein kleines problem eine rasse (id) an eine lib ( OBS ) weiterzugeben.
da kommt immer was sehr seltsames dabei raus...

Erklärung:

Datei 1
rasse wird zufällig gewählt und so benannt.

Code: Select all

<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@argon}"/>
jetzt wird das ganze an eine weitere lib in datei 2 weitergegeben

Code: Select all

<param name="FIUSRassenvorgabe" value="{value@FIUS_Start2.Zufallsrasse}"/>
Datei 2
auslesen

Code: Select all

<param name="FIUSRassenvorgabe" description="Rassenvorgabe falls andere als Sektorbesitzer"/>
und in der lib an die obs lib weitergegeben

Code: Select all

<param name="OBSFleetPilotsRace" value="{param@FIUSRassenvorgabe}" comment="The race ID of the pilots"/>



habe etliche kombinationen durchprobiert aber das einzige was bisher funktioniert hat ist die direkte eingabe der race id an der obs übergabe:

Code: Select all

<param name="OBSFleetPilotsRace" value="{lookup.race@argon}" comment="The race ID of the pilots"/>
??????
dann muss der fehler ja in der weiterverarbeitung der race id sein!?
bitte um hilfe sonst hab ich bald keine haare mehr am kopf :wink:
User avatar
JSDD
Posts: 1379
Joined: Fri, 21. Mar 14, 20:51
x3tc

Post by JSDD »

... damit hab ich auch oft soo meine probleme, etwas verwirrend die md-geschichte, am besten immer debuggen (d.h. werte via ingame-message ausgeben lassen)

zuerst mal: md-variablen sind datei-unabhängig, d.h. wenn cue 1 aus datei 1 einen wert setzt (egal ob lokal "cue_1.variablenname" oder global), dann kann cue 2 aus datei 2 sofort darauf zugreifen

-------------------------------------------------

<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@argon}"/>
... setzt auf cue "FIUS_Start2" nen lokalen wert 1
... warum 1 ?? weil die engine die rasse "argon" als wert/zahl interpretiert, drum muss man auch lookup.race@... vorne dran stellen, um eben diesen internen wert zu erhalten

<param name="FIUSRassenvorgabe" value="{value@FIUS_Start2.Zufallsrasse}"/>
... ok, du übergibst der lib also den wert 1 bei der adresse "FIUSRassenvorgabe"

<param name="OBSFleetPilotsRace" value="{param@FIUSRassenvorgabe}" comment="The race ID of the pilots"/>
... hier versuchst du, 1 an die OBS asdresse "OBSFleetPilotsRace" zu übergeben: falsch
... siehe assasination mission z.B.: da steht:
<param name="OBSFleetPilotsRace" value="{value@{param@Cue}.{param@ID} L0EnemyRace}"/>
... hier wird nämlich der wert übergeben, d.h. man muss wieder {value@...} vorne dran stellen
=> später, wenn du diese 1 in der aufgerufenen library wieder als rasse interpretieren willst: (siehe OBS wo das schiff erstellt wird ...)

Code: Select all

<create_ship name="{param@OBS Cue}.Temp Ship" ...etc... race="{value@OBS.ShipRace}" warp="1">
<position object="OBS.PositionBeacon"/>
<sector sector="{object.sector@OBS.PositionBeacon}"/>
<equipment loadout="default"/>
<pilot race="{value@OBS.Pilot Race}"/>
</create_ship>
... hier reichts, dem create_ship befehl bei race einfach den wert (also z.B. "1") zu übergeben

-----------------------------------------

<param name="OBSFleetPilotsRace" value="{lookup.race@argon}" comment="The race ID of the pilots"/>
... hier wiederum fragst du die engine ja nach der argon race id via {lookup.race@...}, diese gibt 1 zurück bzw an das OBS weiter ;)

-------------------------------------------

anderes beispiel, selbe geschichte: SRST library (select random ship type)
ganz unten, wo das resultat festgelegt wird, steht:

Code: Select all

<set_value name="{param@Shiptype Address}" exact="0"/>
<do_if value="{value@{param@Cue}.SRST {param@Race ID} {value@SRST.Subrace} {param@Class ID} Count}" min="1">
<set_value name="SRST.ShipType Number" min="1" max="{value@{param@Cue}.SRST {param@...etc...}"/>
<set_value name="{param@Shiptype Address}" exact="{value@{param@Cue}.SRST {param@Race ID} {value@SRST.Subrace} {param@Class ID} {value@SRST.ShipType Number}}"/>
</do_if>
du siehst, wenn {param@...} direkt verwendet wird, dann nur als variablenname, wenn man alerdinge diesen variablen werte zuordnen will, dann muss man {value@...} vorne dran stellen, um tatsächlich werte aus den ausdrücken zu "extrahieren" (sag ich mal)

------------------------------------------

kleiner tipp nur soo am rande:

Code: Select all

<cue name="OBS ref SRST" ref="SRST" comment="Selects a Typename based on the class and maker race supplied.">
                  <params>
                    <param name="Race ID" value="{param@OBSFleetRace}" comment="The maker race ID or the strings 'default' or 'pirategroup'"/>
                    <param name="Class ID" value="{value@OBS.ShipClass}" comment="The shipclass ID or the strings 'bigship', 'fighter' or 'freighter'"/>
                    <param name="Cue" value="OBS" comment="The Cue that the shiptype is saved too"/>
                    <param name="CancelCue" value="SRST"/>
                    <param name="Shiptype Address" value="OBS.ShipType"/>
                    <!--... enable advanced ship types ...-->
                    <param name="Include M3P" value="1" comment="Include the M3Plus ships in the M3 search"/>
                    <param name="Include M4P" value="1" comment="Include the M4Plus ships in the M4 search"/>
                    <param name="Include M5P" value="1" comment="Include the M5Plus ships in the M5 search"/>
                    <param name="Include M6M" value="1" comment="Include the M6M ships in the M6 search"/>
                    <param name="Include M7M" value="1" comment="Include the M7M ships in the M7 search"/>
                  </params>
                </cue>
... so siehts bei mir in der OBS aus, d.h. als enemies tauchen auch erweiterte schiffstypen auf wie z.B. todesklaue/schwerer zentaur/cobras (vorausgesetzt, man erweitert mit der copy&paste methode auch noch die SRST)
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
User avatar
Joda
Posts: 217
Joined: Sun, 18. Jan 04, 23:44
xr

Post by Joda »

danke für deine ausfühliche antwort 8)
das mit den race ids ist mir bekannt .. also 1=argon 2=boron usw.
du sagst
<param name="OBSFleetPilotsRace" value="{param@FIUSRassenvorgabe}" comment="The race ID of the pilots"/>
... hier versuchst du, 1 an die OBS asdresse "OBSFleetPilotsRace" zu übergeben: falsch
ähhhm..
hab das mal direkt gemacht

Code: Select all

<param name="OBSFleetRace" value="1"/>
<param name="OBSFleetPilotsRace" value="1"/>
und siehe da... es hat alles bestens funktioniert!? rasse und schiffe waren argonen.
{lookup.race@argon} sollte ja 1 sein und mit "incoming_message" habe ich bei {param@FIUSRassenvorgabe} auch 1 bekommen, nur wenn ich jetzt diesen parameter verwende erhalte ich zufallsschiffe aller rassen und keinen piloten???? das selbe wenn ich es so mache wie du vorgeschlagen hast mit {value@{param@FIUSRassenvorgabe}}
... so siehts bei mir in der OBS aus, d.h. als enemies tauchen auch erweiterte schiffstypen auf wie z.B. todesklaue/schwerer zentaur/cobras (vorausgesetzt, man erweitert mit der copy&paste methode auch noch die SRST)
kenne ich, hab auch deine aus dem dvbtechnics forum :D



so nun mal alles auch das unnütze zeug, evtl liegt ja noch wo anders ein fehler...
bei FIUS_Start2 gehts eigentlich los.
das ganze soll feinde in unbekannten sektoren erzeugen. noch nicht fertig aber soweit zum testen gehts. FIUS_Start1 ist abgeschaltet und bei "FIUS An- und abschalten" wird per playernamensänderung das ganze abgeschaltet wenns im game nerven sollte :D

main:

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<?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>
    <!--.......................................................................................................................................................................-->
    <!--.....................................................Feinde (Rasse) In Unbekannten Sektoren............................................................................-->
    <!--.......................................................................................................................................................................-->
    <cue name="FIUS_Main" comment="Zufällige Feinde-Rasse in unbekannten Sektoren">
      <action>
        <do_all>
          <!--Cue abschalten da sonst Ab- und anschalten geprüft wird. Wird bei Anschaltbedingung erfüllt resettet-->
          <cancel_cue cue="FIUS_Aus"/>
          <!--Bei Erststart setzen um gleich zu aktivieren -hat danach keinen Einfluss auf -an -aus switch-->
          <set_value name="FIUS_Main.Erststart" exact="1"/>
        </do_all>
      </action>
      <cues>

        <!--........................FIUS An- und abschalten........................-->
        <cue name="FIUS_Aus" delay="360s">
          <condition>
            <check_all>
              <check_value value="{player.name}" exact="feinde aus"/>
            </check_all>
          </condition>
          <action>
            <do_all>
              <reset_cue cue="FIUS_An"/>
              <play_text pageid="13" textid="1355"/>
            </do_all>
          </action>
        </cue>

        <cue name="FIUS_An" delay="360s">
          <condition>
            <check_all>
              <check_any>
                <check_value value="{value@FIUS_Main.Erststart}" exact="1"/>
                <check_value value="{player.name}" exact="feinde an"/>
              </check_any>
            </check_all>
          </condition>
          <action>
            <do_all>
              <reset_cue cue="FIUS_Aus"/>
              <play_text pageid="13" textid="1352"/>
              <set_value name="FIUS_Main.Erststart" exact="0"/>
            </do_all>
          </action>
          <cues>

            <!--........................Automatischer Zufallsstart in Zufallssektor 1/100........................-->
            <cue name="FIUS_Start1">
              <condition>
                <check_all>
                  <object_changed_sector/>
                </check_all>
              </condition>
              <action>
                <do_all>
                  <set_value name="FIUS_Start1.Zufall" min="0" max="100"/>
                  <do_if value="{value@FIUS_Start1.Zufall}" exact="50" negate="1">
                    <reset_cue cue="FIUS_Start1"/>
                  </do_if>
                  <do_any>
                    <!--Sektoren müssen erst hier statt im Main cue gefunden werden -Zufallssektor(do_any) und jeden Start neu-->
                    <find_sector name="FIUS_Start1.Zufallssektor" x="0" y="7" comment="Yaki Sektor leer"/>
                    <find_sector name="FIUS_Start1.Zufallssektor" x="0" y="8" comment="Yaki Sektor leer"/>
                    <find_sector name="FIUS_Start1.Zufallssektor" x="0" y="9" comment="Yaki Sektor leer"/>
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="1" y="11" comment="Split Sektor"/>-->
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="2" y="16" comment="Piraten Sektor"/>-->
                    <find_sector name="FIUS_Start1.Zufallssektor" x="3" y="15"/>
                    <find_sector name="FIUS_Start1.Zufallssektor" x="5" y="11" comment="zwischen 2 Xenon Sektoren"/>
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="7" y="4" comment="Terraner Sektor"/>-->
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="7" y="5" comment="Terraner Sektor"/>-->
                    <find_sector name="FIUS_Start1.Zufallssektor" x="7" y="15"/>
                    <find_sector name="FIUS_Start1.Zufallssektor" x="7" y="16"/>
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="8" y="4" comment="Terraner Sektor"/>-->
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="8" y="5" comment="Terraner Sektor"/>-->
                    <find_sector name="FIUS_Start1.Zufallssektor" x="8" y="8" comment="ehemaliger eigener Sektor"/>
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="10" y="6" comment="Unbekannter Feindlicher Sektor"/>-->
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="10" y="16" comment="Piraten Sektor"/>-->
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="11" y="14" comment="Paraniden Sektor"/>-->
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="12" y="5"/>-->
                    <find_sector name="FIUS_Start1.Zufallssektor" x="14" y="7"/>
                    <find_sector name="FIUS_Start1.Zufallssektor" x="16" y="0"/>
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="17" y="16" comment="Sonnen Sektor"/>-->
                    <find_sector name="FIUS_Start1.Zufallssektor" x="18" y="9"/>
                    <find_sector name="FIUS_Start1.Zufallssektor" x="18" y="10"/>
                    <find_sector name="FIUS_Start1.Zufallssektor" x="18" y="16" comment="Vor Sonnen Sektor"/>
                    <!--<find_sector name="FIUS_Start1.Zufallssektor" x="20" y="5" comment="Vorsektor zu eigenem Sektor"/>-->
                  </do_any>
                </do_all>
              </action>
              <!--<cues>
                <cue ref="FIUS_Angriff">
                  <params>
                    <param name="ResetCue" value="FIUS_Start1"/>
                    <param name="FIUSSektor" value="{sector@FIUS_Start1.Zufallssektor}"/>
                    <param name="FIUSRassenvorgabe" value="{race@enemy}"/>
                    <param name="FIUSAngriffBeiPlayer" value="0"/>
                  </params>
                </cue>
              </cues>-->
            </cue>

            <!--........................Automatischer Zufallsstart in Playersektor 1/100........................-->
            <cue name="FIUS_Start2">
              <condition>
                <check_all>
                  <object_changed_sector/>
                  <!--<match_sector race="abandoned" sector="{sector@{event.object}}"/>-->
                </check_all>
              </condition>
              
              <timing>
                <time exact="10s"/>
              </timing>
              
              <action>
                <do_all>
                  <do_any>
                    <set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@argon}"/>
                    <!--<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@xenon}"/>-->
                    <!--<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@khaak}"/>-->
                    <!--<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@enemy}"/>-->
                  </do_any>
                </do_all>
              </action>

              <cues>
                <cue ref="FIUS_Angriff">
                  <params>
                    <param name="ResetCue" value="FIUS_Start2"/>
                    <param name="FIUSSektor" value="{player.sector}"/>
                    <param name="FIUSRassenvorgabe" value="{value@FIUS_Start2.Zufallsrasse}"/>
                    <param name="FIUSAngriffsPunktvorgabe" value="{player.fightrank.rank}*60+400+2600"/>
                    <param name="FIUSAngriffBeiPlayer" value="1"/>
                  </params>
                </cue>
              </cues>

            </cue>
          </cues>
        </cue>
      </cues>
    </cue>
  </cues>
</director>
angriffs lib:

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<?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>
    <!--.......................................................................................................................................................................-->
    <!--.....................................................Feinde (Rasse) In Unbekannten Sektoren............................................................................-->
    <!--.......................................................................................................................................................................-->
    <cue name="FIUS_Angriff" library="1">
      <documentation>
        <params>
          <param name="ResetCue" type="cuename" description="Welche Cue bei Ende resetten"/>
          <param name="FIUSSektor" type="sectorid" description="Zu Kontrollierender Sektor"/>
          <param name="FIUSRassenvorgabe" description="Rassenvorgabe falls andere als Sektorbesitzer"/>
          <param name="FIUSAngriffsPunktvorgabe" type="number" description="Punktvorgabe für SEL - Schiffs Erschaffungs Lib."/>
          <param name="FIUSAngriffBeiPlayer" type="number" description="Punktvorgabe steigern - nur bei SEL Punktvorgabe - steigert sich sonst Automatisch"/>
        </params>
      </documentation>
      <cues>
        <cue name="FIUS_Parameter">
          <action>
            <do_all>
              <set_value name="FIUS_Parameter.Zufallsrasse" exact="{param@FIUSRassenvorgabe}"/>
              
              <do_choose>
                <do_when value="{param.exists@FIUSAngriffsPunktvorgabe}" exact="1">
                  <set_value name="FIUS_Parameter.SELPunkte"  exact="{param@FIUSAngriffsPunktvorgabe}"/>
                </do_when>
                <do_otherwise>
                  <set_value name="FIUS_Parameter.SELPunkte"  min="500" max="3000"/>
                </do_otherwise>
              </do_choose>
            </do_all>
          </action>
          <cues>
            
            <cue name="FIUS_FullAttack">
              <action>
                <do_all>
                  <do_choose>
                    <do_when value="{player.sector}" exact="{param@FIUSSektor}">
                      <do_choose>
                        <do_when value="{param@FIUSAngriffBeiPlayer}" exact="1">
                          <set_object name="FIUS_FullAttack.PosObject" value="{player.ship}"/>
                        </do_when>
                      </do_choose>
                    </do_when>
                  </do_choose>
                  <do_choose>
                    <do_when value="{object.exists@FIUS_FullAttack.PosObject}" exact="0">
                      <create_spacefly name="FIUS_FullAttack.Raumfliege">
                        <position x="0" y="0" z="0"/>
                        <sector sector="{param@FIUSSektor}"/>
                      </create_spacefly>
                      <set_object name="FIUS_FullAttack.PosObject" value="FIUS_FullAttack.Raumfliege"/>
                    </do_when>
                  </do_choose>


                  <play_text pageid="13" textid="1352"/>

                  
                </do_all>
              </action>
              <cues>
                <cue ref="OBS">
                  <params>
                    <param name="OBS Cue" value="FIUS_Angriff" comment="The cue name where the ship groups are saved too"/>
                    <param name="OBS Cancel Cue" value="OBS" comment="The cue which is canceled after the OBS finishes"/>
                    <param name="OBS Fleet Group Name" value="Ships" comment="The group name where all main ships are saved too"/>
                    <param name="OBS Support Fleet Group Name" value="Ships" comment="The group name where all support ships are saved too"/>
                    <param name="OBSFleetRace" value="{param@FIUSRassenvorgabe}" comment="The maker race ID of the ships or the racemask 'default' or 'pirategroup'"/>
                    <param name="OBSFleetPilotsRace" value="5" comment="The race ID of the pilots"/>
                    <param name="OBS Points" value="{value@FIUS_Parameter.SELPunkte}" comment="A fixed amount to use"/>
                    <param name="OBSMissionRank" value="{player.fightrank.rank}" comment="A 0-30 scale preferably based on the players fight rank"/>
                    <param name="OBSDifficultyRank" value="8" comment="A 1-8 scale of difficulty"/>
                    <param name="OBSPosition" value="50m" comment="how far away should the OBS ships be from FleetPositionObject"/>
                    <param name="OBSSector" value="{param@FIUSSektor}" comment="The sector where the ships will spawn if OBSFleetPositionObject not set"/>
                    <param name="OBSFleetRaceLogic" value="0" comment="0/1 Sets if the created ships will have default race logic"/>
                    <param name="OBSFleetPositionObject" value="FIUS_FullAttack.PosObject" comment="The object which will provide the location information"/>
                    <param name="OBS Dock Support" value="0" comment="0/1 Sets if the created support ships are docked with their homebase"/>
                    <param name="OBS Support Overflow" value="1" comment="0/1 Sets if additional support ships are created outside when the homebase is full"/>
                    <param name="OBSFleetRelation" value="-1"/>
                    <param name="OBSFleetHighlight" value="1" comment="0/1 Sets if the created ships will be highlighted"/>
                  </params>
                </cue>
                <cue name="FIUS_SetCommands">
                  <condition>
                    <cue_cancelled cue="OBS"/>
                  </condition>
                  <timing>
                    <time min="5s" max="8s"/>
                  </timing>
                  <action>
                    <do_all>
                      <set_group_racelogic group="FIUS_Angriff.Ships" racelogic="0"/>

                      <set_group_homebase group="FIUS_Angriff.Ships" homebase="0"/>
                      <set_group_command group="FIUS_Angriff.Ships" command="killenemies"/>
                      <destroy_object object="FIUS_Angriff.Raumfliege"/>


                      <!--hier prüfe ich verschiedene werte-->
                      <incoming_message author="Mindtrooper2"  popup="1" text="{value@FIUS_Parameter.Zufallsrasse}  {param@FIUSRassenvorgabe}  {lookup.race@argon}  {value@{param@FIUSRassenvorgabe}}            PlayerShipKontrolle_{player.ship}     AngriffbeiPlayer_{param@FIUSAngriffBeiPlayer}       Rasse_{param@FIUSRassenvorgabe}___ {lookup.race.name@{param@FIUSRassenvorgabe}}        selpunkte_{value@FIUS_Parameter.SELPunkte}         playersektor_{player.sector}           sektor_{param@FIUSSektor}       pos.objekt_{object@FIUS_FullAttack.PosObject}"/>



                    </do_all>
                  </action>
                  <!--</cue>-->
                  <cues>
                    <!---->

                    <!--<cue name="FIUS_CANCEL" delay="60s">
                      <condition>
                        <check_any>
                          <any_object_exists group="FIUS_Angriff.Ships" negate="1"/>
                          <check_all>
                            <count_ships findobject="{group.object.random@FIUS_Angriff.Ships}" enemy="1" exact="0">
                              <sector sector="{param@FIUSSektor}"/>
                            </count_ships>
                            <count_stations findobject="{group.object.random@FIUS_Angriff.Ships}" enemy="1" exact="0">
                              <sector sector="{param@FIUSSektor}"/>
                            </count_stations>
                            <check_value value="{player.sector}" exact="{param@FIUSSektor}" negate="1"/>
                          </check_all>
                        </check_any>
                      </condition>
                      <action>
                        <do_all>
                          <destroy_group group="FIUS_Angriff.Ships"/>
                          <reset_cue cue="{param@ResetCue}"/>
                        </do_all>
                      </action>
                    </cue>-->

                    <!---->
                  </cues>
                </cue>
                <!---->

              </cues>
            </cue>
            
            
          </cues>
        </cue>
      </cues>
    </cue>
  </cues>
</director>
wenn du lust und zeit hast kannst du es ja kopieren und testen :roll:
User avatar
JSDD
Posts: 1379
Joined: Fri, 21. Mar 14, 20:51
x3tc

Post by JSDD »

... hab nur mal kurz drüberge"skippt", schaut so aus als hättest da n kleinen fehler drin:

original:

Code: Select all

<!--........................Automatischer Zufallsstart in Playersektor 1/100........................-->
            <cue name="FIUS_Start2">
              <condition>
                <check_all>
                  <object_changed_sector/>
                  <!--<match_sector race="abandoned" sector="{sector@{event.object}}"/>-->
                </check_all>
              </condition>
             
              <timing>
                <time exact="10s"/>
              </timing>
             
              <action>
                <do_all>
                  <do_any>
                    <set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@argon}"/>
                    <!--<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@xenon}"/>-->
                    <!--<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@khaak}"/>-->
                    <!--<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@enemy}"/>-->
                  </do_any>
                </do_all>
              </action>

              <cues>
                <cue ref="FIUS_Angriff">
                  <params>
                    <param name="ResetCue" value="FIUS_Start2"/>
                    <param name="FIUSSektor" value="{player.sector}"/>
                    <param name="FIUSRassenvorgabe" value="{value@FIUS_Start2.Zufallsrasse}"/>
                    <param name="FIUSAngriffsPunktvorgabe" value="{player.fightrank.rank}*60+400+2600"/>
                    <param name="FIUSAngriffBeiPlayer" value="1"/>
                  </params>
                </cue>
              </cues>

            </cue> 
... das cue wartet auf das event <object_changed_sector/>, sobeld es triggert, wartet es <time exact="10s"/> mit der ausführung seines <action> abschnitts
... aber: die subcues (also <cue ref="FIUS_Angriff">) wartet nicht !!
d.h. FIUS_Start2.Zufallsrasse wird erst gesetzt nachdem das angriffscue längst ausgeführt wurd ^^ (& kann deswegen nicht auf die variable zugreifen)

besser so:

Code: Select all


irgendwo im vorherigen cue:
<set_sector name="this.vorherigersektor" value="{player.sector}"/>
... aber NICHT unter this. sondern am besten ALLE variablen unter FIUS_Main

<!--........................Automatischer Zufallsstart in Playersektor 1/100........................-->
            <cue name="FIUS_Start2" delay="5s">
              <condition>
                <check_all>
                  <!--wenn du sowieso 10s wartest bis du den <action> block ausfuehrst, wieso dann pro-frame-event-check ??-->
                  <!--<object_changed_sector/>-->
                  <match_sector sector="{player.sector}" race="abandoned"/>
                  <!--ausfuehren, wenn der sektor gewechselt wurde ... wichtig: zuvor this.vorherigersektor inisialisieren/setzen-->
                  <check_value value="{value@this.vorherigersektor}" exact="{player.sector}" negate="1"/>
                  <!--<match_sector race="abandoned" sector="{sector@{event.object}}"/>-->
                </check_all>
              </condition>
             
              <timing>
                <time exact="10s"/>
              </timing>
             
              <action>
                <do_all>
                  <do_any>
                    <!--merk dir in welchen sektor du gerade bist, um mehrfache ausführung (pro sektor) zu verhindern-->
                    <set_sector name="this.vorherigersektor" value="{player.sector}"/>
                    <!--frage: warum nich alle wariable im 'main cue' abspeichern ?? der >sicht etwegen ^^-->
                    <set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@argon}"/>
                    <!--<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@xenon}"/>-->
                    <!--<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@khaak}"/>-->
                    <!--<set_value name="FIUS_Start2.Zufallsrasse" exact="{lookup.race@enemy}"/>-->
                  </do_any>
                </do_all>
              </action>

              <cues>
                
                <!--erst mal checken, ob parent cue fertig-->
                <cue version="1" name="wasweisdennich" delay="1s">
                  <condition>
                    <check_all>
                      <!--<cue_is_complete cue="parent"/>-->
                      <cue_is_complete cue="FIUS_Start2"/>
                    </check_all>
                  </condition>

                  <cues>
                    
                    <!--hier also ist sicher gestellt, dass die ganze geschichte 'sequentiell' ablaeuft-->
                    <cue ref="FIUS_Angriff">
                      <params>
                        <param name="ResetCue" value="FIUS_Start2"/>
                        <param name="FIUSSektor" value="{player.sector}"/>
                        <param name="FIUSRassenvorgabe" value="{value@FIUS_Start2.Zufallsrasse}"/>
                        <param name="FIUSAngriffsPunktvorgabe" value="{player.fightrank.rank}*60+400+2600"/>
                        <param name="FIUSAngriffBeiPlayer" value="1"/>
                      </params>
                    </cue>
                    
                  </cues>
                  
                </cue>
... auf testen hab ich grad kein bock, vllt morgen ... sag bescheid wenn alles so klappt wie du's dir vorgestellt hast

@ SRST vom dvbtech forum ... am besten an deine (vermutlich auch modifizierte ? :)) TShips anpassen, ich z.B. hab mir letztens noch n advanced xenon PX gemacht, gegen das ich "gern" fighten würd ^^
das SRST system ist ganz einfach, es erstellt (nach angegebenen parametern) ne liste mit schiffen (kein array, sondern es inkrementiert ständig den variablemnamen und setzt darauf n schiffstyp, ganz am ende/unten wählt es ne zufällige zahl zwischen 1 & "anzahl_schiffstypen_gesetzt" & liest den darauf gesetzten wert ein/ gibt ihn ans aufrufende cue / shiptype adress zurück)

WICHTIG:
entfern alle ä ö ü aus kommentaren, hab nämlich gemerkt dass entweder die x3engine oder das utf8 format probleme mit "komischen" nicht.englishen zeichen hat => lädt die datei dann erst gar nicht !!!
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
User avatar
Joda
Posts: 217
Joined: Sun, 18. Jan 04, 23:44
xr

Post by Joda »

JSDD danke danke danke :D
... das cue wartet auf das event <object_changed_sector/>, sobeld es triggert, wartet es <time exact="10s"/> mit der ausführung seines <action> abschnitts
... aber: die subcues (also <cue ref="FIUS_Angriff">) wartet nicht !!
das wusste ich nicht, dachte das wird stück für stück abgearbeitet da es ja in nem sub cues war oder geht es speciell nur um <cue ref= ???
das timing hatte ich nicht immer, da ging es mal und mal nicht... war dann wohl immer zufall ob der wert schon gesetzt war.
da muss man wohl immer mit "cue_is_complete" arbeiten oder?
... auf testen hab ich grad kein bock, vllt morgen ... sag bescheid wenn alles so klappt wie du's dir vorgestellt hast
hat sich ja dann erledigt :)
@ SRST vom dvbtech forum ... am besten an deine (vermutlich auch modifizierte ? Smile) TShips anpassen, ich z.B. hab mir letztens noch n advanced xenon PX gemacht, gegen das ich "gern" fighten würd ^^
das SRST system ist ganz einfach, es erstellt (nach angegebenen parametern) ne liste mit schiffen (kein array, sondern es inkrementiert ständig den variablemnamen und setzt darauf n schiffstyp, ganz am ende/unten wählt es ne zufällige zahl zwischen 1 & "anzahl_schiffstypen_gesetzt" & liest den darauf gesetzten wert ein/ gibt ihn ans aufrufende cue / shiptype adress zurück)
hab bereits eine eigene OBS und SRST gebastelt mit eigenem ausrüstscript. funktionierte immer wunderbar aber wegen dem fehler
hier wollte ich die 2 ausschliesen, desswegen habe ich die "orginale" ( von dir ) benutzt.
in meiner gibts die "neue" rasse feinde, M0 schiffe und ne menge andere mod schiffe, die es so nicht gibt.
desshalb ein eigener name dafür, weil nur mit meinen scripten das power zeug gespawnt werden soll :D
WICHTIG:
entfern alle ä ö ü aus kommentaren, hab nämlich gemerkt dass entweder die x3engine oder das utf8 format probleme mit "komischen" nicht.englishen zeichen hat => lädt die datei dann erst gar nicht !!!
das die dateien ab und zu nicht geladen werden hab ich gemerkt und desshalb in utf8 gespeichert!? das hab ich von dir....! :) aus
dem md script "TRADE: Warenangebot" und laut wikipedia kommen da eben alle zeichen vor. egosoft benutzt ja ISO-8859-1,
da hab ich aus verzweiflung auch mal damit rumexperimentiert :oops: und eben bemerkt das nicht immer geladen wird.
du empfiehlst also alle ä ö ü raus und im utf8 format speichern oder geht dann das ego format auch?



PS: bastelst du eigentlich auch noch an missionen oder "nur" noch support :roll:
wie Einheit 101 schon mal geschrieben hat.... ist ech toll das immer noch die selben leute da sind und helfen :lol:
User avatar
JSDD
Posts: 1379
Joined: Fri, 21. Mar 14, 20:51
x3tc

Post by JSDD »

Joda wrote: das wusste ich nicht, dachte das wird stück für stück abgearbeitet da es ja in nem sub cues war oder geht es speciell nur um <cue ref= ???
das timing hatte ich nicht immer, da ging es mal und mal nicht... war dann wohl immer zufall ob der wert schon gesetzt war.
da muss man wohl immer mit "cue_is_complete" arbeiten oder?
... cue_is_complete cue="abc" heißt, dass cue "abc" hat sein action bereich vollständig ausgeführt
... wenn es überhaupt keinen <action> bereich hat, dann heißt es, dass cue "abc" hat sein <timing> bereich abgewartet (denk ich jetzt mal)
... es gibt auch cue_completed, ist aber n event & muss frameweise gecheckt werden (davon bzw. von performance-beeinträchtigenden sachen bin ich generell kein fan)
... mit cue ref hats nix zutun, das gilt für jedes cue

du empfiehlst also alle ä ö ü raus und im utf8 format speichern oder geht dann das ego format auch?
... ne ne, ich weiß nur, dass es seeehr stressig war, rauszufinden, dass man (beim format ISO... oder utf8, weiß grad nich mehr) keine äöü verwenden darf ^^

PS: bastelst du eigentlich auch noch an missionen oder "nur" noch support :roll:
... support ?! nö, wieso auch, es fragt ja sowieso kaum einer nach irgendwelchen problemen/verbesserungsvorschläge ...
... neue missionen ?! z.B. ?? wollte letztens ne lotterie basteln, habs dann aber gelassen ... ansonsten bin ich relativ offen für neue vorschläge
... vorgestern hab ich z.B. all meine missionen ins vanilla-offer-system eingebaut (kannst's ja haben, wenn du willst ..)
<= was versprech ich mr davon ??
=> dass meine missionen auch mehrfach paralel laufen können & auch angeboten werden können
(... da fällt mir grad ein: hab nebenbei noch n paar errors aus der kapermission gefixt)

original:

Code: Select all

<do_choose>
  <do_when value="{player.ship.isclass.m4}" exact="1">
    <set_value name="CaptureFighter.EnemyClass" chance="1" exact="{lookup.class@m3}"/>
    <set_value name="CaptureFighter.EnemyClass" chance="2" exact="{lookup.class@m4}"/>
  </do_when>
  <do_when value="{player.ship.isclass.m5}" exact="1">
    <set_value name="CaptureFighter.EnemyClass" chance="1" exact="{lookup.class@m4}"/>
    <set_value name="CaptureFighter.EnemyClass" chance="2" exact="{lookup.class@m5}"/>
  </do_when>
  <do_otherwise>
    <set_value name="CaptureFighter.EnemyClass" exact="{lookup.class@m3}"/>
  </do_otherwise>
</do_choose>
... wo steckt wohl der fehler ??
Spoiler
Show
wenn player ship klasse = m4 oder m5, dann ist nicht sicher, dass überhaupt ne enemy class gesetzt wird ... was zur folge hat, dass SRST kein schiffstyp setzen kann ... was zur folge hat, dass immer ne nova spawnt ^^
wie Einheit 101 schon mal geschrieben hat.... ist ech toll das immer noch die selben leute da sind und helfen :lol:
... weißt ja bestimmt, was "die meisten" hier von XR halten ... man könnte fast meinen: X3(TC/AP) ist "alternativlos" ... (aber "alternativlosigkeit" gilt naturgemäß nur für engstirnige beobachter, wie's konservative eben soo sind :roll:)


EDIT: ... ich glaub es müsste im von mir geposteten code eher ...
<check_value value="{sector@this.vorherigersektor}" exact="{player.sector}" negate="1"/>
... statt ...
<check_value value="{value@this.vorherigersektor}" exact="{player.sector}" negate="1"/>
... heißen
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
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

JSDD wrote:... es gibt auch cue_completed, ist aber n event & muss frameweise gecheckt werden (davon bzw. von performance-beeinträchtigenden sachen bin ich generell kein fan)
wenn das in X3 genauso gelöst ist wie in XR liegst du mit dem frameweise checken falsch, tatsächlich sind events sogar performancesparender als als ein "gleichwertiges" check_value, denn events funktionieren im prinzip wie interrupts (wenn du mit irgendwas ein event_X setzt wird auf dem jeweiligen Objekt oder Cue intern ein merker/eine Variable gesetzt, die aussagt dass im falle von X cue Y gecheckt werden soll), check_value dagegen ist wie polling

Nachteil von Events ist, dass sie aufgrund ihrer Funktionsweise bereits vergangene Ereignisse nicht erfassen können (event_cue_completed wird z.B. niemals triggern wenn der cue bereits complete ist) - daher kann es sinn machen ein check_value und ein event_* zu kombinieren - ersteres um vergangene Ereignisse zu erfassen, zweiteres für zukünftige
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
Joda
Posts: 217
Joined: Sun, 18. Jan 04, 23:44
xr

Post by Joda »

@UniTrader
so richtig überprüfen was performance schonender ist, kann man das aber nicht oder?

@JSDD
... vorgestern hab ich z.B. all meine missionen ins vanilla-offer-system eingebaut (kannst's ja haben, wenn du willst ..)
alles was abwechslung bringt oder ich was lernen kann, nehm ich gerne :D
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

Joda wrote:@UniTrader
so richtig überprüfen was performance schonender ist, kann man das aber nicht oder?
geht schon, indem man sagen wir 10.000-mal den event_cue_completed 10.000-mal an einen cue bindet und das mit der performance von 10.000 cue_is_complete aller der minimal erlaubten Zeit (also jede ms/jeden Frame) vergleicht - die Anzahl ggf. erhöhen, bis der performanceeinbruch bei einem von beiden bemerkbar ist (und ich würde drauf wetten dass event_cue_completed keine mehrleistung beansprucht, egal wie oft er registriert wird, nur mit jedem mal ein wenig mehr speicher...)

PS ich kann aber da keine Versuchsreihe machen, meine X3-Modding-Zeit ist vorbei ^^
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
JSDD
Posts: 1379
Joined: Fri, 21. Mar 14, 20:51
x3tc

Post by JSDD »

@ unihändler ... na dann hoffen wir mal, dass ego's wie in XR gelöst hat ... (auf tests hab ich nämlich >haupt kein bock :D)

@ joda ... hier, wenn du TC zockst, dann readme lesen, wenn nich, dann einfach readme 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
User avatar
Joda
Posts: 217
Joined: Sun, 18. Jan 04, 23:44
xr

Post by Joda »

UniTrader wrote:PS ich kann aber da keine Versuchsreihe machen, meine X3-Modding-Zeit ist vorbei ^^
vorbei?? aber hier im forum bist ja noch ziemlich aktiv. kein interesse mehr am spiel?


JSDD wrote:@ unihändler ... na dann hoffen wir mal, dass ego's wie in XR gelöst hat ... (auf tests hab ich nämlich >haupt kein bock Very Happy)
ja tests..... :roll:
JSDD wrote:@ joda ... hier, wenn du TC zockst, dann readme lesen, wenn nich, dann einfach readme löschen Wink
dank dir dafür und für deine hilfe :!:

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