模组:Content Patcher
← 目录
想为游戏创建内容包模组吗?教程就在这里。有关如何使用模组,请参阅 模组:使用指南/入门
快速开始
此页面是对创建 Content Patcher 的内容包的简要介绍。如果你不需要介绍,请参阅 完整的技术资料
基本概念
什么是 Content Patcher ?
Content Patcher是一种 SMAPI 模组,可更改游戏资源(图像、对话、数据和地图),而无需替换游戏文件或编写代码。可以通过创建包含几个 JSON 文件(基本上是文本)的内容包(基本上是文件夹)来使用它。只需编辑 JSON 文件就可以:
- 替换一个图像文件
- 制作季节性的变化
- 根据天气、日期、与其他 NPC 的关系等进行更改
- 进行非常具体的更改(例如,在完成Joja超市献祭之后,在下雪的冬天的周末,咖啡价格会更高)
- 以及更多
素材
素材(asset)本质上是游戏中的Content文件夹,具有唯一的素材名称。 素材名称从不包含 Content路径、语言或文件扩展名(可以使用令牌来定位特定的语言)。例如:
文件 | 素材名称 |
---|---|
Content/Portraits/Abigail.xnb | Portraits/Abigail |
Content/Maps/spring_beach.xnb Content/Maps/spring_beach.es-ES.xnb Content/Maps/spring_beach.fr-FR.xnb |
Maps/spring_beach |
一个素材可能包含多个子画面或数据条目。例如:Portraits/Abigail:
因此,如果想更改阿比盖尔的肖像,则可以使用 Content Patcher 加载或编辑 Portraits/Abigail.
载入和编辑
可以通过两种方式来更改素材:
- 载入 素材的初始版本。 每个素材只能同时被一个模组加载。 这主要用于完全替换模组(例如完全改变 NPC 肖像的模组),或提供 Content 文件夹中不存在的文件。
- 编辑 载入的素材。 可以对同一素材应用任意数量的编辑。
例如,假设游戏需要阿比盖尔的肖像。 这是应用更改的方式:
┌────────────┐ │ 编辑素材 │ ┌────────────┐ ├────────────┤ 获得肖像/阿比盖尔 ──>│ 载入素材 │───>│编辑素材 │──> 肖像素材 └────────────┘ ├────────────┤ │ 编辑素材 │ └────────────┘
这分为四种主要操作类型(Load、EditData、EditImage、EditMap),参见Content Patcher的更多详细信息(见下文)。
开始
了解Json
在为 Stardew Valley 创建 mod 时,您会注意到很多文件的名称末尾带有 .json。 这意味着它们被格式化为 JSON,这只是一种编写代码可读的文本的方式。 如果您以前没有使用过 JSON,请阅读 An Introduction to JSON 会助于了解文件在做什么。
创建示例模块
首先让我们安装并运行我们的基本内容:
- 安装 SMAPI 和 Content Patcher.
- 解压游戏的Content文件夹,这样您就可以看到每个资产包含的内容。
- 修改或创建SMAPI内容包。
- 使用以下内容在同一文件夹中创建一个 content.json 文件:
{ "Format": "2.3.0", "Changes": [ ] }
- 启动游戏。
如果到目前为止你做的一切都正确,你应该在 SMAPI 控制台的“加载的 X 内容包”下看到新的 mod。 (如果没有,请查看上述步骤或 寻求帮助。)
内容格式
您在上面创建的 content.json 文件告诉 Content Patcher 要更改什么。 这有两个主要领域:
- Format:格式版本。 您应该始终使用最新版本(当前为 1.19.0)来启用最新功能并避免过时行为。
- Changes:您要进行的更改。 每个条目称为“补丁”,并描述要执行的特定操作:替换此文件、将此图像复制到文件中等。您可以列出任意数量的补丁。
您可以在 Changes 字段中列出任意数量的补丁,每个补丁都由 {
和 }
包围。 有关更多信息,请参阅下一节,但这里有一个快速示例:
{
"Format": "2.3.0",
"Changes": [
{
"Action": "Load",
"Target": "Animals/Dinosaur",
"FromFile": "assets/dinosaur.png"
},
{
"Action": "EditImage",
"Target": "Maps/springobjects",
"FromFile": "assets/fish-object.png"
},
]
}
(还有其他字段,如 ConfigSchema 和 DynamicTokens 用于更高级的用法;这些都包含在完整的自述文件中。)
下一步
您已经创建了一个内容补丁包!
如需帮助使其做某事,请参阅...
- Content Patcher readme供完整参考;
- video intro to Content Patcher (非官方);
- intro to converting XNB mods (非官方).
例子
(很快就会在这里提供指导教程。)
改变马/宠物图标
对于替换马和/或宠物(猫和狗)外观的编辑,您可以将这些添加到您的 content.json 中,以便也替换库存菜单中的头像图标:
马:
//horse head in inventory
{
"Action": "EditImage",
"Target": "LooseSprites/Cursors",
"FromFile": "yourfile.png",
"FromArea": { insert values here },
"ToArea": { "X": 192, "Y": 192, "Width": 16, "Height": 16 }
}
狗:
//dog head in inventory
"ToArea": { "X": 208, "Y": 208, "Width": 16, "Height": 16 }, //Dog 1
"ToArea": { "X": 224, "Y": 208, "Width": 16, "Height": 16 }, //Dog 2
"ToArea": { "X": 240, "Y": 208, "Width": 16, "Height": 16 }, //Dog 3
猫:
//cat head in inventory
"ToArea": { "X": 160, "Y": 208, "Width": 16, "Height": 16 }, //Cat 1
"ToArea": { "X": 176, "Y": 208, "Width": 16, "Height": 16 }, //Cat 2
"ToArea": { "X": 192, "Y": 208, "Width": 16, "Height": 16 }, //Cat 3