https://github.com/fffonion/MAClient/blob/master/PLUGIN_DOCUMENT.md

关于MAClient请 戳这里

MAClient Plugin Document

本文档给出maclient插件制作的标准和一些参考

概述

maclient1.50版本开始支持插件,通过在配置项中的“启用插件”功能(enable_plguins)和“禁用单个插件”选项(disabled)来控制插件的启用与否。

插件为py脚本,放置在plugins目录下,由maclient_plugin在运行时载入;其中下划线开头的脚本和子目录中的脚本 不会 被载入;同名脚本的优先级为pyd>py>pyc=pyo

插件分为两类,一类在指定的事件发生前和发生后作出响应(下称hook插件),另一类扩展命令行界面(cli)的可用命令数(下称extra_cmd插件);两种类型可以存在于同一个文件内

HOOK插件

示例

example_hook bgm

结构

下面以example_hook为例;在这个例子中,在开始攻击妖精 、 结束攻击妖精 和 进入探索 三个事件发生时分别在屏幕上打印一句话

开头需从prototype导入pluginprototype父类;然后定义插件名称,作者,版本:

定义事件钩子,即ENTER/EXIT _ EVENT_NAME:

可用事件名称

冒号后的数值表示钩子的优先级,越大则越先被调用

如例子中定义了在 开始攻击妖精 、 结束攻击妖精 和 进入探索 三个事件的钩子,优先级为1(最低)

如果不需要extra_cmd,此处留空字典

类实例

类名称必须为plugin,且继承plugin_prototype父类

对每个事件钩子,必须有一个同名的类方法,args 和 kwargs 中被传入了这个事件被调用时传入的参数。

可以使用self.tuple_assign(继承自父类)修改args中参数内容,如self.tuple_assign(args, 0, ‘123’)#将args第一个参数改为123

如果没有return语句或return后无参数,则默认为不修改参数

类运行时会先生成一个实例,因此你可以保存一些状态信息等

关于参数的具体内容可以 参阅maclient.py

应用

示例中的bgm插件,仅额外使用了一个栈结构就实现了bgm的切换

EXTRA_CMD插件

示例

web_helper query_tool

结构

meta部分与hook插件相同,区别仅在于extra_cmd字典中需填入扩展命令的值和内容

字典的key表示扩展命令,value表示要执行的函数:

采用函数式结构,返回函数的名称随便取,不一定是do:

在plugin_vals中传入了maclient在运行中的 所有实例变量

有用的变量

其他变量请 参阅maclient.py,所有以self.开头的变量均可使用

应用

web_helper借助小饼干和一个代理,实现了在电脑浏览器上查看活动信息等