• 注册
  • Mod功能提议 Mod功能提议 关注:6312 内容:623

    【原创】【4.0.13】经济价格调控 PriceControlMod v0.6.0

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

    纯服务端经济调控引擎:一个 JSON 配置文件,精确调控商人买卖价、跳蚤基准价与保险/维修/治疗服务花费,可开启服务端强制结算(服务器自己算钱,改客户端也绕不过)——无需任何客户端模组。

    本模组致力于平衡游戏内因更改爆率和添加高价值收藏品的模组崩坏的经济体系,体感上会使战局收益降低,游玩过程变牢

    玩过 SPT 单机/自建服的都知道:没有玩家竞争、AI 不搜刮、调整物资刷新概率的模组一加,更多收藏品模组一加,经济已然通胀。本模组把”价格”做成一套可配置的规则引擎,按需收紧或放开任意一层:

    •     四级价格规则(全局兜底 → 物品类别 → 单个物品 → 单个商人,可叠加相乘)

    •     服务花费调控(保险/维修/治疗,各带逻辑合理性上限)

    •     服务端强制结算(卖价重算、买价/治疗付款校验,改客户端无效)

    支持添加模组商人和模组物品

    适配show me the money模组

    公共 API(其他模组可查询本模组倍率,做联动)

    模组内容

    功能 说明
    全局默认倍率 defaults 段:所有商人、所有物品统一”买 ×N / 卖 ×M”,一条配置全服生效
    类别倍率 按游戏内现成分类(弹药/医疗/钥匙/武器…),支持别名(ammo/key/meds)或类别 tpl
    单品倍率 精确到单个物品 tpl,优先级最高(如:把某件稀有物单独压价)
    商人倍率 指定商人的全部商品再乘一层(如:治疗师更贵、机械师维修更贵)
    保险/维修/治疗 三种服务各自独立倍率;保险/维修还支持按类别、按商人叠加
    保险价格上限 保费 ≤ 物品本身价格(默认 1.0)——离线版投保回收率≈100%,保费不能超过商品价
    治疗价格上限 治疗单价 ≤ 参考药品”每点血量成本”(默认 Salewa,与药品价格自动联动)——商人治疗永远不比买药自己治贵
    卖价强制结算 服务器按价格表重算卖价(复刻客户端耐久/资源/钥匙/狗牌等品质修正),客户端报高价无效
    买价强制校验 商人/跳蚤购买校验付款 ≥ 应收(容差可配),报低价直接拒绝
    治疗强制校验 战后治疗按治疗明细估算应收,明显白嫖拒绝
    公共 API PriceControlApi 静态类,其他模组可直接查询任意物品/商人的倍率
    未配置 = 原版 没写到的物品/商人完全保持原版行为,配置多少生效多少

    价格规则的具体机制:

        买价:启动时直接改写每个商人货架的货币方案(×倍率),商人补货刷新后依然生效;

        卖价:客户端卖价公式为 ,模组按该公式反向折算基准价表,保证最终卖价 = 原价 × 倍率,分毫不差,显示与结算一致;基准价表 × (1 − 收购系数/100)

        服务:保险/维修走 Harmony Patch 实际计费函数(预览与扣款同源);治疗直接改服务器下发的治疗单价数据源,客户端自动跟随。

    目前预设的内容

    defaults —— 全局兜底(只作用于”没被任何类别命中的物品”)

    字段 效果
    buyMult 2.0 未配置物品买价 ×2
    sellMult 0.5 未配置物品卖价 ×0.5(原版约 0.63)
    fleaMult 1.0 跳蚤不调整

    categories —— 命中即用自身值(全局不参与)

    档位 类别 真实买价 真实卖价 剪刀差(买÷卖)
    消耗品 meds / food / drink / medical_supplies ×2.5 ×0.7 3.6 倍
    材料 barter_item / electronics / building_material / household / jewelry / lubricant / battery / fuel ×2.5 ×0.5 5.0 倍
    手枪 pistol ×2.5 ×0.4 6.3 倍
    弹药 ammo / ammo_box / stimulator ×3.0 ×0.5 6.0 倍
    护甲 armor / armor_plate ×3.0 ×0.4 7.5 倍
    钥匙 key / keycard ×3.0 ×0.4 7.5 倍
    长枪 突击步枪/卡宾/SMG/霰弹/狙击/精确射手 ×3.0 ×0.35 8.6 倍

    例:原价 1 万的药 = 买 2.5 万、卖 7000;原价 10 万的枪 = 买 30 万、卖 3.5 万。

    services —— 服务花费

    字段 含义
    insuranceMult 2.0 保费 ×2,且上限 = 物品价(insuranceMaxRatioOfItemPrice: 1.0
    repairMult 2.0 维修 ×2
    healMult 2.0 治疗 ×2(每点血 30→60 卢布),上限 = Salewa 每点血成本(healPriceCapRatioOfMedCost: 1.0
    categoryMult / traderMult {} 服务按类别/商人叠加:未启用

    enforcement —— 强制结算全开(卖价重算 / 买价校验 / 治疗校验 / 容差 5%)

    诊断日志(排查问题用)

    服务器启动日志中所有本模组输出均以 为前缀(服务器控制台与 均可看到):PriceControl:``user\logs\spt\spt日期.log

    PriceControl: 规则加载完成,单品规则 X 条,类别规则 Y 条,商人规则 Z 条
    PriceControl[买价]: 已调整 N 个商人的 M 条货币方案
    PriceControl[卖价系数]: 已归一化 N 个商人的忠诚度收购系数
    PriceControl[治疗]: 单价 ×N(血量 … / 水合 … / 能量 …)(血量上限 …)
    PriceControl: 保险/维修价格倍率已启用(保费上限 = 物品价 × N)
    PriceControl: 卖价强制结算已启用 / 买价强制校验已启用 / 治疗强制校验已启用
    PriceControl: 公共 API 已就绪(0.6.0)
    PriceControl: 价格调控模组已加载完成

    常见问题直接看日志定位:(配置文件没放对)、(配置写错,警告不致命)、强制结算触发时会打印 。无法读取 config/priceConfig.json``无法解析类别/物品/商人``PriceControl[买价强制]/[治疗强制]: 拒绝交易…

    文件内容与结构

    压缩包含:

    PriceControlMod-v0.6.zip
    ├─ PriceControlMod\
    │  ├─ PriceControlMod.dll             模组本体
    │  ├─ config\
    │  │  └─ priceConfig.json             价格配置(JSONC,支持 // 注释)
    │  ├─ README.md                       完整说明
    │  ├─ 价格调控模组-设计方案.md          设计文档
    │  └─ PriceControlMod-论坛发布说明.md  本帖
    └─ dependencies\
       ├─ SPTarkov.Reflection.dll         依赖(服务器缺失时才需要)
       └─ 0Harmony.dll                    依赖(服务器缺失时才需要)

    服务端模组(区别于客户端插件),无需合并进 BepInEx,不碰客户端。

    安装

    前置:

    • SPT 4.0.x C# 版服务器(实测 4.0.13,SptVersion ~4.0.0)

    • 客户端无任何要求(不需要客户端模组)

    安装步骤:

    1. 解压,把 文件夹复制到服务器:PriceControlMod

    服务器目录\user\mods\PriceControlMod\
    ├─ PriceControlMod.dll
    └─ config\priceConfig.json
    1. 检查服务器根目录(SPT.Server.exe 同级)是否已有 、(官方发行版一般自带);若缺失,把 里两个 dll 复制到服务器根目录SPTarkov.Reflection.dll``0Harmony.dll``dependencies

    2. 重启服务器;日志出现 即成功PriceControl: 价格调控模组已加载完成

    3. 按需编辑 (改完重启服务器生效)config\priceConfig.json

    卸载:删除 文件夹即可,不影响存档。user\mods\PriceControlMod

    常见问题

    Q:为什么我改了配置,游戏里价格没变?

    A:① 配置改动后必须重启服务器;② 确认启动日志有 且对应段计数 > 0( 段生效看”买价:已调整 N 个商人的 M 条方案”而不是三段计数);③ 客户端需重进商人界面刷新。PriceControl: 规则加载完成``defaults

    Q:会不会影响其他地图/其他系统?

    A:不会。本模组只改”价格数据”,不碰地图、战局、机器人逻辑;未配置的物品/商人/服务完全保持原版。

    Q:与其他改价模组(SVM 等)一起用会怎样?

    A:本模组在服务器最后加载阶段执行,会覆盖先前模组的数据库修改;若对方也用 Harmony Patch 同一批接口,倍率可能叠加。建议一个服只保留一个经济调价模组。

    Q:Show me the money模组,显示的是改前还是改后?

    A:改后。这类模组读取的正是本模组修改的数据源(客户端官方计价 API),自动跟随,无需适配。百科全书(手册)基础价除外——那是”物品内在价值”基准,本模组有意不改。

    Q:跳蚤市场的玩家挂单价能控制吗?

    A:不能直接钳制(玩家自定价,属原版机制)。 只影响机器人报价、市场参考价与上架税基准;高价挂单会因”卖出几率”机制卖得更慢。fleaMult

    Q:为什么 Fence(黑商)的收购价不受 sellMult 影响?

    A:Fence 收购价由客户端按 Fence 声望体系计算,服务端无法直接改写(原版机制),属已知边界。

    版本记录

    v0.1.0:初版。类别/商人级买价卖价倍率、跳蚤基准价倍率、忠诚度收购系数归一化。

    v0.2.0:新增单品规则(items 段);新增服务端强制结算(卖价重算、买价校验)。

    v0.3.0:新增服务花费调控(保险/维修/治疗倍率,支持类别/商人叠加);新增治疗付款强制校验。

    v0.4.0:新增全局默认段 (所有商人所有物品统一倍率)。defaults

    v0.5.0:修复配置解析完全失效的 bug——SPT JSON 解析器大小写敏感,全部配置属性显式标注小写键名(此前 defaults/services/enforcement 段会被静默忽略)。

    v0.5.1:修复服务器启动崩溃(Critical exception)——治疗校验 Patch 参数名与原方法不匹配导致 Harmony IL 编译失败。

    v0.6.0(当前):新增保险价格上限(保费 ≤ 物品价);新增治疗价格上限(≤ 参考药每点血成本,自动联动药品价格);新增公共 API ;示例配置更新为温和分档经济方案;模组作者 VoidEco、元数据/程序集版本统一 0.6.0。PriceControlApi

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

    马上购买
    登堂入室
    置顶

    问题楼

    回复
    登堂入室

    优化建议楼

    回复
    略有小成
    打赏了66金币
  • 蛤蟆前来观摩观摩 [s-13]
    拉黑 3分钟前 电脑端回复
  • 回复

    请登录之后再进行评论

    登录
    离线版交流区
  • 今日 2
  • 内容 11839
  • 关注 6312
  • 聊天
    关注 1

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

    捐助我们

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