适用版本: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
三、修改步骤
-
备份:复制一份 bot.json 为 bot.json.bak(改坏了可还原)。
-
用记事本或 VS Code 打开,找到顶层 “itemSpawnLimits”: { … }。
-
在其下每个你想生效的 AI 角色对象里加入 “物品ID”: 0,例如在 “pmc” 和 “assault” 对象内添加:
"itemSpawnLimits": { "pmc": { "8ef5b2ef0000000000000018": 0, "...": 0 }, "assault": { "8ef5b2ef0000000000000018": 0, "...": 0 } } -
保存并重启 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 个物品并覆盖全部角色。"
六、关键注意事项(最容易踩坑)
-
只用「物品本体 ID(newId)」:MGMod 物品文件里有两个 ID——newId(模组物品自己的 ID,通常是一大串带 0 的)和 cloneId(仿照的原版物品 ID)。cloneId 千万不要屏蔽,它指向原版物品(比如原版止痛针),屏蔽会把你不想禁的原版物品一起禁掉。
-
每个角色都要加:只要哪个 AI 角色没加,那个角色的 AI 就仍可能带。脚本会自动覆盖全部。
-
改完必须重启服务端,配置只在启动时读取。
-
此机制与 APBS(Acid's Progressive Bot System)无关:即使以后卸载 APBS、由原生 SPT 生成接管,黑名单同样生效。
七、如何推广到其他物品
-
找到该物品的模板 ID(模组物品一般在其 mod 的 db 目录 JSON 里,找 newId;原版物品可查 SPT 物品数据库)。
-
按上面方法把 “物品ID”: 0 加入 itemSpawnLimits 的对应角色。
-
itemSpawnLimits 覆盖 AI 的背包 / 口袋 / 战术背心 / 特别物品等 大部分战利品槽位,通用性很广。
以上是手动,接下来是自动。
把你的独立物品或模组物品ID复制给模型,把要改的文件路径复制给模型,然后开始‘许愿🙏’,如果不出意外的话模型应该会给你备份下文件然后帮你修改好。
如果你不知道独立物品或模组物品ID是什么,这时候分两种情况,一种是模组作者未加密,就是源码直出,那么你就把模组文件路径告诉模型,然后‘许愿🙏’。另一种就是模组在Github开源,那么就把链接复制给模型,然后‘许愿🙏’。










技术贴 顶一下