[HELP: SOLVED] Deploying satellites near all Data Vaults.

The place to discuss scripting and game modifications for X4: Foundations.

Moderators: Moderators for English X Forum, Scripting / Modding Moderators

Post Reply
User avatar
alexalsp
Posts: 1823
Joined: Fri, 18. Jul 14, 05:28
x4

[HELP: SOLVED] Deploying satellites near all Data Vaults.

Post by alexalsp » Sat, 7. May 22, 22:48

SOLVED!!!
Thank you DeadAirRT for your help and patience.

Code: Select all

?xml version="1.0" encoding="utf-8"?>
<mdscript name="vault_open" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="md.xsd">
<!-- alexalsp
Thanks for the help: DeadAirRT -->
 <cues>
	  <cue name="open_vault_cheat" instantiate="true">
	<conditions>
        <check_any>
          <event_game_loaded />
          <event_cue_signalled cue="md.Setup.GameStart"/>
        </check_any>
      </conditions>
	<actions>
		<do_if value="$Beacon?">
			<remove_value name="$Beacon"/>
		</do_if>
		<find_object name="$Vaults" macro="[macro.landmarks_erlking_vault_01_macro, macro.landmarks_erlking_vault_02_macro, macro.landmarks_erlking_vault_03_macro, macro.landmarks_erlking_vault_04_macro, macro.landmarks_erlking_vault_05_macro, macro.landmarks_research_vault_01_macro, macro.landmarks_vault_01_macro, macro.landmarks_vault_02_macro, macro.landmarks_vault_03_macro, macro.landmarks_vault_04_macro]" space="player.galaxy" multiple="true"/>
            <do_all exact="$Vaults.count" counter="$i">
                    <find_object name="$Beacon" class="class.satellite" space="$Vaults.{$i}.sector" owner="faction.player" multiple="false">
                        <match_distance max="40km" object="$Vaults.{$i}"/>
                    </find_object>
                    <do_if value="$Beacon? and $Beacon != null">
                        <!-- <debug_text filter="general" text="'\nFound old %1 at %2'.[$Beacon.macro,$Vaults.{$i}.sector.macro]"/> -->
                        <!-- <debug_text filter="general" text="'\nНайден старый маяк %1 в секторе %2 с Хранилищем данных'.[$Beacon.name,$Vaults.{$i}.sector.name]"/> -->
                    </do_if>
                    <do_else>
                        <create_object name="$NewBeacon" sector="$Vaults.{$i}.sector" owner="faction.player" macro="macro.eq_arg_satellite_02_macro">
                            <safepos object="$Vaults.{$i}" max="5km"/>
                        </create_object>
                        <!-- <debug_text filter="general" text="'\nCreated %1 at %2'.[$NewBeacon.macro,$Vaults.{$i}.sector.macro]"/> -->
                        <!-- <debug_text filter="general" text="'\nСоздан спутник %1 в секторе %2'.[$NewBeacon.name,$Vaults.{$i}.sector.name]"/> -->
                        <remove_value name="$NewBeacon"/>
                    </do_else>
                    <remove_value name="$Beacon"/>
                    <set_known object="$Vaults.{$i}" known="true" updatesnapshot="true" />
                    <set_object_scanned object="$Vaults.{$i}"/>
                   <!-- <debug_text filter="general" text="'\n\n%1 - %2 \n%3 - %4 \n'.[$Vaults.{$i}.macro, $Vaults.{$i}.name, $Vaults.{$i}.sector.macro, $Vaults.{$i}.sector.name]"/> -->
            </do_all>
		<remove_value name="$Vaults"/>
		<play_sound object="player.ship" sound="'scfx_result_wave_01'"/>
		<show_help log="false" force="true" custom="'Satellites are deployed near the Data Vaults.'" timeout="5s" comment="Data storages are covered by satellites. Use the filter of the map: Vault, Adv or sat. "/>
	</actions>
	  </cue>	  
  </cues>
Old code, not working properly.
Show

Code: Select all

      <cue name="test">
      <conditions>
        <event_cue_signalled/>
      </conditions>
      <actions>      
        <find_object groupname="$Vaults" macro="[macro.landmarks_erlking_vault_01_macro, macro.landmarks_erlking_vault_02_macro, macro.landmarks_erlking_vault_03_macro, macro.landmarks_erlking_vault_04_macro, macro.landmarks_erlking_vault_05_macro, macro.landmarks_research_vault_01_macro, macro.landmarks_vault_01_macro, macro.landmarks_vault_02_macro, macro.landmarks_vault_03_macro, macro.landmarks_vault_04_macro]" space="player.galaxy" multiple="true" />

          <do_all exact="$Vaults.count" counter="$i">

            <find_object name="$Beacon"  space="$Vaults.{$i}.sector" owner="faction.player" multiple="true" />

               <do_if value="not $Beacon.exists" >
                 <create_object name="$Beacon" sector="$Vaults.{$i}.sector" owner="faction.player" macro="macro.eq_arg_satellite_02_macro" >
                   <safepos object="$Vaults.{$i}" max="2km" radius="1km" />
                 </create_object>
              </do_if>

            <set_known object="$Vaults.{$i}" known="true" />
            <set_object_scanned object="$Vaults.{$i}" />
            
            <debug_text filter="general" text="'\n\n%1 - %2 \n%3 - %4 \n'.[$Vaults.{$i}.macro, $Vaults.{$i}.name, $Vaults.{$i}.sector.macro, $Vaults.{$i}.sector.name]"/>
            
        <remove_value name="$Beacon" />

          </do_all>     
          
        <play_sound object="player.ship" sound="'scfx_result_wave_01'" />
        <show_help log="false" force="true" custom="{77777777,10150}"  timeout="5s"/>
        <show_notification  text="{77777777,10150}" icon="achievement_notoriety_up" timeout="7s" comment="Хранилища данных открыты. Используйте фильтр карты. "/>
      
  <reset_cue cue="this" />
      
      </actions>
      </cue>

Code: Select all

Property lookup failed: $Beacon.exists
* Expression: not $Beacon.exists
* Action: <do_if>, line 102
Can someone help solve the problem? Haven't done md scripts in a long time. What does he lack? If there is a satellite, it is not added, if not - is added. But at the moment, if you use the menu 20 times, 20 satellites will be added.
Last edited by alexalsp on Mon, 9. May 22, 09:29, edited 2 times in total.

DeadAirRT
Posts: 1022
Joined: Fri, 25. Jan 19, 03:26
x4

Re: [HELP] Fix code bug

Post by DeadAirRT » Sun, 8. May 22, 01:11

Code: Select all

				<cue name="test" instantiate="true">
			<conditions>
				<event_cue_signalled/>
			</conditions>
			<actions>
				<do_if value="$Beacon?">
					<remove_value name="$Beacon"/>
				</do_if>
				<find_object name="$Vaults" macro="[macro.landmarks_erlking_vault_01_macro, macro.landmarks_erlking_vault_02_macro, macro.landmarks_erlking_vault_03_macro, macro.landmarks_erlking_vault_04_macro, macro.landmarks_erlking_vault_05_macro, macro.landmarks_research_vault_01_macro, macro.landmarks_vault_01_macro, macro.landmarks_vault_02_macro, macro.landmarks_vault_03_macro, macro.landmarks_vault_04_macro]" space="player.galaxy" multiple="true"/>
				<do_all exact="$Vaults.count" counter="$i">
					<find_object name="$Beacon" class="class.satellite" space="$Vaults.{$i}.sector" owner="faction.player" multiple="true">
						<match_distance max="40km" object="$Vaults.{$i}"/>
					</find_object>
					<do_if value="(not $Beacon?)">
						<create_object name="$NewBeacon" sector="$Vaults.{$i}.sector" owner="faction.player" macro="macro.eq_arg_satellite_02_macro">
							<safepos object="$Vaults.{$i}" max="5km"/>
						</create_object>
						<remove_value name="$NewBeacon"/>
					</do_if>
					<remove_value name="$Beacon"/>
					<set_known object="$Vaults.{$i}" known="true"/>
					<set_object_scanned object="$Vaults.{$i}"/>
					<debug_text filter="general" text="'\n\n%1 - %2 \n%3 - %4 \n'.[$Vaults.{$i}.macro, $Vaults.{$i}.name, $Vaults.{$i}.sector.macro, $Vaults.{$i}.sector.name]"/>
				</do_all>
				<remove_value name="$Vaults"/>
				<play_sound object="player.ship" sound="'scfx_result_wave_01'"/>
				<show_help log="false" force="true" custom="{77777777,10150}" timeout="5s"/>
				<show_notification text="{77777777,10150}" icon="achievement_notoriety_up" timeout="7s" comment="Хранилища данных открыты. Используйте фильтр карты. "/>
			</actions>
		</cue>
edit: updated
Last edited by DeadAirRT on Sun, 8. May 22, 02:24, edited 1 time in total.

User avatar
alexalsp
Posts: 1823
Joined: Fri, 18. Jul 14, 05:28
x4

Re: [HELP] Fix code bug

Post by alexalsp » Sun, 8. May 22, 02:18

Thank you. I checked, the satellite is not added. :(

User avatar
alexalsp
Posts: 1823
Joined: Fri, 18. Jul 14, 05:28
x4

Re: [HELP] Fix code bug

Post by alexalsp » Sun, 8. May 22, 04:26

SOLVED!!!
Thank you DeadAirRT for your help and patience.

Code: Select all

?xml version="1.0" encoding="utf-8"?>
<mdscript name="vault_open" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="md.xsd">
<!-- alexalsp
Thanks for the help: DeadAirRT -->
 <cues>
	  <cue name="open_vault_cheat" instantiate="true">
	<conditions>
        <check_any>
          <event_game_loaded />
          <event_cue_signalled cue="md.Setup.GameStart"/>
        </check_any>
      </conditions>
	<actions>
		<do_if value="$Beacon?">
			<remove_value name="$Beacon"/>
		</do_if>
		<find_object name="$Vaults" macro="[macro.landmarks_erlking_vault_01_macro, macro.landmarks_erlking_vault_02_macro, macro.landmarks_erlking_vault_03_macro, macro.landmarks_erlking_vault_04_macro, macro.landmarks_erlking_vault_05_macro, macro.landmarks_research_vault_01_macro, macro.landmarks_vault_01_macro, macro.landmarks_vault_02_macro, macro.landmarks_vault_03_macro, macro.landmarks_vault_04_macro]" space="player.galaxy" multiple="true"/>
            <do_all exact="$Vaults.count" counter="$i">
                    <find_object name="$Beacon" class="class.satellite" space="$Vaults.{$i}.sector" owner="faction.player" multiple="false">
                        <match_distance max="40km" object="$Vaults.{$i}"/>
                    </find_object>
                    <do_if value="$Beacon? and $Beacon != null">
                        <!-- <debug_text filter="general" text="'\nFound old %1 at %2'.[$Beacon.macro,$Vaults.{$i}.sector.macro]"/> -->
                        <!-- <debug_text filter="general" text="'\nНайден старый маяк %1 в секторе %2 с Хранилищем данных'.[$Beacon.name,$Vaults.{$i}.sector.name]"/> -->
                    </do_if>
                    <do_else>
                        <create_object name="$NewBeacon" sector="$Vaults.{$i}.sector" owner="faction.player" macro="macro.eq_arg_satellite_02_macro">
                            <safepos object="$Vaults.{$i}" max="5km"/>
                        </create_object>
                        <!-- <debug_text filter="general" text="'\nCreated %1 at %2'.[$NewBeacon.macro,$Vaults.{$i}.sector.macro]"/> -->
                        <!-- <debug_text filter="general" text="'\nСоздан спутник %1 в секторе %2'.[$NewBeacon.name,$Vaults.{$i}.sector.name]"/> -->
                        <remove_value name="$NewBeacon"/>
                    </do_else>
                    <remove_value name="$Beacon"/>
                    <set_known object="$Vaults.{$i}" known="true" updatesnapshot="true" />
                    <set_object_scanned object="$Vaults.{$i}"/>
                   <!-- <debug_text filter="general" text="'\n\n%1 - %2 \n%3 - %4 \n'.[$Vaults.{$i}.macro, $Vaults.{$i}.name, $Vaults.{$i}.sector.macro, $Vaults.{$i}.sector.name]"/> -->
            </do_all>
		<remove_value name="$Vaults"/>
		<play_sound object="player.ship" sound="'scfx_result_wave_01'"/>
		<show_help log="false" force="true" custom="'Satellites are deployed near the Data Vaults.'" timeout="5s" comment="Data storages are covered by satellites. Use the filter of the map: Vault, Adv or sat. "/>
	</actions>
	  </cue>	  
  </cues>

Post Reply

Return to “X4: Foundations - Scripts and Modding”