Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
betterdoor
Break doors and lock/unlock with keys. Fixes host/client door state synchronization. 所有人安装 0.1.6 并重启。
By HJM
| Last updated | 14 hours ago |
| Total downloads | 42 |
| Total rating | 0 |
| Categories | Tweaks & Quality Of Life AI Generated |
| Dependency string | HJM-betterdoor-0.1.6 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305README
betterdoor 0.1.6
修复 0.1.5 的联机消息被丢弃:Unity NGO 的具名消息回调保留了 8 字节消息名哈希,此时 FastBufferReader.Length 为 72、Position 为 8,正文为 64。旧代码错误检查 Length == 64,导致房主本地破门成功,但远端收不到状态;客人的伤害、钥匙请求和状态补同步也会被丢弃。0.1.6 改为检查 Length - Position == 64,保持消息结构和既有门交互逻辑。
房主和所有队员都要更新为 0.1.6,并退出游戏后重新启动。将此 ZIP 通过 r2modman 的 Import local mod 导入,或把 BepInEx/plugins/HJM_betterdoor/HJM.doors.dll 替换进对应配置的旧 betterdoor 模组目录。保留同一个配置中一份门模组 DLL。此包未上传平台。
功能沿用 0.1.5:门默认 100 血,普通铲子每击 20 伤害;破门后解锁并保留正常开关交互,损坏的门锁不能重新上锁。钥匙对关闭的完整门执行锁门,对锁门执行解锁,成功后消耗钥匙。保留自定义近战工具的既有适配。门血量和伤害配置不变。
验证:两个独立 Lethal Company v81 进程通过真实 UnityTransport/NGO 消息通信,在旧 0.1.5 DLL 上复现 72/8/64 长度误判并超时;修复后请求、回复、广播、确认均通过。进一步使用实际生成的原生 DoorLock、AnimatedObjectTrigger、InteractTrigger、NavMeshObstacle 和嵌套双门预制体,运行房主破门、客人锁门、房主解锁、客人破门、双扇门、锁门交互拦截、损坏后禁止重锁、丢失缓存后补同步、补同步保留已关闭的破门状态;房主 12 项、客人 17 项检查通过。
验证边界:上述双进程检查用本地 UDP 运行真实游戏网络组件,并手动驱动网络更新;测试门设为 20 血便于每个发起人用一次真实请求覆盖同步,发行版仍默认 100 血。钥匙成功后的消费确认消息已验证送达,但测试没有执行完整玩家背包销毁流程。尚未进行真人 Steam 房间的画面、碰撞和完整钥匙背包验收;这不等于已通过全部实际游戏场景。
源码位于 src,build.py 使用本机已有 Roslyn 编译器和游戏/BepInEx 程序集构建。run_wire.py --baseline 复现旧 DLL 错误;run_wire.py 验证修复后的消息层;run_states.py 验证双方门状态。测试所需对象与运行目录均独立,不改游戏存档。
原因对应的 Unity NGO 源码:https://github.com/Unity-Technologies/com.unity.netcode.gameobjects/blob/ngo/1.12.0/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/NamedMessage.cs