INI大师

INI大师

在一个窗口中编辑所有ASI插件的ini文件,带有复选框、滑块、下拉菜单和按键框,并以模组作者的注释作为帮助。游戏运行时保存,只修改你更改的值,并保留备份。适用于任何带有ini的插件。无需安装,无需.NET。

[size=5][b]INI Master[/b][/size]
[i]为 Crimson Desert 中每个 ASI 插件提供设置窗口。用复选框、滑块、下拉框和按键框取代文本编辑器,并且在游戏运行时也能使用。[/i]

大多数 ASI 插件把设置保存在 bin64 中与它们相邻的 ini 里。修改一个设置意味着要找到文件、阅读注释,还得指望你输入的值是插件能接受的。INI Master 会找到游戏,列出每个带有 ini 的插件,并把每个文件变成一页控件,以模组作者自己的注释作为帮助说明。

INI Master 是一个独立运行的程序。不会向 bin64 中放入任何东西,游戏也从不加载它。

要为某个模组提供更好的页面,无论它是不是你制作的,指南见[url=https://github.com/shin2344234/ini-master/blob/main/docs/METADATA.md]为模组添加 INI Master 帮助[/url]。

[size=4][b]你将获得[/b][/size]
[list]
[][b]所有插件集中在一个列表。[b] INI Master 会通过 Steam 的库列表、Epic 的清单文件或常见的安装文件夹找到 Crimson Desert,然后列出 bin64 以及其下的 scripts 和 plugins 文件夹中的每个 .asi 及其相邻的 ini。如果它没找到游戏,按“Game folder”并选择 Crimson Desert 文件夹或 bin64。列表下方的“Show ini files without a plugin”框会添加诸如 OptiScaler.ini 之类的文件。
[
][b]每个设置对应一个控件。[/b] 开/关值会得到一个复选框,带范围的数字会得到一个滑块,一组选项会得到一个下拉框,而按键会得到一个你可以按下按键的框。文件中键的名称位于每个标签旁边,因此你仍然可以对照指南进行匹配。
[][b]模组作者编写的帮助。[/b] 每个键上方的注释会成为它的描述。将鼠标悬停在某个设置上可查看全部内容,或单击它可将帮助固定在窗口底部,并显示类型、默认值以及帮助来源。
[
][b]游戏进行中修改。[/b] 开启“Save as I edit”后,每次更改都会在你操作后稍作延迟写入。会重新读取其 ini 的插件会在游戏中拾取该更改。对于仅在启动时读取其 ini 的插件,页面会说明这一点,并将那些设置标记为“Next launch”。
[][b]可回退。[/b] 一个圆点标记每处未保存的更改。其右侧的两个按钮可撤销该更改,或在模组声明了默认值时恢复默认值。每次会话中每个文件的首次保存会把旧文件复制到 backups 文件夹,“More, Open backups of this ini”可直接前往那里。
[
][b]需要时可直接编辑原始文件。[/b]“File text”选项卡以文本形式编辑整个 ini。“Plain text values”会将每个控件替换为其原始值,用于对设置类型的猜测有误时。
[/list]
[size=4][b]它不会动你的文件[/b][/size]
保存只会重写你更改过的值。注释、空行、键顺序、间距、行尾符和编码都保持原样,因此对文件做差异比较时只会显示你的编辑,别无其他。

无论文件是 UTF-8、UTF-16 还是它原本使用的 Windows 代码页,任何脚本文本都能正确读取和保存。如果某个值包含该代码页无法存储的字符,INI Master 会拒绝保存并指出该字符。它绝不会用问号代替。

如果某个插件在 INI Master 打开时重写了自己的 ini,页面会重新加载新值,并将你未保存的编辑保留在最上层。

[size=4][b]为某些模组提供更好的帮助[/b][/size]
注释已能让模组获得大部分所需信息。希望精确指定类型、范围、标签和默认值的模组作者可以对它们进行描述,INI Master 会从几个位置读取该描述,越靠后的位置优先于越靠前的位置:
[list=1]
[]ini 自身的注释。
[
]ini 中的 [b];@[/b] 行。
[]插件旁的 MyMod.inimeta 文件。
[
]同一个文件嵌入到 .asi 中,并在插件的资源脚本中加一行。
[/list]嵌入了它的模组会在列表中显示“Embedded help”。[url=https://www.nexusmods.com/crimsondesert/mods/3402]Master Looter[/url] 和 dofo7777 的 [url=https://www.nexusmods.com/crimsondesert/mods/3175]Crimson Route[/url] 都是如此。提供多种语言帮助的模组会以 INI Master 当前使用的语言显示它,这就是为什么其中一张截图中 Crimson Route 完全以中文显示。

[size=4][b]为没有帮助的模组进行设置[/b][/size]
你不必是该模组的作者也能为它提供合适的页面。任何人都可以为任何模组编写帮助,它存在于自己的文件中,因此模组本身永远不会改变。
[list=1]
[]选择该模组并选择“More, Export metadata template”。它会保存一个以 ini 命名的文件,例如针对 OptiScaler.ini 的 OptiScaler.inimeta,其中包含 INI Master 已经从注释中读取到的所有内容。
[
]编辑它。指南中的 [url=https://github.com/shin2344234/ini-master/blob/main/docs/METADATA.md#3-the-inimeta-file].inimeta 文件[/url]列出了每个字段,从标签和类型到范围、选项、默认值和分组,而[url=https://github.com/shin2344234/ini-master/blob/main/docs/METADATA.md#6-help-in-more-than-one-language]多种语言的帮助[/url]涵盖了翻译。
[]将该文件放到 INIMaster.exe 旁边的 inimeta 文件夹中,然后按 F5 重新扫描。放在 bin64 中的 ini 旁边也可以,并且那里的副本优先。
[/list]inimeta 文件夹随 INI Master 一起提供。将完成的文件作为拉取请求发送到 [url=https://github.com/shin2344234/ini-master/tree/main/inimeta]GitHub 上的 inimeta[/url],或在 Discord 上发布它,后续版本就能把它带给所有人。

[size=4][b]供模组作者使用[/b][/size]
完整格式见 [url=https://github.com/shin2344234/ini-master/blob/main/docs/METADATA.md]METADATA.md[/url],该文件也位于下载内容的 docs 文件夹中。它以[url=https://github.com/shin2344234/ini-master/blob/main/docs/METADATA.md#1-what-the-tool-reads-from-plain-comments]INI Master 从普通注释中读取什么[/url]开头,因此在添加任何内容之前先查看该部分,因为布局良好的注释可能已经足够。[url=https://github.com/shin2344234/ini-master/blob/main/docs/METADATA.md#4-embedding-it-in-the-plugin]将其嵌入插件[/url]是用于你的 .rc 文件的一行,而[url=https://github.com/shin2344234/ini-master/blob/main/docs/METADATA.md#5-reloading-while-the-game-runs]在游戏运行时重新加载[/url]展示了如何在不重启的情况下拾取编辑并告知玩家。

[url=https://github.com/shin2344234/ini-master/tree/main/sdk]sdk 文件夹[/url]包含 [url=https://github.com/shin2344234/ini-master/blob/main/sdk/inimaster.h]inimaster.h[/url],其中有一个无需资源脚本即可嵌入文件的宏,以及一个用于在游戏运行时重新读取你的 ini 的小型监视器,还有一个同时使用两者的[url=https://github.com/shin2344234/ini-master/tree/main/sdk/example]可运行的示例插件[/url]。在应用中,“More, Export metadata template”会根据 INI Master 已从你的注释中读取的内容写出一个起始 .inimeta,因此你从自己的文本开始。

[size=4][b]语言[/b][/size]
英语、德语、法语,以及简体中文和繁体中文。当 Windows 设置为其中一种时,INI Master 会以该语言启动,而英语涵盖其他所有情况。“More, Language”可选择另一种语言并立即切换窗口。

翻译是一个纯文本文件,左侧为英语,右侧为你的语言。“More, Translate INI Master”会打开该文件夹并在其中放入一个全新的模板,而 [url=https://github.com/shin2344234/ini-master/blob/main/docs/TRANSLATING.md]TRANSLATING.md[/url] 解释了其余内容。

[size=4][b]安装[/b][/size]
[list=1]
[
]从 Files 选项卡或 [url=https://github.com/shin2344234/ini-master/releases]GitHub releases[/url] 下载 INIMaster-1.2.6.zip,并将其解压到任意位置,例如 Documents\INI Master。
[]运行 INIMaster.exe。
[/list]它是一个面向 64 位 Windows 10 或 11 的单一自包含 exe。无需安装 .NET,并且它以你的普通用户身份运行,不会请求管理员权限。

使用 Definitive Mod Manager 安装的插件会像其他插件一样显示。DMM 在自己的 mods 文件夹中保留自己的副本,并将插件及其 ini 复制到 bin64 中,而 bin64 中的 ini 才是插件读取且 INI Master 编辑的那个。DMM 不会动你在那里所做的编辑。使用 DMM 3.2.0 测试时,一个编辑过的 ini 在“Mount Mods”以及插件被关闭再重新开启后保持不变。

[b]更新[/b]
启动时,INI Master 会向 GitHub 询问是否有更新的版本,并在下载任何内容之前询问你。拒绝后它会针对该版本保持安静。“More, Check for updates”可随时再次询问,同一菜单可关闭启动时检查。除非它与正在运行的副本携带相同的签名证书,否则不会安装任何内容。

[b]卸载[/b]就是删除你解压到的文件夹。它的设置、备份和你自己的翻译位于 %LOCALAPPDATA%\INIMaster,因此如果你想彻底清除,也删除该目录。移除它时不会更改任何模组文件。

[size=4][b]兼容性[/b][/size]
[list]
[
]任何游戏版本。INI Master 读取和写入文本文件,从不接触游戏或其内存,因此游戏补丁无法破坏它。
[]任何旁边有 ini 的 ASI 插件,无论作者是谁。ini 中没有注释的插件仍会得到一个页面,只是标签更简单。
[
]可与游戏一起运行,也可在游戏关闭时运行。顶部栏会显示游戏是否正在运行。
[/list]
[size=4][b]已知限制[/b][/size]
[list]
[]仅凭注释,设置的类型只是猜测。用文字描述的数字可能会得到文本框,而滑块本会更合适,反过来也一样。发生这种情况时,“Plain text values”会显示原始值,而来自模组作者的元数据可彻底修复它。
[
]插件是否在游戏运行时重新读取其 ini 只有插件自己知道。当模组的元数据这样说明,或其注释中有类似“picked up while the game runs”的内容时,INI Master 可以告诉你。对于任何其他模组,页面会说明它无法判断。
[*]它会查找 bin64 及其 scripts 和 plugins 文件夹,这些是 [url=https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases]Ultimate ASI Loader[/url] 默认加载的位置。保存在其他任何位置的插件都不会显示。
[/list]
[size=4][b]如果出现问题[/b][/size]
在 bugs 选项卡上发帖,或[url=https://github.com/shin2344234/ini-master/issues]在 GitHub 上打开 issue[/url],并附上你正在编辑的模组、你更改了什么以及发生了什么。如果保存出错,来自 %LOCALAPPDATA%\INIMaster\backups 的文件是 INI Master 接触它之前的文件,同时附上它和当前 ini 可以准确显示更改了什么。

[size=4][b]文件[/b][/size]
1.2.6 的 SHA-256:
[code]60ec5309968a2ab59ba303f903a2d014d2a95a1233c005c95fde1fd111c65361 INIMaster-1.2.6.zip
e467c7074f5b0958e559e0eee6520b8fa56b7f40531ff2ce115f1786d06c74e6 INIMaster.exe[/code]它们与 GitHub 发布版上的文件一致。

VirusTotal 在 1.2.6 中未标记任何内容。INIMaster.exe 得分为 70 中 0,zip 为 64 中 0。[url=https://www.virustotal.com/gui/file/e467c7074f5b0958e559e0eee6520b8fa56b7f40531ff2ce115f1786d06c74e6]exe[/url] 和 [url=https://www.virustotal.com/gui/file/60ec5309968a2ab59ba303f903a2d014d2a95a1233c005c95fde1fd111c65361]zip[/url] 的报告。

INIMaster.exe 已进行代码签名,Properties、Digital Signatures 显示为 Seth Walker。它只为一件事情联网,即对 api.github.com 进行更新检查,以及如果你同意后从 GitHub 进行下载。它读取注册表仅用于查找 Steam。它会写入你编辑的 ini、它们的备份,以及位于 %LOCALAPPDATA%\INIMaster 中的自身设置。

[size=4][b]源代码与许可[/b][/size]
MIT 许可。源代码和构建说明位于 GitHub:[url=https://github.com/shin2344234/ini-master]github.com/shin2344234/ini-master[/url]

[size=4][b]Discord 和 Patreon[/b][/size]
[url=https://discord.gg/AZ2ztQYy74]Shin234's Mods 'n Stuff[/url] 是 Discord,用于提问和了解正在进行的内容。Bug 最好发布在 bugs 选项卡或作为 GitHub issues,以便被跟踪。
Patreon 是 [url=https://www.patreon.com/cw/Shin234]patreon.com/cw/Shin234[/url],帖子位于 [url=https://www.patreon.com/cw/Shin234/posts]patreon.com/cw/Shin234/posts[/url]。所有发布的内容都保持免费,不会为其保留任何内容。