
LateJoinSimple
中途加入:让任何人在卡车 / 商店 / 关卡进行中随时加入你的房间。基于Zichen的 LateJoinNow,在其授权下接手修复。中途加入 Simple / LateJoinSimple
REPO 游戏交流 QQ 群:573485890
感谢各位玩家长期以来的使用与支持。本模组的所有优化与修复,均基于本人随机加入房间、逐局查阅运行日志的实测排查;由于联机环境复杂,仍可能存在未覆盖的情况,欢迎反馈以便持续改进。
📜 版权声明与使用条款
应原作者要求,现补充说明如下。
Supplemented at the original author's request.
一、作品来源
本项目为衍生作品(derivative work):
- 上游原作:中途立即加入 / LateJoinNow,作者 Zichen(王子晨),版本 1.1.0。
- 本作品:LateJoinSimple,由 cn_xc 在上游基础上接手修复与继续维护, 已取得原作者本人许可后发布,并非原作官方发行。
- 本声明仅覆盖 cn_xc 新增与修改的部分,不改变上游原作的著作权归属。
原作者声明(照录,未做修改):
本模组为独家原创作品,禁止未经授权进行代码复制、二次打包移植, 反编译,或转载,违者将依法进行维权投诉。
二、授权范围
仅授权在 R.E.P.O.(REPO)游戏内以未经修改的形式运行本作品。 Licence granted: a limited, non-exclusive, non-transferable licence to run this work, unmodified, inside the game "R.E.P.O." only.
三、未经书面许可明确禁止
- 反编译、反汇编、逆向工程、脱壳,或提取本作品新增/修改部分的实现逻辑;
- 复制、改编、翻译、演绎,或基于本作品创作衍生作品;
- 二次打包、重新分发、上架第三方平台,或用于商业用途;
- 移除或篡改版权标识、原作者声明与本条款。
四、法律依据与后果
本作品作为计算机程序(按文字作品保护)受以下法律与国际条约保护: 《中华人民共和国著作权法》《计算机软件保护条例》, 以及《伯尔尼保护文学和艺术作品公约》、TRIPS 协定第 10 条。
对上述禁止行为的实施者,cn_xc 与上游权利人有权依据 《中华人民共和国著作权法》第五十二条、第五十三条及《计算机软件保护条例》 要求停止侵害、消除影响、赔偿损失;情节严重、以营利为目的的, 可能依据《中华人民共和国刑法》第二百一十七条(侵犯著作权罪)承担刑事责任。
说明:部分司法辖区(如欧盟 2009/24/EC 指令第 6 条)允许"为互操作性"的 有限反编译。本条款旨在明确作者的授权边界,并不排除法律强制赋予的权利。
五、致谢
- 感谢 Zichen(王子晨) 创作 LateJoinNow 并授权本项目继续维护。
- 感谢所有在 QQ 群与反馈中帮助测试的玩家。
English Version
1. Origin of this work
This project is a derivative work:
- Upstream original: LateJoinNow 1.1.0 by Zichen (王子晨).
- This work: LateJoinSimple, maintained by cn_xc, derived from the upstream original and published with the original author's permission. It is not an official release of the upstream project.
- The terms below cover only the portions added or modified by cn_xc; they do not alter the copyright ownership of the upstream original.
Original author's notice, quoted unchanged:
本模组为独家原创作品,禁止未经授权进行代码复制、二次打包移植,反编译, 或转载,违者将依法进行维权投诉。
(This mod is an original work. Unauthorised copying of code, repacking or porting, decompilation, or redistribution is prohibited; infringements will be pursued in accordance with the law.)
2. Licence granted
A limited, non-exclusive, non-transferable licence to run this work, unmodified, inside the game R.E.P.O. only.
3. Prohibited without prior written permission
- Decompiling, disassembling, reverse engineering, unpacking, or extracting the implementation of the portions added or modified here;
- Copying, adapting, translating or creating derivative works;
- Repacking, redistributing, publishing on third-party platforms, or any commercial use;
- Removing or altering this notice, the original author's notice, or any copyright identifier.
4. Legal basis and consequences
This work is a computer program protected as a literary work under the Berne Convention and TRIPS Agreement, Article 10, as well as the applicable domestic law, including the Copyright Law of the People's Republic of China and the Regulations on Computer Software Protection. The rights holders (cn_xc and the upstream rights holder) may seek injunctive relief, removal of infringing copies and damages; wilful infringement for commercial advantage may also carry criminal liability under Article 217 of the Criminal Law of the PRC.
Note: some jurisdictions (e.g. EU Directive 2009/24/EC, Article 6) permit limited decompilation for interoperability. This notice states the author's licensing boundary and does not exclude rights granted by mandatory law.
5. Credits
- Thanks to Zichen (王子晨) for creating LateJoinNow and for allowing this project to continue its maintenance.
- Thanks to all players who helped test and report issues.
Contact: QQ group 573485890, or leave a message on the mod page.
⚠️ 测试版说明(v0.5.18)
这是一个公开测试版。欢迎大家继续帮忙验证:
- 中途加入主流程已实测可用(排队 → 场景 / 物品 / 宝物 / 状态同步 → 落地动画 → 移动检测通过)。
- 联机细节仍可能存在未知问题,欢迎反馈。
- 反馈请附日志:
BepInEx/LogOutput.log(或 BepInEx 控制台),并说明是房主端还是加入者端。 - 本版相关修复:不再销毁带铰链的门(原版会销毁,可能导致加入者看到「只有门框、门没了」)。
- 本版新增:房间可见性同步(需双端都装)——房主把本局已探索的房间发给中途加入者,修的是游戏内地图(DirtFinder)上的房间揭示;并新增光照守卫,拦截光照系统异常以免整片房间不发亮。
- 「虚空门 / 缺墙 / 门框里没有门」已修复:0.3.4 起双端实测与日志中未再出现(
Level Point: Not connected、Ev Destroy Failed均已归零)。
✨ 功能
- 随时中途加入:朋友可以在卡车 / 商店 / 关卡进行中加入你的房间,三个场景可分别用配置控制。
- 房主权威:场景同步全部由房主执行,加入者只接收,避免状态污染。
- 同步内容:地图模块(墙体 / 内饰连接)、贵重物品价格与发现状态、物品属性,以及 22 项场景状态(撤离点、门禁、升级台、各类陷阱与宝物等)。
- 房间信息 HUD(房主与加入者都可见):左下角显示房间类型(含「可加入 / 已锁定」)、房间名称、当前人数、全部玩家名单(房主第一 → 其余按编号;每行 3~6 人可配)。
- 与房主的计数对比:HUD 首行显示你本机地图的「房间 / 墙 / 门」数量,并与房主上报的数量对比 —— 一致打
✓,不一致显示(房主N),可据此判断两边世界是否一致(虚空排查)。 - 中途加入进度显示:等待连接 / 排队中 / 加载中 / 已中途加入。
- 公开房名自动前缀:创建公开房时自动加
[中途加入-小菜]前缀。 - 切关冷却保护:切换场景时自动临时锁房,防止过渡阶段有人撞入。
- 双端协同优化:房主与加入者都装本模组时自动启用(加载更快、外观与语音自动刷新),HUD 中该玩家显示「(优化)」。
- 虚空兜底:地图分帧重发 + 20 秒移动检测,尽量避免加入者卡在虚空。
- 房间可见性同步(需双端都装):房主把本局已探索的房间发给中途加入者,让你的游戏内地图(DirtFinder)与团队一致(与「缺墙」不是同一条线)。
- 光照守卫:拦截光照系统的异常,避免中途加入时房间整片发黑。
- 中途加入稳健性:模块连接对每个加入者只发一次(避免抬高客户端的
ModulesSpawned)、后台只补发「没收到过」的模块、快捷栏槽位自动补注册、以及若干游戏侧 NRE 守卫。本模组不会改动任何墙 / 门 / 通路的开关。 - 冲突自检:检测到其它「中途加入」类模组时弹窗警告。
- 升级属性重放(0.5.0):中途加入者会错过历史上所有「购买升级」的网络 RPC,导致跳跃/体力/冲刺/力量/抓取范围/投掷/攀爬/翅膀/血上限等属性停留在默认值。现在加入后按
StatsManager存档调用游戏自带的PunManager.Update*RightAway重放一次。 OwnerOnlyRPC异常兜底(0.4.1):对象没有 owner 时,游戏自己的SemiFunc.OwnerOnlyRPC会在内部抛 NRE(导致抓取链接 / 地图工具等 RPC 失败)。现在捕获后放行并只记一次日志。[玩家视图]诊断(0.4.1,只读):加入后比对「房间人数」与「本机可见 avatar 数」,若本机 avatar 少于房间人数会明确提示 —— 用于定位「属性同步不了」是否其实是玩家视图缺失。[属性快照]/ 目标信息诊断(0.4.3,只读):房主推送时打印目标与数量;加入者落地 12 秒后打印本机看到的每个玩家血量/上限实际值 —— 两端对照即可判定属性是否真的收到。
📦 安装
- 确保已安装 BepInExPack。
- 将
LateJoinSimple.dll放入BepInEx/plugins。 - 启动游戏,模组会自动生成配置文件。
强烈建议:房主与加入者都装本模组(协同模式),可避免单端模式的已知问题(见下)。
⚙️ 配置
配置文件位置:BepInEx/config/cn_xc.LateJoinSimple.cfg
配置热重载:0.5.11 起,修改 cfg 后无需重启游戏,约 2 秒自动生效(日志会打印一次「检测到配置文件变更,已热重载」)。
| 配置项 | 默认值 | 说明 |
|---|---|---|
TeleportToHostOnJoin |
false |
加入后传送到房主位置;房主死亡则传送到最近的存活玩家 |
AllowJoinInTruck |
true |
卡车阶段允许中途加入 |
AllowJoinInShop |
true |
商店阶段允许中途加入 |
AllowJoinInLevel |
true |
关卡进行中允许中途加入 |
ShowRoomType |
true |
HUD 显示房间类型(公开 / 私人 / 单人) |
ShowRoomName |
true |
HUD 显示房间名称 |
HudNamesPerLine |
5 |
玩家名单每行显示几个(3–6) |
HudFontSize |
16 |
HUD 字号(10–28) |
HudOpacity |
80 |
HUD 文字透明度 %(20–100) |
VerboseLog |
false |
输出详细调试日志(排查问题时可开) |
ShowConflictWarning |
true |
检测到同类模组时弹窗警告 |
FixInventorySlots |
true |
中途加入后把场景里的 InventorySpot 补注册进 Inventory(修复快捷栏) |
ModuleResendSeconds |
60 |
后台只补发「尚未发过连接数据」的模块(每个模块只发一次;0 = 关闭) |
PlayerHealthSync |
true |
房主在加入者落地后推送每个玩家的血量 / 生命上限(修复「看不到别人的血」) |
PlayerCosmeticsSync |
true |
房主在加入者落地后推送每个玩家的外观颜色(修复「看不到别人的颜色」) |
ApplyUpgradesOnJoin |
true |
加入后按存档重放升级属性(跳跃/体力/冲刺/力量/抓取/投掷/攀爬/翅膀/血上限…) |
模组版本号 |
(已移除) | 0.5.12 起不再出现在配置界面:版本标记改为与 cfg 同目录的 cn_xc.LateJoinSimple.cfg.version 文件。0.3.5 起版本更新不会清空你的设置;若要还原默认,删除 cfg 后重启 |
⚠️ 已知问题
已修复(0.3.x)
- ✅ 虚空门 / 缺墙 / 门框里没有门 —— 已修复。0.3.4 之后的双端实测与日志中未再出现(
Level Point: Not connected从 31 归到 1 且仅剩入口点、Ev Destroy Failed从 122 归零)。 - ✅ 快捷栏限制(加入者无法把武器放进快捷栏)—— 已修复(
FixInventorySlots:关卡生成后把场景里的InventorySpot补注册进Inventory)。
以上修复都需要加入者也安装本模组(协同模式)。加入者是原版客户端时,本模组无法修正其表现。
混合模式 / 单端模式仍可能存在的问题(本模组无法修正)
以下两种情况本模组都无法修正 —— 「客户端协同补丁」需要房主也运行本模组才会启用:
- 房主没装任何中途加入模组,只有加入者装了本模组。
- 房主装的是 LateJoinNow(Zichen 原版),加入者装的是本模组 —— 两边房间属性键不同(
LateJoinNow.*vsLateJoinSimple.*),协议不通,等效单端。本模组检测到这种房主时会打一行明确提示。
表现(属预期,非 bug):日志可能出现 Received RPC "ModuleConnectionSetRPC" for viewID … but this …、Received RPC "DollarValueSetRPC" …、KeyNotFoundException: The given key '6024' —— 房主在同步「加入者本地并不存在」的对象;部分门 / 建筑物件与宝物数据可能缺失。
另有 部分建筑不可见:早期版本偶有反馈;0.3.4 之后的双端日志中未再出现,但未专门验证是否已完全消除。
规避办法:房主与加入者使用同一个中途加入模组(推荐都用本模组 → 协同模式)。
中途加入者的「玩家属性」同步
已覆盖的(房主在加入者落地后推送,并 4 秒后补一次):
- ✅ 血量 / 血上限(0.3.9)——
PlayerHealth.UpdateHealthRPC。开关PlayerHealthSync。 - ✅ 外观颜色(0.4.0)——
PlayerCosmetics.SetupColorsRPC(该 RPC 仅房主可发)。开关PlayerCosmeticsSync。 - 两个开关互相独立,只关一个不影响另一个。
游戏本身没有同步通道的属性(不存在"没同步"这回事):
- 升级属性:速度 / 力量 / 体力上限 / 攀爬 / 翅膀 / 电池 / 地图人数 / 蹲伏恢复 —— 这些在游戏里没有任何 PunRPC,是各客户端按本地存档计算的;其他玩家本来就不会看到你的升级数值(只能看到动作表现)。
尚未覆盖:
- 装扮(帽子等):其 RPC(
SetupCosmeticsRPC)需要int[],而本地字段是List,需要做一次转换,留待后续版本。
说明:PlayerHealth.Update 在「头像引用为空」时仍会跳过该组件的更新,以避免每帧刷 NRE(日志里的 PlayerHealth.Update 的头像引用为空… 即此),属于防崩措施,与本修复不冲突。
其它
- 过渡期禁入:最后一个提取点完成 → 下一关加载完成前,模组会临时拒绝新玩家加入,这是设计行为。
- 网络要求:房主未开加速器时,加入者可能连接超时或卡在加载界面。
- 人数上限:建议与 MorePlayersSimple 搭配;房间人数上限的修改只在创建房间前生效。
- 日志里的 Level Point: Not connected 可忽略:这是游戏自身提示,与外观无关。协同模式实测:该提示出现 1 / 15 / 31 条时,均未观察到虚空墙、门框没门或通路堵塞。
❓ 常见问题
Q:这个能和 Zichen 的 LateJoinNow 一起装吗? A:不能。两者 GUID 与房间属性键都不同,同时启用会出现重复 RPC 与缓存清理,导致卡加载 / 地图异常。请只保留一个。
Q:加入者的门框里没有门怎么办?
A:该问题已修复(0.3.4 起,协同模式下双端实测未再出现)。若仍遇到,请先确认加入者也安装了本模组,然后把双端 LogOutput.log 发我。
Q:怎么判断是不是协同模式? A:HUD 里玩家名后显示「(优化)」即表示协同模式生效。
Q:改了配置没生效?
A:配置在启动时读取,改完请重启游戏。版本更新不会清空你的设置(0.3.5 起);若要还原默认,删除 BepInEx/config/cn_xc.LateJoinSimple.cfg 后重启即可。
🙏 致谢
- ( Zichen) —— 原作「中途立即加入 / LateJoinNow」的作者。本模组的全部核心逻辑、场景同步思路与踩坑经验均来自其 1.1.0 版本,并在其授权下继续维护。
- 本 README 中的功能说明与「已知局限」记录同样来自原作文档。
- 测试协助:感谢 排排坐 食果果(绊倒铁盒) 与 Sunshine° 帮忙做双端联机测试与日志反馈。
QQ群:573485890