XTreme Fighter

XTreme Fighter

这使玩家能够通过将战斗分数要求从2560000000降低到2000000000来获得极限战士成就,而在2.5HF1补丁中,这个分数正常情况下无法达到。

杂项

在版本 2.5HF1 之前,由于引擎中的一个错误,无法达到 X-Treme Fighter 等级。

问题可能在于当 fight_score 超过最大有符号整数值(2147483647)时,与解锁成就所需的 2560000000 这个值进行比较会失败。

我怀疑 fight_score 在某个地方从 double 类型转换成了有符号整数,因此与超过最大有符号整数值的比较会失败。

我通过修改 libraries/stats.xml 文件,将要求降低到一个可行的值来修复这个问题。

上游错误报告链接:https://forum.egosoft.com/viewtopic.php?f=180&t=418449

原帖: fight_score 似乎达到了预期的 2560000000,但 fight_rank 却卡在 29,永远无法达到 "X-Treme" 等级,并一直停留在 "Supreme Veteran"。

我尝试了 3 个不同的游戏流程来获得这个最后的成就,但似乎无法达成。

这是一个来自未修改/原版游戏的存档,包含签名等所有信息,只差一艘被摧毁的船(fight_score=2559999999)就能获得该等级: https://rapsys.eu/egosoft/achievement/quicksave.7z

(如果需要,请解压并重新压缩为 gzip 格式)

以下是存档中的统计数据:

这个问题似乎只存在于 fight_score/fight_rank 中,而贸易方面我则毫无问题地获得了成就。

似乎还存在一个问题,即如果你出售了足够多的、在飞行员弃船后获得的船只(可能同样适用于野外的无主船只?),ships_owned 值可能会变为负数。

ships_destroyed 似乎存在类型值问题,它被限制在有符号整数(2147483647)的范围内,超过这个值后会变为负数。

如果我们摧毁了 2560000000 艘船,这意味着 ships_destroyed 将会变成 -412516352,哈哈...

你们能否检查一下这个成就是否存在问题?

我提取了 libraries/stats.xml 文件,并基于其中的分数进行了测试。

我强烈怀疑二进制代码中变量的类型存在问题,在不超过有符号整数最大值的情况下应该没问题,但之后就会出现问题。

相关参考: https://steamcommunity.com/app/392160/discussions/0/1743355067112037185/ https://forum.egosoft.com/viewtopic.php?t=418003

在确认有效之后: 已确认,通过使用一个将分数降低到无符号整数限制以下的扩展,我获得了该成就,很可能全世界首获 ^_^

所以编译后的代码中某个地方存在变量类型问题,并且你使用了一个超出边界的值。

这是该扩展:https://www.nexusmods.com/x4foundations/mods/341

唯一我不确定的是,当游戏被标记为已修改时,fight_score 是否会更新? (检查当你摧毁一架战斗机或类似事件时,双精度值是否与存档中的值匹配)

也许你需要在启用模块之前,让 fight_score 达到 2000000000 以上,才能激活它。 (在纯文本存档文件中搜索 fight_score 字符串以获取该值)

我在 Steam 账户上已经拿到了成就,这是我的目标,所以我不能再测试了。

我只是希望他们在有时间的时候能在游戏中修复这个问题。