[Parity][motion-input][S1][R] 默认 Attack(技能 0)下左键点怪物只发 MoveToUnit,永远不普通攻击 #581

Closed
opened 2026-10-02 11:42:41 +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#1 — [S1][R] 1. 默认 Attack(技能 0)下左键点怪物只发 MoveToUnit,永远不普通攻击

  • 位置:src/client/input/command-mapper.ts:545-565(triggerPrimaryWorldAction),:399(leftSkillId 来源)
  • 代码:if (leftSkillId > 0) { … type: 'SkillOn', hand: 'left' … },否则 type: 'MoveToUnit'
  • 原版:Attack 的技能 Id 本来就是 0(V-data skills.txt #0 Attack Id=0,TargetableOnly=1),所以"0 = 没有技能"这个假设不成立。服务器收到 C2S 0x02/0x04(WalkToEntity/RunToEntity)时只调用 D2GAME_PLAYERMODE_Change_6FC81A00(pGame, pUnit, 0 /*pSkill*/, 2|3, type, guid, 0) 让玩家走过去,不带技能,也不设置 InteractData(V-src D2Game PlrMsg.cpp:698-733、752-787;函数签名见 PlrModes.cpp:1651)。原版左键点怪物发 0x06 LeftSkillOnUnit,近战由服务器按技能射程走近后出手(K-高)。
  • 影响:新角色或左键没换技能的所有职业,点怪物都只会跑到怪物身边、不出手,只有按住 Shift 才能打(:402-413 发 SkillOn)。这是正常游玩的主路径。
  • 建议:左键点怪物一律发 SkillOn(left),0x06 还是 0x07 由 Shift 决定。"没有左键技能"应由 HUD 的显式状态表示,不能用 leftSkillId > 0 来判断。
  • 已有 issue:—(#525 讲的是五套技能管线,没有覆盖这个行为)
> **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#1` — [S1][R] 1. 默认 Attack(技能 0)下左键点怪物只发 MoveToUnit,永远不普通攻击 - 位置:`src/client/input/command-mapper.ts:545-565`(`triggerPrimaryWorldAction`),`:399`(`leftSkillId` 来源) - 代码:`if (leftSkillId > 0) { … type: 'SkillOn', hand: 'left' … }`,否则 `type: 'MoveToUnit'` - 原版:Attack 的技能 Id 本来就是 0(V-data `skills.txt` #0 Attack Id=0,TargetableOnly=1),所以"0 = 没有技能"这个假设不成立。服务器收到 C2S 0x02/0x04(WalkToEntity/RunToEntity)时只调用 `D2GAME_PLAYERMODE_Change_6FC81A00(pGame, pUnit, 0 /*pSkill*/, 2|3, type, guid, 0)` 让玩家走过去,不带技能,也不设置 InteractData(V-src D2Game `PlrMsg.cpp:698-733`、`752-787`;函数签名见 `PlrModes.cpp:1651`)。原版左键点怪物发 0x06 LeftSkillOnUnit,近战由服务器按技能射程走近后出手(K-高)。 - 影响:新角色或左键没换技能的所有职业,点怪物都只会跑到怪物身边、不出手,只有按住 Shift 才能打(`:402-413` 发 SkillOn)。这是正常游玩的主路径。 - 建议:左键点怪物一律发 SkillOn(left),0x06 还是 0x07 由 Shift 决定。"没有左键技能"应由 HUD 的显式状态表示,不能用 `leftSkillId > 0` 来判断。 - 已有 issue:—(#525 讲的是五套技能管线,没有覆盖这个行为)
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#581
No description provided.