ich bin gerade dabei, ein paar Erfahrungen mit eigen MD Scripten zu sammeln. Da meine Erfahrung mit Programmieren eher gering ist, mache ich es auf dem klassischen Weg und schaue mir an, was andere so getrieben haben.
Was ich bislang noch nicht verstanden habe, ist, wann ich bei einem cue den Parameter "instantiate = true" setzen sollte. Und wann es sinnvoll ist, einen cue zu reseten. Vielleicht kann mir einer das hier bitte näher erläutern.
Ich habe auch hier geschaut, aber es hat mir nicht so wirklich weiter geholfen: https://www.egosoft.com:8444/confluence ... ctor+Guide
Zum Hintergrund, vielleicht ist es an Beispielen einfacher:
Ich möchte zusätzliche Forschung zum Spiel hinzufügen, die dem Spieler jeweils eine Blaupause für eine neue Station gibt.
Also gibt es jetzt eine Reihe neuer Stationen (ware_station_1 bis ware_station_6) in der wares.xml und zusätzlich die dazu passenden research_ware_station_1 bis research_ware_station_6.
Erfolgt nur die Erforschung einer der Blaupausen, sollen sie auch dem Spieler hinzugefügt werden.
Hat der Spieler die Blaupausen bereits gekauft, muss er sie natürlich nicht noch mal erforschen.
Code: Select all
<mdscript name="test23"
<cues>
<cue name="Check_Research_Unlocked" onfail="cancel">
<conditions>
<cue_is_complete cue="md.X4Ep1_Mentor_Subscriptions.UnlockResearch" />
</conditions>
</cue>
<cue name="Research_Activated">
<conditions>
<check_any>
<event_cue_signalled />
<event_cue_completed cue="md.X4Ep1_Mentor_Subscriptions.UnlockResearch" />
<event_cue_completed cue="Check_Research_Unlocked" />
</check_any>
</conditions>
<delay exact="1s" />
<actions>
<add_encyclopedia_entry type="researchables" item="'research_station_1'" />
<add_encyclopedia_entry type="researchables" item="'research_station_2'" />
<!-- Code gekürzt -->
<add_encyclopedia_entry type="researchables" item="'research_station_6'" />
</actions>
</cue>
<cue name="Research_finished" instantiate="true">
<conditions>
<event_player_research_unlocked/>
</conditions>
<actions>
<set_value name="$wares_all_modules" exact="[ware.ware_station_1, ware.ware_station_2; .. , ware.ware_station_6]" />
<set_value name="$research_wares_all_modules" exact="[ware.research_ware_station_1, ware.research_ware_station_2; .. , ware.research_ware_station_6]" />
<do_all exact="$research_wares_all_modules.count" counter="$c">
<do_if value="$research_wares_all_modules.{$c}.research.unlocked">
<add_blueprints wares="$wares_all_modules.{$c}" />
</do_if>
</do_all>
<remove_value name="$wares_all_modules" />
<remove_value name="$research_wares_all_modules" />
<reset_cue cue="this" />
</actions>
</cue>
<cue name="Blueprints_already_bought" instantiate="true">
<conditions>
<check_any>
<event_player_blueprint_added />
<check_any>
<event_cue_completed cue="md.X4Ep1_Mentor_Subscriptions.UnlockResearch" />
<event_cue_completed cue="Check_Research_Unlocked" />
</check_any>
</check_any>
</conditions>
<delay exact="2s" />
<actions>
<set_value name="$wares_all_modules" exact="[ware.ware_station_1, ware.ware_station_2; .. , ware.ware_station_6]" />
<set_value name="$research_wares_all_modules" exact="[ware.research_ware_station_1, ware.research_ware_station_2; .. , ware.research_ware_station_6]" />
<do_all exact="$wares_all_modules.count" counter="$i">
<do_if value="player.blueprints.{$wares_all_modules.{$i}}.any.exists">
<add_research ware="$research_wares_all_modules.{$i}" />
</do_if>
</do_all>
<remove_value name="$wares_all_modules" />
<remove_value name="$research_wares_all_modules" />
<reset_cue cue="this" />
</actions>
</cue>
</cues>
</mdscript>
sprIder