BWIKI 全站将于 9 月 3 日(全天)进行维护,期间无法编辑任何页面或发布新的评论。
模组:Content Patcher 制作指南/修改地图
← 模组:目录
带有 "Action": "EditMap"
的补丁可以更改游戏已加载的地图的一部分。多个内容包可以编辑同一素材。您可以使用补丁向下和向右延伸地图(Content Patcher 会自动扩大地图以适应新地图)。
介绍
什么是地图?
一个地图素材描述游戏内某个区域的的地形(水、悬崖、地面)、地形特征(灌木)、建筑、路径和特定区域的触发器。在您到达某个区域的边缘或进入建筑物时屏幕变黑时,意味着您正在两个地图间切换。
请参阅模组:地图以更详细的了解地图和进阶概念。
用法
概述
每一个 EditMap
补丁可以对某一地图进行三种类型的更改:地图叠加、编辑地图属性或编辑地图图块。
由于三者差异较大,因此下文将分为三个部分详细描述这三种类型的更改,但它们仍可以在同一个补丁中组合使用。在这种情况下,字段按以下顺序应用:FromFile
、MapTiles
、MapProperties
、AddNpcWarps
、AddWarps
和 TextOperations
。
公共字段
一个 EditImage
补丁由 Changes
(请参阅下文示例)下的一个模型组成。不论更改类型是什么,都需要使用这些字段。
- 必填字段:
-
字段 用途 Action
要进行的更改类型。此操作类型设置为 EditMap
。Target
要替换的目标游戏素材名称(或多个由逗号分隔的素材名),例如 Maps/Town
。该字段支持令牌,不区分大小写。 - 可选字段:
-
字段 用途 When
(可选)仅在给定的条件匹配时应用这个内容补丁。 LogName
(可选)在日志中显示的补丁名称。这有助于查找错误。如果省略,则默认为类似 EditMap Maps/Town
的名字。Update
(可选)补丁字段的更新频率。请参阅补丁更新频率。 LocalTokens
(可选)一组仅在此补丁中生效的局部令牌。 -
进阶字段:
字段 用途 Priority
(可选)当多个补丁编辑同一数据素材时,此字段控制它们应用的顺序。可用的值有 Early
(更早),Default
(默认),还有Late
(更晚)。默认值为Default
。补丁(包括所有模组)按以下顺序生效:
- 优先级从早到晚;
- 按照模组加载顺序(基于依赖关系等因素);
- 按照补丁在
content.json
中列出的顺序。
如果需要更具体的顺序,可以使用简单的偏移量,如
"Default + 2"
或者"Late - 10"
。默认值为 -1000(Early
),0(Default
)和 1000(Late
)。此字段不支持令牌,不区分大小写。
警告优先级会让您的更改难以排除故障。推荐做法:
- 如果可以的话,只使用上述无偏移的优先级(例如外观覆盖设为
Late
) - 不需要为您自己的补丁设置优先级,因为您可以自己在 content.json 排列好补丁应用的顺序。
TargetLocale
(可选)素材名称中要匹配的地区代码,例如设置 "TargetLocale": "fr-FR"
将会只编辑法语的素材(例如Data/Achievements.fr-FR
)。可以为空,只有只编辑没有地域区分的基本素材。如果省略,则将应用于所有素材,不论其是否存在本地化。
您可以继续添加以下一个或多个部分的字段。
地图叠加
一个“地图叠加”更改能够将图块、属性、和图块集从源地图复制到目标地图。目标区域下对应的图层将被源地图完全覆盖。
此补丁的字段为:
字段 |
用途 |
---|---|
|
请参阅上文的公共字段章节。 |
|
内容包文件夹中用于修补到目标中的文件的相对路径(例如 Content Patcher 会按以下方法处理 |
|
(可选)源地图中需要复制到目标地图的部分,默认为整个源地图。 此字段是一个对象,含有左上角点的 X 和 Y 像素坐标以及该区域的像素宽度(Width)和高度(Height)。该对象的字段支持令牌。 |
|
(可选)目标图片中要替换的部分。默认大小与 此字段是一个对象,含有左上角点的 X 和 Y 像素坐标以及该区域的像素宽度(Width)和高度(Height)。该对象的字段支持令牌。 如果您指定的区域超出了地图的底部或右部,Content Patcher 会自动扩大地图以适应新地图。 |
|
(可选)如何将 例如,假设您有一个大部分为空的源地图,包含两个图层: [[File:../../screenshots/map-patch-mode-source.png]] 以下是它们在不同
|
例如,使用自定义地图内的图块替换鹈鹕镇广场:
{
"Format": "2.7.0",
"Changes": [
{
"Action": "EditMap",
"Target": "Maps/Town",
"FromFile": "assets/town.tmx",
"FromArea": { "X": 22, "Y": 61, "Width": 16, "Height": 13 },
"ToArea": { "X": 22, "Y": 61, "Width": 16, "Height": 13 }
},
]
}
编辑地图属性
MapProperties
字段用于新增、替换或移除地图属性。
字段 |
用途 |
---|---|
|
请参阅上文的公共字段章节。 |
|
需新增、替换或移除的地图属性(不同于图块属性)。要添加属性,只需要指定一个不存在的键;要删除属性,可以把它的值设为 该字段的键和值都支持令牌。 |
|
在 该字段支持令牌。 |
|
|
例如,此补丁更改农场洞穴的 Outdoors
地图属性,并增加一个传送点(传送格式请参阅地图说明文档)
{
"Format": "2.7.0",
"Changes": [
{
"Action": "EditMap",
"Target": "Maps/FarmCave",
"MapProperties": {
"Outdoors": "T"
},
"AddWarps": [
"10 10 Town 0 30"
]
},
]
}
编辑地图图块
MapTiles
用于新增、编辑或移除图块和图块属性。
字段 |
用途 |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
请参阅上文的公共字段章节。 |
||||||||||||||
|
需新增、编辑或移除的图块。该字段的所有子字段都支持令牌。 此字段是一个含有多个模型的列表。每一个模型对应一个图块,并含有以下字段。
|
例如,此补丁延长农场里通向出货箱的路径,新增一个图块。
{
"Format": "2.7.0",
"Changes": [
{
"Action": "EditMap",
"Target": "Maps/Farm",
"MapTiles": [
{
"Position": { "X": 72, "Y": 15 },
"Layer": "Back",
"SetIndex": "622"
}
]
},
]
}
MapTiles
的所有子字段都支持令牌。例如,此补丁在出货箱前新增一个每天都会随机传送到不同位置的传送点。
{
"Format": "2.7.0",
"Changes": [
{
"Action": "EditMap",
"Target": "Maps/Farm",
"MapTiles": [
{
"Position": { "X": 72, "Y": 15 },
"Layer": "Back",
"SetProperties": {
"TouchAction": "MagicWarp {{Random:BusStop, Farm, Town, Mountain}} 10 11"
}
}
]
},
]
}
已知限制
- 更改农舍的
Back
图层有可能失败或导致离奇的效果。这是游戏本身装饰地板的逻辑造成的限制,而非 Content Patcher 的限制。
参见
- 其他操作和选项请参见模组作者指南。