✅ 本章目标
通过本章学习,你将掌握:
- 如何用 .xslt 文件直接修改原版 XML(如 items.xml)
- 在 SubModule.xml 中仅注册 .xslt 即可让游戏加载修改
- 适用于装备、士兵、部队模板、物品等原版数据
🎯 应用场景
- 修改装备名称、mesh、护甲等属性
- 修改 NPC、兵种属性
- 删除/增强原版部队
- 汉化原版物品(无需覆盖官方 XML)
🧱 示例:修改火把的名称与模型
我们将修改原版的 torch 装备,将其名称改为“神圣火把”,模型 mesh 改为 torch_dragonfire。
📂 文件结构
你只需要以下结构:
Modules/
└── YourMod/
└── ModuleData/
└── items.xslt
📝 items.xslt 文件内容
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- 默认复制所有节点和属性 -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<!-- 修改 id="torch" 的物品 -->
<xsl:template match="Item[@id='torch']">
<xsl:copy>
<!-- 修改名称与 mesh -->
<xsl:attribute name="name">神圣火把</xsl:attribute>
<xsl:attribute name="mesh">torch_dragonfire</xsl:attribute>
<!-- 保留其他属性 -->
<xsl:apply-templates select="@*[name() != 'name' and name() != 'mesh'] | node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
⚙️ SubModule.xml 中的注册方式
<Xmls>
<!-- 注册 items.xslt(无需 .xml 文件) -->
<XmlNode>
<XmlName id="Items" path="items"/>
<IncludedGameTypes>
<GameType value="Campaign"/>
<GameType value="CampaignStoryMode"/>
<GameType value="Sandbox"/>
</IncludedGameTypes>
</XmlNode>
</Xmls>
- ✅ 你只注册 path="items",系统会自动将其应用于原版 items.xml
- ✅ 如果 items.xslt 存在,游戏在加载原版 items.xml 时会自动应用此转换
🔍 验证效果
进入游戏后可使用以下方式确认修改是否生效:
- 使用开发者控制台 give_item torch,观察物品名称是否为“神圣火把”
- 查看模型是否已变为 torch_dragonfire
- 若你已设置 is_merchandise="true",也可在城市商店中搜索“神圣火把”
🔁 更多可修改项
你可以通过 .xslt 文件修改以下内容:
| 文件名 | 描述 |
|---|---|
| items.xslt | 装备、物品 |
| lords.xslt | NPC、领主 |
| spnpc.xslt | 特殊角色 |
| crafting_pieces.xslt | 锻造配件 |
| party_templates.xslt | 部队模板 |
| clans.xslt | 家族定义 |
✅ 总结
| 特性 | 描述 |
|---|---|
| 🛠 无需复制官方 XML | 仅需 items.xslt 等 |
| 🚀 快速增量修改 | 仅变更你需要的内容 |
| 💾 最小补丁干预 | 不与其他 MOD 冲突(推荐) |
| 🧩 支持所有 XML 数据类型 | 项目通用 |