跳转至

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