
飞船商人修复
修复了船舶供应商的问题,使剩余的船只能够被正确回收。
查看大图描述
简易修改了所有供应商所使用的 ShipVendorScript 脚本,使其在处理库存重置时能够妥善处理被移除的飞船。
这将防止与飞船供应商库存重置相关的指针句柄泄漏,并可能修复其他几个与旧飞船(本应已被清理)随机重新出现在着陆台上的错误。该修复目前处于试验阶段,我已进行了大量测试以确保其正常运作,但针对特定引用句柄泄漏的测试是一个非常漫长且费力的过程,因此效果可能会有所不同。
飞船供应商通常会发生什么:
- 当你出售一艘飞船时,该飞船会被简单地放回供应商的“库存”数组中,以便在购买/出售界面中显示。
- 每 7 天(一周),供应商会对其库存中的所有飞船执行
Delete()命令,然后清空其库存数组。 - 新的飞机会在着陆台上生成,但处于禁用状态并与着陆台链接。
- 循环重复。
问题所在:
- 当飞船本应被清理时,与本地着陆台/停靠港的链接并未被清除,这可能导致飞船始终保持加载状态,或至少阻止游戏垃圾回收器对其进行清理。
- 当飞船本应被清理时,它们并未被发送到任何地方。它们没有被放入任何收纳单元(holding cell)。这意味着只要所在的单元(通常是永久单元或城市单元)保持加载或未被重置,垃圾回收器就无法或很少能清除这些已禁用的飞船。
- 调用的是
Delete()而非使用DisableNoWait()并清除所有引用和链接。Delete()对飞船引用无效,因为它们是多个相互叠加的复杂引用组。相反,你需要禁用飞船或将其击毁,并将其留在一个未加载的单元中,直到游戏引擎的垃圾回收器来清理它。只要飞船不是以永久飞船(persistent ship)的形式生成,引擎就能正确处理。
解决方案:
本模组做了一些小改动:
- 它创建了一个空的“垃圾”单元,用于放置需要被击毁或清理的飞船。这样,任何脚本、任务等都无法扫描到它们,引擎也不会尝试加载它们。玩家无法到达此单元。
- 当飞船供应商处理其列表进行清理时,会将飞船放入垃圾单元。
- 然后禁用飞船。
- 最后,为了确保引擎知晓需要清理它,飞船会被击毁。
- 在对数组中的每艘飞船完成所有上述操作后,数组会被强制清空,这与原版行为一致。
兼容性:
- 飞船供应商框架 (SVF):补丁包含在可选文件部分。需要安装 飞船供应商框架。
- 任何修改了 ShipVendorScript 的模组或创作都将需要补丁。
安装说明
使用你喜欢的模组管理器安装。
我的其他模组
- 营养 - 更好的食物与饮料
- 双子座 - 进化船员大修
- 朝圣 - 技能大修
- 重力是真实的 - 内部重力匹配外部
- 升级信息提示系统
- 晨风风格升级信息提示
- 湮灭风格升级信息提示
- 玩家属性与状态系统 (PASS)
如果你想支持我:
正在加载版本记录…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。