[Parity][hud][S1][R] 腰带左键:getSlot 行列参数颠倒,取不到物品时改成喝药 #638

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

来源审计项:hud#3 — [S1][R] 3. 腰带左键:getSlot 行列参数颠倒,取不到物品时改成喝药

  • 位置:src/client/ui/hud-manager.ts:1626-1652;签名在 src/common/items/belt-model.ts:268(getSlot(col, row))
  • 代码:const beltPotion = this.belt.getSlot(beltHit.row, beltHit.col) … 函数末尾 this.drinkBeltSlot(beltHit.col, Boolean(e.shiftKey))
  • 原版:左键点腰带药水是把它拿到光标上,右键才是使用(K-高)。
  • 影响:点击(第 r 行,第 c 列)时实际读的是 grid[c][r]。例如点底行第 3 列,读到的是第 1 列第 3 行:如果那格有药,就发 RemoveBeltItem 拿走错误的药水;如果那格是空的,就落到末尾分支,左键直接喝掉第 3 列最底下的药水。只有对角线上的格子是对的。正常游玩中整理腰带时就会遇到。仓库里其他调用方(server/save/save.ts:437、server/engine/engine.ts:2349)的参数顺序都是对的。
  • 建议:改成 getSlot(beltHit.col, beltHit.row);删除左键喝药的兜底(拿不到就什么也不做)。
  • 已有 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 公认行为。 ### 来源审计项:`hud#3` — [S1][R] 3. 腰带左键:`getSlot` 行列参数颠倒,取不到物品时改成喝药 - 位置:`src/client/ui/hud-manager.ts:1626-1652`;签名在 `src/common/items/belt-model.ts:268`(`getSlot(col, row)`) - 代码:`const beltPotion = this.belt.getSlot(beltHit.row, beltHit.col)` … 函数末尾 `this.drinkBeltSlot(beltHit.col, Boolean(e.shiftKey))` - 原版:左键点腰带药水是把它拿到光标上,右键才是使用(K-高)。 - 影响:点击(第 r 行,第 c 列)时实际读的是 `grid[c][r]`。例如点底行第 3 列,读到的是第 1 列第 3 行:如果那格有药,就发 RemoveBeltItem 拿走错误的药水;如果那格是空的,就落到末尾分支,左键直接喝掉第 3 列最底下的药水。只有对角线上的格子是对的。正常游玩中整理腰带时就会遇到。仓库里其他调用方(`server/save/save.ts:437`、`server/engine/engine.ts:2349`)的参数顺序都是对的。 - 建议:改成 `getSlot(beltHit.col, beltHit.row)`;删除左键喝药的兜底(拿不到就什么也不做)。 - 已有 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#638
No description provided.