[Parity][panels][S1][F] 左侧面板 merc / party / trade / imbue / add_sockets / personalize 用 Canvas 色块占位实现,坐标和 inventory.txt 不符 #657

Closed
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#3 — [S1][F] 左侧面板 merc / party / trade / imbue / add_sockets / personalize 用 Canvas 色块占位实现,坐标和 inventory.txt 不符

  • 位置
    • src/client/ui/world-panels.ts:3933-4196(renderActiveLeftPanel)
    • :3702-3927(handleActiveLeftPanelClick)
    • :2981-2991
    • 生产路径调用:src/client/ui/hud-manager.ts:2417-2418、:1700-1712
  • 代码:ctx.fillStyle = 'rgba(12, 10, 8, 0.92)'; ctx.fillRect(ox, oy, pw, ph);假关闭按钮 fillTextSafe('X', ox + pw - 22, oy + 22)(3955-3960);lookupTbl('strMerc', this.lang) ?? (isEn ? 'Mercenary' : '傭兵')。
  • 原版(V-data inventory.txt)
    • Hireling2(#30):rArm 100-155×107-219,torso 213-269×137-219,lArm 331-386×107-219,head 215-269×68-119。代码的槽位(ox=80,oy=60)是:head 212-268×104-160,body 212-268×172-256,weapon 116-172×158-270,shield 308-364×158-270。点击区和绘制位置全部错位,最大差 50 px 以上(3772-3777、3974-3979)。
    • Trade Page 1-2(#23)gridLeft/Top = 100/101,Trade Page 2-2(#24)= 100/315,都是 10×4 格。代码的自己网格在 (95,280)、对方网格在 (95,120)(3843-3845)。自己网格偏了 (−5,−35),行号映射错一行以上。
    • 原版这些面板都用 DC6 背景和 D2 字体。
    • 组队面板的字符串在 tbl 里:#4100-4123 strParty*、#4150 INVITE、#4151 ACCEPT。代码用 'Hostile'/'Loot'/'Invite'/'Accept'/'Leave'、[${mRel}] HP:% Area:、'Partner Gold'/'My Gold'/'Status: ACCEPTED / PENDING' 等自造文字,物品显示成文字名而不是精灵图。
    • lookupTbl 用到的 key:strMerc、NotUsed150、CParty、strTrade、strImbue、ItemExpSocket、NpcPersonalize、strYouHaveDied,都不在打包字典里,所以永远走后面的硬编码兜底文字。
    • Imbue / Add Sockets / Personalize:原版是光标进入选物品模式,玩家点选物品;提示文字是 tbl #22750 "Choose the item to which you wish to add sockets.",限制说明是 #4018 upgraderestrict。不是代码这种"槽位 + Confirm"面板(K中)。
  • 影响(正常游玩可见):打开雇佣兵、组队、交易、奖励面板看到的是自制的色块界面加系统字体;交易网格和雇佣兵装备槽的点击落到错误的格子上。
  • 建议:按 inventory.txt Hireling2 / Trade Page 1-2 / Trade Page 2-2 的坐标和原版 DC6 资源重做;字符串全部走 tbl;奖励类改成原版的选物品流程。
  • 已有 issue:雇佣面板本身属于 #558,这里不重复;>800×600 下的坐标偏移属于 #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#3` — [S1][F] 左侧面板 merc / party / trade / imbue / add_sockets / personalize 用 Canvas 色块占位实现,坐标和 inventory.txt 不符 - **位置** - `src/client/ui/world-panels.ts:3933-4196`(`renderActiveLeftPanel`) - `:3702-3927`(`handleActiveLeftPanelClick`) - `:2981-2991` - 生产路径调用:`src/client/ui/hud-manager.ts:2417-2418`、`:1700-1712` - **代码**:`ctx.fillStyle = 'rgba(12, 10, 8, 0.92)'; ctx.fillRect(ox, oy, pw, ph)`;假关闭按钮 `fillTextSafe('X', ox + pw - 22, oy + 22)`(3955-3960);`lookupTbl('strMerc', this.lang) ?? (isEn ? 'Mercenary' : '傭兵')`。 - **原版**(V-data `inventory.txt`) - **Hireling2**(#30):rArm 100-155×107-219,torso 213-269×137-219,lArm 331-386×107-219,head 215-269×68-119。代码的槽位(ox=80,oy=60)是:head 212-268×104-160,body 212-268×172-256,weapon 116-172×158-270,shield 308-364×158-270。点击区和绘制位置全部错位,最大差 50 px 以上(3772-3777、3974-3979)。 - **Trade Page 1-2**(#23)gridLeft/Top = 100/101,**Trade Page 2-2**(#24)= 100/315,都是 10×4 格。代码的自己网格在 (95,280)、对方网格在 (95,120)(3843-3845)。自己网格偏了 (−5,−35),行号映射错一行以上。 - 原版这些面板都用 DC6 背景和 D2 字体。 - 组队面板的字符串在 tbl 里:#4100-4123 strParty*、#4150 INVITE、#4151 ACCEPT。代码用 'Hostile'/'Loot'/'Invite'/'Accept'/'Leave'、`[${mRel}] HP:% Area:`、'Partner Gold'/'My Gold'/'Status: ACCEPTED / PENDING' 等自造文字,物品显示成文字名而不是精灵图。 - `lookupTbl` 用到的 key:strMerc、NotUsed150、CParty、strTrade、strImbue、ItemExpSocket、NpcPersonalize、strYouHaveDied,都**不在打包字典里**,所以永远走后面的硬编码兜底文字。 - Imbue / Add Sockets / Personalize:原版是光标进入选物品模式,玩家点选物品;提示文字是 tbl #22750 "Choose the item to which you wish to add sockets.",限制说明是 #4018 upgraderestrict。不是代码这种"槽位 + Confirm"面板(K中)。 - **影响**(正常游玩可见):打开雇佣兵、组队、交易、奖励面板看到的是自制的色块界面加系统字体;交易网格和雇佣兵装备槽的点击落到错误的格子上。 - **建议**:按 `inventory.txt` Hireling2 / Trade Page 1-2 / Trade Page 2-2 的坐标和原版 DC6 资源重做;字符串全部走 tbl;奖励类改成原版的选物品流程。 - **已有 issue**:雇佣面板本身属于 #558,这里不重复;>800×600 下的坐标偏移属于 #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#657
No description provided.