冲刺、攀爬、游泳和滑翔不消耗耐力,马匹可以无限狂奔。每项消耗都是你可以设置的百分比,因此你可以让消耗更便宜而非完全免费。启动时写入一张表,不触碰任何游戏文件,什么都不动
耐力大师奔跑、攀爬、游泳、滑翔,不再受体力条阻碍,坐骑也能随心所欲地长时间疾驰。 crimson desert 2.03.02。《红色沙漠》中每个消耗耐力的技能都带有一个数值,标明消耗量。这样的技能共有206个,从冲刺每跳-8000到三角星最重挥击的-240000不等。此模组会在启动时找到该数值,并乘以你设定的系数。默认情况下会将所有数值设为零。
马匹的运作方式不同,需单独处理,这也是其中唯一需要第二次尝试的部分。
它改变的内容- 这些东西要花多少钱。 游戏的技能表中保存着每个技能的资源消耗列表,本模组重写的正是其中以耐力命名的那些消耗项。在2,069个技能中,有206个技能共206项消耗被改写。插件在启动时通过其管理器类找到该表,核对五个已知技能的消耗是否与游戏自身数据文件所声明的一致,只有核对通过后才会写入。
- 马匹恢复速度。 马的步态决定其体力恢复速度,速度越快恢复越慢。站立不动时每 tick 恢复 100000,慢跑时 40000,全力疾驰时 9000。如果消耗速度超过 9000,疾驰中的马就会疲劳。将唯一的骑乘消耗清零并未解决问题。提高恢复速度则有效,这正是 MountRegenPercent 的用途。
- 没有能恢复体力的东西。 十二项行动会恢复耐力而非消耗耐力,即站立不动、行走、防御和悬挂在边缘时所做的那些动作。这些行动均未改动,因此食物和休息的效果与之前完全相同。
不会修改任何游戏文件,不会重新打包任何内容,也不会触及你的存档。该更改仅在游戏运行期间存在于内存中。
设置StaminaMaster.ini 位于插件旁边,在 [settings] 下。其中的每个默认值也是插件自身的默认值,因此该文件是可选的。删除它不会有任何损失。插件在首次发现没有该文件时会自动生成一个。
- 使用百分比 (0)每次使用时消耗的费用,例如一次翻滚、一次跳跃或一次武器挥砍。130个。游戏自身费用的百分比,其中100表示保持不变。
- 持续百分比 (0) 按住按键时会持续消耗的61项,包括冲刺、攀爬、游泳、滑翔伞和火箭背包。
- 坐骑百分比 (0) 骑乘时消耗耐力的动作,分为按住或轻点。共15个。
- 坐骑恢复百分比 (1000)马匹自身恢复速度的百分比。这里的其他设置都是把数值往下调,唯独这一项是往上抬,范围从100到10000,因为让马疲劳的原因是恢复速度随奔跑速度急剧下降。设为1000时,全速疾驰的恢复量大约相当于站立不动时的水平。低于100会被拒绝;让马更快疲劳并非此项设置的目的。
- 探针 (0) 将研究报告写入日志。每个变更的数字占一行,并在第一分钟和两分钟后重新读取以确认更改仍然存在。这就是要附加到错误报告中的内容。
超出范围的值会导致整个写入被拒绝,包括原本在范围内的设置,因此一个笔误不会造成任何改动,而不是只改一半。
INI 大师 可以用标签、范围和每个选项的默认值来编辑这些内容,所有这些都从插件本身读取。
它也参与战斗。攻击、闪避、擒抱和弓箭射击都在206里。这是有意为之,因为游戏里没有任何地方标明一个技能是用于旅行还是用于战斗。我们检查了每个技能上的九个字段,还有技能组表,结果发现攀爬与攻击共享了所有数值。
数据真正区分的是费用的收取方式,这也是为什么设置项会这样拆分。如果你想让体力条在旅行时消失、在战斗中不受影响,那并没有一条清晰的界线可划,但把UsePercent设为100可以保留一次性费用不变,并让持续消耗免费。攀爬在这一点上两边都沾。做出一次攀爬动作会收取一次费用,而挂在那里则会持续消耗。
如果你只想让模组作用于你的马匹而不作用于其他地方,请将UsePercent、ContinuousPercent和MountPercent都设置为100。
安装使用终极模组管理器(DMM)- 在“文件”选项卡上,下载文件名以DMM结尾的文件。另一个是用于手动安装的。
- 把那个压缩包拖到DMM窗口上。它里面只有一个.asi文件,没有JSON,DMM会像安装其他模组一样安装它。
- 启用它并挂载。DMM会将StaminaMaster.asi放入bin64目录,并自带加载器,因此你无需手动复制任何内容。
DMM归档中仅包含插件本身,因为DMM安装的就是这个插件。默认配置已编译在内,因此插件自身是完整的,且插件在首次发现旁边没有StaminaMaster.ini时,会自行写入该文件。启动游戏一次,该文件便会出现在bin64目录中等待编辑。你已有的ini文件不会被改动。
手工- 终极 ASI 加载器(winmm.dll)必须放在游戏的 bin64 文件夹中,与 CrimsonDesert.exe 位于同一目录。
- 在游戏关闭的情况下,将 StaminaMaster.asi 复制到 bin64 中。
- 启动游戏。StaminaMaster.log 会出现在插件旁边,说明它更改了什么,同时 StaminaMaster.ini 会出现,其中每项设置都为默认值。
卸载中 正在从bin64中删除StaminaMaster文件。没有可撤销的元补丁,也没有要移除的包文件夹。
如果另一个模组已占用 winmm.dllOptiScaler、部分帧生成版本以及某些ReShade配置会安装它们自己的winmm.dll,而那个文件不会加载任何ASI插件。不要动它们的文件,把Ultimate ASI Loader重命名为其他未被占用的名称。
xinput1_4.dll,
wininet.dll,
winhttp.dll 和
d3d12.dll 全部由CrimsonDesert.exe直接导入。
version.dll 同样有效,再深入一步:exe 本身不导入它,但 sentry.dll 会导入,而 CrimsonDesert.exe 每次启动都会导入 sentry.dll。bin64 目录中出现 StaminaMaster.log 就是完整的验证;没有日志就说明没有任何东西加载了该插件。
设置仅在游戏启动时读取一次,因此修改 ini 文件后需要重启游戏才能生效。
兼容性- 为《红色沙漠》2.03.02版本(exe 1.0.0.2976)构建,并在发布前针对该exe逐字段核对。2.03.00版本也可运行。该表通过其管理器类定位,写入任何内容前都会将表中行与游戏自身数据进行核对,因此在其他构建版本上只会在日志中留下一行记录,而不会损坏游戏。此处没有任何内容依赖固定地址。
- 不要与修改耐力的模组包同时运行。 那些会替换磁盘上的游戏数据,而这一步会重写已加载的表,所以最终内存里是哪个数值,两个模组都无法保证。请二选一。
- 它与“拾取大师”、“飞行自由”和“闪光探测”并列也毫无问题。每个都是独立的.asi文件,且改动的内容各不相同。
- 单人游戏。请勿在任何可能让你相对于他人获得优势的地方使用它。
已知限制- 马匹仍然有耐力条,并且仍然会移动。发现的是恢复速率,而提高恢复速率正是让耐力条在疾驰时保持满格的原因。与之对抗的消耗从未被明确识别,只知道它小于提高后的恢复速率,因此坐骑在做某些异常消耗高的事情时仍然可能耗尽耐力条。
- 这些费用只在表格加载时被重写一次。如果游戏的某一部分在游戏进行中重新加载了该表格,那么它重新加载时所处的会话就会回到游戏自身的数值,直到你重新启动。目前所见的情况都不会这样做,而且在游戏开始两分钟后重新读取一次,确认写入的内容仍然存在。
- 游戏以体力以外的东西作为消耗的技能不会被改动,包括法力。
如果有问题StaminaMaster.log 会写在插件旁边,在 Steam 安装环境下即位于 ...\steamapps\common\Crimson Desert\bin64\StaminaMaster.log。它会记录读取到的设置、每个类别中重写了多少消耗,以及它拒绝执行的操作及原因。设置 Probe=1 并重启后,会为每个技能输出一行日志,并记录后续的重新读取。反馈问题时请附上相关日志行,并说明发生了什么以及你当时所在的位置。
最后一行统计的是插件在查找技能表期间触发并被捕获的读取错误次数,最多几十次属于正常现象。如果崩溃报告器或另一个模组在首次异常错误行中提到了 StaminaMaster.asi,那只是这些被捕获的异常之一,而非崩溃。如果计数达到数十万次,那就是真正的 bug,值得上报。
它是如何被发现的耐力数值并不在任何以耐力命名的表中。游戏自身加载器在错误信息中命名的每一种记录类型都已列出,共551种,而唯一匹配该词的字段是一个关于是否绘制进度条的标志。
真正占大头的是技能表,每个技能记录的末尾都挂着一个列表。读错这个列表是这里最耗时间的地方。最初尝试把它当成一对指针,结果大小没通过合理性检查,所有技能都报告为空列表,连用作对照的那个也不例外。游戏自身的加载器能定论。它读取的每个字段都会在代码里留下独特的痕迹,字段名就附在失败分支上,所以走一遍加载器就能打印出完整的记录布局,而读取列表的例程表明它是一个指针、一个计数和一个容量,条目之间相隔24字节。
在写入任何内容之前,两项独立校验已确认了该布局。每条状态记录都携带其自身名称的哈希值,而两行耐力数据经哈希计算所得的结果,与在游戏外对这些名称进行哈希计算所得的结果完全一致。另外,每一项花费都按行索引指向修改它的两项速率属性,而这些索引正是提取的数据文件所给出的行号。
文件1.0.3 的 SHA-256:
943a33cc9f5fbf44deeee4b5c4660b5fd014946ee6db8c928fc53ed4da9a6c06 StaminaMaster-1.0.3-DMM.zip
6e402e7562959c32f589b42a3d9dc6f52210eff3221fa364b5b0581a9f5f5b01 StaminaMaster-1.0.3.zip
8e5d1609b585adaf47bab4c9f35e546cc5e6f584d6f2959c2decb2c60f9f68be 耐力大师.asi
任何版本均未被标记。1.0.3 的插件在 VirusTotal 上 71 项检测中 0 项报毒,两个压缩包均为 67 项检测中 0 项报毒。1.0.2 的检测结果为 71 项中 0 项、68 项中 0 项、51 项中 0 项,1.0.1 的两个压缩包分别为 70 项中 0 项和 67 项中 0 项,1.0.0 的检测结果为 70 项中 0 项、67 项中 0 项、68 项中 0 项。报告详见
插件,
DMM档案库 和
完整存档.
该插件仅导入一个系统库kernel32,不涉及其他任何内容:无网络功能、无注册表访问、除自身的ini和日志文件外不访问任何文件。扫描器仍可能因其形态而将其标记,因为它是一个由加载器放入游戏内的DLL,一旦进入便会写入游戏内存。修改器也会这样做,因此基于修改器训练的模型会将其判定为修改器。该文件已进行代码签名,在StaminaMaster.asi的属性→数字签名中显示为Seth Walker。
来源与许可MIT 许可证。源码和构建说明见 GitHub:
github.com/shin2344234/stamina-master制作人员锻炉
无限耐力 正是这个作品确立了要匹配的目标,也是让人们相信此事可行的原因。那个作品修改的是磁盘上的游戏数据;而这个作品则走了另一条路,殊途同归。
Discord 和 PatreonShin234的模组与杂项 这是Discord,用于提问和查看正在进行的开发内容。Bug最好提交到bugs标签页或作为GitHub issue,这样便于追踪。
Patreon 是
patreon.com/cw/Shin234 以以下职位:
patreon.com/cw/Shin234/posts所有发布的内容都保持免费,不会为此有任何保留。