无荣誉折扣(可配置)

无荣誉折扣(可配置)

移除或自定义《荒野大镖客:救赎2》基于荣誉值的商店折扣。独立调整10%、25%和50%三档折扣,从完全无折扣到符合条件的购买完全免费。非常适合硬核经济设定或你自己偏好的平衡。

无荣誉折扣(可配置)

移除或自定义《荒野大镖客:救赎2》中基于荣誉的商店折扣。独立调整 10%、25% 和 50% 折扣档位,从完全无折扣到符合条件的购买完全免费。

概述

在原版 RDR2 中,高荣誉可以让商店购买更便宜。对于更严苛的经济系统来说,这项加成可能会破坏精心平衡的价格和金钱管理。

无荣誉折扣让三个正荣誉商店折扣变得可配置。

默认情况下,三个折扣均设为 0%。亚瑟仍然可以获得良好声誉,但仅凭这一点不会降低他补给品的价格。

想要不同的平衡?你可以自行选择百分比。例如,你可以将原本 25% 的折扣替换为更适度的 12.5%。

该模组不会更改目录价格或荣誉阈值。相反,它会在相关故事模式商店脚本加载时找到它们,并直接修改折扣数值。

显示价格和实际钱包扣款均已在游戏内测试,包括在不重启的情况下切换不同荣誉档位。

功能

  • 默认移除全部三个正荣誉商店折扣。
  • 可独立配置 10%、25% 和 50% 荣誉折扣档位。
  • 支持 0% 到 100% 之间的任意百分比,包括 12.5% 等小数值。
  • 无效或缺失的数值会自动回退到 0%,并在日志中给出警告。
  • 在 12 个受支持的商店脚本类别加载时自动发现并修补它们。
  • 使用轻量级、低优先级的后台内存扫描器。
  • 无需替换目录。
  • 包含内存验证、脚本加载和游戏过渡的安全保护措施。
  • 专为离线故事模式设计。

配置

附带的 HonorDiscounts.ini 文件包含三项设置。

默认配置:

[HonorDiscounts]
HighHonor10 = 0
HighHonor25 = 0
HighHonor50 = 0

这些分别对应游戏原本的 10%、25% 和 50% 荣誉折扣档位。

例如,要将原本 25% 的折扣降低到 12.5%,只需修改:

HighHonor25 = 12.5

要恢复该档位的原始折扣:

HighHonor25 = 25

要让该档位下符合条件的购买完全免费:

HighHonor25 = 100

接受 0 到 100 之间的数值。无效数值(例如 -5 或 110)会自动回退到 0%。

重要: 修改 INI 文件后请重启 RDR2。配置在模组启动时加载。

亚瑟的荣誉在游戏过程中仍可正常变化,相应的已配置折扣会自动应用。

开发者说明:终极讽刺

这个模组最初是为了让 RDR2 的经济更具挑战性而创建的。

在花费了 65 个开发阶段 试图阻止亚瑟以过低价格获得物品之后,结果发现你还可以将荣誉折扣设为 100%,让符合条件的购买完全免费。

是的,我们确实在游戏内测试了这一点。显示价格为 $0.00,从亚瑟钱包中扣除的钱也恰好是 $0.00。

我决定接受这个讽刺 :)

65 个阶段。仅仅三个数值。免费豆子!

当然,这并不会让 RDR2 中所有东西都免费。只有受支持的荣誉折扣商店脚本所影响的交易才能获得这些折扣。

安装

要求:

  • 一个可正常工作的、兼容的 ScriptHookRDR2 安装和 ASI 加载器
  • 故事模式

安装步骤:

  1. 下载并解压模组压缩包。
  2. 将 NoHonorDiscounts.asi 和 HonorDiscounts.ini 复制到你的 RDR2 主安装文件夹,与 RDR2.exe 放在一起。
  3. 如果你想自定义折扣百分比,请编辑 HonorDiscounts.ini。
  4. 启动 RDR2 即可享受!

请勿同时安装多个版本。

更多安装细节请参阅附带的 README_INSTALL.txt 文件。

兼容性

该模组设计为可与目录价格修改同时使用,因为它只更改基于荣誉的折扣百分比,而不更改底层物品价格。

例如,如果另一个模组提高了某把武器的基础价格,无荣誉折扣应保留该修改后的价格,同时应用你选择的荣誉折扣百分比。

更改亚瑟荣誉等级的模组通常应能与此模组同时工作,因为 RDR2 仍会决定适用哪个折扣档位。

然而,无法保证与每个 RDR2 版本或修改编译后商店脚本的模组兼容。

该模组不会更改荣誉阈值、营地账本价格或受支持商店脚本之外的其他交易。

它仅适用于离线故事模式。

扫描器还包含严格的验证检查,以避免在无法验证预期脚本结构时修改内存。

50% 高荣誉档位——征集测试者!

模组中有一部分我特别希望能得到测试帮助:原本的 50% 高荣誉折扣档位。

该档位被锁定在较晚的故事进度之后,而我目前没有可以访问该档位的存档文件。

我们已在游戏内彻底测试了原本的 10% 和 25% 档位,包括自定义百分比、正确的显示价格和实际钱包扣款。

底层修补机制也支持 50% 档位,相关代码级检查已通过。

我们迄今验证的一切都表明它应该能正常工作,但我们尚未通过实际游戏内购买来确认。

如果你有一个进度足够的故事模式存档,并且能够访问原本的 50% 荣誉档位,我将非常感谢你的帮助!

例如:

  1. 在 INI 文件中设置 HighHonor50 = 0。
  2. 重启 RDR2。
  3. 前往一家商店,购买一个通常会获得 50% 折扣的物品。
  4. 检查是否显示完整的未折扣价格。
  5. 购买该物品并验证扣除的金额是否正确。

请说明商店、物品、预期价格、显示价格、实际扣款以及你使用的任何其他经济模组。

附上 NoHonorDiscounts.log 也会非常有帮助。

成功的测试将完成全部三个荣誉折扣档位的实际验证。

当然,如果某处未按预期工作,我也乐意调查。

在其他电脑上的性能——欢迎反馈!

我特别好奇这个模组在别人的硬件上表现如何,尤其是较旧的 CPU、16 GB 内存的系统以及大量模组的 RDR2 安装。

我已经在自己的配置上广泛测试了该模组,包括长时间游戏会话,并且没有注意到任何与扫描器相关的 FPS 问题。

然而,这仍然只是一台机器,我更愿意听到潜在问题,而不是假设它们永远不会发生。

该模组使用低优先级后台内存扫描器。

它大约每 2 秒检查一次新的或已更改的内存区域,并大约每 15 秒进行一次更彻底的备用扫描。

扫描器还会定期让出 CPU 时间并复用内存缓冲区,以减少不必要的工作。

这种方法旨在尽量减少对游戏玩法的影​​响,但我无法保证在每台 PC 上性能完全相同。

拥有 16 GB 内存本身应该不是问题,尽管可用内存已经不足的系统可能会有不同表现。

如果你在安装模组后遇到卡顿、帧时间尖峰、FPS 下降或其他异常行为,请告诉我!

理想情况下,请在相同位置比较安装和未安装 ASI 时的性能,并在两次测试之间重启游戏。

如果你能提供以下信息,也会非常有帮助:

  • 你的 CPU 和内存容量
  • 其他已安装的脚本或经济模组
  • 移除 ASI 后问题是否消失
  • 你的 NoHonorDiscounts.log 文件

当然,使用较旧或性能较弱 PC 且没有遇到问题的报告也非常欢迎!

我会关注反馈并调查可复现的问题。

模组背后的故事

这个项目实际上最初只是我个人硬核经济 overhaul 的一个小收尾。

我花了相当多时间调整 RDR2 的经济,让钱更难赚、花起来更有意义。

我非常喜欢 Rockstar 给我们提供的如此多赚钱方式,从狩猎和钓鱼到抢劫、搜刮和寻宝。

但在原版游戏中,亚瑟可以在相当早的阶段就变得相对富有,使得许多这些活动在经济上的回报不如我希望的那样丰厚。

在硬核经济下,我发现所有这些活动突然又变得令人非常满足了。

而这正是我想去掉高荣誉折扣的原因。

我最初以为这会是一个相当简单的调整,最终却变成了 65 个开发阶段 的调查、实验、逆向工程、调试和测试。

所有这些努力,只是为了更改内存中的几个字节!

在此过程中,项目从简单地移除折扣演变成一个可配置系统,允许玩家选择自己的百分比。

我写了一篇长得多的发展故事,讲述整个过程,包括启发它的其他模组、我们遇到的挫折,以及意外让免费购物成为可能的那种相当滑稽的讽刺 :)

如果你对这个小小项目是如何诞生的感兴趣,也欢迎阅读。

[spoiler]模组背后——几个字节,漫长旅程

献给任何对我为什么想要这个模组以及它最终如何成形感兴趣的人。

我为什么想改变经济系统

《荒野大镖客:救赎2》是一件艺术品。它是我有史以来最喜欢的游戏之一,即使在与它相处了这么多时间之后,我仍然惊叹于 Rockstar 在这个世界中投入了如此多的细节。

但游戏中有个部分我一直想以稍微不同的方式体验:经济。

事情是这样的,Rockstar 给了我们许多奇妙的赚钱方式。狩猎、钓鱼、出售毛皮和肉类、收集贵重物品、抢劫人或驿马车、寻找宝藏,以及各种可以赚几美元的小事。

我绝对喜欢这些东西。

你可以在荒野中花一整个下午狩猎,带着你收集到的东西回到镇上并卖掉。这是一种非常令人满意的游戏方式,尤其是因为狩猎本身做得如此出色。

但原版经济总有些地方让我困扰。

亚瑟在故事中出奇地早就财务宽裕了。而一旦发生这种情况,相当多的这些活动就失去了经济目的。

当然,狩猎仍然很有趣。寻找宝藏或抢劫驿马车也是如此。但当你已经带着数千美元时,另外 10 或 20 美元就不再有多大意义了。

我认为这真的很可惜。

Rockstar 投入了如此多精力让这些活动变得有趣。经济系统如此早地让它们的回报几乎变得无关紧要,这感觉有点奇怪。

如果我已经可以买几乎所有我想要的东西,为什么我还要花一个小时狩猎来赚钱?当然,我可以只是因为喜欢狩猎而去做。但如果我同时也真正需要那笔钱,不是更好吗?

这基本上就是我硬核经济的全部理念。

我希望钱保持有价值。不是稀缺到每次购买都变成令人沮丧的苦差,而是稀缺到你会感激赚到它。买一支新步枪应该感觉像是你攒钱买来的。找到一块金块应该令人兴奋。把几张完美毛皮带进镇上应该感觉值得费这番功夫。

而如果你正在考虑抢劫驿马车,应该有充分的财务理由去冒这个风险。

对我来说,这对体验产生了巨大差异。Rockstar 放入游戏中的所有那些东西再次变得更有意义。这不仅仅是让 RDR2 更难。而是有更多理由真正生活在这个世界中。

有了适当平衡的硬核经济,一个本已出色的游戏对我来说变成了一部个人杰作。

让它成为可能的模组

当然,我并不是从零开始构建整个经济系统。它基于一些优秀的现有模组,加上我自己相当多的调整。

有三个模组我认为对我的个人配置至关重要。

Kiddo's Hardcore Loot and Economy Overhaul

这是最重要的基础之一。Kiddo 已经对战利品、奖励和价格做出了重大更改,我非常喜欢它的方向。

不过,最终我决定想把它推得更远。我开始将许多目录价格提高到超过 Kiddo 的数值。实际上,我最终进行了多轮涨价,因为我不断发现一些购买对于亚瑟仍能赚到的钱来说感觉有点太便宜了。

这涉及相当多的平衡工作。目标不是让一切都贵得离谱;我想让昂贵的东西保持昂贵,并给亚瑟一些有意义的东西去攒钱。

Less Money – Economy Reworked

另一个非常重要的模组,也是我花了不少时间自己修改的东西。

我喜欢原模组背后的理念,但想要对亚瑟实际能保留的钱有不同的平衡。所以我重写了内部减钱公式,并创建了自己的累进税曲线(见:https://www.nexusmods.com/reddeadredemption2/mods/11117)

基本上,较小的收入被征税相对较轻,而较大的收入则按逐渐更高的百分比削减。这样,找到一点钱仍然令人满意,而不会让一笔大收入过快让亚瑟致富。

那个模组也涉及相当多的计算、实验和游戏内测试。结合我提高的目录价格,我对结果非常满意。

Banks of the West

然后是 Banks of the West,它增加了我特别喜欢的东西:把钱存入银行的能力。

这听起来可能是一个相对较小的功能,但我认为它非常适合硬核经济。你可以区分亚瑟随身携带的钱和他存起来的储蓄,并且根据设置,惹上麻烦可能会产生真正的财务后果。

你可以在死亡或投降时失去现金,如果你想要那种体验,甚至可以配置银行储蓄的风险。

就个人而言,我选择保护我已存入的钱,同时让亚瑟携带的钱容易受到惩罚。我喜欢在出发去做危险事情之前必须考虑是否应该去一趟银行。它为游戏增加了另一个小决策。

这三个模组共同构成了我硬核经济的基础。我强烈建议你去看看它们,如果你想让钱在 RDR2 中更有意义。

当然,它们并不是无荣誉折扣的技术要求。它们只是这个小模组最终对我自己的配置变得必要的原因。当然,那些原模组的功劳属于各自的创作者!

最后一件一直困扰我的事

在所有这些更改之后,我越来越接近我想要的经济系统。钱更难赚,价格更高,大收入不会让亚瑟立即致富,惹上麻烦可能会造成财务损失。

但仍然有一件事不太契合。

高荣誉商店折扣。

大多数玩家可能知道,亚瑟因保持高荣誉而获得越来越慷慨的折扣,而且故事中还很早。先是 10%,然后 25%,最终 50%。

在原版游戏中这没问题。但想象一下,花了那么多时间减少收入和提高价格,结果亚瑟走进一家商店,因为他是如此好的人而获得半价。

这有点违背初衷,不是吗?

我也喜欢将他的道德与财务分开的想法。荣誉是一种选择,但我并不特别希望这种选择带来如此巨大的财务奖励。

所以我开始想是否能以某种方式移除这些折扣。游戏中某处肯定有一些决定百分比的数值吧?

嗯,是的。事实证明,确实有。

不幸的是,找到它们完全是另一回事!

所有这些时间只为几个字节

这可能是故事中我最喜欢的部分,因为仔细想想它其实相当荒谬。

我们花了无数小时调查、实验、调试和测试,只是为了更改内存中的几个字节。

只是几个字节!

我现在还在为此发笑 XD

困难的部分并不是真正写入那些新数值。而是找到正确的数值,理解它们所在的位置,并弄清楚如何在游戏运行时安全地更改它们。

我与 ChatGPT 一起完成了这个项目,从一个相对简单的问题开始,最终变成了比我预期大得多的调查。

我们研究了编译后的商店脚本,检查了内存,测试了不同想法,并慢慢开始理解荣誉折扣计算是如何处理的。

有相当多时刻,我们似乎终于弄清楚了,却又遇到了另一个问题。有时这相当令人沮丧,但我们还是继续前进。

最终我们确定了与游戏 10%、25% 和 50% 荣誉折扣相关的三个数值。

那是一个了不起的突破。在所有这些调查之后,我们终于知道我们在找什么了。

但当然,这还不是终点……

让它可靠地工作

那些商店脚本不一定一直加载,而且它们的内存地址可能会变化。仅仅修改一个地址并希望它保持不变并不是可靠的解决方案。

我们需要能够找到正确脚本、验证它们,然后安全地进行更改的东西。所以我们最终开发了一个带有内存扫描器的原生 ASI。

而这又引入了一整套需要解决的新问题。

性能一度有点令人头疼,尤其是。一些早期方法有效,但扫描效率不如我希望的那样。对于已经大量模组的 RDR2 安装,我最不想要的就是另一个影响 FPS 的模组。

我们仅改进这部分就花了相当多阶段。最终我们得到了一个轻量级后台扫描器,它搜索相关商店脚本并在修改任何内容之前检查其发现。

但一个能工作的扫描器并不自动意味着一个能工作的模组,当然。所以我想彻底测试一切。

我们检查了不同商店的价格,进行了实际购买,更改了荣誉值,重新加载了存档,向当局投降,并总体上尝试看看是否有什么会出问题。

我特别严格的一件事是从亚瑟钱包中扣除的钱。商店菜单中价格看起来正确是一回事,但如果扣除了错误的金额,模组就没有尽到职责。

幸运的是,我们最终让两者都正确工作了。而且没有任何明显的 FPS 问题(至少在我这边!),这对我来说非常重要。

特别感谢 Rampage Trainer

有一个工具值得特别提及:Rampage Trainer。

能够手动更改亚瑟的荣誉在开发过程中非常有用。想象一下,每次我想测试另一个荣誉阈值时,都必须在圣丹尼斯四处问候每个人很久。或者每次我想再次降低荣誉时都要做些可疑的事情!

有了 Rampage Trainer,我可以简单地调整荣誉、访问商店、比较价格并重复。我们广泛使用了它,尤其是在游戏运行时测试不同折扣档位之间的变化。

所以非常感谢 Rampage Trainer 的创作者们让这一切成为可能。

然后我们让它变得可配置

最初这个模组有一个非常简单的目的:完全移除高荣誉商店折扣。

就是这样!

但一旦我们终于让它正常工作,我们开始讨论让百分比可配置。实际上我觉得那是个非常好的主意。

也许有人不想完全移除折扣,只是想稍微降低一点。或者也许他们想要 5% 的加成而不是 25%。为什么不给人们这个选项呢?

所以我们添加了一个简单的 INI 文件,让你可以独立配置三个档位。

对于我自己的硬核经济,我会将三个都保持为零。但其他人可以选择完全不同的平衡。

而这里有一个我觉得特别滑稽的部分。

在花了 65 个开发阶段试图摆脱荒谬慷慨的折扣之后,我们做了一个模组,也让人们可以让那些折扣变得更加荒谬。

你可以将其中一个设为 100%。

而且,是的,我们实际测试了!在正常的 25% 荣誉档位下,一件商店物品显示 $0.00,亚瑟的钱包被扣除了恰好 $0.00。

我是说,想想看!我们花了所有这些小时确保亚瑟不会以太低价格获得一切,而有人可以用我们的模组走进商店,免费获得符合条件的商品!

六十五个开发阶段,全是为了确保亚瑟为他的豆子付全价。而现在他可以免费得到豆子。

我绝对喜欢这个讽刺 :D

那么这一切麻烦值得吗?

对我来说,绝对值得。

这个模组并没有添加某个巨大的新玩法系统。它没有重写整个经济或更改数百个物品价格。那些是其他模组和我的目录调整所帮助的事情。

实际修改很小。

三个数值。几个字节。

但结合我所做的其他更改,这几个字节对游戏给我的感觉产生了惊人的大差异。

我不再需要担心高荣誉会抵消我花了这么多时间创造的部分平衡。而 Rockstar 构建到游戏中的所有那些赚钱方式仍然更令人满意,因为回报真正重要。

我从未想过这个小小的想法会变成一个如此长的项目。有很多时刻我怀疑我们是否能让它按我希望的方式工作。但我们继续尝试,通常从出错的地方学到一些东西,并慢慢达到目标。

在 65 个阶段、相当多挫折、一些了不起的突破和大量测试之后,我对结果非常满意。

我当然不会假装这是 RDR2 模组制作中的某种革命性成就。这只是我真正为自己游戏想要的一个小模组,而且花了惊人耐心才做成。

我想其他玩家可能也喜欢拥有同样的选择。甚至那些显然想让他们的亚瑟免费获得一切的人!

实际上,尤其是那些人。我仍然觉得那很滑稽 XD

总之,如果你读到了这里,感谢阅读!

我希望你喜欢这个模组,无论你决定如何处理折扣。[/spoiler]

反馈与故障排除

如果你遇到问题,请尽量包含尽可能多的相关信息。

特别有用的细节包括涉及的商店和物品、其预期基础价格、显示价格,以及从亚瑟钱包中实际扣除的金额。

还要提及你安装的任何其他经济、目录或商店相关模组。

模组会自动创建一个 NoHonorDiscounts.log 文件,这在调查问题时可能特别有用。

欢迎反馈、错误报告、兼容性发现和建议。

致谢

项目概念、开发方向、平衡和游戏内测试: 我

逆向工程和实现协助: ChatGPT(OpenAI)

ScriptHookRDR2: 必需的第三方依赖。所有功劳属于其各自的开发者。

还要特别感谢 Rampage Trainer 的创作者们,它在整个开发过程中对于手动更改亚瑟的荣誉和测试不同折扣档位非常有用。

感谢更广泛的 RDR2 模组社区提供了如此多优秀的工具和修改!

旅途愉快 :)