[Parity][panels][S2][R] NPC 菜单固定出现在 (400,220),原版出现在 NPC 头顶上方 #664

Open
opened 2026-10-02 11:42:52 +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 公认行为。

来源审计项:panels#10 — [S2][R] NPC 菜单固定出现在 (400,220),原版出现在 NPC 头顶上方

  • 位置:src/client/ui/world-panels.ts:1211-1212、:1262;src/client/ui-model/hud-model.ts:986(wp.npcMenu?.x ?? 400, wp.npcMenu?.y ?? 220)
  • 原版(V-bin)
    • 0x6faf8bd1 调用 0x6faf6880,用 NPC 单位的屏幕坐标做锚点;y 减 150(0x6faf68de mov eax,0xffffff6a),最小为 20(0x6faf68f8)。
    • 布局函数 0x6fb53580:宽 = 最长行 + 20,高 = 行高之和 + 15,left = anchorX − w/2,top = anchorY − headerCount×21;夹取用的是屏幕尺寸变量 [0x6fb8bc48] / [0x6fb8bc4c]。
  • 影响:菜单总在屏幕中上方的同一个位置,不跟随 NPC。
  • 建议:用 NPC 屏幕坐标 −150 作锚点。
  • 已有 issue:—(computeNpcDialogLayout 545-552 写死 800/600 夹取,属于 #557 / #542)
> **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 公认行为。 ### 来源审计项:`panels#10` — [S2][R] NPC 菜单固定出现在 (400,220),原版出现在 NPC 头顶上方 - **位置**:`src/client/ui/world-panels.ts:1211-1212`、`:1262`;`src/client/ui-model/hud-model.ts:986`(`wp.npcMenu?.x ?? 400, wp.npcMenu?.y ?? 220`) - **原版**(V-bin) - 0x6faf8bd1 调用 0x6faf6880,用 NPC 单位的屏幕坐标做锚点;y 减 150(0x6faf68de `mov eax,0xffffff6a`),最小为 20(0x6faf68f8)。 - 布局函数 0x6fb53580:宽 = 最长行 + 20,高 = 行高之和 + 15,left = anchorX − w/2,top = anchorY − headerCount×21;夹取用的是屏幕尺寸变量 [0x6fb8bc48] / [0x6fb8bc4c]。 - **影响**:菜单总在屏幕中上方的同一个位置,不跟随 NPC。 - **建议**:用 NPC 屏幕坐标 −150 作锚点。 - **已有 issue**:—(`computeNpcDialogLayout` 545-552 写死 800/600 夹取,属于 #557 / #542)
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#664
No description provided.