• 注册
  • Mod功能提议 Mod功能提议 关注:6313 内容:624

    【原创】【4.0.13】HideoutFramework — 藏身处设施控制框架(8.28更新)

  • 查看作者
  • 打赏作者
  • 当前位置: ODDBA社区 > 离线版交流区 > Mod功能提议 > 正文
  • 6
  • Mod功能提议
  • 登堂入室

    我们经常遇到这样的问题:仓库格子太小,以前我们在面对这样的问题在事后,解决方法通常是调整仓库的格子数量,但我认为这样的问题应当有更好的解决方式,于是本模组诞生了

    本模组提高了仓库的等级上限,并且可自定义配置等级个数和每等级所需的条件和效果

    这是什么?

    一个纯配置驱动的藏身处扩展框架:给任意设施追加新等级(升级耗时 / 条件 / 效果 / 界面描述全部可配置),由服务器与客户端的原生升级流程接管。不改任何游戏文件、不需要重编译服务器,配一个 config.json 就能把仓库从原版 4 级(10×68)一路扩到 7 级(10×120)甚至更高。

    配套提供Web 可视化配置中心(挂在 SPT 服务器自身端口上):实时查看服务器内存中的生效状态,用下拉选择 + 表单的方式编辑配置,校验通过才写入,改完重启服务器生效。

    功能一览

    功能 说明
    配置驱动等级扩展 任意设施(areaType)追加任意数量的新等级,时间/条件/效果/描述全部可配置
    四种升级条件 Item(物品+数量)/ Area(设施+等级)/ Skill(技能+等级)/ TraderLoyalty(商人+忠诚度),可任意组合、任意数量
    仓库加行效果 StashRows:固定 10 列宽、按行扩容,支持”直接加 N 行”与”目标总行数”(isTarget,自动补差额)两种模式,与其他加行模组共享同一原生机制
    仓库换模板效果 StashSize:换成更大的仓库模板(备选,默认不用,避免与其他模组冲突)
    升级描述本地化 每级 description 通过 SPT 官方 transformer 机制注入全部语言包 —— 升级界面显示你写的中文,不再是英文 key 原文
    仅改描述条目 只含 level + description 的条目只替换界面文字,不碰任何等级数据(可改掉原版 4 级”最大尺寸仓库”文案)
    配置全量校验 物品 ID / 设施类型 / 商人 ID / 等级连续性 / 效果类型全量校验,出错即阻止注入并逐条报出精确到字段的中文错误,绝不污染存档
    ID 速查表 首次启动自动生成 reference.json(商人/技能/货币/仓库模板/设施类型全表,商人带中文译名)
    Web 配置中心 https://127.0.0.1:6969/hideoutframework:① 当前生效状态(内存实时读取,全部 28 设施)② 可视化编辑(下拉选择式)③ JSON 高级编辑
    StashRows 补丁 Harmony prefix 接管原版不支持的 StashRows 效果(升级完成时生效,含控制台日志)
    客户端等级注入补丁 修复”升级按钮不出现”根因:客户端原版丢弃新等级,插件把缺失等级补入本地模板
    客户端越界保护 升级到场景没有的等级模型时保护下标不越界,视觉沿用最高级原版外观,不崩溃
    诊断开关 dumpAreasResponse(默认关闭):开启后把 /client/hideout/areas 实际响应写入 config 目录供排查

    默认预设内容(开箱即用:仓库 5/6/7 级)

    仓库(areaType=3)原版最高 4 级 = 10×68(宽 10 列 × 高 68 行,升到 4 级耗时 96 小时)。
    以下 5/6/7 级全部用 StashRows”加行”(固定 10 列宽,不换模板):

    等级 耗时 扩容 金钱 材料与工具(全部验证存在) 技能
    5 级 96h 10×68 → 10×87(+19 行) 300 万卢布 钉子×15、螺钉×15、螺栓×15、螺母×15、电线×20、手摇钻×3、螺丝刀×3、管道胶带×8 藏身处管理 15
    6 级 120h 10×87 → 10×102(+15 行) 500 万卢布 金属零件×20、钉子×20、螺钉×20、电钻×4、扳手×4、钳子×4、绝缘胶带×10、发泡密封胶×8、军用电缆×10 藏身处管理 20
    7 级 144h 10×102 → 10×120(+18 行) 800 万卢布 金属切割剪刀×5、圆嘴钳×5、剪线钳×5、管道扳手×3、棘轮扳手×3、多功能工具钳×3、撬棍×5、电线×30、军用电缆×15、螺栓×30、螺母×30 藏身处管理 25

    设计思路:

    • 耗时曲线:96 / 120 / 144 小时 —— 与原版 4 级(96h)持平并递增,符合”4 级之后”的定位

    • 材料逻辑:全部是”盖仓库”的真实物料 —— 五金(钉/螺钉/螺栓/螺母)固定结构、线材(电线/军用电缆)布线、施工工具(钻/扳手/钳/剪刀/撬棍)、胶带/密封胶收口、金属零件补强,不用无意义的高价值物品

    • 技能门槛温和:藏身处管理 15 / 20 / 25(原版没有任何技能条件,这里只给一点成长感,不卡关)

    • 不设新设施/商人门槛:原版 4 级要求的(发电机 3/工作台 3/供暖 3/情报中心 2/和平使者 4/拉格曼 4)升到 4 级仓库时必然已满足,不再重复设卡

    配置内附发电机/工作台/情报中心/比特币矿场四份”空模板”注释样板(字段齐全、数值留空),复制改数字即可用,当前不生效。


    机制说明

    1. 服务器注入(改内存,不改文件)

    • 启动时(数据库加载完成后)读取 config.json → 校验 → 把新等级合并进服务器内存中的藏身处数据(database/hideout/areas

    • 客户端请求 /client/hideout/areas 时返回合并后的数据 —— 原生升级流程(条件检查 / 计时 / 完成后效果)全部由 SPT 原版接管

    2. 客户端插件(为什么必须装)

    • 客户端进藏身处时,用游戏资源里的”本地模板”(每设施只有原版等级),再把服务器 stages 覆盖到本地已有等级上;服务器有而本地没有的新等级会被原版直接跳过 → 本地模板 MaxLevel 永远不变 → 判定”无未来升级” → 升级按钮不出现

    • 插件 ExtraStageInjectorPatch 在覆盖前先把缺失等级补进本地模板 → 按钮出现

    • 插件 SafeAreaVisualPatch 保护场景等级模型越界(升级到 5/6/7 后 _areaLevels[CurrentLevel] 不会越界崩溃,视觉沿用最高级原版模型)

    • 不触碰任何 AI / 行为 / 战斗逻辑,与 SAIN、AILimit 等无交集

    3. 仓库扩容(StashRows)

    • 原版服务器升级流程不处理 StashRows(那是任务奖励机制),模组的 Harmony 补丁在升级完成时接管:累加 StashRows bonus 到玩家档案(与任务奖励同源,客户端原生支持)

    • 两种模式:value=19 直接加 19 行;value=102, isTarget=true 表示”升级后总行数 102″,自动计算差额补上

    • 行数可无限叠加:10×68 → +19 → 10×87 → +15 → 10×102 → +18 → 10×120

    4. 描述本地化(transformer 机制)

    • 客户端升级界面描述 = 查 hideout_area_{type}_stage_{level}_description 语言 key;原版语言包没有 5/6/7 级 → 显示 key 原文(技术文)

    • SPT 语言包是懒加载的(每次访问都从磁盘重新反序列化),直接改字典会丢失 —— 模组用 SPT 官方 AddTransformer 机制注册回调,每次反序列化后自动写入描述与 hideout_StashRows(加成面板名字)

    5. Web 配置中心

    • 挂在 SPT 服务器自身端口(6969),无需独立服务

    • 当前生效状态:内存实时读取全部 28 个设施,含原版各级与本模组新增级(高亮),描述优先中文语言包

    • 可视化编辑:设施卡片(类型下拉/覆盖勾选)→ 等级卡片(等级/耗时/描述)→ 条件列表(类型下拉,字段随类型变化:物品常用列表下拉+自定义 ID、技能 67 项下拉、商人 12 家下拉、设施下拉)+ 效果列表(StashRows 行数/目标模式、StashSize 模板下拉),全部可增删

    • JSON 高级:直接编辑含注释的 config.json

    • 保存:复用启动校验器,通过才写入(失败列具体错误,不覆盖现有配置),自动备份 config.json.bak重启服务器生效


    日志

    服务器启动日志(控制台 + user\logs\spt\spt日期.log),正常时全绿:

    【藏身处框架】StashRows(仓库固定 10 列加行)效果补丁已启用
    【藏身处框架】配置加载成功:1 个设施,3 个自定义等级
    【藏身处框架】areas 响应诊断已关闭(…)
    【藏身处框架】自检:仓库(type=3) stages 键 = [0,1,2,3,4,5,6,7]
    【藏身处框架】本地化注入完成:4 个 key × 全部语言(共 68 条)
    【藏身处框架】注入报告:
      仓库:5 级(耗时 96 小时,10 个条件,1 个效果)
      仓库:6 级(耗时 120 小时,10 个条件,1 个效果)
      仓库:7 级(耗时 144 小时,13 个条件,1 个效果)
    【藏身处框架】注入完成:共 3 个自定义等级,服务器与客户端原生升级流程已接管
    >>> 【藏身处框架】Web 配置界面: https://127.0.0.1:6969/hideoutframework(青色,醒目)

    每次仓库升级完成(控制台):

    【藏身处框架】仓库升级完成:StashRows +19 行
    【藏身处框架】仓库升级完成:StashRows 目标模式,目标总行数 102,本次补 15 行

    配置错误时(不会注入):逐条列出 config.json → areas[0].levels[1].requirements[0]:物品 xxx 不存在于 items.json 等精确报错。


    文件内容与结构

    压缩包(即装即用布局):

    HideoutFramework-v1.0.0.zip
    └─ HideoutFramework\                        ← 最高级文件夹(模组名)
       ├─ BepInEx\                              ← 整个文件夹拖进【游戏根目录】(与 EscapeFromTarkov.exe 同级)
       │  └─ plugins\HideoutFrameworkClient\
       │     ├─ HideoutFrameworkClient.dll      客户端插件(必需)
       │     └─ HideoutFrameworkClient.pdb
       └─ SPT\                                  ← 整个文件夹拖进【服务器根目录】(SPT.Server.exe 同级)
          └─ user\mods\HideoutFramework\
             ├─ HideoutFramework.dll            服务器模组本体
             ├─ HideoutFramework.deps.json
             ├─ HideoutFramework.pdb
             └─ config\
                ├─ config.json                  配置(JSONC 中文注释,开箱即用可编辑)
                └─ reference.json               ID 速查表(首次启动自动生成)

    安装 = 解压后把 BepInEx 拖进游戏根目录、把 SPT 拖进服务器根目录(目录自动合并到正确位置),重启服务器即可。卸载 = 删除 BepInEx\plugins\HideoutFrameworkClientSPT\user\mods\HideoutFramework 两个文件夹,已升级的档位保留(StashRows 是原版 bonus,无残留依赖,删模组仓库不缩水)。


    安装

    前置:

            无

    步骤:

    1. 解压 HideoutFramework-v1.0.0.zip,得到最高级文件夹 HideoutFramework\

    2. 把其中的 BepInEx 文件夹整体拖进【游戏根目录】(与 EscapeFromTarkov.exe 同级,目录自动合并)

    3. 把其中的 SPT 文件夹整体拖进【服务器根目录】(SPT.Server.exe 同级,目录自动合并)

    4. 重启服务器 → 日志出现注入报告即成功;控制台出现青色 Web 地址

    5. 浏览器打开 https://127.0.0.1:6969/hideoutframework(自签名证书提示时点”继续访问”)可查看/编辑配置

    6. 按需编辑 SPT\user\mods\HideoutFramework\config\config.json(改完重启服务器生效)

    卸载:删除 BepInEx\plugins\HideoutFrameworkClient(客户端)与 SPT\user\mods\HideoutFramework(服务器)两个文件夹即可,已升级的档位保留(StashRows 是原版 bonus,无残留依赖,删模组仓库不缩水)。


    常见问题

    Q:为什么一定要装客户端插件?
    SPT 客户端机制限制:客户端只把服务器数据”覆盖”到本地已有等级,服务器发来的新等级会被丢弃(日志报 There is no stage level X ... on client),没有插件就永远看不到升级按钮。服务器模组发数据,客户端插件让客户端”收下”数据,两者缺一不可。

    Q:其他设施能加等级吗?
    能,任何设施都行(复制仓库块改 areaType)。注意:客户端场景里没有新等级的 3D 模型,升级后视觉沿用该设施最高级的原版外观,功能(耗时/条件/效果)完全正常;仓库无外观差异,不受影响。

    Q:仓库能无限扩容吗?
    行数理论上随意叠加,但客户端网格渲染会随行数变慢,建议控制在 10×180 以内(10×120 默认档无压力)。

    Q:改配置后游戏里没变?
    配置改动必须重启服务器;客户端需重进藏身处(或重进游戏)刷新。

    Q:会与其他模组冲突吗?
    只读写藏身处 areas 数据 + 两个显示层补丁 + 一个 Harmony 补丁方法;StashRows 与原版任务奖励机制同源,可与其他加行模组共存。若同时装多个”也改 areas”的藏身处模组,注入顺序靠后的生效,建议同类只留一个。与其他改价模组(如 PriceControl)互不干扰(一个管价格、一个管等级)。

    Q:升级界面顶部还有英文/技术文?
    那是描述 key 没生效。检查启动日志”本地化注入完成”行是否存在且计数 > 0;本模组 v1.0.0 已改用 SPT 官方 transformer 机制,重启服务器后必然生效。描述内容在 config 对应等级的 description 字段。

    Q:”最大尺寸仓库”是什么?
    BSG 原版对仓库 4 级的描述文案(当前等级区块显示),不是状态提示。想换掉用”仅改描述”条目:{ "level": 4, "description": "……" }


    版本记录

    • v1.0.0(2026-08):第一期正式版。配置驱动等级扩展框架(任意设施/等级/时间/条件/效果/描述);StashRows 加行扩容(普通+目标模式);描述与 StashRows 名字经 SPT 官方 transformer 机制注入全部语言;Web 可视化配置中心(状态/可视化编辑/JSON 高级,校验后保存);reference.json ID 速查表;配置全量校验;客户端等级注入补丁(修复升级按钮不出现)+ 场景越界保护;修复 SPT 版本兼容检查(客户端引用 spt-reflection、服务器 SptVersion=~4.0.0);仓库 5/6/7 级采用”仓库建造”逻辑建材条件、技能 15/20/25、耗时 96/120/144;


    未完成 / 已知限制 / 路线图

    当前没完成 / 受限的部分:

    1. 其他设施没有开箱等级:我默认只给仓库配了 5/6/7 级;而其他设施只有配置文件里的注释模板,如果想要扩展其他设施的更高等级,需要玩家自己复制启用

    2. 没有新等级的场景模型:升级到自定义等级后场景视觉沿用该设施最高级原版外观(仓库无影响);”给新等级做 3D 模型”(Bundle 模组方案)未做 —— 需要 Unity 制作模型 + 客户端插件实例化,作者暂不熟悉该方向,属已知边界

    3. 条件类型只有四种:Item / Area / Skill / TraderLoyalty;不支持玩家等级、任务完成、Kappa 等更多条件(客户端原生 Requirement 种类有限,强行加有兼容风险)

    4. 描述只支持单语言:所有语言显示同一段描述文本(配置写什么就是什么);双语/多语言描述未做

    5. 改配置需重启服务器:Web 保存后要重启才生效

    6. Web 可视化保存后注释丢失:可视化编辑器保存会生成标准 JSON(无注释);JSON 高级模式保存保留原文注释

    7. 仓库超大行数可能有性能边界:建议 10×180 以内,超大会影响客户端网格流畅度


    示例

    【原创】【4.0.13】HideoutFramework — 藏身处设施控制框架(8.28更新)【原创】【4.0.13】HideoutFramework — 藏身处设施控制框架(8.28更新)

    隐藏内容需要付费才可以看见

    马上购买
    登堂入室
    这样太好了吧,我一直想要个一直升级的仓库,用了消耗物资
    回复
    登堂入室
    用svm已经改过仓库用了会怎么样
  • VoidEco看一下吧,我的这个逻辑是升级仓库,添加行数,应该能够兼容,只是再升级,会再增加仓库的大小
    拉黑 6小时前 电脑端回复
  • 回复
    登堂入室

    我喜欢你

    回复
    圆转纯熟

    我喜欢你


    回复
    功行圆满
    VIP5
    打赏了1金币
    回复

    请登录之后再进行评论

    登录
    离线版交流区
  • 今日 0
  • 内容 11856
  • 关注 6313
  • 聊天
    关注 3

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

    捐助我们

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