超级跳跃

超级跳跃

# 《红色沙漠》超级跳跃 按住 **Shift + C**,静止时按 **Space** — Kliff 垂直升空。完全 INI 配置:和弦键、弹跳力度、下蹲伪装,全部热加载(无需重启游戏即可微调)。

游戏玩法

《红色沙漠》超级跳跃 — 版本 v1.7.1

按住 Shift + C,原地静止时按下 空格键 — Kliff 会垂直向上发射。手柄玩家:按住 LB + A 约 1.5 秒。完全可通过 INI 配置:组合键、手柄绑定、发射力度、蹲伏伪装、FreedomFlyer 链式缓冲 — 全部支持热重载(无需重启游戏即可重新调整)。

目标 CrimsonDesert.exe v1.08.00。如果你更新补丁滞后,会自动回退到 v1.07.00 和 v1.06.00 的地址。


v1.7.1 的新增内容(2026-05-23)

  • Crashpad处理程序守卫(感谢:sreerajjay)。 红色沙漠游戏附带了 crashpad_handler.exe 辅助程序,终极ASI加载器也会将 .asi 文件加载到该程序中。我们的DELTA钩子在该进程中要么无效,要么会导致致命错误。DllMain 现在会立即退出,除非宿主exe文件以 CrimsonDesert.exe 结尾。此模式直接取自 sreerajjay 的 v1.5.8 宿主进程守卫。

  • 可配置链式触发窗口(感谢:sreerajjay)。 v1.7.0中硬编码的5秒触发时间在某些机器上不足,导致FreedomFlyer挂载过慢,SuperJump优先挂钩,而FF以错误顺序链式连接到我们。新增的 ChainYieldMs(默认 10000)和 ChainProbeMs(默认 100)INI键使触发窗口可调——若仍看到FreedomFlyer抢先,可提升至30000;若从未使用FF并希望跳过等待,可降至2000。

  • 控制器支持 — LB + A,长按开火。 按住 LB + A 组合键持续 ControllerHoldMs(默认 1500 毫秒)即可发射。长按需求是刻意设计的:短按 A 用于“与 NPC 交互”或“确认对话框”,不会触发超级跳跃。三个额外防护机制可防止意外跳跃:ControllerBlockCursorUi=1 会在操作系统鼠标光标可见时(任何菜单/提示)禁用控制器操作;按住组合键期间按下任何非组合键的控制器按钮会触发 ControllerInteractionLockoutMs 锁定;且控制器必须处于空闲状态至少 ControllerIdleMs 时长后,长按的 LB + A 才会被接受。将 ControllerButton=0 设置为完全禁用控制器功能。键盘组合键行为保持不变。锁定状态机模式源自 sreerajjay 的 v1.5.8 版本。

  • 版本信息元数据。 SuperJump.rc 包含公司名称/文件版本等信息,因此资源管理器中SuperJump.asi的文件属性实际可以识别该文件(装饰性用途——有助于在无需打开日志的情况下诊断Nexus用户使用的是哪个版本)。


v1.7.0 的新功能(2026-05-22)

  • 镜像填充条目存根(致谢:sreerajjay)。 当链式模式启用且 VirtualAlloc 将空闲空间放置在超出 DELTA 挂钩站点相对偏移范围(rel32)的位置时,系统不再因“链式模式下空闲空间过远(rel32)”而失败,而是改为在游戏自己的 MEM_IMAGE 区域内搜索 rel32 范围内的 0xCC / 0x00 填充字节序列,在其中植入一个14字节的绝对跳转(abs-JMP)中继,并连接挂钩站点 → 中继 → 空闲空间。模块内部填充始终与该模块内任何挂钩站点的 rel32 范围兼容,因此中继可通过构造实现可达性。这规避了加载顺序竞争问题——该问题曾催生 v1.6 的 PreReserveCave 优化方案;如今该方案已从关键路径降级为冗余安全措施(可能在后续版本中移除)。

v1.6.1 的新增内容(2026-05-22)

  • 支持 v1.08.00。 Pearl Abyss 在 v1.08 版本中重构了可执行文件——DELTA 挂钩地址偏移了 +0x4EC50 字节(0x384909F0x3897CEF)。现在,yield-window 探测和 post-AOB-miss 回退链都会按版本降序遍历已版本化的 RVA(v1.08 → v1.07 → v1.06)。

  • PreReserveCave 修复。 v1.6 版本的优化(在 DllMain 附加时于游戏基址附近预留一个空间,以避免丢失“自由飞行者”比赛)原本从 PEB->ImageBaseAddress 获取基址,但在早期初始化阶段,该地址报告的是 ASI 加载器的基址(约 0x7FF6485F0000),而非 CrimsonDesert.exe 的基址(0x140000000)。结果导致:预留空间从挂钩位置开始占用了 7 GB,并溢出了 rel32 偏移。v1.6.1 改用 GetModuleHandleW(L"CrimsonDesert.exe"),如果游戏模块尚未加载则直接退出——后续的加载后阶段 AllocCave 会处理过早调用的情况。


v1.4 版本更新内容(2026-05-17)

  • v1.07 就绪的洞穴分配器。 旧版本在其他模组先加载并分散附近内存时,可能在链模式下因 洞穴距离 rel32 太远 而失败。v1.4 使用 VirtualQuery 遍历地址空间,并仅在钩子站点 ±1.5 GB 范围内的确认空闲区域进行分配,因此相对跳转始终适用。

  • 固定门恢复为适用的v1.2洞穴三角洲检查。 v1.3版本曾尝试直接读取角色的速度向量,但在v1.07上偏移位于错误的结构体上,产生了虚假值(1186米/秒读数)。洞穴三角洲路径已恢复——与最初适用的Nexus版本相同。

  • 针对 v1.07 的 AOB 解析 DELTA 钩子站点(RVA 偏移为 +0x384909F)。若扫描未命中,将优雅回退。


要求


安装

  1. bin64/SuperJump.asibin64/SuperJump.ini 复制到你的 <Crimson Desert>/bin64/ 文件夹中。
  2. 启动游戏。SuperJump 会在附加后等待 ChainYieldMs(默认 10 秒)的时间(用于链式检测的等待窗口),然后记录到 bin64/SuperJump.log
  3. 默认键盘快捷键:站立不动时,按住 Shift + C,然后按空格键
  4. 默认控制器和弦:站立不动时,同时按住 LB + A 约 1.5 秒。若菜单打开、刚按下其他控制器按钮或和弦轻按后松开,则不会触发。

用法

键盘: 按住Shift + C,然后按下空格。上升沿触发 — 释放和弦,再次按下空格以重新触发。 控制器: 同时按住 LB + A 键持续 ControllerHoldMs(默认1500毫秒)。按住时间要求可防止针对“与NPC互动”或“确认对话”的A键点击意外触发跳跃动作。如果在日志中看到 控制器触发被抑制 且本应出现跳跃操作,请参阅下方控制器旋钮设置。 必须站立不动——如果物理增量显示移动,模组会阻止发射。播放短暂的蹲伏动画作为蓄力动作,然后垂直发射。


配置

编辑 bin64/SuperJump.ini 文件。更改会实时生效(约1秒重新读取间隔)。

默认值 备注
Enabled 1 总开关。
HotkeyMod 0x10 (Shift) 第一个键盘修饰键。设置为0可禁用。
HotkeyMod2 0x43 (C) 第二个键盘修饰键。设为 0 则回退到单修饰键模式。
HotkeyKey 0x20 (Space) 键盘触发键。
ControllerButton 0x1000 (A) XInput 触发器按钮。设为 0 可完全禁用控制杆。
ControllerModifier 0x0100 (LB) XInput 修饰键。0 表示无修饰键(不推荐——单独按A键会在每次菜单确认时触发)。
ControllerHoldMs 1500 必须按住LB+A组合键多久才能开火。值越低反应越快,但更容易误触。
ControllerInteractionLockoutMs 4000 控制器腿部在点击释放或开火后保持锁定状态的持续时间。若在对话/UI交互后频繁出现意外跳跃,可调高此值。
ControllerIdleMs 500 在按下并按住LB + A的组合被接受之前,控制器必须保持无按钮按下状态至少此毫秒数。
ControllerBlockCursorUi 1 当系统光标可见时,1 会禁用控制器操作。