模组:Content Patcher

来自Stardew Valley Wiki
跳到导航 跳到搜索

目录

想为游戏创建内容包模组吗?教程就在这里。有关如何使用模组,请参阅 模组:使用指南/入门

快速开始

此页面是对创建 Content Patcher 的内容包的简要介绍。如果你不需要介绍,请参阅 完整的技术资料

基本概念

什么是 Content Patcher ?

Content Patcher是一种 SMAPI 模组,可更改游戏资源(图像、对话、数据和地图),而无需替换游戏文件或编写代码。可以通过创建包含几个 JSON 文件(基本上是文本)的内容包(基本上是文件夹)来使用它。只需编辑 JSON 文件就可以:

  • 替换一个图像文件
  • 制作季节性的变化
  • 根据天气、日期、与其他 NPC 的关系等进行更改
  • 进行非常具体的更改(例如,在完成Joja超市献祭之后,在下雪的冬天的周末,咖啡价格会更高)
  • 以及更多

资源 Assets

一个 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

Modding - creating an XNB mod - example portraits.png

因此,如果想更改阿比盖尔的肖像,则可以使用 Content Patcher 加载或编辑 Portraits/Abigail.

Load 和 Edit

可以通过两种概念上的方式来更改资源:

  • Load|加载 Asset的初始版本。 每个Asset只能同时被一个模组加载。 这主要用于完全替换模组(例如完全改变 NPC 肖像的模组),或提供 Content 文件夹中不存在的文件。
  • Edit|编辑 加载后的Asset。 可以对同一资产应用任意数量的编辑。

例如,假设游戏需要阿比盖尔的肖像。 这是应用更改的方式:

                                           ┌────────────┐
                                           │ 编辑Asset │
                         ┌────────────┐    ├────────────┤
获得肖像/阿比盖尔 ──>│ 载入Aeest  │───>│编辑Asset │──> 肖像Aeest
                         └────────────┘    ├────────────┤
                                           │ 编辑Asset │
                                           └────────────┘

这分为四种主要操作类型(LoadEditDataEditImageEditMap),在 内容修补程序自述文件中的更多详细信息(见下文)。

开始

了解Json

在为 Stardew Valley 创建 mod 时,您会注意到很多文件的名称末尾带有 .json。 这意味着它们被格式化为 JSON,这只是一种编写代码可读的文本的方式。 如果您以前没有使用过 JSON,请阅读 An Introduction to JSON 会助于了解文件在做什么。

创建示例模块

首先让我们安装并运行我们的基本内容:

  1. 安装 SMAPIContent Patcher.
  2. 解压游戏的Content文件夹,这样您就可以看到每个资产包含的内容。
  3. 修改或创建SMAPI内容包。
  4. 使用以下内容在同一文件夹中创建一个 content.json 文件:
    {
       "Format": "1.27.0",
       "Changes": [
       ]
    }
    
  5. 启动游戏。

如果到目前为止你做的一切都正确,你应该在 SMAPI 控制台的“加载的 X 内容包”下看到新的 mod。 (如果没有,请查看上述步骤或 寻求帮助。)

内容格式

您在上面创建的 content.json 文件告诉 Content Patcher 要更改什么。 这有两个主要领域:

  • Format:格式版本。 您应该始终使用最新版本(当前为 1.19.0)来启用最新功能并避免过时行为。
  • Changes:您要进行的更改。 每个条目称为“补丁”,并描述要执行的特定操作:替换此文件、将此图像复制到文件中等。您可以列出任意数量的补丁。

您可以在 Changes 字段中列出任意数量的补丁,每个补丁都由 {} 包围。 有关更多信息,请参阅下一节,但这里有一个快速示例:

{
   "Format": "1.27.0",
   "Changes": [
      {
         "Action": "Load",
         "Target": "Animals/Dinosaur",
         "FromFile": "assets/dinosaur.png"
      },

      {
         "Action": "EditImage",
         "Target": "Maps/springobjects",
         "FromFile": "assets/fish-object.png"
      },
   ]
}

(还有其他字段,如 ConfigSchemaDynamicTokens 用于更高级的用法;这些都包含在完整的自述文件中。)

下一步

您已经创建了一个内容补丁包!

如需帮助使其做某事,请参阅...

例子

(很快就会在这里提供指导教程。)

改变马/宠物图标

对于替换马和/或宠物(猫和狗)外观的编辑,您可以将这些添加到您的 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