[Parity][net-world][S3][R] 数值语义混用 #580

Closed
opened 2026-10-02 11:42:41 +00:00 by troytt · 0 comments
Owner

1.13c 客户端保真度审计立项(基准快照:7bd1090 / main @ 77a20c7)

证据标记说明:V-data = 1.13c MPQ 数据表 (.txt / animdata.d2 / .tbl / pal.pl2);V-src = D2MOO 逆向源码;V-bin = 1.13c DLL 反汇编;K = 1.13c 公认行为。

来源审计项:net-world#21 — [S3][R] F21 数值语义混用

  • 位置:
    • netproto/d2gs/s2c/skills.ts:41-55 → client-world.ts:2151-2171:0x22 的数量字节(物品技能剩余次数,如卷轴/书)被当成技能等级存入 skillEntries。
    • self.ts:98-172:applyStat 存 8.8 原始值,applyLifeMana 直接 stats.set(6/8/10, 整数),同一个 StatList 里两种刻度并存。
    • self.ts:216-220:POOL_STAT_VAL_SHIFT = 8 写死;数值与 ItemStatCost ValShift 一致(stats 6..11 均为 8),但绕过了数据表。
    • selfId === 0 时"任意玩家都是自己"的兜底散布在 client-world.ts:1767、1899、2032、2152、2175、2267 等处(与 F2 同根)。
  • 影响:技能面板中物品技能的等级显示错误;读 StatList 的消费者可能拿到两种刻度。
  • 建议:0x22 单独存为"数量";StatList 统一存原始值,显示时再按 ValShift 换算;self 只认 0x0B。
  • 已有 issue:—

> **1.13c 客户端保真度审计立项**(基准快照:`7bd1090` / `main @ 77a20c7`) > 证据标记说明:`V-data` = 1.13c MPQ 数据表 (`.txt` / `animdata.d2` / `.tbl` / `pal.pl2`);`V-src` = D2MOO 逆向源码;`V-bin` = 1.13c DLL 反汇编;`K` = 1.13c 公认行为。 ### 来源审计项:`net-world#21` — [S3][R] F21 数值语义混用 - 位置: - `netproto/d2gs/s2c/skills.ts:41-55` → `client-world.ts:2151-2171`:0x22 的数量字节(物品技能剩余次数,如卷轴/书)被当成技能等级存入 `skillEntries`。 - `self.ts:98-172`:`applyStat` 存 8.8 原始值,`applyLifeMana` 直接 `stats.set(6/8/10, 整数)`,同一个 StatList 里两种刻度并存。 - `self.ts:216-220`:`POOL_STAT_VAL_SHIFT = 8` 写死;数值与 ItemStatCost `ValShift` 一致(stats 6..11 均为 8),但绕过了数据表。 - `selfId === 0` 时"任意玩家都是自己"的兜底散布在 `client-world.ts:1767`、`1899`、`2032`、`2152`、`2175`、`2267` 等处(与 F2 同根)。 - 影响:技能面板中物品技能的等级显示错误;读 StatList 的消费者可能拿到两种刻度。 - 建议:0x22 单独存为"数量";StatList 统一存原始值,显示时再按 ValShift 换算;self 只认 0x0B。 - 已有 issue:— ---
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#580
No description provided.