功能说明
在连击中途按下LB,角色会立刻转入防御姿态,无需等待攻击动作结束。这让你在猛攻中也能随时切换防守,类似动作游戏中常见的取消硬直并格挡的机制。
待机状态下,LB操作与原版完全一致——完美格挡,无任何改动。
玩法说明
该模组通过SafetyHook挂钩游戏的过渡评估器。仅当同时满足以下三个条件时才会激活:
你最近按下了攻击键(RB或RT)
2. 攻击动画正在播放中
3. 你在按下LB键前松开了攻击键
操作流程:攻击后松键,并在350毫秒内按下LB键。此举可避免与非战斗动作(如闪光、点火、商店交互及飞行)产生冲突。
未受攻击时,极限突破机制与基础版一致——完美格挡。
已知限制
- 在攻击取消时,闪避可能伴随格挡一同触发。本游戏的判定系统对格挡与闪避的转换采用了相同机制。若需彻底分离两者,需对游戏引擎进行更深层的修改。详情请参阅下方的“协助改进本模组”章节。
- 待机状态下,防御姿态运作完美,无任何副作用。
- 模组仅在你上次攻击后的可配置窗口内激活(默认2秒)。在此窗口之外,所有操作均保持原版设定。
安装游戏
选项A — CDUMM(推荐)
将压缩包拖拽至CDUMM的ASI标签页。完成。
选项二:手动模式
1. 你需要在bin64文件夹中安装ASI加载器。若已通过其他模组合并安装(例如Ultimate ASI Loader提供的winmm.dll或version.dll),请跳过此步骤。
2. 将CDAnimCancel.asi与CDAnimCancel.ini解压至:
...\Crimson Desert\bin64\
3. 启动游戏。无需安装配置——直接开玩。
设置
编辑CDGuardCancel.ini文件——修改将在3秒内生效,无需重启游戏。
[常规]
已启用
警戒反击生效窗口(毫秒)
默认值:350。若防御取消触发不稳定,请适当提高此数值。
若影响非战斗动作,则降低优先级。
战斗超时毫秒=350
[调试]
日志功能已关闭
卸载游戏
请从你的 bin64 文件夹中删除 CDAnimCancel.asi 和 CDAnimCancel.ini 文件。或者,你也可以在 CDUMM 的 ASI 标签页中将其禁用。此操作不会修改任何游戏文件。
兼容性
- 兼容CDUMM、终极ASI加载器及其他ASI模组
- 使用内置SafetyHook——无需MinHook依赖
- AOB模糊扫描可适应游戏小版本更新
- 必须禁用Steam输入才能检测手柄操作
助您完善模组 — 开源共建
本模组完全开源,诚邀各位贡献者携手完善。目前防御取消功能运行正常,但攻击取消期间的闪避副作用仍是待解难题,亟需精通黑域引擎的开发者协助处理。
GitHub项目地址:https://github.com/faisalkindi/CDAnimCancel
本仓库包含:
- 完整源代码(C++、CMake、SafetyHook)
- 一份完整的研究文档,涵盖为期一周的反向工程成果
- 三项评估函数层的Ghidra反编译输出
- 40余款Python诊断与分析脚本
- 详尽记录所有35余种尝试方案
- 状态图分析、按键映射数据及探针测试日志
核心待解问题:格挡与闪避转换在我们检查的每个层级上,都使用完全相同的评估器类型、条件结构和指纹数据。游戏的区分机制位于评估器挂钩之上的某个层级——很可能在动作图表的输入路由层。若能找出二者的区分标识,即可消除闪避副作用,此模组便能臻于完美。
若您曾接触过Pearl Abyss的BlackSpace引擎、《黑色沙漠》动作图表系统、Cheat Engine逆向工程,或熟悉SafetyHook/函数中间钩子技术——不妨查阅本仓库,看能否破解最后一道难关。欢迎提交拉取请求,贡献者将获完整署名。
若您觉得此模组实用,还请多多支持。
制作人员名单
- 发送(无畏CE)——守卫激活函数拆解
- 初始反馈——来自社区的早期声音
- 诅咒钩 — SafetyHook 安全库
- 十三号玩家 —— 终极 ASI 加载器