「模组:Content Patcher」修訂間的差異
Margotbean(討論 | 貢獻) (+category) |
Margotbean(討論 | 貢獻) 小 (文本替换 - 替换“{| class”为“{|class”) |
||
行 19: | 行 19: | ||
一个 '''asset''' 本质上是游戏中的 <tt>Content</tt> 文件夹,具有唯一的“资源名称”。 资产名称从不包含 <tt>Content</tt>路径、语言或文件扩展名(可以使用令牌来定位特定的语言)。例如: | 一个 '''asset''' 本质上是游戏中的 <tt>Content</tt> 文件夹,具有唯一的“资源名称”。 资产名称从不包含 <tt>Content</tt>路径、语言或文件扩展名(可以使用令牌来定位特定的语言)。例如: | ||
− | {| class="wikitable" | + | {|class="wikitable" |
|- | |- | ||
! 文件 | ! 文件 |
於 2021年10月25日 (一) 23:54 的修訂
← 目錄
想為遊戲創建內容包模組嗎?教程就在這裡。有關如何使用模組,請參閱 模組:使用指南/入門
快速開始
此頁面是對創建 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:
因此,如果想更改阿比蓋爾的肖像,則可以使用 Content Patcher 加載或編輯 Portraits/Abigail.
Load 和 Edit
可以通過兩種概念上的方式來更改資源:
- Load|加載 Asset的初始版本。 每個Asset只能同時被一個模組加載。 這主要用於完全替換模組(例如完全改變 NPC 肖像的模組),或提供 Content 文件夾中不存在的文件。
- Edit|編輯 加載後的Asset。 可以對同一資產應用任意數量的編輯。
例如,假設遊戲需要阿比蓋爾的肖像。 這是應用更改的方式:
┌────────────┐ │ 编辑Asset │ ┌────────────┐ ├────────────┤ 获得肖像/阿比盖尔 ──>│ 载入Aeest │───>│编辑Asset │──> 肖像Aeest └────────────┘ ├────────────┤ │ 编辑Asset │ └────────────┘
這分為四種主要操作類型(Load、EditData、EditImage、EditMap),在 內容修補程序自述文件中的更多詳細信息(見下文)。
開始
了解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