You are viewing a potentially older version of this package.
View all versions.
| Date uploaded | 14 hours ago |
| Version | 1.9.0 |
| Download link | DestinyWind-SelfResurrection-1.9.0.zip |
| Downloads | 94 |
| Dependency string | DestinyWind-SelfResurrection-1.9.0 |
This mod requires the following mods to function
BepInEx-BepInExPack_PEAK
BepInEx pack for PEAK. Preconfigured and ready to use.
Preferred version: 5.4.2403README
Self Resurrection for PEAK
一键复活自己的 PEAK 模组。死亡变成幽灵后,按快捷键弹出复活菜单,选择队友即可原地复活并传送到队友身边,自带防弹飞处理。
作者: DestinyWind
功能特性
- 一键复活:死亡/幽灵状态下按快捷键(默认 Home)弹出复活菜单
- 选择队友传送:复活时可选择传送到任意队友身边
- 只复活自己:不影响其他客户端玩家,仅同步显示
- 昏迷队友可选:昏迷(未死亡)的队友也可作为传送目标
- 防弹飞处理:使用游戏自带 WarpPlayer 协程 + 上方偏移,避免传送弹飞
- 快捷键选择:支持数字键 1-9 和字母键 Q-P 快速选择队友(最多 19 个)
- 配置文件自定义:所有参数可通过 cfg 配置文件修改
- 中途加入支持:无论开局还是中途加入游戏,死亡后均可复活
- 只在游戏内生效:主菜单/加载界面不会误触发
安装方法
- 安装 BepInEx 5.4.2403 for PEAK
- 下载本模组的最新版本
- 将
DestinyWind.SelfResurrection.dll复制到PEAK/BepInEx/plugins/目录 - 启动游戏,首次加载会自动生成配置文件
使用方法
基本操作
- 游戏中死亡后变成幽灵(观战状态)
- 按 Home 键(默认)打开复活菜单
- 菜单显示所有可选队友列表:
选择复活目标队友
昏迷的队友也可作为目标
[1] 玩家A 距离 15m
[2] 玩家B 距离 23m
[3] 玩家C 距离 45m
...
操作:点击列表项 或 按对应数字/字母键 [1-9 Q-P] 快速选择
关闭:ESC 或再次按菜单键
[关闭 (ESC)]
选择队友的三种方式
| 方式 | 操作 | 说明 |
|---|---|---|
| 鼠标点击 | 点击列表项 | 直接选择 |
| 数字键 | 按 1-9 |
选择第 1-9 个队友(主键盘数字键,笔记本也能用) |
| 字母键 | 按 Q W E R T Y U I O P |
选择第 10-19 个队友(支持 20+ 玩家房间) |
关闭菜单
- 按 ESC 键
- 再次按 Home 键(菜单键)
- 点击"关闭"按钮
配置说明
配置文件位置:PEAK/BepInEx/config/destinywind.peak.selfresurrection.cfg
首次启动游戏后自动生成,可用文本编辑器修改:
[按键]
## 打开复活菜单的按键,可改为任意 KeyCode(如 F1/F5/T/Keypad7/Mouse3 等)。仅死亡/幽灵状态下生效。
# 设置类型:KeyCode
# 默认值:Home
MenuKey = Home
[防弹飞]
## 传送到队友上方的偏移(米)
# 设置类型:Single
# 默认值:2
TeleportOffsetUp = 2
[行为]
## 复活冷却秒数
# 设置类型:Single
# 默认值:1.5
Cooldown = 1.5
常用 KeyCode 值
| 按键 | KeyCode |
|---|---|
| Home | Home |
| F1-F15 | F1 - F15 |
| 字母 A-Z | A - Z |
| 数字 0-9 | Alpha0 - Alpha9 |
| 小键盘 0-9 | Keypad0 - Keypad9 |
| 鼠标左/右/中键 | Mouse0 / Mouse1 / Mouse2 |
| Insert / Delete / End | Insert / Delete / End |
| Tab / Space | Tab / Space |
防弹飞机制
PEAK 游戏中传送可能因物理碰撞导致角色被弹飞。本模组采用三重防护:
- 位置偏移:传送到队友上方 2 米处,避免踩到队友碰撞体
- 游戏自带 Warp:使用
WarpPlayerRPC(poof=true),游戏内部协程会关闭碰撞→逐帧移动→清零速度→恢复碰撞 - 上方偏移可调:如仍遇弹飞,可在配置文件把
TeleportOffsetUp调大到 3-4 米
复活机制说明
- 死亡→幽灵:游戏在角色死亡后自动创建 PlayerGhost 进入观战
- 复活流程:清除死亡/昏迷状态 → 清除所有状态效果 → 触发外观同步 RPC → 游戏自动销毁幽灵退出观战
- 复活惩罚:游戏自带 5% 诅咒 + 30% 饥饿(applyStatus=true 时)
- 网络同步:复活和传送通过 PhotonView RPC 同步到所有客户端,仅作用于自己的角色
常见问题
Q: 按键没反应?
- 确认 DLL 已放在
BepInEx/plugins/目录 - 确认 BepInEx 已正确安装(检查
BepInEx/LogOutput.log是否有加载日志) - 确认只在死亡/幽灵状态下才有效(活着时按键会提示"只有死亡/幽灵状态下才能复活")
Q: 配置文件没生成?
- 首次启动游戏后会在
BepInEx/config/自动生成 - 如果没生成,检查 BepInEx 日志确认模组是否加载成功
- 配置文件名:
destinywind.peak.selfresurrection.cfg
Q: 复活后被弹飞?
- 在配置文件增大
TeleportOffsetUp(默认 2,可调到 3-4) - 确保传送到的是开阔区域的队友
Q: 中途加入游戏能用吗?
- 可以。无论开局还是中途加入,死亡后都能正常复活
Q: 会不会复活其他玩家?
- 不会。复活逻辑只在本地执行,网络 RPC 仅同步显示,不会影响其他玩家的角色状态
Q: 队友死了能传送到他身边吗?
- 不能。已死亡或变成幽灵的队友会从列表中排除(三重检查:data.dead + IsGhost + 列表渲染检查)
- 昏迷(未死)的队友可以选择
兼容性
- BepInEx: 5.4.2403 (PEAK 版)
- 游戏版本: PEAK 最新版
- 多人游戏: 完全兼容,其他客户端无需安装本模组
- 冲突: 不修改任何游戏原始方法,仅通过 RPC 调用,兼容性良好
更新日志
详见 CHANGELOG.md
技术实现
- 通过反射调用游戏内部
Character.RPCA_Revive(bool)方法实现本地复活 - 通过
PhotonView.RPC("RPCA_Revive", RpcTarget.Others)同步其他客户端 - 通过
PhotonView.RPC("WarpPlayerRPC", RpcTarget.All, pos, true)实现防弹飞传送 - 使用
Character.IsGhost和CharacterData.dead双重判断幽灵状态 - 使用
Character.AllCharacters遍历可选队友
License
MIT License - 自由使用、修改、分发
CHANGELOG
Changelog
v1.9.0
- 全面审核复活功能,增强安全性和信息展示
- 菜单新增队友高度(H)显示,帮助判断队友是否在安全位置(避免传送到高空/地下)
- 菜单新增队友状态标记:[昏迷]/[半昏迷],直观显示队友状态
- 本地距离计算增加位置验证,死亡时本地位置异常不显示距离(避免误导)
- 复活后增加本地状态验证,确认 dead/fullyPassedOut 已清除
- 传送前重新获取队友最新位置,避免菜单打开期间队友移动导致传送到旧位置
- 最新位置异常时回退到之前验证过的安全位置
v1.8.2
- 修复复活传送到地图外的问题
- 根因:
Character.AllCharacters残留旧实例的Center(躯干位置)在旧场景/已销毁坐标,导致传送目标错误 - 去重逻辑改为优先选
activeInHierarchy的活跃实例,而非距离本地最近(死亡时本地位置可能在地下) - 新增位置合理性验证:
ally.Center.y必须在 -50 到 1000 之间(PEAK 海拔范围),异常则拒绝传送 - 传送前验证队友 GameObject 活跃,避免传送到已禁用的残留实例位置
- 菜单渲染时也跳过非活跃实例
v1.8.1
- 修复每个队友显示两个的问题
Character.AllCharacters在重连/场景切换时可能残留旧 Character 实例,导致同一玩家出现多个- 按 Photon
ActorNumber去重,每个网络玩家只保留一个 Character 实例 - 同一玩家若有多个实例,保留距离本地最近的(当前活跃角色,而非过时残留位置)
- 排除自己改为引用比较 + ActorNumber 双重保险,防止 localCharacter 引用失效
v1.8.0
- 彻底重写复活逻辑,解决本地不复活的问题
- 改用游戏自带
Character.Revive()public static 方法(游戏官方复活命令) - 该方法内部用
localCharacter.view.RPC("RPCA_Revive", RpcTarget.All, true),能直接访问 view 字段 - 无论房主与否都能自己复活,本地与其他客户端状态完全同步
RPCA_Revive无 IsMine 检查,所有客户端都会执行清除死亡/昏迷状态MainCameraMovement.LateUpdate检测 fullyPassedOut=false 后自动销毁幽灵退出观战- 传送用
MonoBehaviourPun.photonView基类属性(public),可靠获取 PhotonView - 增加详细日志,记录复活前后状态和 RPC 发送情况
- 删除不再需要的反射辅助代码(InvokeRpcRevive/GetPhotonView)
v1.7.0
- 修复复活无效的核心问题
- 改用
RpcTarget.All让本地也通过 Photon RPC 执行复活(模仿游戏自带Character.Revive()) - 去掉不可靠的反射调用
internal RPCA_Revive(跨程序集访问 internal 方法会失败) - 改用
GetComponent<PhotonView>()获取网络视图(view字段实际不可直接访问) - 传送 RPC 参数也改为直接传值,不用 object 数组包装
v1.5.1
- 面板尺寸恢复原始大小(380x320)
- 面板底部新增操作说明,告诉用户怎么选择复活
- 左上角提示字体增大 100%(16 → 32)
v1.5.0
- 提示字体增大 100%
- 选择面板增大 100%
- 新增数字键 1-9 和字母键 Q-P 快速选择队友(支持 20+ 玩家房间)
- 队友列表显示快捷键标签和距离
v1.4.2
- 修复模组无法加载导致配置文件不生成的问题
- 移除错误的 BepInDependency 特性(BepInEx-BepInExPack_PEAK 不是运行时插件 GUID)
v1.4.1
- 新增 Config.Save() 强制写入配置文件,确保首次加载就生成 cfg
v1.4.0
- 只有死亡/幽灵状态下才能复活(非死亡状态按键会被拒绝)
- 新增复活菜单选择队友(居中面板,列出所有活着且非自己的队友)
- 防弹飞三重保险:上方偏移 + 游戏自带 WarpPlayer 协程 + 额外清零速度
- 新增可配置项:传送偏移、清零速度开关
- 防止复活到其他幽灵身边(三重 IsGhost + data.dead 检查)
- 按键支持自定义(配置文件修改 KeyCode)
v1.3.0
- 精简功能(ponytail):删除冗余代码,DLL 体积减小 20%
- 昏迷队友也可作为复活目标
- 只在游戏内生效(本地角色未加载时拒绝操作)
- 健壮性加固:Update/OnGUI 异常保护、菜单状态保护、集合遍历快照
v1.2.0
- 只有幽灵状态才能复活
- 复活菜单选择队友
- 防弹飞处理
v1.1.0
- 确保只复活自己,不影响其他客户端玩家
- 网络同步改为 RpcTarget.Others,仅作用于自己的 PhotonView
v1.0.0
- 初始版本
- 一键复活自己(默认 Home 键)
- 通过反射调用 RPCA_Revive 实现原地复活