XML Mod 兼容性问题教程

XML Mod 兼容性问题教程

这个Mod将向模组制作者展示如何*正确*修改XML文件!

模组制作者资源

XML 模组兼容性问题教程

你现在应该看看这份文档:

  1. SubModule
  2. ========
  3. SubModule 类是模组的主要入口点。它用于定义模组的元数据、依赖和行为。
  4. 属性

    • Id:模组的唯一标识符,应使用反向域名格式,例如 com.mydomain.mymod
    • Name:模组的显示名称。
    • Description:模组功能的简短描述。
    • Version:模组的版本,遵循语义化版本号格式(例如 1.0.0)。
    • Dependencies:模组所依赖的其他模组列表。
    • OptionalDependencies:模组可选使用的其他模组列表。
    • IncompatibleWith:与模组不兼容的其他模组列表。
    • LoadBefore:应在模组之前加载的其他模组列表。
    • LoadAfter:应在模组之后加载的其他模组列表。
  5. 方法

    • OnSubModuleLoad():模组加载时调用。用此方法初始化模组。
    • OnBeforeInitialModuleScreenSetAsRoot():初始模组界面设为根界面之前调用。用此方法修改初始界面。
    • OnGameStart():游戏开始时调用。用此方法注册模组行为。
    • OnGameEnd():游戏结束时调用。用此方法清理模组资源。
  6. 示例

  7. public class MyMod : SubModule
  8. {
  9. public override void OnSubModuleLoad()
    
  10. {
    
  11.     // 在此处初始化模组
    
  12. }
    
  13. public override void OnGameStart()
    
  14. {
  15.     // 在此处注册模组行为
    
  16. }
    
  17. }

描述: 本模组旨在帮助模组制作者解决当前及未来关于 XML 覆盖的一些冲突问题。 发生的情况是,模组作者会覆盖骑马与砍杀默认模块中的特定文件。 如果这些模组修改了相同的文件,就会导致它们彼此不兼容。 此外,开发团队对此文件的更新将移除其中的任何模组,并可能导致用户每次游戏更新后都要重新安装模组,这让他非常痛苦。 我的教程解决了这个问题! 确实,我向你展示如何仅覆盖你需要覆盖的部分,而不是整个文件! 查看媒体部分提供的 YouTube 视频,并在文件部分下载空白项目!

要求:

  • 知识: 无需编码经验!
  • 软件: 优秀的文本编辑器(Notepad++/Sublime Text) 优秀的压缩文件解压工具(Winrar/7Zip)

问题: 看起来加载顺序存在一些问题。 这是我的理解(不是 100% 确定),但你的模组应该在原生模块之后加载。

  • 要将文件夹重命名为 zMyModName 而不是 MyModName
  • 在你的 submodules.xml 文件中确保 <Id value="z我的模组名称 " />
  • (显示)名称可以保持不变! <Namevalue="我的模组名称!" />

此外,这个解决方案也无法解决相同 ID 修改冲突的问题。 这个方案并不能解决所有冲突问题,但能解决大部分。 基本上,我们不是覆盖整个文件,而是覆盖整个单位/角色/物品…… 我希望大多数模组作者在未来的版本中开始采用我的方法! 关于特定物品/角色 ID 覆盖的长期解决方案仍需制定。

更新处理程序 可能可以胜任这项工作,但如果我没理解错的话,需要用户手动管理。 了解 C# 编程的 Mod 作者应尽可能像《女性部队》Mod 那样,通过代码而非 XML 数据来实现修改。 我们可能需要开发一个自定义的 XmlSerializer/反序列化器,当完整的开发工具包发布时,这样 XML 就能对特定物品进行修改,而不是覆盖该物品的所有属性。

无论如何,教程就到这里了,希望你喜欢!