Plugin
插件主类
Attributes
attribute
namestr
= ''
插件名
attribute
version= (0, 0, 1)
插件版本号
attribute
authorstr
= '?'
作者名
attribute
description= '...'
简介
attribute
__path_created__= False
attribute
frame= frame
attribute
game_ctrl= frame.get_game_control()
attribute
data_pathPath
该插件的数据文件夹路径 (调用时直接创建数据文件夹)
Functions
func
__init__(self, frame)
param
selfparam
frameToolDelta
Returns
None
func
make_data_path(self)
Deprecated: 获取 data_path 属性时会自动创建缺失的插件数据路径。
param
selfReturns
None
func
print(self, msg)
param
selfparam
msgstr
Returns
None
func
format_data_path(self, *paths)
Deprecated: Use plugin.data_path / "dirpath" / "to" / "file" instead.
将所给路径与该插件的默认数据文件存放处拼合,
等价于 os.path.join(self.data_path, *paths)
Returns: type: description
param
selfparam
pathsstr
= ()
Returns
None
func
get_config_and_version(self, template, default_cfg)
获取该插件的配置文件及版本
Args: plugin_name (str): 插件名 template (dict): 配置模版 default_cfg (dict): 默认配置
Returns: tuple[dict[str, Any], tuple[int, int, int]]: 配置文件内容及版本
param
selfparam
templatedict
param
default_cfgdict
Returns
None
func
ListenPreload(self, cb, priority=0)
监听预加载事件 预加载事件: 在读取插件后、和游戏建立连接前触发一次
Args: cb (Callable[[], None]): 监听回调 priority (int, optional): 优先级, 默认为 0
param
selfparam
cbCallable[[], Any]
param
priorityint
= 0
Returns
None
func
ListenActive(self, cb, priority=0)
监听连接建立事件 连接建立事件: 在框架和游戏完全建立连接时触发一次
Args: cb (Callable[[], None]): 监听回调
param
selfparam
cbCallable[[], Any]
param
priorityint
= 0
Returns
None
func
ListenPlayerJoin(self, cb, priority=0)
监听玩家加入事件 玩家加入事件: 在有玩家加入游戏时触发一次
Args: cb (Callable[[Player], None]): 监听回调, 传参: 玩家 (Player)
param
selfparam
cbCallable[[Player], Any]
param
priorityint
= 0
Returns
None
func
ListenPlayerLeave(self, cb, priority=0)
监听玩家退出事件 玩家退出事件: 在有玩家退出游戏时触发一次
Args: cb (Callable[[Player], None]): 监听回调, 传参: 玩家 (Player)
param
selfparam
cbCallable[[Player], Any]
param
priorityint
= 0
Returns
None
func
ListenChat(self, cb, priority=0)
监听玩家聊天事件 玩家聊天事件: 在有玩家在聊天栏发言时触发一次
Args: cb (Callable[[Player], None]): 监听回调, 传参: 聊天事件 (Chat)
param
selfparam
cbCallable[[Chat], Any]
param
priorityint
= 0
Returns
None
func
ListenFrameExit(self, cb, priority=0)
监听框架退出事件 框架退出事件: 在框架退出/插件即将重载时触发一次
Args: cb (Callable[[Player], None]): 监听回调, 传参: 聊天事件 (Chat)
param
selfparam
cbCallable[[FrameExit], Any]
param
priorityint
= 0
Returns
None
func
ListenPacket(self, pkID, cb, priority=0)
监听字典数据包的事件
Args: pkID (PacketIDS): 数据包ID cb ((dict) -> bool): 数据包监听回调, 返回 True 为拦截该数据包
Raises: Exception: 尝试监听一个二进制数据包
param
selfparam
pkIDPacketIDS | list[PacketIDS]
param
cbDictPacketListener
param
priorityint
= 0
Returns
None
func
ListenBytesPacket(self, pkID, cb, priority=0)
监听二进制数据包的事件
Args: pkt_id (PacketIDS): 数据包ID cb ((BytesPacketListener) -> bool): 数据包监听回调, 返回 True 为拦截该数据包
Raises: Exception: 尝试监听一个非二进制数据包
param
selfparam
pkIDPacketIDS | list[PacketIDS]
param
cbBytesPacketListener
param
priorityint
= 0
Returns
None
func
ListenInternalBroadcast(self, broadcast_name, cb, priority=0)
监听广播事件 广播事件: 在产生广播事件时触发一次
Args: broadcast_name (str): 广播事件名 cb (Callable[[InternalBroadcast], Any]): 监听回调, 传参: 广播事件 (InternalBroadcast), 返回: 回传给发送者的内容
param
selfparam
broadcast_namestr
param
cbCallable[[InternalBroadcast], Any]
param
priorityint
= 0
Returns
None
func
BroadcastEvent(self, evt)
向全局广播一个特定事件, 可以传入附加信息参数 Args: evt (InternalBroadcast): 事件 Returns: list[Any]: 收集到的数据的列表 (如果接收到广播的方法返回了数据的话)。 如果返回了 None 则不会把此返回放入收集表里。
param
selfparam
evtInternalBroadcast
Returns
None
func
GetPluginAPI(self, api_name, min_version=(0, 0, 0), force=True)
获取插件 API
Args: api_name (str): 插件 API 名 min_version (tuple, optional): API 所需的最低版本 (若不填则默认不检查最低版本) force: 若为 False, 则在找不到插件 API 时不报错而是返回 None
Raises: PluginAPIVersionError: 插件 API 版本错误 PluginAPINotFoundError: 无法找到 API 插件
Returns: Plugin: 插件 API
param
selfparam
api_namestr
param
min_versiontuple[int, int, int]
= (0, 0, 0)
param
force= True
Returns
None
func
get_typecheck_plugin_api(self, api_cls) -> PLUGIN_TYPE
对外源导入 (import) 的 API 插件类进行类型实例化。 可以使得你所使用的 IDE 对导入的插件 API 类进行识别和高亮其所含方法。 请在 TYPE_CHECKING 的代码块下使用。
Args: api_cls (type[_PLUGIN_CLS_TYPE]): 导入的 API 插件类
Raises: ValueError: API 插件类未被注册
Returns: _PLUGIN_CLS_TYPE: API 插件实例
使用方法如下:
p_api = get_plugin_api("...")
if TYPE_CHECKING:
from outer_api import api_cls_xx
p_api = get_typecheck_plugin_api(api_cls_xx)
param
selfparam
api_clstype[PLUGIN_TYPE]
Returns
tooldelta.plugin_load.classic_plugin.plugin_cls.PLUGIN_TYPE