Acquire the Erlking?

Please post any spoilers for X4: Foundations here.

Moderator: Moderators for English X Forum

Kidnoff
Posts: 1
Joined: Fri, 5. May 23, 05:58

Re: Acquire the Erlking?

Post by Kidnoff » Fri, 5. May 23, 06:47

Ok guys, I need your help... I only miss the 'L' turret blueprint, and I spend more than 30 hours searching it... 30+ HOURS!!! I really didn't want to cheat, but I already look everywhere, really... So I did the trick to see the vaults (on a 2nd save slot) by changing the owner="player" with Notepad ++... And the Data Vault 03 is a little bit weird :

<component class="object" macro="landmarks_erlking_vault_03_macro" connection="space" attackmethod="collided" attacktime="192561.551" shipattacktime="192561.551" code="AWO-522" owner="ownerless" knownto="player" id="[0x264fc]">


It's like something attack it? So the L turret no longer exist in my game?

The other code lines for the other vault was normal, like said in this topic... And I just realize, after changing the owner="player" thing, I can't save the change lol... I don't know why. I desactivate the cloud, and the compress thing no longer exist in the game option... Even in admin, I save it, it look normal, but when I reopen the file, nothing has changed...

I need help, I already lost so much time with that Erlking crap

Edit: Ok, my issue to save the file is not about the cloud. I just did some test offline, and when I open the savefile, it make a tempory file in Appdata... I'm a smart person, so I saved the change manually on a other text file, and compress it manually, delete the 'real' save, and change the name of the new to be the same as the old one... Now, I see 5 data vault, so I gonna look it on my real save and hope to have that last blueprint.

Edit 2 : Yes it work perfectly ^^ Thank you guys! Yes I know I talk alone.... But I update my post for people who search with Google.

sabbede
Posts: 65
Joined: Sun, 13. Aug 06, 19:34
x4

Re: Acquire the Erlking?

Post by sabbede » Sat, 6. May 23, 01:44

silentradios wrote:
Sun, 27. Mar 22, 14:51
Edit 3/27: Apparently Avarice V and IV were swapped (I got the friendly name mapping from reddit - not sure where a real source is) -- I confirmed in my save and two others did as well

Here is a bat file that runs the powershell inside it (sneaky.. but effective) : https://anechoic.space/erlkinggui.bat
It has a few features over the previous script including:
  • A File selection dialog
  • Support for gz / compressed saves
  • GUI output of the positions
Here is the same script that you can copy and past and save into a .bat file (use notepad and save as UTF-8 or ANSI (do not select the with BOM ones) and run to avoid the prompts that you get from windows about it being safe or not..

Code: Select all

@findstr/v "^@f.*&" "%~f0"|powershell -noprofile -executionpolicy bypass -&goto:eof
#Fist line stolen from https://stackoverflow.com/a/2611394
#This uses a fair amount of memory - if you have limited ram exit X4 first...
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Messagebox]::Show("This uses a fair amount of memory - if you have limited ram exit X4 first...")

#stolen from https://4sysops.com/archives/how-to-create-an-open-file-folder-dialog-box-with-powershell/
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{ 
    InitialDirectory = [Environment]::GetFolderPath('MyDocuments') + "\Egosoft\X4" 
    Filter = '*.xml|*.gz'
    Title = "Select savegame file"
}
while([string]::IsNullOrWhiteSpace($FileBrowser.FileName)){
    $null = $FileBrowser.ShowDialog()
    sleep 1
}

#from https://social.technet.microsoft.com/Forums/windowsserver/en-US/5aa53fef-5229-4313-a035-8b3a38ab93f5/unzip-gz-files-using-powershell?forum=winserverpowershell
Function Expand-GZip{
    Param(
        $infile,
        $outfile = ($infile -replace '\.gz$','')
        )
    $input = New-Object System.IO.FileStream $inFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read)
    $output = New-Object System.IO.FileStream $outFile, ([IO.FileMode]::Create), ([IO.FileAccess]::Write), ([IO.FileShare]::None)
    $gzipStream = New-Object System.IO.Compression.GzipStream $input, ([IO.Compression.CompressionMode]::Decompress)
    $buffer = New-Object byte[](1024)
    while($true){
        $read = $gzipstream.Read($buffer, 0, 1024)
        if ($read -le 0){break}
        $output.Write($buffer, 0, $read)
        }
    $gzipStream.Close()
    $output.Close()
    $input.Close()
}

$gzip = $false

if($FileBrowser.FileName -match "\.gz$"){
    Write-Host "Extracting compressed save, this may take a while"
    $gzip = $true
    Expand-GZip -infile $FileBrowser.FileName
}

if($gzip) {
    $file = ($FileBrowser.FileName -replace '\.gz$','')
} else {
    $file = $FileBrowser.FileName
}

Write-Host "Loading XML, this may take a while and will use lots of ram"

$Xml=New-Object Xml
#unzip .gz file with 7-zip or gunzip first or use uncompressed saves
$Xml.Load($file)

Write-Host "Finding Erlking Data Vaults"
$components=Select-Xml -Xml $Xml -XPath "/savegame/universe//component"
$erl=$components | ?{$_.Node.macro -and $_.Node.macro.Contains("erlking")}
$vaults = $erl | ?{$_.Node.macro -and $_.Node.macro.Contains("landmarks_erlking_vault")}

#From hatevampire at https://www.reddit.com/r/X4Foundations/comments/thjbik/how_to_read_save_file/
#Not sure where the real source of friendlyname is..

$locationtoname = @{
    cluster_500_sector001_macro="Avarice I"
    cluster_500_sector002_macro="Avarice V"
    cluster_500_sector003_macro="Avarice IV"
    cluster_501_macro="Windfall I"
    cluster_502_macro="Windfall III"
    cluster_503_macro="Windfall IV"
}

$macrotocoords=@{
     "Zone004_Cluster_503_Sector001_macro"="139680,0,-3215.59"
     "Zone003_Cluster_500_Sector003_macro"="-115796.9,0,-96109.38"
     "Zone002_Cluster_503_Sector001_macro"="-2269.199,0,165758.4"
     "Zone006_Cluster_500_Sector002_macro"="-184409.83,0,-3343.0"
     "Zone003_Cluster_501_Sector001_macro"="-97898.44,0,-23632.81"
     "Zone003_Cluster_500_Sector001_macro"="-97898.44,0,-23632.81"
     "Zone005_Cluster_501_Sector001_macro"="-23023.44,0,-160132.8"
     "Zone004_Cluster_504_Sector001_macro"="157616.8,0,-84263.63"
     "tzoneCluster_500_Sector002SHCon9_GateZone_macro"="-39827.2,0,200000"
     "tzoneCluster_500_Sector002SHCon5_GateZone_macro"="-50000,0,200000"
     "Zone001_Cluster_500_Sector003_macro"="-117046.9,0,82593.75"
     "Zone001_Cluster_501_Sector001_macro"="-127062.5,0,133718.8"
     "Zone005_Cluster_504_Sector001_macro"="-23023.44,0,-160132.8"
     "Zone004_Cluster_500_Sector001_macro"="103164.1,0,-32492.19"
     "Zone002_Cluster_500_Sector001_macro"="-10960.94,0,112070.3"
     "Zone003_Cluster_500_Sector002_macro"="-7132.69,0,531.25"
     "Zone002_Cluster_500_Sector002_macro"="-118489.4,0,-131687.5"
     "tzoneCluster_500_Sector003SHCon9_GateZone_macro"="50000,0,200000"
     "Zone005_Cluster_500_Sector002_macro"="98694.83,0,-126406.3"
     "tzoneCluster_500_Sector001SHCon2_GateZone_macro"="66960.9,0,-207957"
     "tzoneCluster_500_Sector003SHCon5_GateZone_macro"="40054.7,0,200000"
     "tzoneCluster_500_Sector001SHCon10_GateZone_macro"="-45738.28,0,-200000"
     "Zone005_Cluster_500_Sector003_macro"="34671.88,0,-152515.6"
     "Zone001_Cluster_504_Sector001_macro"="-127062.5,0,133718.8"
     "Zone003_Cluster_502_Sector001_macro"="-97898.44,0,-23632.81"
     "Zone002_Cluster_504_Sector001_macro"="137904.1,0,135199.3"
     "Zone005_Cluster_503_Sector001_macro"="-23023.44,0,-160132.8"
     "Zone001_Cluster_500_Sector001_macro"="-127062.5,0,133718.8"
     "Zone004_Cluster_501_Sector001_macro"="103164.1,0,-32492.19"
     "tzoneCluster_500_Sector001SHCon4_GateZone_macro"="76886.7,0,-207957"
     "Zone006_Cluster_502_Sector001_macro"="47000.0,0,172000.0"
     "Zone002_Cluster_500_Sector003_macro"="44015.63,0,158125"
     "tzoneCluster_500_Sector001SHCon6_GateZone_macro"="-55785.2,0,-200000"
     "Zone002_Cluster_501_Sector001_macro"="-10960.94,0,112070.3"
     "Zone001_Cluster_500_Sector002_macro"="-78593.63,0,157937.5"
     "Zone003_Cluster_503_Sector001_macro"="-199365.3,0,-55454.45"
     "Zone001_Cluster_502_Sector001_macro"="-127062.5,0,133718.8"
     "Zone003_Cluster_504_Sector001_macro"="-226443.3,0,-97194.67"
     "Zone005_Cluster_500_Sector001_macro"="-23023.44,0,-160132.8"
     "Zone004_Cluster_500_Sector003_macro"="110359.4,0,7250"
     "Zone001_Cluster_503_Sector001_macro"="-190039.3,0,180073.9"
     "Zone005_Cluster_502_Sector001_macro"="-23023.44,0,-160132.8"
     "Zone004_Cluster_500_Sector002_macro"="101721.7,0,100656.3"
     "Zone002_Cluster_502_Sector001_macro"="108009.3,0,115933.7"
     "Zone004_Cluster_502_Sector001_macro"="103164.1,0,-32492.19"
}

#Get offsets up the tree
function Recurse-Offsets($node){
    if($node.class -and $node.class -eq "galaxy"){
        return @()
    }
    if($node.offset -ne $null){
        if($node.offset.position){
            $x=$node.offset.position.x
            $y=$node.offset.position.y
            $z=$node.offset.position.z
        } else {
            $x,$y,$z=0,0,0
        }
        if($node.offset.rotation){
            if($node.offset.rotation.yaw){$yaw=$node.offset.rotation.yaw} else {$yaw=0}
            if($node.offset.rotation.pitch){$pitch=$node.offset.rotation.pitch} else {$pitch=0}
            if($node.offset.rotation.roll){$roll=$node.offset.rotation.roll} else {$roll=0}
        } else {
            $pitch,$roll,$yaw=0,0,0
        }
        if($macrotocoords[$node.macro]){
            $x,$y,$z=$macrotocoords[$node.macro].Split(",")
        }
        $obj = [pscustomobject]@{
            x=$x
            y=$y
            z=$z
            pitch=$pitch
            roll=$roll
            yaw=$yaw
            code=$node.code
            macro=$node.macro
            class=$node.class
        }
        return @($obj) + (Recurse-Offsets -node $node.ParentNode)
    } else {
        return Recurse-Offsets -node $node.ParentNode
    }
}

$data=. {
    foreach($vault in $vaults){
        $data=Recurse-Offsets $vault.Node
        $sums = $data | Measure-Object -Sum -Property x,y,z
        $location = $data |?{$_.class -eq "sector"} | select -ExpandProperty macro
        if([string]::IsNullOrWhiteSpace($location)){
            $location = $data |?{$_.class -eq "cluster"} | select -ExpandProperty macro
        }
        [pscustomobject]@{
            location=$locationtoname[$location]
            Xkm=($sums |?{$_.property -eq "x"}).sum/1000
            Ykm=($sums |?{$_.property -eq "y"}).sum/1000
            Zkm=($sums |?{$_.property -eq "z"}).sum/1000
            blueprint=$vault.Node.connections.connection.component.blueprints |?{$_ -ne $null}
            vault=$vault.Node.macro
            code=$vault.Node.code
        }
    }
} 
$data | ft -AutoSize
$data | Out-GridView
if($gzip){
    if([System.Windows.Forms.MessageBox]::Show("Remove the extracted save $file" , "Remove Save?" , 4, 64) -eq "Yes"){
        Remove-Item -Path $file
    }
}

[System.Windows.Forms.Messagebox]::Show("Done, you can copy out of the cmd window or grid view before closing this if you want.")

<#
#Some other useful snippets

#detailed output
. {
    foreach($vault in $vaults){
        Recurse-Offsets $vault.Node
        "-----"
    }
} | ft -AutoSize

#parse out zone info
$zoneinfo = [xml](gc c:\path\to\dlc_pirate_sectors.xml)
$hash = @{}
$zoneinfo.macros.macro | %{
    $_.connections.connection | %{
        $hash += @{$_.macro.ref = $_.offset.position } 
    }
}
# Generate a powershell hash for the above xml and put it on the clipboard
"@{`n" + ($hash.GetEnumerator() |%{"    `"$($_.key)`"=`"$(@($_.value.x,$_.value.y,$_.value.z) -join ",")`"`n"}) + "}" | clip
$components=Select-Xml -Xml $Xml -XPath "/savegame/universe//component"
# Get all classes
$components.Node.class | select -Unique | sort

order of map related:
    galaxy
    cluster
    sector
    zone
#>
That is some SWEET PowerShell! Kudos to you sir!
Asus TUF x570 PRO Wi-Fi
AMD Ryzen 9 5900x
32gig Patriot Viper PC4-35200
RTX 3070Ti
EVGA 850 GS PSU
Windows 10 x64
and a joystick.

jojorne
Posts: 815
Joined: Sun, 17. Nov 13, 17:25
x4

Re: Acquire the Erlking?

Post by jojorne » Fri, 2. Jun 23, 16:39

silentradios wrote:
Sun, 27. Mar 22, 14:51
Here is a bat file that runs the powershell inside it (sneaky.. but effective)
Line 10 should be:

Code: Select all

    Filter = 'Save file (*.xml; *.xml.gz)|*.xml;*.xml.gz'

silentradios
Posts: 8
Joined: Wed, 13. Oct 21, 06:19
x4

Re: Acquire the Erlking?

Post by silentradios » Sat, 3. Jun 23, 05:18

jojorne wrote:
Fri, 2. Jun 23, 16:39
silentradios wrote:
Sun, 27. Mar 22, 14:51
Here is a bat file that runs the powershell inside it (sneaky.. but effective)
Line 10 should be:

Code: Select all

    Filter = 'Save file (*.xml; *.xml.gz)|*.xml;*.xml.gz'
Quite right, I apparently didn't test it much after adding the GUI - fixed and credited :)

User avatar
alt3rn1ty
Posts: 2287
Joined: Thu, 26. Jan 06, 19:45
x4

Re: Acquire the Erlking?

Post by alt3rn1ty » Sat, 3. Jun 23, 13:07

silentradios wrote:
Sun, 27. Mar 22, 14:51
Edit 3/27: Apparently Avarice V and IV were swapped (I got the friendly name mapping from reddit - not sure where a real source is) -- I confirmed in my save and two others did as well
Edit 6/2/23: Thanks jojorne for catching an issue related to the GUI for compressed saves

Here is a bat file that runs the powershell inside it (sneaky.. but effective) : https://anechoic.space/erlkinggui.bat
It has a few features over the previous script including:
  • A File selection dialog
  • Support for gz / compressed saves
  • GUI output of the positions
Here is the same script that you can copy and past and save into a .bat file (use notepad and save as UTF-8 or ANSI (do not select the with BOM ones) and run to avoid the prompts that you get from windows about it being safe or not..

Code: Select all

@findstr/v "^@f.*&" "%~f0"|powershell -noprofile -executionpolicy bypass -&goto:eof
#Fist line stolen from https://stackoverflow.com/a/2611394
#This uses a fair amount of memory - if you have limited ram exit X4 first...
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Messagebox]::Show("This uses a fair amount of memory - if you have limited ram exit X4 first...")

#stolen from https://4sysops.com/archives/how-to-create-an-open-file-folder-dialog-box-with-powershell/
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{ 
    InitialDirectory = [Environment]::GetFolderPath('MyDocuments') + "\Egosoft\X4" 
    Filter = 'Save file (*.xml; *.xml.gz)|*.xml;*.xml.gz'
    Title = "Select savegame file"
}
while([string]::IsNullOrWhiteSpace($FileBrowser.FileName)){
    $null = $FileBrowser.ShowDialog()
    sleep 1
}

#from https://social.technet.microsoft.com/Forums/windowsserver/en-US/5aa53fef-5229-4313-a035-8b3a38ab93f5/unzip-gz-files-using-powershell?forum=winserverpowershell
Function Expand-GZip{
    Param(
        $infile,
        $outfile = ($infile -replace '\.gz$','')
        )
    $input = New-Object System.IO.FileStream $inFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read)
    $output = New-Object System.IO.FileStream $outFile, ([IO.FileMode]::Create), ([IO.FileAccess]::Write), ([IO.FileShare]::None)
    $gzipStream = New-Object System.IO.Compression.GzipStream $input, ([IO.Compression.CompressionMode]::Decompress)
    $buffer = New-Object byte[](1024)
    while($true){
        $read = $gzipstream.Read($buffer, 0, 1024)
        if ($read -le 0){break}
        $output.Write($buffer, 0, $read)
        }
    $gzipStream.Close()
    $output.Close()
    $input.Close()
}

$gzip = $false

if($FileBrowser.FileName -match "\.gz$"){
    Write-Host "Extracting compressed save, this may take a while"
    $gzip = $true
    Expand-GZip -infile $FileBrowser.FileName
}

if($gzip) {
    $file = ($FileBrowser.FileName -replace '\.gz$','')
} else {
    $file = $FileBrowser.FileName
}

Write-Host "Loading XML, this may take a while and will use lots of ram"

$Xml=New-Object Xml
#unzip .gz file with 7-zip or gunzip first or use uncompressed saves
$Xml.Load($file)

Write-Host "Finding Erlking Data Vaults"
$components=Select-Xml -Xml $Xml -XPath "/savegame/universe//component"
$erl=$components | ?{$_.Node.macro -and $_.Node.macro.Contains("erlking")}
$vaults = $erl | ?{$_.Node.macro -and $_.Node.macro.Contains("landmarks_erlking_vault")}

#From hatevampire at https://www.reddit.com/r/X4Foundations/comments/thjbik/how_to_read_save_file/
#Not sure where the real source of friendlyname is..

$locationtoname = @{
    cluster_500_sector001_macro="Avarice I"
    cluster_500_sector002_macro="Avarice V"
    cluster_500_sector003_macro="Avarice IV"
    cluster_501_macro="Windfall I"
    cluster_502_macro="Windfall III"
    cluster_503_macro="Windfall IV"
}

$macrotocoords=@{
     "Zone004_Cluster_503_Sector001_macro"="139680,0,-3215.59"
     "Zone003_Cluster_500_Sector003_macro"="-115796.9,0,-96109.38"
     "Zone002_Cluster_503_Sector001_macro"="-2269.199,0,165758.4"
     "Zone006_Cluster_500_Sector002_macro"="-184409.83,0,-3343.0"
     "Zone003_Cluster_501_Sector001_macro"="-97898.44,0,-23632.81"
     "Zone003_Cluster_500_Sector001_macro"="-97898.44,0,-23632.81"
     "Zone005_Cluster_501_Sector001_macro"="-23023.44,0,-160132.8"
     "Zone004_Cluster_504_Sector001_macro"="157616.8,0,-84263.63"
     "tzoneCluster_500_Sector002SHCon9_GateZone_macro"="-39827.2,0,200000"
     "tzoneCluster_500_Sector002SHCon5_GateZone_macro"="-50000,0,200000"
     "Zone001_Cluster_500_Sector003_macro"="-117046.9,0,82593.75"
     "Zone001_Cluster_501_Sector001_macro"="-127062.5,0,133718.8"
     "Zone005_Cluster_504_Sector001_macro"="-23023.44,0,-160132.8"
     "Zone004_Cluster_500_Sector001_macro"="103164.1,0,-32492.19"
     "Zone002_Cluster_500_Sector001_macro"="-10960.94,0,112070.3"
     "Zone003_Cluster_500_Sector002_macro"="-7132.69,0,531.25"
     "Zone002_Cluster_500_Sector002_macro"="-118489.4,0,-131687.5"
     "tzoneCluster_500_Sector003SHCon9_GateZone_macro"="50000,0,200000"
     "Zone005_Cluster_500_Sector002_macro"="98694.83,0,-126406.3"
     "tzoneCluster_500_Sector001SHCon2_GateZone_macro"="66960.9,0,-207957"
     "tzoneCluster_500_Sector003SHCon5_GateZone_macro"="40054.7,0,200000"
     "tzoneCluster_500_Sector001SHCon10_GateZone_macro"="-45738.28,0,-200000"
     "Zone005_Cluster_500_Sector003_macro"="34671.88,0,-152515.6"
     "Zone001_Cluster_504_Sector001_macro"="-127062.5,0,133718.8"
     "Zone003_Cluster_502_Sector001_macro"="-97898.44,0,-23632.81"
     "Zone002_Cluster_504_Sector001_macro"="137904.1,0,135199.3"
     "Zone005_Cluster_503_Sector001_macro"="-23023.44,0,-160132.8"
     "Zone001_Cluster_500_Sector001_macro"="-127062.5,0,133718.8"
     "Zone004_Cluster_501_Sector001_macro"="103164.1,0,-32492.19"
     "tzoneCluster_500_Sector001SHCon4_GateZone_macro"="76886.7,0,-207957"
     "Zone006_Cluster_502_Sector001_macro"="47000.0,0,172000.0"
     "Zone002_Cluster_500_Sector003_macro"="44015.63,0,158125"
     "tzoneCluster_500_Sector001SHCon6_GateZone_macro"="-55785.2,0,-200000"
     "Zone002_Cluster_501_Sector001_macro"="-10960.94,0,112070.3"
     "Zone001_Cluster_500_Sector002_macro"="-78593.63,0,157937.5"
     "Zone003_Cluster_503_Sector001_macro"="-199365.3,0,-55454.45"
     "Zone001_Cluster_502_Sector001_macro"="-127062.5,0,133718.8"
     "Zone003_Cluster_504_Sector001_macro"="-226443.3,0,-97194.67"
     "Zone005_Cluster_500_Sector001_macro"="-23023.44,0,-160132.8"
     "Zone004_Cluster_500_Sector003_macro"="110359.4,0,7250"
     "Zone001_Cluster_503_Sector001_macro"="-190039.3,0,180073.9"
     "Zone005_Cluster_502_Sector001_macro"="-23023.44,0,-160132.8"
     "Zone004_Cluster_500_Sector002_macro"="101721.7,0,100656.3"
     "Zone002_Cluster_502_Sector001_macro"="108009.3,0,115933.7"
     "Zone004_Cluster_502_Sector001_macro"="103164.1,0,-32492.19"
}

#Get offsets up the tree
function Recurse-Offsets($node){
    if($node.class -and $node.class -eq "galaxy"){
        return @()
    }
    if($node.offset -ne $null){
        if($node.offset.position){
            $x=$node.offset.position.x
            $y=$node.offset.position.y
            $z=$node.offset.position.z
        } else {
            $x,$y,$z=0,0,0
        }
        if($node.offset.rotation){
            if($node.offset.rotation.yaw){$yaw=$node.offset.rotation.yaw} else {$yaw=0}
            if($node.offset.rotation.pitch){$pitch=$node.offset.rotation.pitch} else {$pitch=0}
            if($node.offset.rotation.roll){$roll=$node.offset.rotation.roll} else {$roll=0}
        } else {
            $pitch,$roll,$yaw=0,0,0
        }
        if($macrotocoords[$node.macro]){
            $x,$y,$z=$macrotocoords[$node.macro].Split(",")
        }
        $obj = [pscustomobject]@{
            x=$x
            y=$y
            z=$z
            pitch=$pitch
            roll=$roll
            yaw=$yaw
            code=$node.code
            macro=$node.macro
            class=$node.class
        }
        return @($obj) + (Recurse-Offsets -node $node.ParentNode)
    } else {
        return Recurse-Offsets -node $node.ParentNode
    }
}

$data=. {
    foreach($vault in $vaults){
        $data=Recurse-Offsets $vault.Node
        $sums = $data | Measure-Object -Sum -Property x,y,z
        $location = $data |?{$_.class -eq "sector"} | select -ExpandProperty macro
        if([string]::IsNullOrWhiteSpace($location)){
            $location = $data |?{$_.class -eq "cluster"} | select -ExpandProperty macro
        }
        [pscustomobject]@{
            location=$locationtoname[$location]
            Xkm=($sums |?{$_.property -eq "x"}).sum/1000
            Ykm=($sums |?{$_.property -eq "y"}).sum/1000
            Zkm=($sums |?{$_.property -eq "z"}).sum/1000
            blueprint=$vault.Node.connections.connection.component.blueprints |?{$_ -ne $null}
            vault=$vault.Node.macro
            code=$vault.Node.code
        }
    }
} 
$data | ft -AutoSize
$data | Out-GridView
if($gzip){
    if([System.Windows.Forms.MessageBox]::Show("Remove the extracted save $file" , "Remove Save?" , 4, 64) -eq "Yes"){
        Remove-Item -Path $file
    }
}

[System.Windows.Forms.Messagebox]::Show("Done, you can copy out of the cmd window or grid view before closing this if you want.")

<#
#Some other useful snippets

#detailed output
. {
    foreach($vault in $vaults){
        Recurse-Offsets $vault.Node
        "-----"
    }
} | ft -AutoSize

#parse out zone info
$zoneinfo = [xml](gc c:\path\to\dlc_pirate_sectors.xml)
$hash = @{}
$zoneinfo.macros.macro | %{
    $_.connections.connection | %{
        $hash += @{$_.macro.ref = $_.offset.position } 
    }
}
# Generate a powershell hash for the above xml and put it on the clipboard
"@{`n" + ($hash.GetEnumerator() |%{"    `"$($_.key)`"=`"$(@($_.value.x,$_.value.y,$_.value.z) -join ",")`"`n"}) + "}" | clip
$components=Select-Xml -Xml $Xml -XPath "/savegame/universe//component"
# Get all classes
$components.Node.class | select -Unique | sort

order of map related:
    galaxy
    cluster
    sector
    zone
#>
:) You really ought to make this an OP in its own topic, its too far in to the topic for most people to read up to it, and so far back now that people keep quoting it for the most recent page of the topic where people are still needing such a solution.
Laptop Dell G15 5510 : Win 11 x64
CPU - 10th Gen' Core I7 10870H 2.2-5.0ghz, GPU - NVidia Geforce RTX 3060, VRAM 6gb GDDR5,
RAM - 32gb (2x16gb, Dual Channel mode set in BIOS) DDR4 2933mhz Kingston Fury Impact,
SSD - Kioxia M.2 NVME 512gb (System), + Samsung M.2 NVME 970 Evo Plus 1tb (Games)

:boron: Long live Queen Polypheides and may her tentacles always be supple.
Seeker of Sohnen.

User avatar
maniac_uk69
Posts: 51
Joined: Sun, 11. Dec 05, 13:08
x4

Re: Acquire the Erlking?

Post by maniac_uk69 » Mon, 24. Jul 23, 22:02

Any suggestions on boarding the damn ship? I set 1 load to board and nothing happened.. the ship just keeps flying round. What am I missing? I.S and oos dont make much difference

LameFox
Posts: 2237
Joined: Tue, 22. Oct 13, 15:26
x4

Re: Acquire the Erlking?

Post by LameFox » Tue, 25. Jul 23, 07:11

maniac_uk69 wrote:
Mon, 24. Jul 23, 22:02
Any suggestions on boarding the damn ship? I set 1 load to board and nothing happened.. the ship just keeps flying round. What am I missing? I.S and oos dont make much difference
What role did you give the troop carrying ship in the boarding op? If it's just flying around it might be trying to do something it can't complete.

I think if you teleport to it and take control though it will probably launch marines since that objective does not apply to the player.
***modified***

Scoob
Posts: 9920
Joined: Thu, 27. Feb 03, 22:28
x4

Re: Acquire the Erlking?

Post by Scoob » Tue, 25. Jul 23, 15:55

Is there any restriction on where the Earlking data vaults might spawn? How far from Sector centre might they be? I've explored most of the Universe bar some Xenon sectors and I've (deliberately) not unlocked the Boron sectors yet. Also, in order to search for the data vault, do they need to be actively seen (in range of satellite or ship) or do they persist once spotted?

I was planning to just send a load of Marines over to capture the Earlking, but was expecting some mission to trigger or something. Not had anything other than "stay away" and "we're sending ships" (which happened when I was over 20km weirdly) nothing else suggesting a mission chain. VIG like me at the moment, will something trigger if I reach 20+ with them?

Alan Phipps
Moderator (English)
Moderator (English)
Posts: 30349
Joined: Fri, 16. Apr 04, 19:21
x4

Re: Acquire the Erlking?

Post by Alan Phipps » Tue, 25. Jul 23, 19:46

@ Scoob: No, nothing else about it triggers and you board it at your peril whenever you want. The Erlking system-element datavaults are randomly positioned somewhere within the 6 VIG/RIP sectors and you can open them on detection whenever you want. Sometimes they are quite a way out from centre and often with some vertical displacement too. Sometimes there are more than one in the same sector, and obviously at least one of the target sectors will have none - that is why looking for them without cheats is so painful.
A dog has a master; a cat has domestic staff.

Scoob
Posts: 9920
Joined: Thu, 27. Feb 03, 22:28
x4

Re: Acquire the Erlking?

Post by Scoob » Tue, 25. Jul 23, 20:05

Thanks for the tips Alan. I have the VIG Sectors explored out to about 350km radius from centre, largely on a flat plane though, so might be missing some. Will check when I get a chance to see if any vaults are visible.

User avatar
Pesanur
Posts: 1891
Joined: Sat, 5. Jan 08, 22:06
x4

Re: Acquire the Erlking?

Post by Pesanur » Tue, 25. Jul 23, 21:42

Keep in mind that the Erlking datavaults only appears on the map when they are in the detection range of one of your ships or satellites.

Scoob
Posts: 9920
Joined: Thu, 27. Feb 03, 22:28
x4

Re: Acquire the Erlking?

Post by Scoob » Tue, 25. Jul 23, 22:05

Pesanur wrote:
Tue, 25. Jul 23, 21:42
Keep in mind that the Erlking datavaults only appears on the map when they are in the detection range of one of your ships or satellites.
Thanks, that was my question above. Looks like I'll need to send ships actively exploring again and watch them. That's a bit of a pain! I'd hoped that, once spotted, such things would remain on the map. Some things do, some things don't it seems.

Raptor34
Posts: 2475
Joined: Sat, 12. Jun 10, 04:43
x4

Re: Acquire the Erlking?

Post by Raptor34 » Wed, 26. Jul 23, 14:41

Scoob wrote:
Tue, 25. Jul 23, 22:05
Pesanur wrote:
Tue, 25. Jul 23, 21:42
Keep in mind that the Erlking datavaults only appears on the map when they are in the detection range of one of your ships or satellites.
Thanks, that was my question above. Looks like I'll need to send ships actively exploring again and watch them. That's a bit of a pain! I'd hoped that, once spotted, such things would remain on the map. Some things do, some things don't it seems.
Unless you like map watching, just use the script.

Scoob
Posts: 9920
Joined: Thu, 27. Feb 03, 22:28
x4

Re: Acquire the Erlking?

Post by Scoob » Wed, 26. Jul 23, 19:56

Raptor34 wrote:
Wed, 26. Jul 23, 14:41
Unless you like map watching, just use the script.
Can we not set alerts for a spotted data vault? I can't remember, I've pretty much ignored them since the game came out lol.

User avatar
alt3rn1ty
Posts: 2287
Joined: Thu, 26. Jan 06, 19:45
x4

Re: Acquire the Erlking?

Post by alt3rn1ty » Thu, 27. Jul 23, 08:43

Scoob wrote:
Wed, 26. Jul 23, 19:56
Raptor34 wrote:
Wed, 26. Jul 23, 14:41
Unless you like map watching, just use the script.
Can we not set alerts for a spotted data vault? I can't remember, I've pretty much ignored them since the game came out lol.
I think if those data vaults were ever actually found by for example one of your traders, it would just be one of the many "Found something" and marked with a question mark. I dont know for sure if they would do that, as far as I know nobody has had that happen.

But I doubt very much that would happen, they are mostly too far off the beaten tracks to be randomly discovered. One of mine in my previous game was in the most southern Vig sector of the three, it was situated really far north /west of the north gate in that sector and very high up above the ecliptic plane. None of my automated ships would ever have gone there or got close enough to spot it.
Laptop Dell G15 5510 : Win 11 x64
CPU - 10th Gen' Core I7 10870H 2.2-5.0ghz, GPU - NVidia Geforce RTX 3060, VRAM 6gb GDDR5,
RAM - 32gb (2x16gb, Dual Channel mode set in BIOS) DDR4 2933mhz Kingston Fury Impact,
SSD - Kioxia M.2 NVME 512gb (System), + Samsung M.2 NVME 970 Evo Plus 1tb (Games)

:boron: Long live Queen Polypheides and may her tentacles always be supple.
Seeker of Sohnen.

Scoob
Posts: 9920
Joined: Thu, 27. Feb 03, 22:28
x4

Re: Acquire the Erlking?

Post by Scoob » Thu, 27. Jul 23, 12:46

Well, currently, any discovery is ignored so I'd have never gotten an alert the first time VIG space was explored. However, if I can set a ship exploring again and set an active alert for Vault discoveries, that'd allow me to get on with other stuff and the alert would, well, alert me as needed. Will have to check the options, next time I'm playing.

Raptor34
Posts: 2475
Joined: Sat, 12. Jun 10, 04:43
x4

Re: Acquire the Erlking?

Post by Raptor34 » Thu, 27. Jul 23, 15:44

Scoob wrote:
Thu, 27. Jul 23, 12:46
Well, currently, any discovery is ignored so I'd have never gotten an alert the first time VIG space was explored. However, if I can set a ship exploring again and set an active alert for Vault discoveries, that'd allow me to get on with other stuff and the alert would, well, alert me as needed. Will have to check the options, next time I'm playing.
I remember people saying that you need to catch it at the time or it'll just vanish again. Fine if you're keeping an eagle eye on your HUD. Pain otherwise.
But anyway, I swear people used to say second discovery doesn't trigger. So that's something to keep in mind too.

Scoob
Posts: 9920
Joined: Thu, 27. Feb 03, 22:28
x4

Re: Acquire the Erlking?

Post by Scoob » Thu, 27. Jul 23, 15:47

Raptor34 wrote:
Thu, 27. Jul 23, 15:44
I remember people saying that you need to catch it at the time or it'll just vanish again. Fine if you're keeping an eagle eye on your HUD. Pain otherwise.
But anyway, I swear people used to say second discovery doesn't trigger. So that's something to keep in mind too.
Ok, thanks for the information.

I know for bailed ships, each ship will report the find as it encounters it. So, first will spot it, then another will report it if it flies that way and, finally, the ship with Marines I actually send to claim it will give a "we've found something out here" comm. So, in theory, if I use a different explorer to the first time, it may potentially report it - assuming it works like the bailed ship check does.

Raptor34
Posts: 2475
Joined: Sat, 12. Jun 10, 04:43
x4

Re: Acquire the Erlking?

Post by Raptor34 » Thu, 27. Jul 23, 18:09

Scoob wrote:
Thu, 27. Jul 23, 15:47
Raptor34 wrote:
Thu, 27. Jul 23, 15:44
I remember people saying that you need to catch it at the time or it'll just vanish again. Fine if you're keeping an eagle eye on your HUD. Pain otherwise.
But anyway, I swear people used to say second discovery doesn't trigger. So that's something to keep in mind too.
Ok, thanks for the information.

I know for bailed ships, each ship will report the find as it encounters it. So, first will spot it, then another will report it if it flies that way and, finally, the ship with Marines I actually send to claim it will give a "we've found something out here" comm. So, in theory, if I use a different explorer to the first time, it may potentially report it - assuming it works like the bailed ship check does.
An easy way is to find one first, then roll your ships in and see if they notify you.

Scoob
Posts: 9920
Joined: Thu, 27. Feb 03, 22:28
x4

Re: Acquire the Erlking?

Post by Scoob » Thu, 27. Jul 23, 19:42

Raptor34 wrote:
Thu, 27. Jul 23, 18:09
An easy way is to find one first, then roll your ships in and see if they notify you.
Yep, that's the plan :)

Post Reply

Return to “X4: Foundations - Spoilers”