插件开发标准
插件是整个 Sonolus 服务器系统的一个重要核心功能。接下来,本页面将向您介绍如何自行开发一个插件。
请注意,插件编写需要您对所有的类和函数有一个全面细致的了解。详细信息参见 Custom Server Specs。
基础模板
在项目根目录下创建一个文件夹 libtest
,并在里面新建文件 libtest.cpp
,填写代码如下:
#include"../../main.cpp"
#include<bits/stdc++.h>
using namespace std;
class Plugin: public SonolusServerPlugin {
public:
string onPluginName() const {
return "";
}
string onPluginDescription() const {
return "";
}
string onPluginVersion() const {
return "";
}
string onPluginPlatformVersion() const {
return "";
}
string onPluginAuthor() const {
return "";
}
string onPluginLicense() const {
return "";
}
string onPluginWebsite() const {
return "";
}
vector<string> onPluginHelp(char** argv) const {
return {};
}
void onPluginRunner(int argc, char** argv) const {
}
void onPluginRouter(int argc, char** argv, application *app) const {
preload();
}
};
PLUMA_INHERIT_PROVIDER(Plugin, SonolusServerPlugin);
PLUMA_CONNECTOR
bool pluma_connect(pluma::Host& host) {
host.add( new PluginProvider() );
return true;
}
函数解释
string onPluginName()
: 提供插件名称。string onPluginDescription()
: 提供插件描述,用于在./sonolus plugin info [plugin]
中显示。string onPluginVersion()
: 提供插件版本号。string onPluginPlatformVersion()
: 提供目标平台版本号。只有当目标平台版本号与 Sonolus 服务器版本号相匹配时,该插件才会被载入。string onPluginAuthor()
: 提供插件作者。string onPluginLicense()
: 提供插件协议信息。string onPluginWebsite()
: 提供插件网站信息。vector<string> onPluginHelp(char** argv)
: 提供额外帮助信息,argv
为主程序接收到的参数信息。void onPluginRunner(int argc, char** argv)
: 处理主程序接收到的参数信息。void onPluginRouter(int argc, char** argv, application *app)
: 提供额外的终结点,用于服务器的运行。所有终结点函数需要插入到app->route
中去。
插件示例
- libsonolush: 这些插件提供了对
onPluginHelp
函数和onPluginRunner
函数的示例。 - libonedrive: 该插件提供了对
onPluginRouter
函数的示例。
部署
代码编写完毕后,退出代码编辑器,重新编译您的插件即可。