××××

SCUM自定义任务 - 中文说明文档

📂01.服主/04.服务器相关
💬

SCUM自定义任务系统完整指南,包含任务创建、奖励设置、条件配置等详细说明

📅发布于2026-04-05
⏱️阅读时间41 分钟
📝12142 字
📁分类自定义相关
🏷️标签
SCUM自定义任务任务系统JSON配置服务器设置

更新日期:

2025年5月11日

谷歌文档原文一共18页

⊿ 原文:Custom Quest Modification

- 📄

1、介绍

SCUM允许你通过位于特定文件夹中的JSON文件来创建和自定义任务,具体文件夹取决于你是在运行多人服务器还是在沙盒模式下游玩。对任务JSON文件的所有更改都需要重新启动服务器(或在沙盒模式下重新启动游戏)才能使更改生效。

提供一个工具的链接,通过简单的图形界面简化创建过程,同时确保输出结构正确并与已知的游戏数据进行验证:

    


相关命令

#Quests ListAllQuests

将所有默认任务的 JSON 数组复制到剪贴板。你可以将其粘贴到一个文件(例如 DisabledQuests.json)中,以阻止任何不希望出现的默认任务

#ExportQuests

创建任务文件夹(如果该文件夹尚未存在),并导出与任务相关的 JSON 文件,提供所有当前任务的快照

#Quests GetMeshInfo

用于交互条件以检索地图上的对象信息(例如,用于放置可交互对象)



- 📁

2、文件夹和文件结构


任务文件夹

根据你的设置,任务文件夹位于以下位置:

<Server>\SCUM\Saved\Config\WindowsServer\Quests
%LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Quests

此文件夹会在你首次运行 命令时自动创建

在任务文件夹内,你会找到以下子文件夹:

  • Blocked(已阻止)

    包含 BlockedQuests.json,它允许你通过名称阻止(禁用)某些任务或阻止所有默认任务

  • Override(覆盖)

    用于添加或更新自定义任务。当服务器启动(或沙盒模式下的游戏)时,它会解析此文件夹中的 JSON 文件并应用任何新的或已更新的任务

  • QuestList(任务列表)

    包含 CustomQuestList.json(导出的所有自定义任务列表)和 DefaultQuestList.json(所有默认任务列表)

    编辑这些文件不会影响服务器或游戏玩法;它们仅用于参考

阻止默认任务

如果你希望阻止某些默认任务出现,可以使用文件夹中的 文件。只需添加你想要禁用的任务名称。例如:

{
  "BlockAllDefaultQuests": false,
  "BlockQuestNames": [
   	"T1_AR_Fetch_45ACPAmmobox",
	"T1_AR_Fetch_50AEAmmobox",
	"T1_AR_Fetch_9mmAmmobox"
  ]
}

如果你想要禁用所有默认任务,请将设置为

- ✍🏻

3、创建自定义任务

所有自定义任务必须作为每个文件中的一个 JSON 对象放置在文件夹中。每个文件描述一个任务。当服务器(或游戏)重新启动时,SCUM 将加载这些任务。

路径示例结构:

Quests

├── Blocked
│    └── BlockedQuests.json
├── Override
│    ├── MyFirstCustomQuest.json
│    └── MySecondCustomQuest.json
└── QuestList
     ├── CustomQuestList.json
     └── DefaultQuestList.json

- 🪢

4、任务 JSON 文件的结构

你创建的每个任务都由一个具有特定属性的任务 JSON 对象定义。某些属性是强制的(bold),而其他属性是可选的(italics)。 以下是其结构,随后是详细解释:

{
  "AssociatedNPC": "Bartender",
  "Tier": 1,
  "Title": "我的第一个自定义任务【这个是任务名称命名,可以自定义名称】",
  "Description": "帮助酒保完成一些任务。【这是一个任务描述,可自定义内容】",
  "TimeLimitHours": 24,
  "RewardPool": [
    {
      // 可在此处添加一个或多个奖励对象
    }
  ],
  "Conditions": [
    {
      // 可在此处添加一个或多个条件对象
    }
  ]
}

稍后会详细介绍

4.1 强制属性

每个任务 JSON 对象都必须包含以下强制属性:

属性名 类型 描述
AssociatedNPC 字符串 必须为这些之一:。指示哪个 NPC 提供任务以及奖励(包括商店折扣奖励)的来源
Tier 整数(范围:1 至 3) 指定任务的难度或重要性等级
Title 字符串 用于标记任务的合适文本
Description 字符串 简要说明玩家需要做什么
RewardPool 奖励对象的数组 每次生成任务的新实例时,从中随机选择一个奖励对象
Conditions 条件对象的数组            定义完成任务必须满足的目标



4.2 可选属性


类型:数字(可以是整数或小数)

设置完成任务的时间限制(以小时为单位)(例如,24、48.5 等)

如果没有时间限制,则省略此属性


- 🥳

5、奖励对象

奖励池数组中的每个条目都是一个奖励对象。SCUM 在每个对象中最多设置五个“奖励槽位”,计数方式如下:

  • 货币(普通、金币、声望)组

    • 这三者共同计为 1 个奖励槽位——无论你只包含其中一个(例如仅包含普通货币)还是全部三个(普通货币、金币和声望)。
  • 技能

    • 每授予一个技能计为 1 个奖励槽位。
    • 示例:如果你在射箭和烹饪方面给予经验值,这就是 2 个奖励槽位。
  • 交易优惠

    • 在同一个奖励对象中的第一个交易优惠计为 2 个奖励槽位。
    • 在同一个奖励对象中的每个额外交易优惠计为 1 个奖励槽位。
    • 授予的物品必须属于交易者的库存

下面是一个展示奖励计数如何工作的示例:

{
  "CurrencyNormal": 100,
  "CurrencyGold": 1,
  "Fame": 10,
  "Skills": [
    {
      "Skill": "Cooking",
      "Experience": 50
    }
  ],
  "TradeDeals": [
    {
      "Item": "BP_Weapon_M9_C",
      "Price": 50,
      "Amount": 2,
      "AllowExcluded": false,
      "Fame": 10
    }
  ]
}
  • 普通货币(100)+ 金币(1)+ 声望(10)→ 1 个奖励槽位

  • 烹饪技能 +50 经验 → 1 个奖励槽位

  • 第一个交易优惠 → 2 个奖励槽位

到目前为止,总计为 4 个奖励槽位。在达到 5 个的限制之前,你还可以添加一个技能或一个交易优惠(或任何单槽位奖励元素)


5.1、奖励对象属性

  • CurrencyNormal(整数) 玩家获得的普通货币金额。

  • CurrencyGold(整数) 玩家获得的金币金额。

  • Fame(整数) 授予的声望点数。

  • Skills(技能对象的数组) 玩家在此数组中的每个技能对象中获得技能经验。

  • TradeDeals(交易优惠对象的数组) 定义在对应 NPC 商店中的折扣或其他修改后的物品价格。

- 🕵🏻

6、技能对象

在奖励对象中的【Skills】数组内使用。

  • SkillName(字符串) 技能的名称(例如,“Cooking”、“Archery”等)。

  • Experience(整数) 授予该技能的经验值。

{ "Skill": "Cooking",
  "Experience": 50
}
  • Skill(字符串) 必须是以下预定义技能名称之一:
英文 中文
Archery 射箭
Aviation 航空
Awareness 警觉
Boxing 拳击
Camouflage 伪装
Cooking 烹饪
Demolition 爆破
Driving 驾驶
Endurance 耐力
Engineering 工程
Farming 农业
Handgun 手枪
Medical 医疗
MeleeWeapons 近战武器
Motorcycle 摩托车
Rifles 步枪
Running 跑步
Sniping 狙击
Stealth 潜行
Survival 生存
Tactics 战术
Thievery 盗窃
  • Experience(整数) 授予该技能的经验值。

- 🕵🏻

7、交易优惠对象

在奖励对象中的数组内使用。

{
  "Item": "BP_Weapon_M9_C",
  "Price": 50,
  "Amount": 2,
  "AllowExcluded": false,
  "Fame": 10
}
  • Item(字符串) 游戏内物品的名称,与在 中使用的名称相同。

  • Price(整数,可选) 折扣(或更改后)的价格。省略则保持默认价格。

  • Amount(整数 ≥ 1,可选) 可用的折扣物品数量。

  • AllowExcluded(布尔值,可选) 如果设置为 true,则允许购买交易者通常不出售的物品。

  • Fame(整数 ≥ 0,可选) 购买物品所需的声望。省略则使用默认声望要求。

- 🕵🏻

8、条件对象

任务 JSON 对象中的数组包含一个或多个条件对象。每个条件可以是以下三种类型之一:消灭目标、获取物品或交互。

8.1、常见条件属性

{
  "Type": "Elimination",
  "CanBeAutoCompleted": false,
  "TrackingCaption": "Eliminate 3 puppets",
  "SequenceIndex": 0,
  "LocationsShownOnMap": [
    {
      "Location": { "X": 0.0, "Y": 0.0, "Z": 0.0 },
      "SizeFactor": 1.0
    }
  ]
}
  • Type(字符串)

    • 必须是 “Elimination”(消灭目标)、“Fetch”(获取物品) 或 “Interaction”(交互)。
  • CanBeAutoCompleted(布尔值,默认:false)

    • 如果为 false,玩家必须返回给任务 NPC 才能完成此步骤。如果为 true,满足要求后会自动完成。
  • TrackingCaption(字符串,可选)

    • 用于描述此步骤在玩家日志或任务列表中的内容。
  • SequenceIndex(整数 ≥ 0)

    • 定义条件激活的顺序。
    • 至少一个条件必须有 SequenceIndex: 0。
    • 多个条件可以共享相同的索引,所有这些条件都必须完成,任务才会进入下一个索引。
  • LocationsShownOnMap(地图位置对象数组,可选)

    • 为此条件的位置在地图上绘制圆圈。

8.1.1、常地图位置对象

中的每个对象如下所示:

{"Location": { "X": 1000.0, "Y": 2000.0, "Z": 30.0 },
  "SizeFactor": 1.0}

游戏中也可以使用 复制位置:

{ "Location": "{X=-157607.328 Y=-687586.562 Z=667.976|P=353.113800 Y=101.191971 R=0.000000}",
    "SizeFactor": 1.0}
  • Location(位置)

    • 包含游戏世界中的 X、Y、Z 坐标
  • SizeFactor(缩放)(数字 > 0.0)

    • 绘制圆圈的缩放比例(1.0 表示直径约 300 米)

8.2、消灭目标条件

用于击杀要求:

{
"Type": "Elimination",
  "TargetCharacters": [
    "Puppet",
    "Prisoner" ],
  "Amount": 5,
  "AllowedWeapons": [
    "BP_Weapon_M1911_C",
    "BP_Weapon_M9_C"]
}
  • TargetCharacters(目标角色数组)

    • 列出必须被消灭的对象。可以包含在 (例如,Puppet)或 中使用的生成名称。特殊占位符包括:
      • “Puppet”(匹配所有木偶)
      • “Prisoner”(匹配所有囚犯角色)
      • “Razor”、“Sentry”、“SentryOld” 等。
  • Amount(数量 ≥ 1)

    • 需要的击杀次数。
  • AllowedWeapons(武器数组,可选)

    • 如果存在,只有使用这些武器的击杀才会被计入。省略则允许使用任何武器。

8.3、获取物品条件

用于收集或交付物品:

{
  "Type": "Fetch",
  "DisablePurchaseOfRequiredItems": false,
  "PlayerKeepsItems": false,
  "RequiredItems": [
    {
      "AcceptedItems": [ "BP_Apple_C" ],
      "RequiredNum": 3,
      "RandomAdditionalRequiredNum": 2,
      "MinAcceptedItemUses": 1,
      "MinAcceptedCookLevel": "Raw",
      "MaxAcceptedCookLevel": "Cooked",
      "MinAcceptedCookQuality": "Poor",
      "MinAcceptedItemMass": 100.0,
      "MinAcceptedItemHealth": 50.0,
      "MinAcceptedItemResourceRatio": 20.0,
      "MinAcceptedItemResourceAmount": 50.0
    }
  ]
}
  • DisablePurchaseOfRequiredItems(禁止购买所需物品)(布尔值)

    • 如果为 true,则在任务活跃期间,任何人无法购买 必需品 列表中的物品——仅在服务器启用了 阻止购买必需品 设置时相关。
  • PlayerKeepsItems(玩家保留物品)(布尔值)

    • 如果为 true,则任务完成后,物品不会从玩家的库存中移除。
  • RequiredItems(所需物品数组)(物品对象数组)

    • 每个物品对象指定必须收集的物品及其数量。

8.3.1、物品对象

每个所需物品的属性:

英文名称 中文名称 数值 介绍
AcceptedItems 可接受物品 字符串数组        通过 #SpawnItem 识别的物品名称列表。
RequiredNum 所需数量 整数 ≥ 1 必须收集的这些物品的数量。
RandomAdditionalRequiredNum 随机额外所需数量 整数 ≥ 1 可选,可能需要的随机额外数量(最多为指定的数字)。
MinAcceptedItemUses 最小可接受物品使用次数 整数 ≥ 0 可选,如果适用,物品必须至少有此使用次数。
MinAcceptedCookLevel / MaxAcceptedCookLevel 最小/最大可接受烹饪等级 字符串 可选,食物允许的烹饪等级范围。有效等级:“生的”、“未煮熟的”、“煮熟的”、“过熟的”、“烧焦的”。
MinAcceptedCookQuality 最小可接受烹饪质量 字符串 可选,最低可接受的烹饪质量:“糟糕的”、“差的”、“一般的”、“好的”、“优秀的”、“完美的”。
MinAcceptedItemMass 最小可接受物品质量 数字 ≥ 0.0 可选,以克为单位,物品的质量必须至少为该值。
MinAcceptedItemHealth 最小可接受物品健康度 0.0 到 100.0 范围内的数字 可选,所需的物品最低健康度百分比。
MinAcceptedItemResourceRatio 最小可接受物品资源比例 0.0 到 100.0 范围内的数字 可选,用于含有液体的物品(例如,水瓶)。必须至少有该百分比的液体。
MinAcceptedItemResourceAmount 最小可接受物品资源量        数字 ≥ 0.0 可选,用于含有液体的物品。必须至少有该克数的液体。

8.4、交互条件

用于与放置在地图上的物体进行交互(例如,翻转开关、收集笔记等)

获取位置数据

在游戏中查看物体时使用来捕捉其网格名称、实例、变换等信息。它会将一个 JSON 片段复制到剪贴板,你可以直接将其粘贴到任务文件中。

{ "Type": "Interaction",
  "Locations": [{
      "AnchorMesh": "/Game/World/SomeMap/BP_Switch.BP_Switch_C",
      "Instance": 4,
      "FallbackTransform": "X=123.456 Y=234.567 Z=10.0 Pitch=0 Yaw=0,Roll=0",
      "VisibleMesh": "/Game/World/SomeMap/BP_SwitchModel.BP_SwitchModel_C" },
    {
      "AnchorMesh": "/Game/World/SomeMap/BP_Door.BP_Door_C"
    }],
  "MinNeeded": 1,
  "MaxNeeded": 2,
  "SpawnOnlyNeeded": true,
  "WorldMarkerShowDistance": 50}
  • Locations(位置数组)(位置对象数组)

    • 每个位置对象定义世界中的一个物体放置点或交互点。
  • MinNeeded / MaxNeeded(最小/最大需要)(整数)

    • 随机确定玩家必须与指定位置对象中的多少个进行交互。例如,如果 MinNeeded = 1 且 MaxNeeded = 2,游戏将决定需要 1 次或 2 次交互。
  • SpawnOnlyNeeded(仅生成需要的)(布尔值)

    • 如果为 true,则仅生成随机确定数量的物体。如果为 false,则生成所有物体,但玩家只需与足够数量的物体交互以满足要求。
  • WorldMarkerShowDistance(世界标记显示距离)(整数 ≥ 0)

    • 标记在世界中可见的距离(以米为单位),引导玩家到达物体的确切位置。

8.4.1、位置对象
  • AnchorMesh(锚点网格)(字符串)

    • 识别地图上的游戏内对象。
  • Instance(实例)(整数,可选)

    • 如果相同网格的多个副本靠近在一起,则使用此属性进行区分。
  • FallbackTransform(备用变换)(字符串)

    • 如果 AnchorMesh 失败(例如,在沙盒模式下始终使用 FallbackTransform),则使用的位移/旋转数据。
  • VisibleMesh(可见网格)(字符串)

    • 要显示的 3D 模型。

- 🛰️

9、示例任务【将所有内容整合在一起】

下面是一个简单且完全详细的自定义任务 JSON 文件示例。将此文件保存为 MyFirstQuest.json(或任意名称)到 文件夹中

{
  "AssociatedNpc": "GeneralGoods",
  "Tier": 1,
  "Title": "General Goods trader's Special",
  "Description": "Collect apples for the General Goods trader and get a small reward.",
  "TimeLimitHours": 24.0,
  "RewardPool": [{
      "CurrencyNormal": 100,
      "Fame": 5,
      "Skills": [{
          "Skill": "Cooking",
          "Experience": 20}],
      "TradeDeals": [
        {
          "Item": "Pineapple",
          "Price": 50,
          "Amount": 1,
          "Fame": 0 } ] } ],
  "Conditions": [{
      "TrackingCaption": "Gather apples",
      "SequenceIndex": 0,
      "CanBeAutoCompleted": false,
      "Type": "Fetch",
      "DisablePurchaseOfRequiredItems": false,
      "PlayerKeepsItems": true,
      "RequiredItems": [{
          "AcceptedItems": [
            "Apple_2"],
          "RequiredNum": 3,
          "MinAcceptedItemHealth": 50.0}],
      "LocationsShownOnMap": [{
          "Location": {
            "X": 1000.0,
            "Y": 2000.0,
            "Z": 50.0},
          "SizeFactor": 1.0} ]}]}

说明

  • AssociatedNPC(关联 NPC)

    • 酒保将提供任务,交易优惠数组中的奖励适用于酒保的商店。
  • Tier(等级)

    • 等级 1 表示一个简单或低级的任务。
  • RewardPool(奖励池)

    • 玩家完成任务后将获得 100 普通货币、5 点声望、20 点烹饪经验,并可以折扣价购买 M9 手枪。
  • Conditions(条件)

    • 类型为获取。玩家必须带来 3 个苹果(AcceptedItems: BP_Apple_C),且苹果的健康度至少为 50%。
  • CanBeAutoCompleted(可自动完成)

    • 玩家必须返回酒保处(CanBeAutoCompleted: false)以最终完成任务。
  • PlayerKeepsItems(玩家保留物品)

    • PlayerKeepsItems 为 true,因此完成任务后玩家不会失去苹果。
  • 创建或修改此文件后,需要重启服务器或游戏才能使任务生效。


- 🙆🏻‍♂️

10、建议和最佳实践

  • 备份 JSON 文件:保留 JSON 文件的备份,以便在需要时恢复更改。
  • 验证 JSON:使用在线或本地 JSON 验证工具来防止格式错误。
  • 获取准确的放置数据:对于交互类型条件,使用 #Quests GetMeshInfo 获取准确的放置数据。
  • 在沙盒模式下测试任务:如果可能,在将任务添加到实时服务器环境之前,先在沙盒模式下进行测试。
  • 无法编辑默认任务:记住你无法编辑默认任务。你只能阻止它们或创建全新的任务。

- 💕

💕总结

通过遵循本指南,你应该能够在 SCUM 中创建、自定义和管理自己的任务。无论你是想阻止默认任务,添加具有独特条件的新任务,还是通过货币、声望、折扣或技能经验奖励玩家,上述提供的 JSON 结构涵盖了所有要点。

重要提示: 在对 JSON 文件进行更改后,务必重新启动服务器或游戏,以便你的自定义任务能够正确加载。

享受使用自定义任务打造独特的 SCUM 体验吧!


⩥ 编译:白木『QQ:2819066121』
🥳 校对名单:...招募校对、维护伙伴...有兴趣可联系白木❤️
♥内容原创归属:SAM • 游戏社区