CDAutoLoot

CDAutoLoot

不重新上传,针对新游戏版本全面重做

CDLoot — 自动拾取模组

自动拾取:地面拾取、采集草药、开采矿石、捕捉昆虫和剥取动物皮毛。

这是一个全新编写的模组,不是老模组的补丁。它通过代码签名(code signatures)而非硬编码地址来定位所需功能,因此游戏更新不会自动使其失效。

按键

  • F10 — 开启/关闭自动拾取
  • F11 — 立即进行一次批量拾取

两个按键操作都会显示短横幅并播放常见的通知音效。在 ini 中设置 BurstNotify=0 可静音。未绑定其他任何按键。

拾取内容

  • 地面上的物品
  • 植物、矿石和石头——包括通常需要站在上方才能开采的矿脉
  • 昆虫、鱼类和其他小型生物
  • 动物尸体上的皮毛——每具尸体恰好剥取一次

每种类型的物品都有各自的拾取半径和独立的 ini 开关。

刻意不触碰的内容

自动拾取模组若悄无声息地吞掉任务物品,可能毁掉你的整个周目。本模组会读取游戏自身的物品名称,并绕开整类物品:

  • 任务物品、圣物和封印物品——仅限手动拾取。部分圣物位于谜题之后,自动拾取可能会破坏其所属的任务链。
  • 谜题与机关零件——如托卡马克碎片、深渊核心等。这是用血的教训发现的:模组当时差点就拾取了此类物品。
  • 配方书——一次性物品;误拾比错过更糟糕。
  • 他人财物——模组会询问游戏自身的判定机制,即决定提示显示"拾取"还是"偷窃"的同一个判定,并绕过任何会导致你被悬赏的物品。如果你不同意,可将 LootOwned=1
  • 家具、板条箱和装饰物——受 LootFurniture 控制,默认关闭。

安装

  1. 首先移除任何其他自动拾取模组,包括原版 Loot Everything (AutoLoot)。从 bin64 目录中删除其 .asi.ini 文件。两个自动拾取模组会挂接相同的游戏函数并产生冲突;先加载的生效,另一个则静默失效。
  2. CDLoot.asiCDLoot.ini 放入 ...\Crimson Desert\bin64\——与加载器放在一起。
  3. 启动游戏。

推荐: 使用 DMM 安装——它会将文件放到正确位置并保持 ASI 加载器整洁。以上步骤是手动安装方式,适合偏好自行操作的情况。

前置要求

需要 Ultimate ASI Loader(winmm.dll)位于 bin64 目录中。

验证方法

文件旁边会出现 CDLoot.log 日志文件。按 F10,应显示 Auto-Loot: ON 横幅。如果模组无法挂接游戏,它会在加载后半分钟内在屏幕上显示提示,且日志会说明具体失败原因。

卸载

删除 CDLoot.asi 和 CDLoot.ini 即可。不会修改任何游戏文件,也不会向存档写入任何内容。

配置

所有配置都在 CDLoot.ini 中。每个设置都在文件本身中有英俄双语说明。Language=ENRU 用于选择屏幕横幅的语言。

值得了解的事项:

  • MaxLootsPerSecPerTick 控制拾取节奏。PerTick=0 表示"所有允许的物品立即拾取"。
  • ArmRange 限制模组主动使交互变为可用的范围。这是它最具侵入性的行为,而且它不感知墙体——保持较小数值,除非你希望它能够到隔壁房间。
  • LootOwnedLootFurniture 以及各类型开关的命名与原版 AutoLoot 保持一致。

已知限制

  • 宝箱和储物箱不会被拾取。 游戏通过窗口界面打开它们,而非作为物品交付。属于普通物品的小型装饰盒则会被正常拾取。
  • 没有视线检测。 模组知道距离,但不知道墙体。较小的 ArmRange 可以加以控制,但薄墙后面的物品仍可能被收集。
  • 尚未实现扒窃功能。
  • 人类尸体不会被"搜刮"——被击杀的人会将普通战利品掉落在地上,这部分会被正常拾取。

可能存在的问题——请反馈

这是早期版本,仅由一人用一个人物进行过测试。安装前请阅读以下内容:

  • 仅在一个人物上测试过。 我的存档中第二个人物尚未解锁,因此任何依赖职业、进度或已解锁内容的项目均未经过测试。
  • 拾取时触发过 visione point(幻视点)。 收集过程中,模组触发了一处幻视点。据我所知没有破坏性影响,但这本不应发生。
  • 过滤列表本质上是不完整的。 我通过四处走动并检查所遇之物来构建此列表。我并未见过游戏中的每种物品,因此可能存在本不应被拾取的物品被收集的情况。
  • 任务物品和配方书仍可能漏过。 保护机制按物品名称运作,我未遇到过的物品类别就是尚未屏蔽的类别。

如果遇到上述任何问题,请反馈——这是最快的修复途径:

  • 拾取了什么——你背包中的物品名称
  • 你在哪里——区域、建筑、任务
  • 你期望什么结果

过滤器与现实之间的任何偏差都值得反馈,双向皆然:不该拾取却被拾取的,以及该拾取却被跳过的。

两个问题想请教

1. 批量拾取按键(F11)真的需要吗? 自动拾取运行时,它已按规则允许的速度尽可能快地拾取所有物品,因此单独的"批量拾取"按键可能毫无意义。我保留它是因为原版模组有此按键。如果你确实会用到——或者从没按过——请在评论区告诉我。如果没人需要,我就移除它。

2. 还应该支持什么功能? 欢迎在评论区提出新功能建议。我自己列表上已有的项目包括:扒窃、打开储物箱和宝箱、以及真正的视线检测。如果其他功能能对游玩方式产生更大影响,请告诉我,它会排到列表前面。

安全性

模组向游戏发送的与你按下交互键时游戏自己发送的完全相同的事件,读取内存仅为决定发送内容。动物尸体验证每局会话只搜刮一次,这是有意为之:第二次搜刮空尸体曾产生重复物品,而重复物品是损坏存档的途径。

ini 中的 Debug=1 会将完整日志写入日志文件——注意,它也会解锁约十五个开发者按键,会刷屏日志并探查游戏内存。这些按键是为开发而保留的,不是为游玩准备的。

鸣谢

这个模组是一块一块拼起来的,好几个其他模组指明了方向。它们的指针链和签名节省了数周的盲目搜索,这值得明确提及:

  • Trinity —— 物品栏持有者链和以签名而非地址查找事物的整个习惯。
  • Crimson Desert ESP —— 摄像机的指针链及其世界坐标转屏幕坐标的数学方法,这才是让瞄准最终生效的关键。
  • Loot Everything (AutoLoot) —— 原版自动拾取模组。它的设置和功能集是本模组瞄准的目标,其事件发送代码逐字节确认了事件格式。

没有从任何模组复制任何代码。借用的是知识——去哪里找,以及答案是什么形态。