Skip to content

Releases: Crystalpiny/KeyTips-5.0BE

Key Tips 1.1.0 — SPT 5.0BE (IL2CPP) 移植版

Choose a tag to compare

@Crystalpiny Crystalpiny released this 20 Oct 14:28

Key Tips 1.1.0 ported to SPT 5.0BE (IL2CPP client). Unzip over your SPT 5.0BE folder: KeyTips.Client.dll plus its locales\ folder land in BepInEx\plugins\KeyTips\. Client only, no server part.

把 zip 直接解压到 SPT 5.0BE 根目录即可使用(dll 与 locales\ 一起落到 BepInEx\plugins\KeyTips\),纯客户端、无服务端部分。启动后 BepInEx\LogOutput.log 应出现 KeyTips 1.1.0 loaded (SPT 5.0BE):4/4 个补丁生效。

注意:locales\ 必须和 dll 同级,缺了它提示会退化成英文键名(door_locked 这种)。

Install / 安装

  1. Unzip over the SPT 5.0BE root (back up an existing BepInEx\plugins\KeyTips\ first); the game must be fully closed while replacing the dll.
  2. Start the game and check BepInEx\LogOutput.log for the four 补丁 <名字> 已启用 lines and 4/4 个补丁生效.
  3. In raid: interact with a locked door you have no key for → "锁上了(需要 XXX)"; unlock one with the key → "使用了 XXX (剩余 n/m)"; the last use adds an alert.

验收步骤与判定标准详见仓库 docs/INSTALL.zh.md。

Credits / 致谢

Original Key Tips by HiddenCirno — mod page · source, MIT License. 本版本仅将该作品移植到 SPT 5.0BE 的 IL2CPP 客户端,改动只涉及编译体系与 IL2CPP 适配;「锁着的门告诉你要哪把钥匙 / 钥匙还剩几次」这个想法、四个补丁的语义、提示文案与语言包机制全部归原作者。如果 mod 帮到了你,请到 原 mod 页面 点赞致谢。🙏

What changed vs the 4.1.x original / 相对 4.1.x 原版

  • Rebuilt for IL2CPP: netstandard2.1 + BepInEx 5 BaseUnityPlugin.Awake → net10.0 + BepInEx 6 BasePlugin.Load;空的生命周期方法(Start/Update/OnGUI)随 MonoBehaviour 形态一起删除。
  • [BepInDependency] 指向 5.0BE 核心插件 id(com.sptushonka.core 5.0.0,原为 com.SPT.core 4.1.0)。
  • 补丁改为逐个 CreateClassProcessor().Patch() + 各自 try/catch 与日志(单个失败不影响其余,日志能直接看出生效几个)。
  • NotificationManager.DisplayMessageNotification 在 5.0BE 只剩 5 参重载(尾参 Color? / bool)→ 调用补 default, false。
  • LocalizationManager._instance → LocalizationManager.Instance(5.0BE 的公开入口)。
  • 插件自身 JSON 从游戏内 Newtonsoft 改为托管 System.Text.Json:interop 版 Newtonsoft 的 [JsonProperty] 不是可用特性类,也无法反射插件里的托管 POCO。
  • UnlockOperation 多出的第三个参数 WorldInteractiveObject wio 不需要处理:Harmony postfix 按参数名绑定,key / player 两名未变。
  • 删除上游死代码:GameWorld.OnGameStarted 捕获的 CorrectPlayer/CorrectGameWorld/CorrectGroupId 从未被任何补丁使用;未被引用的 ConfigurationManagerAttributes.cs 与一串没用到的 csproj 引用一并清理。
  • 上游语义原样保留:提示文案、语言包格式、i18n() 语法糖、钥匙名回退到模板 Id 的逻辑,以及「普通门需 __result.Error 非空才提示、刷卡门不判 Error」的条件。

Full notes: docs/PORTING-NOTES.zh.md.

Status / 状态

  • 静态校验:四个补丁目标在 5.0BE interop 全部命中;Door 未重写 UnlockOperation,故基类 + KeycardDoor 两处即覆盖全部门类;游戏 API 引用 0 缺失,0 警告 0 错误编译通过。
  • 实机验收待做 —— 本次移植没有进战局跑过,请按安装清单第 2、3 步确认。
  • 已知:bot 用钥匙开门同样会弹提示(上游 4.1 的原有行为,移植未擅自加过滤);Fika 联机未测试。