找回密码
 初始化身份识别芯片
搜索
楼主: 常规型妹抖

经验内插 Progressive S-Mods 1.2.0

 荐  火.. [复制链接]

势力巨擘

发表于 1 小时前 | 显示全部楼层
大佬,我可能修了个BUG,使用经验内插内置插件后存档无法读档,删除使用过经验内插的舰船可解决,只是清空内插无法解决,我问了DeepSeeke,她说是经验内插自己的代码导致的:

// ShipSelector.onSelected()
Global.getSector().getCampaignUI().getCurrentInteractionDialog().getInteractionTarget()
      .getMemory().set("$selectedShip", fleetMember);   // 注释写着“供控制台命令使用”

它把一个 FleetMember 对象塞进了“交互目标实体”的持久内存(这里是 Exsedol 要塞的 CCEnt.me)。这个内存会被写进 campaign.xml;读档时 XStream 反序列化该 FleetMember,FleetMember.readResolve() 要求 getPlayerFleet() 已存在,而此时还没建好 → NPE → 整个存档读不出来。
Deepseek进行了修改:

·把 $selectedShip 改写到对话的临时内存(MemKeys.LOCAL)——不参与存档序列化,rules 依然能读到
·顺手清掉实体内存里遗留的旧键
·控制台命令改成优先读 LOCAL,保留原有功能

修改内容(7 个 class,其余 88 个 entry 字节未变)
|文件|改动|
|新增 progsmod/util/SelectedShip.java|选中舰船改写进 MemKeys.LOCAL(对话临时内存,不入存档),rules 仍能读到 $selectedShip;并清除实体内存里旧版本遗留的键|
|ShipSelector.java|改用 SelectedShip.set(...)(重新取当前对话,与原写法一致)|
|LunaSModButton.java|同上(LunaLib 改装按钮那条路径,同样有毒)|
|AddShipXP / AddReserveShipXP / ClearShipData|改为 SelectedShip.get(...),优先读 LOCAL 并兼容旧值,控制台命令功能保留|
已确认 local 键由引擎在 RuleBasedInteractionDialogPluginImpl 里自行注册(Map.put("local", ...)),所以菜单逻辑不受影响。

你看要不要更新一下mod?

Progressive S-Mods.rar

348.14 KB, 下载次数: 0

*滑块验证:

本版积分规则

Archiver|手机版|小黑屋|远行星号中文论坛

GMT+8, 2026-10-18 18:23

Powered by Discuz! X3.5

© 2001-2077 Tencent Cloud | Durian Software Studio | IP地址位置数据由纯真CZ88提供支持

快速回复 返回顶部 返回列表