服务端(Go): - GM 塞背包/带属性装备发放:在线角色推送 op14 增量物品行,背包实时刷新,无需回角色选择界面 - GM 改金币/改等级:去掉在线拒绝,落库后推送 op14 钱包/op37 等级状态,在线实时刷新 - 等级端点统一切换到新版 GMSetCharacterLevel(自带在线刷新) - 无限/锁死疲劳模式 + 燃烧疲劳:每房间消耗 2 点、打怪与通关经验双倍 - 燃烧疲劳开关时给所有在线角色推送系统提示(op12 mode 0) - 深渊史诗掉率:GM 全局倍率 + 城镇增益药剂窗口倍率,真实接入掉落结算 启动器(Python/JS): - 标题栏自绘、窗口 1204x717、禁止拖拽改大小、仅最小化/关闭 - GM 工具:疲劳与燃烧、深渊史诗掉率、拍卖行上架(单一定价对齐) - 拍卖行上架前端对齐服务端单一价格语义,修复 400 报错
5.6 KiB
5.6 KiB
115CN 兼容性检查
检查日期:2026-10-31。样本位于本地 testdata/115CN,共 6,251,369 个文件。
本报告验证内核、GUI 数据读取和源码编辑逻辑,不代表已逐项完成桌面窗口交互验收。
容器
- 独立识别为
paged115cn/115CN,不冒用115US身份。 - 配套客户端参数和
sk.dat封装在internal/pvf/assets/clients/115cn.bin。 日常打开无需同目录的 exe 或sk.dat,也无需执行客户端程序。 - 字符串池为 UTF-16,保留分页容器、字符串引用和 indexhash 约定。
- 无配套文件、错误外部
sk.dat、内存解析均已验证;未修改保存通过 SHA-256 一致性验证。 - 客户端参数不输出到日志,不在源码中展开;真实归档、exe 和原始配套文件不提交。
GUI 结果
| 工具 | 样本数量 | 结果和限制 |
|---|---|---|
| 商店 | 1,491 | 已适配嵌套商品记录、直接商品列表和根级分页。读取无错误,剩余 16 个没有可展示的分页;529 个文件存在结构、缺失引用或成本提示,不等于全部可编辑。 |
| 基础掉率 | 4 | 均为 9 列分组;已放开前后端入口。修改后的四份 payload 可重新解码,额外阈值保持不变。 |
| 全局掉落 | 1 | 数据读取通过。 |
| 强化/增幅 | 2 | 普通表和安全表读取通过,无格式提示。 |
| 锻造 | 1 | 已适配每级 6 列,成功率/材料倍率映射至正确源位置;两项附加系数只读。4/6 列无法唯一识别时拒绝 GUI 编辑。 |
| 技能 | 4,981 | 合并远端根级参数适配后读取无错误;36 个带有重复段、异常等级宽度或额外描述绑定等保护提示。1,004 个没有可展示的根级或 dungeon/pvp 参数模式。 |
| 任务 | 14,128 | 14,108 个通过前端解析;14,107 个验证了整数编辑只改目标 token。20 个闭合结构无法安全识别,保留 DSL 编辑。 |
任务嵌套区块整体只读,子字段不会覆盖顶层名称、条件或奖励;正常顶层字段仍可编辑。 2,668 个可解析任务带有嵌套、重复或特殊类型字段提示,不意味着整份任务都可由表单覆盖。 没有强行接受那 20 个结构不明的任务,也没有清理或重写原始样本。
商店结构
旧结构在 [item list] 内直接列出物品 ID。115CN 改为:
[sell item list]
[item]
0
[index]
12345
[/item]
[/sell item list]
[item] 的直接整数是记录键,[index] 才是物品 ID;示例 ID 仅用于说明。
正常样本有五种布局:sell info/tab 下直接或按分类存放列表、
sell info 下直接或按分类存放列表,以及根级 tab。
- 正常闭合结构共解析 27,977 条非空商品记录,全部核对了预览 ID 与二进制编辑定位;
[index] -1作为空位保留,不展示成商品。 - 支持新增、替换、删除商品;替换只修改
index,删除移除整条item, 不合并重复物品,不丢弃同记录的限购、购买数量、退款等字段。 新增记录使用高于当前文件已有键的记录键,不复制其他商品的局部配置。 - 显式分页支持增删改;无分页布局只投影成一个 GUI 页,不擅自重组原文件, 其分页管理仍需文本模式。
- 记录内的
price、need material按对应成本类型覆盖物品文件中的共享成本。 局部成本目前只读,带局部成本的记录可替换物品或删除; 单条成本修改及包含这些记录的批量成本修改会被拒绝,避免误改共享物品。 - 46 个文件带有结构提示,包含缺少分类 ID、未声明分类类型或不可识别的嵌套列表等; 声明分类但直接列出商品的记录可以通过“未分类”入口查看,仍保留保护提示。 另有缺失物品/材料引用的提示,合计 529 个商店带提示。 6 个文件有二进制区块闭合警告,拒绝 GUI 编辑。
- 五种真实布局均通过新增、另存临时 PVF、重开及删除新增记录验证; 删除后对应商店 payload 与原始内容逐字节一致。未覆盖原始样本。
排版与标注
section.basis of rarity dicision及其.hell规则为 115CN 每组显示 9 项。etc.forge.table为 115CN 每行显示 6 项,其他版本保留原行宽。etc.forge.115cn.table.0至.5独立标注六个字段;旧四列标注不应用于 115CN。- 规则版本校验、编辑入口和归档版本标签均增加 115CN。
- 已运行的应用需要重新构建并打开;仅修改仓库 JSON 不会保证旧进程自动加载新配置。
复现
在仓库根目录使用 PowerShell 7:
$env:PVF_TESTFILE = (Resolve-Path testdata/115CN/Script.pvf).Path
$env:PVF_TEST_CLIENT_VERSION = '115CN'
go test ./internal/pvf -run '^TestReal(BundledPagedClient|PagedClientCompatibility|PagedClientEditRoundTrip)$' -count=1 -v -timeout 20m
$env:PVF_GUI_TESTFILE = $env:PVF_TESTFILE
$env:PVF_GUI_QUEST_CORPUS = Join-Path ([IO.Path]::GetTempPath()) 'pvfine-115cn-quest-corpus.json'
go test ./services -run '^TestGUIRealArchiveCompatibility$' -count=1 -v -timeout 20m
$env:PVF_SHOP_TESTFILE = $env:PVF_TESTFILE
go test ./services -run '^TestShopReal115CN' -count=1 -v -timeout 20m
$env:PVF_GUI_QUEST_EXPECTED_REJECTIONS = '20'
Push-Location frontend
npm test
npm run build
Pop-Location
任务语料仅写入指定的本地临时文件,不加入仓库。PVF_GUI_QUEST_EXPECTED_REJECTIONS
只记录这份样本的预期拒绝数,不会放宽应用解析或编辑限制。
运行普通 go test ./... 前应清除这些真实样本环境变量,避免触发其他版本专用测试。