
XML Mod 兼容性问题教程
这个Mod将向模组制作者展示如何*正确*修改XML文件!
查看大图XML 模组兼容性问题教程
你现在应该看看这份文档:
- SubModule
- ========
SubModule类是模组的主要入口点。它用于定义模组的元数据、依赖和行为。- 属性
Id:模组的唯一标识符,应使用反向域名格式,例如com.mydomain.mymod。
Name:模组的显示名称。
Description:模组功能的简短描述。
Version:模组的版本,遵循语义化版本号格式(例如1.0.0)。
Dependencies:模组所依赖的其他模组列表。
OptionalDependencies:模组可选使用的其他模组列表。
IncompatibleWith:与模组不兼容的其他模组列表。
LoadBefore:应在模组之前加载的其他模组列表。
LoadAfter:应在模组之后加载的其他模组列表。
- 方法
OnSubModuleLoad():模组加载时调用。用此方法初始化模组。
OnBeforeInitialModuleScreenSetAsRoot():初始模组界面设为根界面之前调用。用此方法修改初始界面。
OnGameStart():游戏开始时调用。用此方法注册模组行为。
OnGameEnd():游戏结束时调用。用此方法清理模组资源。
- 示例
- public class MyMod : SubModule
- {
public override void OnSubModuleLoad(){// 在此处初始化模组}public override void OnGameStart()- {
// 在此处注册模组行为}- }
描述: 本模组旨在帮助模组制作者解决当前及未来关于 XML 覆盖的一些冲突问题。 发生的情况是,模组作者会覆盖骑马与砍杀默认模块中的特定文件。 如果这些模组修改了相同的文件,就会导致它们彼此不兼容。 此外,开发团队对此文件的更新将移除其中的任何模组,并可能导致用户每次游戏更新后都要重新安装模组,这让他非常痛苦。 我的教程解决了这个问题! 确实,我向你展示如何仅覆盖你需要覆盖的部分,而不是整个文件! 查看媒体部分提供的 YouTube 视频,并在文件部分下载空白项目!
要求:
- 知识: 无需编码经验!
- 软件: 优秀的文本编辑器(Notepad++/Sublime Text) 优秀的压缩文件解压工具(Winrar/7Zip)
问题: 看起来加载顺序存在一些问题。 这是我的理解(不是 100% 确定),但你的模组应该在原生模块之后加载。
- 要将文件夹重命名为
zMyModName而不是MyModName - 在你的
submodules.xml文件中确保<Id value="z我的模组名称 " /> - (显示)名称可以保持不变!
<Namevalue="我的模组名称!" />
此外,这个解决方案也无法解决相同 ID 修改冲突的问题。 这个方案并不能解决所有冲突问题,但能解决大部分。 基本上,我们不是覆盖整个文件,而是覆盖整个单位/角色/物品…… 我希望大多数模组作者在未来的版本中开始采用我的方法! 关于特定物品/角色 ID 覆盖的长期解决方案仍需制定。
更新处理程序 可能可以胜任这项工作,但如果我没理解错的话,需要用户手动管理。 了解 C# 编程的 Mod 作者应尽可能像《女性部队》Mod 那样,通过代码而非 XML 数据来实现修改。 我们可能需要开发一个自定义的 XmlSerializer/反序列化器,当完整的开发工具包发布时,这样 XML 就能对特定物品进行修改,而不是覆盖该物品的所有属性。
无论如何,教程就到这里了,希望你喜欢!
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。