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藉助小餅乾和一個代理,實現了在電腦瀏覽器上查看活動信息等