相位调整(本地传送)

相位调整(本地传送)

使用可配置热键进行设定距离内的本地传送。传送方向为玩家当前行进方向。后续计划添加技能特效及耐力/精力消耗机制。

技能

红色沙漠阶段 — v1.7.0

按下 V 向前穿墙闪烁(键盘),或按住 LB + 点击 R3(控制器,可配置)。可配置距离,开火时由 QPC 驱动的慢动作,通过结合绝对位置与碰撞扫描写入实现即时瞬移。默认情况下,瞄准使用你的 速度向量 —— 如果你正在朝某个方向移动,就会朝那个方向闪烁,无论相机俯仰或身体延迟如何。

目标 CrimsonDesert.exe v1.08.00。如果你未更新补丁,则默认自动回退至 v1.07.00 和 v1.06.00 的地址。


v1.7.0版本新特性 (2026-05-23)

  • Crashpad-handler保护(致谢:sreerajjay)。 绯红沙漠随附了一个crashpad_handler.exe副程序,Ultimate ASI Loader也会将.asi文件载入其中。Phase's Cave A补丁在该进程中要么无效(未匹配到AOB),要么致命(随机字节被修改)。DllMain现在会立即退出,除非宿主exe文件以CrimsonDesert.exe结尾。此模式直接取自sreerajjay的SuperJump v1.5.8。
  • 在现有LB + R3绑定的基础上增加控制器安全防护。 自v1.3起,控制器扳机通过cdinput::HotkeyHeld功能实现,但在菜单/对话交互期间缺乏意外触发防护。v1.7仅对控制器扳机叠加了三重防护——键盘V键不受影响(其已通过CooldownMs实现防护):
    • ControllerBlockCursorUi=1 在操作系统光标可见时(游戏菜单或交互提示打开)禁用控制器摇杆功能。防止原本用于UI的R3点击意外触发传送。
    • ControllerInteractionLockoutMs=3000 在任何非连击控制器按钮(方向键、正面按钮、开始/返回键、右肩键、左摇杆按下)按下后延长锁定时间——这样在导航对话框时不会立即重新激活触发器。该设定在开火后也会立即生效。
    • ControllerIdleMs=250 要求控制器在认可修改器+触发器之前,处于静止状态至少250毫秒。设置为较短的值,因为相位(Phase)需要感觉反应灵敏。
    • 所有三项都可以在 INI 中配置;将 ControllerButton=0 设置为完全禁用控制器腿。
    • 按下时触发相位(利用现有的 800 毫秒 CooldownMs 控制重复触发),而非按住触发,因此我们特意没有移植超级跳跃的 ControllerHoldMs 模式——闪烁应该是即时的,而非延迟的。
  • VERSIONINFO 元数据。 Phase.rc 提供 CompanyName / FileVersion 等信息,使得资源管理器对 Phase.asi 的文件属性能够显示构建版本(起装饰作用——有助于在未打开日志的情况下判断 Nexus 用户使用的是哪个版本)。
  • 我们刻意未移植自 sreerajjay 的 v1.5.8 版本的内容。 SuperJump v1.7.1 额外增加了可配置的链式让步窗口(ChainYieldMs / ChainProbeMs)。Phase 并不需要此功能:Phase 在触碰洞穴点之前,已会等待玩家生成最多 60 秒,这给予 FreedomFlyer / Miner 等插件充足的时间优先附加。随后安装时的 DetectPriorHookA 检查便可基于已有内容正确地进行链式处理。

v1.6.0 (2026-05-22) 的新特性

  • 洞穴A链式模式的图像填充入口存根(致谢:sreerajjay)。 此前,如果Phase在FreedomFlyer/Miner之后加载并已挂钩洞穴A,且VirtualAlloc将我们的洞穴放置于挂钩站点rel32范围之外,则安装会因错误:洞穴距rel32过远且无法链接 – 安装中止而失败。v1.6版本新增第三种方案:扫描游戏自身MEM_IMAGE区域,寻找位于rel32可达范围内包含0xCC/0x00填充字节的连续段,在其中植入14字节绝对跳转(abs-JMP)中继,并将挂钩点A修补为中继点→洞穴路径。同一模块内的填充始终位于该模块中任一挂钩站点的rel32范围内,因此中继点可达性得到保证。洞穴B保留其绝对跳转回退方案(该方案在非链式模式下本就可以正常工作)。

v1.5.1 版本更新内容 (2026年5月22日)

  • 支持 v1.08.00 版本。 珍珠深渊(Pearl Abyss)在 v1.08 中重构了 PE 结构——可执行代码现在位于一个新的约 71 MB 的 .didata 段中,且所有钩子位置均偏移了约 0x4EC50 字节。洞穴 A、洞穴 B 以及玩家静态虚拟地址插槽均在运行时通过 AOB 解析,因此现有的 v1.07 版本构建应该仍然可用,但 v1.5 版本将新的 v1.08 运行时虚拟地址作为主要回退方案进行了硬编码,以实现纵深防御。
  • 严格链锚点真实性检查(v1.5.1 bug修复)。 跨角色污染防护机制会遍历v1.07玩家链(+0x18 → +0xA0 → +0xD0 → +<char> → +0x20 → +0x18 → +0x58),并将解析出的角色位置与洞穴A捕获的位置进行比较。在v1.08版本中,链偏移未能完全解析,最终读取的+0x90返回的是亚毫米级的近零浮点数,在%.2f格式下显示为(0.00, 0.00, 0.00),但实际并非精确的0.0f。旧的ax != 0 || az != 0真实性检查接受了这些值,导致防护机制在每次闪烁时触发,世界目标被强制设为(0,0,0) + 朝向*闪烁距离——将玩家从实际位置拖拽到近世界原点位置。新检查要求|ax| + |az| > 50|ay| > 1才信任锚点,这一条件对于真实CD世界坐标始终成立。
    • 钩子解析顺序:AOB扫描 → v1.08 RVA → v1.07 RVA → v1.06 RVA → 最后手段猜测 + 诊断日志。

v1.3 版本更新内容 (2026年5月17日)

  • UseVelocityDirection=1(新默认值) — 在开火时读取角色当前的速度向量,并沿该方向闪现。不再因为身体旋转延迟而出现“我面朝东但被传送到南”的情况。只要你按住 W(或任意移动键),闪现就会朝你移动的方向进行。
  • 方向优先级链(优先顺序由高到低):速度 → 角色朝向 → 摄像头方向 → 移动朝向。若某个方向无法产生有效方向,则依次向下一个参数传递。举例来说:当你静止站立并按下V键时,因速度参数无效,会自动降级至角色朝向,此时你仍会沿身体朝向进行闪烁位移。
  • 新增 VelMinSpeed=0.5 旋钮 —— 速度方向被视为“移动”的最小水平米/秒。低于此值则视为静止。
  • 所有早期模式仍然可用 — 将 UseVelocityDirection=0 设置为回退到 v1.2 版本的演员朝向行为。
  • 内部机制:在250 Hz写入器上添加7字节覆盖型数据缩放门(在插值半周期内跳过写入),通过AOB解析的Cave A / Cave B钩子链与FreedomFlyer及其他物理钩子模组完美衔接。

要求


安装

  1. bin64/Phase.asibin64/Phase.ini 复制到你的 <Crimson Desert>/bin64/ 文件夹中。
  2. 启动游戏。Phase在加载完成后会向bin64/Phase.log写入日志。
  3. 在世界中按下 V(键盘)或长按 LB + 点击 R3(控制器)进行闪烁。这两种快捷键均可配置——详见 INI 文件。

使用方法

键盘: 按 V(或你重新映射的触发键)。与任何移动输入结合使用:

  • 冲刺向前 + V → 向冲刺方向闪烁。
  • 右冲 + V → 向右闪烁。
  • 向后移动 + V → 向后闪现。
  • 站立不动 + V → 沿身体面向方向闪烁(速度转为角色朝向)。

控制器: 按住 LB(修饰键),然后按 R3(右摇杆按下)。修饰键要求可防止在常规视角/瞄准输入时意外按下 R3 导致传送。其他安全机制(光标UI、交互锁、闲置门)可根据 INI 文件调整——详见配置表。

在闪烁期间会有一个短暂的慢动作(默认情况下,在8%速度下约400毫秒)——这就是QPC时间缩放钩子。 墙壁夹持在抑制窗口期间始终开启(无INI标记)——同时写入实体+0x90(当前位置)和实体+0x1A0(用于碰撞检测的前一位置)可使传送穿越墙壁而不掉出世界。


配置

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

按键 默认值 备注
Enabled 1 主开关。
快捷键 0x56 (V) 键盘触发键。
HotkeyMod 0 可选的第二按键;0 = 无。
ControllerButton 0x0080 (R3) XInput触发器。0完全禁用控制器腿。
ControllerModifier 0x0100 (LB) XInput 修饰键。0 = 无修饰键(不推荐——仅按 R3 会在正常相机输入时触发)。
ControllerBlockCursorUi 1 v1.7.01 在操作系统光标可见时(菜单/对话框打开)隐藏控制器图例。
ControllerInteractionLockoutMs 3000 v1.7.0 — 在按下任何非连击控制器按钮后(或开火后立即),控制器腿部将被锁定此毫秒数。如果你在对话交互后频繁意外闪烁,请提高此值。
ControllerIdleMs 250 v1.7.0 — 控制器必须在这段时间内没有按下任何按钮,LB + R3 才会生效。时间较短,因为传送应该感觉瞬间完成。
BlinkDist 12.0 闪烁距离,以游戏单位计。
BlinkUpBias 0.7 可选参数:眨眼时的垂直提升量(当前Y轴位置以上厘米数)。
CooldownMs 800 两次闪烁之间的最小毫秒数。同时用于键盘和控制器。