BD2 Cash Shop
把当前游戏的现金支付入口替换为本服的游戏内货币购买。插件依赖 BD2LocalIdentity.dll,目标游戏版本在项目中明确声明为 2.35.10,使用共享 BD2.GameNames.dll 和 GameSdk 构建。
普通现金商品固定使用付费钻石。充值商品的获取方式由服务端 game.json 的 purchases.diamond_recharge 设置:默认免费,也可使用金币、普通钻石,或者禁止充值。完整配置和换算说明见 GAME_CONFIGURATION.md。
客户端从当前服务器 /client/commerce 获取完整价格目录。配置未加载、版本不匹配或禁止购买时,购买入口会显示游戏提示框,不会调用外部支付 SDK。收费商品使用游戏原有货币图标与数量;免费充值显示 Free。
补丁保留原购买回调,因此无限抽最终确认、特殊甄选券、月卡、礼包、皮肤和现金通行证继续执行各自的游戏流程。原本使用普通钻石、付费钻石、金币等游戏内货币的商品不修改价格类型。服务器独立验证商品、价格、余额、购买次数、开放时间和接力前置条件,并在一个存档事务内完成扣款、权益激活与现金邮件创建;客户端发送的价格仅用于检测过期目录。
现金商品按真实 RewardGroupTable.MailId 发放:带邮件模板的奖励进入现金邮箱,未标记的通行证、月卡等资格按游戏规则立即生效,嵌套奖励组也使用同一规则。邮件沿用 MailInfoTable 的本地化标题和正文,现金附件不过期。邮寄部分在购买时只创建附件,CashMailInfo 返回现金邮件,玩家通过游戏原有 MailOpen 单封或批量领取后才将附件写入背包和货币数据。购买与领取都有持久回执,重试或重启不会重复扣款、重复发信或重复发奖;以前已经直接发放的订单保留原回执,不会再补发同一份附件。
月卡、登录通行礼包和付费签到的领取状态在服务器保存,AttendanceResponse 与 EventRewardResponse 的本服扩展字段同步每日奖励并用回执防止重复应用。现金通行证激活必须消费购买权益。主线通关礼包按服务器主线进度领取;恶魔城奖励需要对应玩法提供真实完成记录,目前占位玩法不能领取通关奖励。
dotnet build plugins/CashShop/CashShop.csproj -c Release
客户端开发入口和发布包会同时构建、安装此插件。手动部署时使用 bin/Release/netstandard2.1/BD2CashShop.dll,与 LocalIdentity 及共享运行时一起放入本服游戏的 BepInEx/plugins。原版客户端与官方抓包环境不要安装这个插件。