PlayerRevive 类型与事件¶
模组暴露给外部的事件类、枚举与数据类型。事件类可用 api.registerEventHandler() 注册监听。
ApiEvents¶
可注册事件的枚举集合,通过 PlayerReviveServerAPI.getApiEvents() 获取。
class PlayerReviveServerAPI.ApiEvents(BaseEnum):
ReviveNeededUpdateEvent # 玩家倒地状态切换
ReviveMaxHealthUpdateEvent # 倒地血量上限更新
ReviveHealthUpdateEvent # 倒地血量数值更新
每个枚举项是 ApiEvents.EnumObject,可通过 .getEventCls() 取出对应的事件类。注册事件时传入枚举项或事件类本身均可。ApiEvents 继承自 BaseEnum,可调用 values() / valueOf(name) 反射访问。
ReviveNeededUpdateEvent¶
玩家进入或退出「倒地」状态时触发。
| 属性 | 类型 | 说明 |
|---|---|---|
playerId |
str |
状态发生变化的玩家 ID |
isNeedRevive |
bool |
True 表示进入倒地状态,False 表示退出(被救援 / 死亡 / 重生) |
damagerId |
str | None |
触发倒地的实体 ID(若是退出倒地则为 None) |
isCancelled |
bool |
是否取消本次进入倒地。初始值为 False,仅在 isNeedRevive == True 时生效 |
Getter
| 方法 | 返回 |
|---|---|
getPlayerId() |
str |
getIsNeedRevive() |
bool |
getDamagerId() |
str | None |
getIsCancelled() |
bool |
Setter
| 方法 | 参数 | 说明 |
|---|---|---|
setCancelled(isCancelled) |
bool |
设置是否取消本次进入倒地。设置取消后,玩家的生命值跟受伤前相比不会变化。 |
取消只允许用于进入倒地事件
只有当 event.getIsNeedRevive() == True 时,setCancelled(True) 才有实际效果。此时玩家不会进入倒地状态,enterNeedReviveState(...) / enterNeedReviveStateByExternalFatalCondition(...) 会返回 False。
当 event.getIsNeedRevive() == False 时,即使调用 setCancelled(...),退出倒地流程也不会被拦截。
示例
def onReviveNeededUpdate(event):
if event.getIsNeedRevive():
if shouldBlockDown(event.getPlayerId()):
event.setCancelled(True)
print("玩家 {} 被阻止进入倒地".format(event.getPlayerId()))
return
print("玩家 {} 进入倒地状态,凶手: {}".format(event.getPlayerId(), event.getDamagerId()))
else:
print("玩家 {} 退出倒地状态".format(event.getPlayerId()))
api.registerEventHandler(
api.getApiEvents().ReviveNeededUpdateEvent,
onReviveNeededUpdate,
)
ReviveMaxHealthUpdateEvent¶
玩家的倒地血量上限发生变化时触发。
| 属性 | 类型 | 说明 |
|---|---|---|
playerId |
str |
玩家 ID |
newMaxHealth |
float |
新的倒地血量上限 |
Getter
| 方法 | 返回 |
|---|---|
getPlayerId() |
str |
getNewMaxHealth() |
float |
ReviveHealthUpdateEvent¶
玩家的倒地血量数值发生变化时触发。
| 属性 | 类型 | 说明 |
|---|---|---|
playerId |
str |
玩家 ID |
oldHealth |
float |
变化前的倒地血量 |
newHealth |
float |
变化后的倒地血量 |
Getter
| 方法 | 返回 |
|---|---|
getPlayerId() |
str |
getOldHealth() |
float |
getNewHealth() |
float |
Note
若 newHealth == 0 且玩家此前已处于倒地状态,则随后会触发死亡逻辑。订阅 ReviveHealthUpdateEvent 用于显示血条变化或预警,订阅 ReviveNeededUpdateEvent 用于做最终的死亡 / 倒地判定。
PlayerReviveEventPriorityEnum¶
事件处理器执行优先级。slot 越小越先触发。
from PlayerReviveScripts.common.enum.PlayerReviveEventPriorityEnum import PlayerReviveEventPriorityEnum
| 常量 | slot |
触发顺序 |
|---|---|---|
LOWEST |
0 |
最先触发 |
LOW |
1 |
|
NORMAL |
2 |
默认值 |
HIGH |
3 |
|
HIGHEST |
4 |
最晚触发 |
ApiEvents.EnumObject¶
每个 ApiEvents 成员的实际类型。
| 方法 | 返回 |
|---|---|
getEventCls() |
type —— 对应的事件类(如 ReviveNeededUpdateEvent) |