• 注册
  • 独立物品道具 独立物品道具 关注:1258 内容:1184

    【SPT 4.0 教程】禁止 AI 携带指定物品/独立物品(以 MGMod「浓缩」针剂为例)

  • 查看作者
  • 打赏作者
  • 2
  • 独立物品道具
  • 圆转纯熟

    适用版本:SPT 4.0(游戏版本 0.16.9.0.40087) 问题现象:AI 刷新时会携带 MGMod 添加的【浓缩】系列针剂等「模组物品」,不想让 AI 带上它们。

    以下是占位,以便帮助有同样需求的同学快速检索到本帖(禁止Ai携带、禁止Ai刷新、如何禁止、如何不让、在Ai身上刷新、禁止Ai生成)

    我会教两种方法:手动(2~4分钟)大模型(1~2分钟)

    一、原理(了解即可)

    SPT 的 bot 战利品由服务器端生成,配置分散在两个地方:

    • SPT\SPT_Data\database\bots\types\*.json —— 各 bot 单位的基础模板与战利品池

    • SPT\SPT_Data\configs\bot.json —— 服务器 Bot 全局配置,其中 itemSpawnLimits 是「物品出现上限」字典

    生成逻辑(BotLootGenerator):物品被随机抽中作为 AI 战利品时,会先检查它是否存在于 itemSpawnLimits;若存在且当前数量已超过上限,该物品会直接从池中剔除、不放进 AI 背包/口袋/战术背心。因此把目标物品的上限设为 0,AI 就永远不会携带它。

    这个机制对任何物品、任何 AI 角色(scav / PMC / Boss / 感染者)都生效,不限于针剂。

    二、要改的文件(仅一个)

    SPT\SPT_Data\configs\bot.json

    三、修改步骤

    1. 备份:复制一份 bot.json 为 bot.json.bak(改坏了可还原)。

    2. 用记事本或 VS Code 打开,找到顶层 “itemSpawnLimits”: { … }。

    3. 在其下每个你想生效的 AI 角色对象里加入 “物品ID”: 0,例如在 “pmc” 和 “assault” 对象内添加:

      "itemSpawnLimits": {
        "pmc": {
          "8ef5b2ef0000000000000018": 0,
          "...": 0
        },
        "assault": {
          "8ef5b2ef0000000000000018": 0,
          "...": 0
        }
      }
    4. 保存并重启 SPT 服务端,之后新生成的 AI 不会再带这些物品(已生成的 AI 不清除,需重新入局/生成)。

    四、MGMod 独立物品「浓缩」针剂成品 ID 列表(直接复制用)

    以下是 6 个针剂的模板 ID(newId):

    物品 模板 ID
    【浓缩】回血针 8ef5b2ef0000000000000018
    【浓缩】能量恢复针 8ef5b2ef0000000000000019
    【浓缩】止痛针 8ef5b2ef000000000000001a
    【浓缩】止血针 8ef5b2ef000000000000001b
    【浓缩】负重针 8ef5b2ef000000000000001c
    【浓缩】耐力针 8ef5b2ef000000000000001d

    五、一键脚本(推荐,全 60 个角色一次生效)

    SPT 4.0 的 itemSpawnLimits 下每个 scav/boss 角色都有独立的字典(pmc、assault、assaultgroup、marksman、pmcbot、各 boss、小弟等,共 60 个),default 仅作为没有对应角色时的兜底、通常不生效。手动一个个加很累,用 PowerShell 一次性全加:

    $path = "D:\TKF\Client.0.16.9.0.40087\SPT\SPT_Data\configs\bot.json"  # 改成你自己的路径
    $ids  = @("8ef5b2ef0000000000000018","8ef5b2ef0000000000000019","8ef5b2ef000000000000001a","8ef5b2ef000000000000001b","8ef5b2ef000000000000001c","8ef5b2ef000000000000001d")
    
    # 先备份
    Copy-Item -LiteralPath $path -Destination "$path.bak" -Force
    
    $j = Get-Content -Raw -LiteralPath $path | ConvertFrom-Json
    foreach ($role in $j.itemSpawnLimits.PSObject.Properties.Name) {
        $dict = $j.itemSpawnLimits.$role
        foreach ($id in $ids) {
            if (-not ($dict.PSObject.Properties.Name -contains $id)) {
                $dict | Add-Member -NotePropertyName $id -NotePropertyValue 0
            }
        }
    }
    $json = $j | ConvertTo-Json -Depth 30
    [System.IO.File]::WriteAllText($path, $json, (New-Object System.Text.UTF8Encoding($false)))
    Write-Host "完成,已写入 $ids.Count 个物品并覆盖全部角色。"

    六、关键注意事项(最容易踩坑)

    1. 只用「物品本体 ID(newId)」:MGMod 物品文件里有两个 ID——newId(模组物品自己的 ID,通常是一大串带 0 的)和 cloneId(仿照的原版物品 ID)。cloneId 千万不要屏蔽,它指向原版物品(比如原版止痛针),屏蔽会把你不想禁的原版物品一起禁掉。

    2. 每个角色都要加:只要哪个 AI 角色没加,那个角色的 AI 就仍可能带。脚本会自动覆盖全部。

    3. 改完必须重启服务端,配置只在启动时读取。

    4. 此机制与 APBS(Acid's Progressive Bot System)无关:即使以后卸载 APBS、由原生 SPT 生成接管,黑名单同样生效。

    七、如何推广到其他物品

    1. 找到该物品的模板 ID(模组物品一般在其 mod 的 db 目录 JSON 里,找 newId;原版物品可查 SPT 物品数据库)。

    2. 按上面方法把 “物品ID”: 0 加入 itemSpawnLimits 的对应角色。

    3. itemSpawnLimits 覆盖 AI 的背包 / 口袋 / 战术背心 / 特别物品等 大部分战利品槽位,通用性很广。

        

    以上是手动,接下来是自动。

    把你的独立物品或模组物品ID复制给模型,把要改的文件路径复制给模型,然后开始‘许愿🙏’,如果不出意外的话模型应该会给你备份下文件然后帮你修改好。

    如果你不知道独立物品或模组物品ID是什么,这时候分两种情况,一种是模组作者未加密,就是源码直出,那么你就把模组文件路径告诉模型,然后‘许愿🙏’。另一种就是模组在Github开源,那么就把链接复制给模型,然后‘许愿🙏’。

    【SPT 4.0 教程】禁止 AI 携带指定物品/独立物品(以 MGMod「浓缩」针剂为例)

    略有小成
    打赏了10金币
    回复
    自成一派
    2021

    技术贴 顶一下




    回复

    请登录之后再进行评论

    登录
    独立物品道具
  • 今日 0
  • 内容 1184
  • 关注 1258
  • 聊天
    关注 0

    【招募】GRIFFIN TKF项目开工 期待你的加入 || 你是否想加入格里芬书写自己与人形的故事

    捐助我们

    • 微信
    • 支付宝
  • 签到
  • 任务
  • 发布
  • 模式切换
  • 偏好设置
  • 帖子间隔 侧栏位置: