文件能否在修改可执行文件使用的配置文件的 Windows 上与可执行文件一起运行?

问题描述 投票:0回答:1

我正在考虑为游戏创建一个模组,在游戏启动时随机化代码行。具体来说,我想修改 Forza Horizo n 4 以随机化从点“a”到点“b”的线路,然后从点“c”到点“d”等等,以真正随机化游戏中的收音机。我认为这是我正在考虑的 .dll,但我没有任何编码知识,所以我不知道如何创建它,或者是否有可能修改配置文件的文件是游戏使用。我已经尝试在游戏运行时修改配置,游戏不会为此烦恼,但我没有进一步。配置写在 .xml 文件中。我想要这个的原因是因为游戏本身不会随机化,如果你修改收音机以播放更多歌曲,这些额外的歌曲很少播放,只会占用空间。通过在启动时随机化这些行,这个问题将得到解决。 .xml 文件如下所示:

      <PlayList Type="FreeRoam">
        <Entry Name="<Gametitle>_<Radioname>_<artist>_<songtitle>" />
...
        <Entry Name="<Gametitle>_<Radioname>_<artist>_<songtitle>" />
      </PlayList>
      <PlayList Type="Event">
        <Entry Name="<Gametitle>_<Radioname>_<artist>_<songtitle>" />
...
        <Entry Name="<Gametitle>_<Radioname>_<artist>_<songtitle>" />
      </PlayList>

这些

<PlayList Type="FreeRoam">
</PlayList>
之间的一切都应该是随机的。

在这一点上,我通过选择应该随机化的行然后使用“编辑>行操作>随机化行顺序”,使用 Notepad++ 手动随机化这些行,但正如您可能预料的那样,如果您想这样做,这是非常痛苦的定期这样做,所以这就是我想要那个的原因。

xml dll steam
1个回答
0
投票

我能够使用 PowerShell 对播放列表进行排序。我做了 PlayList PlayLists 的父类。这是代码

using assembly System 
using assembly System.Linq
using assembly System.Xml.Linq 

$inputFilename = "c:\temp\test.xml"
$outputFilename = "c:\temp\test1.xml"

$xDoc = [System.Xml.Linq.XDocument]::Load($inputFilename)
$playlists = $xDoc.Descendants("Playlists")
$rand = [System.Random]::new()
$entries = $playlists.Descendants("Entry")

$table = [System.Collections.ArrayList]::new()
foreach($entry in $entries)
{
   $newRow = New-Object -TypeName psobject
   $newRow | Add-Member -NotePropertyName Name -NotePropertyValue $rand.Next()
   $newRow | Add-Member -NotePropertyName XElement -NotePropertyValue $entry

   $table.Add($newRow) | Out-Null
}
$table
$table = $table | Sort-Object -Property Name
$table
$playlists.RemoveNodes()
$newPlayList =[System.Xml.Linq.XElement]::new([System.Xml.Linq.XName]::Get("PlayList"))
$newPlayList.Add([System.Xml.Linq.XAttribute]::new("Type", "Random"));
$playlists.Add($newPlayList);
foreach($row in $table)
{
   $newPlayList.Add([System.Xml.Linq.XElement]$row.XElement);
}
$xDoc.Save($outputFilename)
© www.soinside.com 2019 - 2024. All rights reserved.