
轨道交通修复 - 持久飞船交通管理器脚本修复
修复了一个原版bug,该bug会导致离开轨道后轨道交通脚本仍在运行,使Papyrus日志充斥大量信息并浪费脚本时间。
查看大图[color=#d6a94b][size=5]轨道交通修复[/size][/color]
持久性飞船交通管理器脚本修复
阻止原版轨道交通 Bug 在存档的剩余游玩过程中持续跟随你。
[color=#d6a94b][size=4]说明[/size][/color]
[color=#3c78d8]制作这个模组是因为我在测试、更新和制作其他模组时,自己的存档也遇到了这个问题。[/color]
杰米森、火星、阿基拉和空间站等地点周围的繁忙轨道使用原版 SQ_TrafficManagerScript 来生成和管理环境飞船交通。 原版的关闭逻辑存在一个时序 Bug。 如果在你离开轨道时,脚本的某次周期性交通检查已经在运行,那么即使交通任务已停止,该检查仍可能继续存活。 已停止的任务消失了,但它遗留的计时器没有消失。 该计时器会每隔几秒继续唤醒,尝试处理已不存在的飞船,并再次安排自身。 启用 Papyrus 日志后,会产生重复错误,例如: [quote]Cannot call HasKeyword() on a None object Cannot call GetLinkedRef() on a None object Cannot call getDistance() on a None object[/quote]在一个受影响的测试存档中,SQ_TrafficManagerScript.CheckState 占所有 Papyrus 日志条目的约 55–78%,每分钟约产生 150–700 行。 该 Bug 与时序相关,因此并非每个存档或每次离开轨道都会触发。
[color=#d6a94b][size=4]这实际影响什么?[/size][/color] 这有两个不同的影响。
[color=#79a9d1]1. 脚本持续运行[/color]
无论是否启用 Papyrus 日志,遗留的计时器都会继续执行。 每次运行时,它都会处理无效的飞船引用,并占用其他游戏脚本和基于脚本的模组所使用的部分 Papyrus 脚本执行时间。
这不会改变游戏内时钟。
[u]
- 这也不意味着本模组是一个“帧数修复”。[/u]
[u]
- 卡住的交通脚本具体性能开销尚未经过独立测量,因此不声称也不承诺任何具体性能提升。[/u]
-我能说的是,根据我自己的测试,Papyrus 日志刷屏完全停止了,一些原本迟缓的基于脚本的模组之后开始更快地完成工作。我也感觉脚本总体响应性略有改善,但这部分是主观的,可能只是安慰剂效应。我不会把它当作经过测量的性能结果。
[color=#79a9d1]2. Papyrus 日志记录会暴露错误刷屏[/color] 如果启用 Papyrus 日志,每次失败的调用还会连同其堆栈信息一起写入日志。 这就是数百条可见错误的来源。 在禁用日志记录时(大多数玩家都是如此),这些行不再写入磁盘。 但是,遗留脚本本身仍在运行。
[color=#d6a94b][size=4]此修复的作用[/size][/color]
- 停止遗留计时器 一旦交通任务关闭,其周期性交通计时器就不再被允许自行重启。
- 移除失效飞船条目 无效的飞船引用会被移除,而不是被反复处理。
- 验证生成位置 当没有有效生成位置时,交通不会尝试生成。
- 忽略失败的生成 生成失败的飞船不会被加入活动交通列表。
- 使关闭重叠安全 当交通检查已在运行时离开轨道,不再会把周期性检查遗留下来。
- 添加备用关闭 如果正常的“离开轨道”事件偶尔未被捕获,交通系统仍能识别出它不应再运行。
- 除此以外,正常轨道交通保持不变。 当你实际身处轨道时,相同的飞船、路线、交通上限和正常原版行为都会保留。
[color=#d6a94b][size=4]预防与现有存档[/size][/color] Orbit Traffic Fix 既可作为预防性修复,也可作为已受影响存档的清理工具。
[color=#79a9d1]预防[/color] 关闭竞争不再会在任务停止后留下周期性交通计时器继续运行。 飞船生成失败也不会再留下无效条目。
[color=#79a9d1]已受影响[/color] 安装模组并正常加载存档。 现有的卡住交通脚本会在下一次交通检查时自行清理,通常在几秒内完成。 无需控制台命令。 使用 stopquest 无法修复原版问题,因为交通任务已经停止。问题在于其关闭后存活的计时器。
[b][u]你无需在安装模组前判断存档是否受影响。[/u][/b]
[color=#d6a94b][size=4]如何检查你的存档[/size][/color] 目前没有我推荐作为此问题可靠测试的控制台命令。 在 PC 上确认此问题最直接的方法是通过 Papyrus 日志。 1. 打开: ** [quote]Documents\My Games\Starfield\StarfieldCustom.ini[/quote]在 [Papyrus] 部分下,添加或修改以下行: ** [quote][Papyrus] bEnableLogging=1 bEnableTrace=1[/quote]** 如果你已经有 [Papyrus] 部分,不要添加第二个。只需在现有部分下添加或修改这两个设置。1.**
在以下位置启用 Papyrus 脚本日志: [quote]Documents\My Games\Starfield\StarfieldCustom.ini[/quote] 2. 加载你的存档。 3. 停留在明显不是轨道的地方,例如城市或行星表面,约一分钟。 4. 退出游戏。 5. 打开: [quote]Documents\My Games\Starfield\Logs\Script\Papyrus.0.log[/quote]6. 搜索: [quote]SQ_TrafficManager[/quote] [color=#d67a4b]受影响的存档[/color] 即使你根本不在活动轨道附近,也会看到相同的交通错误每隔几秒重复出现。 例如: [quote]Cannot call HasKeyword() on a None object[/quote]并且关联堆栈中包含 SQ_TrafficManagerScript.CheckState()。
[color=#79a9d1]未受影响的存档[/color] 在离开轨道时,你不应看到交通管理器反复生成这些错误。 之后请关闭 Papyrus 日志,除非你主动用它进行故障排查。
你无需在安装 Orbit Traffic Fix 前检查存档。 该模组可以直接以预防方式安装。
[color=#d6a94b][size=4]下载选项[/size][/color] 版本 1.0.0 提供两种安装格式。
[color=#ffff00][size=6]只[/size][/color][color=#ffff00][size=6]安装一个版本。[/size][/color]
[color=#79a9d1]松散脚本版本[/color] 推荐给大多数 Nexus PC 用户。 包含: [quote]Scripts/SQ_TrafficManagerScript.pex OrbitTrafficFix-INSTALL.txt[/quote]无插件。 无加载顺序槽位。 如果另一个松散文件模组提供相同脚本,Vortex 和 Mod Organizer 2 也可以直接报告文件冲突。 该脚本会覆盖存储在 Starfield - Misc.ba2 中的原版副本。
[color=#79a9d1]ESM / BA2 版本[/color] 包含: [quote]OrbitTrafficFix.esm OrbitTrafficFix - Main.ba2 OrbitTrafficFix-INSTALL.txt[/quote]该 ESM 是一个小型轻量标记主文件,其目的是加载包含修复脚本的 BA2。 它不会修改任何游戏记录。 插件必须保持启用,其归档才会加载。 如果你希望模组出现在游戏的插件列表中,或更喜欢基于归档的安装方式,此版本可能更合适。
[color=#d6a94b][size=4]重要:松散文件与归档[/size][/color] Starfield 赋予松散文件高于 BA2 归档内文件的优先级。 如果你使用 ESM / BA2 版本,这一点很重要。 如果另一个模组将以下文件安装为松散文件: [quote]Scripts/SQ_TrafficManagerScript.pex[/quote]那么无论 OrbitTrafficFix.esm 在你的插件加载顺序中位于何处,该松散脚本都会覆盖 OrbitTrafficFix - Main.ba2 内的副本。 如果两个基于归档的模组包含相同脚本,插件加载顺序决定哪个归档副本胜出。 为了在 PC 上获得最简单的冲突检测,请使用松散版本。
[color=#d6a94b][size=4]兼容性[/size][/color] Orbit Traffic Fix 仅更改: [quote]SQ_TrafficManagerScript[/quote]它不会改动交通记录、飞船列表或轨道位置。
[color=#d67a4b]已知冲突[/color] Interstellar Traffic - Nexus Mod 12509 Interstellar Traffic 提供了同一交通脚本的自己的版本。 SQ_TrafficManagerScript 实际上只能运行一个版本。 如果你使用 Interstellar Traffic,请不要安装 Orbit Traffic Fix,除非该模组已整合等效修复。
[color=#79a9d1]兼容于[/color] -交通飞船列表模组 更改交通系统可用飞船的模组兼容,只要它们不替换 SQ_TrafficManagerScript 本身。
-交通数量模组 更改最大交通数量的模组兼容。
-交通设置与标记模组 更改交通设置或交通标记的模组兼容。
-直接放置的轨道飞船 将飞船直接放入轨道单元格的模组兼容。
-Orbital Defense Capital Ships 兼容。
-Starfield Community Patch 兼容。它目前不替换此脚本。
-Unofficial Starfield Patch 兼容。它目前不替换此脚本。
[color=#d6a94b][size=4]需求[/size][/color] Starfield 基础游戏 无需 SFSE 松散版本不需要插件。 ESM / BA2 版本使用其包含的轻量主文件。
[color=#d6a94b][size=4]安装[/size][/color] 使用 Vortex、Mod Organizer 2 或手动正常安装。 安装松散版本或 ESM / BA2 版本之一,不要同时安装两者。 该模组可以在游戏中途安装。 也可以安装到已经发生交通 Bug 的存档上。
[color=#d6a94b][size=4]卸载[/size][/color] 可安全卸载。 [color=#79a9d1]松散版本[/color] 移除: [quote]Scripts/SQ_TrafficManagerScript.pex[/quote]Starfield 随后将恢复使用游戏 BA2 归档中的原版脚本。
[color=#79a9d1]ESM / BA2 版本[/color] 移除或禁用: [quote]OrbitTrafficFix.esm OrbitTrafficFix - Main.ba2[/quote]该脚本包含一个供修复使用的小型附加变量。 如果移除模组,该未使用变量会被自动丢弃。
[color=#d6a94b][size=4]测试[/size][/color]
-受影响存档清理 交通脚本错误从每分钟约 150–700 条降至零。
-阿基拉轨道 正常飞船交通继续正确生成和飞行。
-火星轨道 正常飞船交通继续正确生成和飞行。
-杰米森轨道 正常飞船交通继续正确生成和飞行。
-离开轨道 离开后交通正确关闭。
-FreeLanes 抵达 确认离开轨道后干净关闭。
-重力跳跃 确认干净关闭。
-回访 重新访问相同星系时交通正常恢复。
-现有受影响存档 卡住的计时器无需控制台命令即可自行清理。
[color=#d6a94b][size=4]原版 Bug 报告[/size][/color] 底层交通问题自 2023 年 9 月起已在 Unofficial Starfield Patch 错误追踪器上报告。 AFKTrack #33147 AFKTrack #33132 这些报告由 Arthmoor 开启,并已上报给 Bethesda。 截至 2026 年 9 月,底层原版问题仍未修复。
[color=#d6a94b][size=4]致谢[/size][/color] Bug 报告: AFKTrack #33147 和 #33132 Unofficial Starfield Patch 追踪器
Bethesda 为我创造了一个我又爱又恨的游玩沙盒。 “这是特性,不是 Bug!”
修复: 基于 Starfield 1.16.244 的 SQ_TrafficManagerScript 构建。
[color=#8FBF9F][size=5]更多来自我的作品[/size][/color]
如果你喜欢这个项目,你可能也会对我对已弃用或过时 Starfield 模组的更新版本、现有模组的附加组件和修复,以及我自己的原创项目感兴趣。
[color=#79A9D1]更新与延续的模组[/color]
[url=https://www.nexusmods.com/starfield/mods/18296]**Improved Follower Behavior - Updated Expanded (Unofficial)**[/url] 一个更新并扩展的延续项目,专注于更紧密、更流畅的随从行为、更好的重新集结、改进的潜行处理以及更自然的同伴移动。
[color=#D6A94B]附加组件与修复[/color]
[url=https://www.nexusmods.com/starfield/mods/18308]**Spacesuit Hazard Restoration - Recipe, Loot and Medical Vendor Add-on**[/url] Spacesuit Hazard Restoration 的附加组件,修复 Hazard Protection Injector 制作配方,并通过医疗和化学容器以及医疗供应商扩展获取途径,同时保留原模组现有的分发。
[url=https://www.nexusmods.com/starfield/mods/18325]**Orbit Traffic Fix**[/url] 修复一个原版 Bug,该 Bug 可能在你离开轨道后仍让轨道交通脚本继续运行,浪费 Papyrus 脚本时间,并在受影响的存档中向日志刷错误。
[color=#B89AD6]原创模组[/color]
[url=https://www.nexusmods.com/starfield/mods/18301]**Here Fishy Fishy — Chasmbass Chum**[/url] 一个可重复的 Chasmbass 狩猎系统,位于霓虹下方的水域,包含可制作的诱饵、隐藏遭遇、稀有捕获物,以及偶尔出现的掠食者。
[url=https://www.nexusmods.com/starfield/mods/18325][/url]
[center][/center]
[center]Orbit Traffic Fix 1.0.0[/center]
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。