跳转至

HolyPartyServerAPI

服务端入口类,所有方法均为 @staticmethod

from HolyPartyScripts.server.HolyPartyServerAPI import HolyPartyServerAPI

队伍查询

getPlayerCurrentParties(playerId)

返回玩家当前所在的全部队伍(包装为 CurrentParty)。

@staticmethod
def getPlayerCurrentParties(playerId):
    # type: (str) -> list[HolyPartyServerAPI.CurrentParty]

参数

名称 类型 必填 说明
playerId str 玩家 ID

返回

list[HolyPartyServerAPI.CurrentParty] —— 队伍列表,按内部存储顺序返回。玩家不在任何队伍时返回 []

返回 CurrentParty 而非 PartyServer

内部为防止外部代码越权修改队伍状态,统一返回 CurrentParty 包装类。如需访问完整 PartyServer 对象,调用 currentParty.getParty(),但请只读使用。

示例

parties = HolyPartyServerAPI.getPlayerCurrentParties(playerId)
if not parties:
    print("玩家不在任何队伍")
else:
    for cp in parties:
        print("[{}] {}".format(cp.getPartyId(), cp.getPartyName()))

事件系统

getApiEvents()

返回可注册事件的枚举类。

@staticmethod
def getApiEvents():
    # type: () -> type[HolyPartyServerAPI.ApiEvents]

返回

type[HolyPartyServerAPI.ApiEvents] —— 包含四个事件枚举项:MemberJoinedPartyEventMemberLeftPartyEventMemberRoleChangedEventPartyRolePermissionChangedEvent


getPartyEventPriorityEnum()

返回事件优先级枚举类。

@staticmethod
def getPartyEventPriorityEnum():
    # type: () -> type[ModEventPriorityEnum]

返回

type[ModEventPriorityEnum] —— 5 个等级。

Info

HolyParty 使用通用的 ModEventPriorityEnum,不像 PlayerRevive / LimbHealth 各自定义专属优先级类。


registerEventHandler(event, func, priority=None, *presetArgs)

注册事件处理器。

@staticmethod
def registerEventHandler(event, func, priority=None, *presetArgs):
    # type: (HolyPartyServerAPI.ApiEvents.EnumObject | type, callable, ModEventPriorityEnum.EnumObject | None, *any) -> None

参数

名称 类型 必填 说明
event ApiEvents.EnumObject | type 通过 getApiEvents() 取得
func callable 处理器,签名为 (*presetArgs, event) -> None
priority ModEventPriorityEnum.EnumObject | None ❌(默认 NORMAL 触发优先级
*presetArgs any 预置参数

返回

None

异常

  • TypeError —— event / func / priority 类型错误时抛出。

示例

api = HolyPartyServerAPI
events = api.getApiEvents()
priorityEnum = api.getPartyEventPriorityEnum()

def onRoleChanged(event):
    print("{} 把以下玩家角色改为 {}: {}".format(
        event.getCallerName(),
        event.getNewRoleName(),
        event.getTargetIds(),
    ))

api.registerEventHandler(
    events.MemberRoleChangedEvent,
    onRoleChanged,
    priorityEnum.NORMAL,
)

unregisterEventHandler(event, func)

取消事件处理器注册。

@staticmethod
def unregisterEventHandler(event, func):
    # type: (HolyPartyServerAPI.ApiEvents.EnumObject | type, callable) -> None

参数

名称 类型 必填 说明
event ApiEvents.EnumObject | type 与注册时相同
func callable 与注册时相同的函数对象

返回

None

异常

  • TypeError —— event / func 类型错误时抛出。

CurrentParty

HolyPartyServerAPI 的嵌套类,作为对外暴露的只读包装

外部一般不直接构造,而是通过 getPlayerCurrentParties 取得。

getParty()

取得内部 PartyServer 实例。

def getParty(self):
    # type: () -> PartyServer

只读使用

PartyServer 是 HolyParty 内部状态对象,外部代码只应读取其属性。任何写操作可能导致状态不一致或与持久化层冲突。

getPartyKey()

取得 PartyKey 轻量标识对象。

def getPartyKey(self):
    # type: () -> PartyKey

每次调用都会新建一个 PartyKey 实例。

getPartyId()

队伍 ID 字符串(与 getPartyKey().getPartyId() 等价)。

def getPartyId(self):
    # type: () -> str

getPartyName()

队伍显示名(与 getPartyKey().getPartyName() 等价)。

def getPartyName(self):
    # type: () -> str