[Parity][motion-input][S2][R] 拾取恒为 toCursor: false;自创"欧氏距离 >4 就预发 MoveToUnit",而且绕过限流 #593

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

来源审计项:motion-input#14 — [S2][R] 14. 拾取恒为 toCursor: false;自创"欧氏距离 >4 就预发 MoveToUnit",而且绕过限流

  • 位置:command-mapper.ts:433-452(物品)、:475-493(物体)、:495-514(玩家);session/online-session.ts:395-397(sendCommand 直接进 forwardCommandToAdapter,不过限流)
  • 代码:if (dist > 4) { this.sendCommand({ type: 'MoveToUnit', … }) };toCursor: false
  • 原版:服务器处理 0x13/0x16 时会按 D2Common_10399 距离自行代为走近:物品和传送口 >4、玩家 >8、物体用 UNITS_IsObjectInInteractRange(V-src PlrMsg.cpp:448-630;距离度量见 Units.cpp:3688-3785)。客户端不需要、也不会按欧氏距离预发 0x02/0x04。拾取时 a4≠0 走 D2GAME_PickupItemEx_6FC42B80(放到光标上)(PlrMsg.cpp:589-596)。原版背包打开时,捡起的物品会放到光标上(K-中)。
  • 影响:背包开着时点地面物品,拿不到光标上。欧氏距离和 10399 度量不同,阈值附近会多发或少发移动包。预发的 MoveToUnit 不受限流,按住鼠标时可能每帧都发。
  • 建议:走近交给服务器的 0x13/0x16 处理;toCursor 按原版条件设置;所有外发命令走同一个限流队列。
  • 已有 issue:和 #555(拾取)部分相关
> **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 公认行为。 ### 来源审计项:`motion-input#14` — [S2][R] 14. 拾取恒为 `toCursor: false`;自创"欧氏距离 >4 就预发 MoveToUnit",而且绕过限流 - 位置:`command-mapper.ts:433-452`(物品)、`:475-493`(物体)、`:495-514`(玩家);`session/online-session.ts:395-397`(`sendCommand` 直接进 `forwardCommandToAdapter`,不过限流) - 代码:`if (dist > 4) { this.sendCommand({ type: 'MoveToUnit', … }) }`;`toCursor: false` - 原版:服务器处理 0x13/0x16 时会按 `D2Common_10399` 距离自行代为走近:物品和传送口 >4、玩家 >8、物体用 `UNITS_IsObjectInInteractRange`(V-src `PlrMsg.cpp:448-630`;距离度量见 `Units.cpp:3688-3785`)。客户端不需要、也不会按欧氏距离预发 0x02/0x04。拾取时 a4≠0 走 `D2GAME_PickupItemEx_6FC42B80`(放到光标上)(`PlrMsg.cpp:589-596`)。原版背包打开时,捡起的物品会放到光标上(K-中)。 - 影响:背包开着时点地面物品,拿不到光标上。欧氏距离和 10399 度量不同,阈值附近会多发或少发移动包。预发的 MoveToUnit 不受限流,按住鼠标时可能每帧都发。 - 建议:走近交给服务器的 0x13/0x16 处理;`toCursor` 按原版条件设置;所有外发命令走同一个限流队列。 - 已有 issue:和 #555(拾取)部分相关
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#593
No description provided.