BWIKI 全站将于 9 月 3 日(全天)进行维护,期间无法编辑任何页面或发布新的评论。
模组:Content Patcher 制作指南/文本操作
← 模组:目录
文本操作允许您在保留部分当前值的情况下更改某文本字段数据,而非覆盖整个值。例如您可以在不删除当前文本的情况下新增末尾值(Append)或新增头部值(Prepend)。
EditData
和 EditMap
类型的补丁均支持使用 TextOperations
字段定义文本操作。
示例
在深入具体细节之前,让我们先看一个简单案例。
当您不使用文本操作时,这是添加 NPC 普遍最爱的礼物的方法:
{
"Action": "EditData",
"Target": "Data/NPCGiftTastes",
"Entries": {
"Universal_Love": "74 446 797 373 279 127 128" // 替换现有值
}
}
这个补丁很简单,但是它会覆盖掉原本的数据。这也使得由其他模组或未来游戏更新中对 Universal_Love
的任何更改都会被这个补丁抹除掉。所以我们应当使用 Append
操作,在不改变原有数据值的情况下添加新的普遍最爱的礼物:
{
"Action": "EditData",
"Target": "Data/NPCGiftTastes",
"TextOperations": [
{
"Operation": "Append",
"Target": ["Entries", "Universal_Love"],
"Value": "127 128",
"Delimiter": " " // 如果原字段已经有数据,在原有值之后&新增值之前添加一个空格
}
]
}
请参阅下章节以了解更多关于每种操作类型及其预期字段的信息。
格式
公共字段
所有文本操作都包含以下基本字段:
字段 | 用途 |
---|---|
Operation
|
需执行的文本操作。请参阅下文了解每种操作的信息。 |
Target
|
要更改的具体文本字段,以面包屑路径格式表示。每一个路径值代表要导航到的一个字段,可使用的字段取决于补丁的类型,请参阅 EditData 和 EditMap 文档中对 TextOperations 字段的描述以获取更多信息。
该字段支持令牌,不区分大小写。 |
Append
Append
操作将文本新增到原字符串的末尾,并可在原值和新值之间添加分割定界符(Delimiter
)。
所需要的字段包括:
字段 | 用途 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
以上的公共字段 | |||||||||||||||
Value
|
需新增的文本。和大部分 Content Patcher 的字段一样,开头和末尾的空格字符会被删除,如果您需要在原有值和新增值之间添加空格,请使用 Delimiter 字段。
该字段支持令牌,不区分大小写。 | ||||||||||||||
Delimiter
|
(可选)原有值之后/新增值之前添加的文本。如果没有填写,则默认使用 / (对于绝大部分素材)或 ^ (对于 Data/Achievements )。
例如,假设字段原有值为
如果字段原有值为空字符串,则分割定界符将不生效:
|
此示例将两个新物品 ID 添加到 NPC 的普遍最爱的礼物列表中:
{
"Action": "EditData",
"Target": "Data/NPCGiftTastes",
"TextOperations": [
{
"Operation": "Append",
"Target": ["Entries", "Universal_Love"],
"Value": "127 128",
"Delimiter": " "
}
]
}
Prepend
Prepend
操作将文本新增到原字符串的开头,并可在新值和原值之间添加分割定界符(Delimiter
)。
此操作的其他属性和 Append
操作完全相同。
RemoveDelimited
RemoveDelimited
操作根据给定的分隔符将目标文本解析为一组值,然后移除一个或多个与给定搜索文本匹配的值。
所需要的字段包括:
字段 | 用途 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
以上的公共字段 | |||||||||||||
Search
|
需从原文本中移除的值。必须完全匹配分隔后的值才能移除,不会移除每个分隔值内的子字符串。
该字段支持令牌,且区分大小写 。 | ||||||||||||
Delimiter
|
分割原文本所用的字符。
例如,假设原文本为
| ||||||||||||
ReplaceMode
|
(可选)应移除哪些分隔值。支持的选项是:
默认为 |
例如,此补丁将五彩碎片(物品 ID 为 74)从普遍最爱的礼物中移除:
{
"Action": "EditData",
"Target": "Data/NPCGiftTastes",
"TextOperations": [
{
"Operation": "RemoveDelimited",
"Target": ["Entries", "Universal_Love"],
"Search": "74",
"Delimiter": " "
}
]
}
ReplaceDelimited
RemoveDelimited
操作把原文本值用分割定界符分成一组值,然后替换等于搜索文本的值。
这只替换分割后的值,不替换部分文本。
所需要的字段包括:
字段 | 用途 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
以上的公共字段 | |||||||||||||
Search
|
需从原文本中替换掉的值。必须完全匹配分隔后的值才能替换,不会替换每个分隔值内的子字符串。
该字段支持令牌,且区分大小写 。 | ||||||||||||
Value
|
用于替换该值的文本。
该字段支持令牌,不区分大小写。和大部分 Content Patcher 的字段一样,开头和末尾的空格字符会被删除。 | ||||||||||||
Delimiter
|
分割原文本所用的字符。
例如,假设原文本为
| ||||||||||||
ReplaceMode
|
(可选)应替换哪些分隔值。支持的选项是:
默认为 |
例如,此补丁将普遍最爱的礼物中的兔子的脚(物品 ID 为 446)替换为河豚(物品 ID 为 128):
{
"Action": "EditData",
"Target": "Data/NPCGiftTastes",
"TextOperations": [
{
"Operation": "ReplaceDelimited",
"Target": ["Entries", "Universal_Love"],
"Search": "446",
"Value": "128",
"Delimiter": " "
}
]
}