[Parity][panels][S3][R] 点一次"交談"会发两次 0x31 QuestMessage,messageId 恒为 0 #677

Closed
opened 2026-10-02 11:42:54 +00:00 by troytt · 1 comment
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#24 — [S3][R] 点一次"交談"会发两次 0x31 QuestMessage,messageId 恒为 0

  • 位置:src/client/ui/world-panels.ts:1313(onNpcMenuAction('talk') → hud-model.ts:1556-1561 先调 questMessage(npcId, 0)),随后 world-panels.ts:1319 又调一次 this.onQuestMessage?.(npcUnitId, 0)。两个回调都在 hud-model.ts:283、:326 绑定。
  • 影响:每次交谈多发一个封包;如果服务器按次数推进对话状态,会出问题。原版 messageId 的含义没有核实,见 §3。
  • 建议:只发一次,messageId 按原版语义填。
  • 已有 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 公认行为。 ### 来源审计项:`panels#24` — [S3][R] 点一次"交談"会发两次 0x31 QuestMessage,messageId 恒为 0 - **位置**:`src/client/ui/world-panels.ts:1313`(`onNpcMenuAction('talk')` → `hud-model.ts:1556-1561` 先调 `questMessage(npcId, 0)`),随后 `world-panels.ts:1319` 又调一次 `this.onQuestMessage?.(npcUnitId, 0)`。两个回调都在 `hud-model.ts:283`、`:326` 绑定。 - **影响**:每次交谈多发一个封包;如果服务器按次数推进对话状态,会出问题。原版 messageId 的含义没有核实,见 §3。 - **建议**:只发一次,messageId 按原版语义填。 - **已有 issue**:—
Author
Owner

Resolved in commit 171f7c0 (Milestone M6 Phase 1: World Panels, NPC Menus, Waypoints, Tooltips & Fail-Fast parity). Verified with tests/client/world-panels-batch6.test.ts and npm run typecheck.

Resolved in commit 171f7c0 (Milestone M6 Phase 1: World Panels, NPC Menus, Waypoints, Tooltips & Fail-Fast parity). Verified with tests/client/world-panels-batch6.test.ts and npm run typecheck.
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#677
No description provided.