Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
RandomValuablePrice
抓取时随机化贵重物品价格,主机强制统一配置。支持黑白名单、现金袋保护、详细日志。v1.7.3 优化:移除反射,性能提升;依赖我的 AdvancedREPO.Config Reloaded。
By cn_xc
| Date uploaded | 6 months ago |
| Version | 1.7.3 |
| Download link | cn_xc-RandomValuablePrice-1.7.3.zip |
| Downloads | 20 |
| Dependency string | cn_xc-RandomValuablePrice-1.7.3 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100cn_xc-AdvancedREPO_Config_Reloaded
修复版 AdvancedREPO.Config,兼容最新游戏版本,移除导致崩溃的 Harmony 补丁,改用独立 Photon RPC 同步配置。
Preferred version: 1.0.3README
markdown
随机贵重物品的价格
作者: dyxc666
版本: v1.7.3
最后更新: 2026年3月8日
注:本模组代码由 DeepSeek AI 辅助生成。
⚠️ 重要提示:多人游戏测试状态
本模组主要针对单人游戏环境开发和测试,虽然核心机制(价格随机化、配置同步)理论上可在多人游戏中工作,但未经充分多人环境测试。如果你在多人游戏中遇到任何问题(如同步失败、配置不生效等),欢迎在模组页面反馈,但请注意目前无法保证完美兼容性。
📢 加入讨论
我是代码新手,欢迎大佬们指点!
有任何问题、建议或想交流模组心得,欢迎加入我的抖音群:
🔗 抖音群链接:https://v.douyin.com/group/132508564374
(复制链接到浏览器打开或直接在抖音中搜索群号)
📖 概述
一个为《REPO》游戏设计的独立模组,专注于在第一次抓取贵重物品时随机化其价格,增加游戏的变数和重玩价值!主机配置自动同步给所有客户端,确保多人游戏中体验完全一致。
v1.7.3 优化:
- 移除了反射机制,改用公共化字段访问,性能更优。
- 依赖我的 AdvancedREPO.Config Reloaded,完美兼容最新游戏版本。
v1.7.1 新增:抖音群聊 & 新手声明。
v1.7.0 新增:公开 API,供其他模组开发者扩展。
✨ 功能特点
- 🎲 抓取时随机化:物品在被玩家抓取时才触发价格随机化,每个物品仅生效一次。
- ⚙️ 高度可配置:价格随机变化范围可自由调节(0.1倍~10.0倍)。
- 🛡️ 黑白名单系统:通过关键词精确控制哪些物品被随机化。
- 💰 现金袋保护:默认不随机化提取点奖励的现金袋(可配置)。
- 🌐 主机强制统一配置:所有玩家的配置(倍率、黑白名单等)由主机自动同步。
- 🚀 零网络开销:基于“确定性随机”算法,每个客户端独立计算相同价格,无需传输价格值。
- 📋 详细日志:可配置的详细日志输出,便于调试。
- 🔌 公开 API:供其他模组监听价格变化事件。
📥 安装方法
自动安装(推荐)
- 安装 Thunderstore Mod Manager 或 r2modman。
- 搜索 随机贵重物品的价格 作者 dyxc666 并安装。
- 启动游戏一次以生成配置文件,然后关闭游戏。
手动安装
- 安装 BepInEx 5(版本 5.4.2100 或更高)。
- 确保已安装依赖:AdvancedREPO.Config Reloaded 1.0.3+(由我修复的版本,原版已过时)。
- 将本模组的
RandomValueMod.dll放入BepInEx/plugins/文件夹。 - 启动游戏一次以生成配置文件,然后关闭游戏。
⚙️ 配置说明
启动一次游戏后,配置文件位于:
BepInEx/config/RandomValuablePrice/RandomValuablePrice.cfg
| 配置项 | 说明 | 默认值 |
|---|---|---|
随机化物品价格 |
是否随机化贵重物品的价格 | true |
最小价格倍率 |
价格的最小倍率(0.1–5.0) | 0.5 |
最大价格倍率 |
价格的最大倍率(0.5–10.0) | 2.0 |
启用黑名单模式 |
启用黑名单,匹配的物品将不被随机化 | true |
黑名单关键词 |
逗号分隔的关键词列表(如 keycard,computer) |
空 |
启用白名单模式 |
启用白名单,只有匹配白名单的物品才会被随机化 | false |
白名单关键词 |
逗号分隔的关键词列表 | 空 |
排除高价物品 |
不随机化价格超过阈值的物品 | false |
高价物品阈值 |
价格超过此值的物品不随机化 | 50000 |
现金袋随机化 |
如果为true,则现金袋也会被随机化 | false |
详细日志输出 |
输出每个物品修改前后的具体数值 | false |
强制刷新UI |
尝试强制刷新UI显示(遗留选项) | true |
注意:本模组使用 AdvancedREPO.Config 进行配置同步,请确保安装的是我的修复版 Reloaded。
🔌 公开 API
其他模组可以通过引用此模组的 DLL 或使用反射来访问以下 API:
命名空间
using RandomValuablePrice;
事件
csharp
public static event Action<ValuableObject, float, float> OnItemRandomized
触发时机:当贵重物品被成功随机化后触发。
参数:
ValuableObject vo:被随机化的物品对象。
float oldPrice:随机前的原价。
float newPrice:随机后的新价。
方法
csharp
public static float GetItemPrice(ValuableObject vo)
描述:获取指定贵重物品的当前价格。
返回值:物品当前价格(dollarValueCurrent 字段的值)。
使用示例
csharp
// 订阅价格随机化事件
RandomValueAPI.OnItemRandomized += (vo, oldPrice, newPrice) => {
Debug.Log($"物品 {vo.name} 价格从 {oldPrice} 变为 {newPrice}");
};
// 主动查询价格
float price = RandomValueAPI.GetItemPrice(someValuable);
🎮 使用方法
单人游戏
安装模组后启动游戏。
进入任意关卡。
抓取贵重物品时会自动随机化其价格,并显示提示(需开启详细日志)。
多人游戏
主机安装并配置模组,其配置会自动同步给所有客户端。
客户端无需安装模组(但安装后也可获得配置同步)。
所有玩家独立计算价格,结果一致(无需网络传输价格值)。
❓ 常见问题
问:为什么我的配置项不在 REPOConfig 里显示?
答:本模组使用独立的 AdvancedREPO.Config 框架,配置文件位于 BepInEx/config/RandomValuablePrice/RandomValuablePrice.cfg。
问:如何在自己的模组中使用 API?
答:在您的模组项目中添加对本模组 DLL 的引用,然后使用 RandomValueAPI 类即可。
问:v1.7.3 兼容之前的版本吗?
答:完全兼容,v1.7.3 仅做了代码优化(移除反射)并更新了依赖库,功能逻辑与 v1.7.2 完全相同。
问:这个模组支持多人游戏吗?
答:理论上支持,但由于开发环境限制,本模组未经多人环境充分测试。如果你在多人游戏中遇到问题,欢迎反馈,但无法保证完美兼容。
🙏 致谢
AdvancedREPO.Config Reloaded(基于 PotatoePet 的原版修复)
AI 辅助来自 DeepSeek
CHANGELOG
📜 更新日志
v1.7.3 (性能优化与依赖更新)
- 优化: 移除反射机制,改用公共化字段访问 (
dollarValueCurrent/dollarValueOriginal),提升运行性能。 - 依赖: 更新为 AdvancedREPO.Config Reloaded。
- 代码: 简化价格读写逻辑,删除冗余反射代码。
- 兼容性: 完全兼容 v1.7.2,功能逻辑不变。
v1.7.2 (文档调整)
- 更新: 更新文档说明。
注:仅文档更新,功能代码与 v1.7.1 完全相同。
v1.7.1 (文档调整)
- 新增: 将抖音群链接提前至 README 靠前位置,并添加“我是代码新手”声明。
- 文档: 优化文档结构,提高可读性。
注:仅文档更新,功能代码与 v1.7.0 完全相同。
v1.7.0 (新增公开 API)
- 新增: 公开 API
RandomValueAPI,包含OnItemRandomized事件和GetItemPrice方法。 - 说明: 其他模组可通过订阅事件或主动查询价格来实现扩展功能(如网络同步、视觉反馈等)。
- 优化: 内部代码整理,原有功能完全不变。
- 兼容性: 完全兼容 v1.6.3 的所有功能。
v1.6.3
- 移除: 不再依赖 REPOConfig,配置同步仅通过 AdvancedREPO.Config 实现。
- 恢复: 基于 v1.5.9 稳定版本,确保所有核心功能正常运作。
- 优化: 简化依赖列表,降低玩家安装门槛。
- 文档: 更新 README,说明配置方式变更。
v1.6.2 (内部测试版)
- 移除: 移除对 REPOConfig 的依赖(未公开发布,仅内部测试)。
v1.6.1 (内部测试版)
- 调整: 对颜色反馈代码进行优化(未公开发布,仅内部测试)。
v1.6.0 (内部测试版)
- 新增: 价格颜色反馈功能(未公开发布,仅内部测试)。
v1.5.9
- 修复: 修正了提示信息中倍率计算错误的问题,现在倍率会正确显示原价到新价的变化倍数。
- 优化: 代码中传递原价给日志函数,确保计算准确。
v1.5.8
- 修复: 将价格字段读写方式从
FieldRef回退为传统反射,确保修改成功。 - 增强: 在价格修改前后添加详细日志输出(需开启详细日志),便于定位问题。
v1.5.7
- 性能优化: 尝试使用
FieldRef代替反射读写价格字段(发现兼容性问题,v1.5.8 已回退)。 - 代码精简: 添加辅助方法
CreateBoolConfig和CreateFloatConfig,简化配置创建。 - 可维护性: 统一注释风格,添加静态字段引用初始化。
v1.5.6
- 调整: 将默认最小倍率从
0.8改为0.5,默认最大倍率从2.5改为2.0,对应稳定模式。 - 文档: 更新 README,明确“稳定模式”为默认配置。
v1.5.5
- 增强: 在模组启动时打印当前最小/最大倍率值,便于确认配置是否正确加载。
- 调试: 在价格计算函数中添加日志输出(仅在详细日志开启时显示)。
- 优化: 确保配置系统正确读取文件中的值。
v1.5.4
- 修复: 将所有布尔配置项的验证方式从
.Acceptable()改为.Range(false, true),解决范围验证错误。 - 文档: 增加“为什么不能用 REPOConfig 修改”的详细说明。
v1.5.3
- 修复: 为所有布尔配置项添加
.Acceptable(new bool[] { true, false })调用,尝试解决范围验证错误。
v1.5.2
- 更新: 更新文档说明。
v1.5.1
- 修复: 在
CreateConfigEntries中为每个配置项添加.File("RandomValuablePrice.cfg")调用,解决空引用异常。 - 完善: 确保所有配置项使用同一个配置文件。
v1.5.0
- 修复: 移除了不可访问的
Sync.ApplyLocal()调用,解决编译错误。 - 完善: 确保配置同步机制正常工作,所有配置项由 AdvancedREPO.Config 自动管理。
- 版本: 提升主版本号至 1.5.0,标志着配置同步架构的成熟稳定。
v1.4.9
- 重大重构: 将配置系统迁移至 AdvancedREPO.Config,实现主机强制统一配置。
- 移除: 所有手动编写的价格同步网络代码(RPC、超时回退、网络组件等)。
- 新增: 依赖
AdvancedREPO.Config,配置同步由该框架自动处理。 - 优化: 基于“确定性随机”算法,客户端独立计算相同价格,无需网络传输,零延迟。
- 改进: 配置项现在支持同步,主机修改后自动广播给所有客户端。
- 文档: 更新 README,明确新版本特性与安装要求。
v1.4.8
- 增强: 网络同步组件现在在物品生成时立即添加,而非抓取时,确保 PhotonView 及时注册。
- 新增: 客户端网络请求超时机制,默认 2 秒后自动回退到本地计算的价格,避免卡死。
- 新增: 配置项
网络超时,可调节等待服务器响应的时间 (1-5 秒)。 - 改进: 主机在广播后立即应用价格,避免主机自身延迟。
- 优化: 简化 RPC 调用,统一使用
RpcTarget.All和RpcTarget.Others逻辑。 - 修复: 潜在的主机重复应用问题。
- 调试: 增加更详细的网络状态日志,便于排查同步问题。
v1.4.7
- 更新: 更新文档说明。
v1.4.6
- 修复: 修复了 Photon RPC 参数错误,解决多人游戏同步问题。
- 改进: 将 RPC 方法参数改为符合 Photon 规范 (
PhotonMessageInfo作为最后一个参数)。 - 优化: 更新所有 RPC 调用,移除不再需要的请求者 ID 参数。
- 兼容性: 确保多人游戏网络同步功能正常工作。
v1.4.5
- 文档更新: 更新 README,添加指向旧版(v1.3.9,含重量随机化)的链接。
- 状态声明: 明确声明旧版软件包已被标记为已弃用 (deprecated)。
- 版本维护: 确保版本历史记录的连续性。
v1.4.4
- 多人游戏优化: 改进了网络同步机制,添加客户端请求跟踪和重试机制。
- 新增功能: 客户端随机化请求记录和清理,避免重复请求。
- 网络稳定性: 添加 RPC 重试机制,提高多人游戏同步成功率。
- 调试增强: 更详细的网络调试日志,便于排查多人游戏问题。
- 性能优化: 网络请求清理机制,定期清理过期请求避免内存泄漏。
- 兼容性: 保持与之前版本的兼容性,单人游戏功能不变。
v1.4.3
- 重大优化: 大幅减少 Harmony 补丁数量,只补丁关键的抓取相关方法(GrabStarted、GrabEnded、GrabLink)。
- 性能修复: 解决了游戏卡顿问题,之前版本因补丁过多方法导致性能下降。
- 日志优化: 减少了不必要的调试日志输出,避免日志刷屏。
- 代码清理: 移除冗余代码,优化性能。
v1.4.2
- 功能重构: 将随机化时机从物品生成时改为抓取时,提供真正的“随机化”体验。
- 新增功能: 抓取时触发价格随机化,增加游戏惊喜感。
- 改进机制: 补丁多个抓取相关方法,确保全面覆盖。
- 添加提示: 在日志中显示随机化提示信息。
v1.4.1
- 修复: 添加详细调试日志,帮助排查抓取物品无反应的问题。
- 改进: 优化日志输出格式,增加关键步骤的调试信息。
v1.4.0
- 重构: 移除所有重量随机化相关代码,专注于价格随机化。
- 说明: 重量修改涉及复杂的物理引擎和预设系统,容易引发兼容性问题。为了模组的长期稳定性和维护性,我们决定删除重量功能,专注于价格随机化这一核心功能。
- 优化: 简化代码结构,减少运行时错误风险。
- 更新: 修复所有编译错误,提升代码质量。
v1.3.13
- 修复: 静态类中的 Logger 调用错误,解决了所有 CS1061 和 CS0026 编译错误。
- 改进: 添加静态 Logger 引用,确保在静态上下文中也能正确记录日志。
- 优化: 统一了所有静态方法中的日志调用方式。
v1.3.12
- 改进: 网络同步代码,修复了双向同步的逻辑问题。
v1.3.11
- 改进: 网络同步组件的双向网络同步机制。
- 优化: 客户端主动请求随机化的时机和逻辑。
v1.3.10
- 修复: 主机与客户端单向同步问题,实现双向网络同步。
- 改进: 配置系统初始化逻辑和错误处理。
- 新增: 更详细的初始化状态日志输出。
v1.3.9
- 更新: 更新文档说明。
v1.3.8
- 更新: 更新文档说明,增加单独的更新日志。
v1.3.7
- 更新: 更新文档说明,增加未来规划。
v1.3.6
- 重构: 移除所有重量和价格的默认值设置,完全尊重游戏原始数据。
- 改进: 重量获取逻辑,只在游戏本身设置了重量值时才进行随机化。
- 优化: 物品跟踪机制,减少重复随机化的可能性。
- 新增: 当物品重量或价格为 0 时的跳过逻辑和警告日志。
v1.3.5
- 修复: 重量随机化中的 NaN 计算问题。
- 修复: 单机模式下的网络警告问题。
- 改进: 重复修改防护机制。
- 优化: 配置验证和错误处理。
- 新增: 日志工具类和更详细的调试信息。
v1.3.4
- 恢复: 完整的网络同步功能,包含 RPC 广播机制。
- 改进: 增强错误处理和日志系统。
- 更新: 优化配置项说明和默认值。
v1.3.3
- 修复: 模组加载时的依赖检测问题。
- 修复: 移除重复集合定义,避免逻辑冲突。
- 改进: 统一网络状态检查方法。
- 清理: 删除未使用的导入和冗余代码。
v1.3.2
- 新增: 完整的网络同步功能框架。
- 优化: 代码结构,提高编译稳定性。
- 改进: 配置项说明和默认值。
- 更新: 更新文档说明。
v1.3.1
- 修复: 程序集引用问题,确保稳定编译。
- 改进: 日志系统和错误处理。
- 优化: 配置界面显示。
v1.3.0
- 重构: 代码架构,提高了稳定性。
- 新增: 网络同步框架(实验性)。
- 改进: 预设共享检测机制。
v1.2.2
- 更新: 更新文档说明。
v1.2.0
- 新增: 现金袋随机化开关配置。
- 优化: 黑白名单系统关键词默认留空。
- 简化: 高级设置配置选项。
v1.1.0
- 新增: 完整的黑白名单系统,支持关键词匹配。
- 改进: 预设共享检测和修复机制。
- 新增: 更多调试日志选项。
v1.0.0
- 初始版本发布: 实现抓取时随机化贵重物品重量和价格的核心功能。