admin管理员组文章数量:1122854
怎么用c语言编辑酷q,GitHub
代码库介绍
base分支为我自用的新建App的模板,引入了一些自己的机制简化开发流程
增加指令消息解析类,采用 (wwh) what who how模式
反射机制优化流程
同步更新Native.SDK
是个Native.SDK的DEMO(只是进行了看得懂的魔改)
样例应用
应用名
描述
备注
彩虹六号战绩查询插件,数据来源于R6stats
手摸手系列教程demo插件
消息解析
将原始指令使用空格(可更改)进行解析
如“攻击 麻花疼 50”
解析为
what(要干啥):攻击
who(对谁干):麻花疼
how(怎么干):50
无需自己解析指令!
反射机制
还在使用????
if(msg=="攻击"){
goAttack(fromQQ,target);
}
else if(msg=="防御"){
goDef(fromQQ,target);
}
不!可!以!
触发关键字修改还要改代码??
NO!!
多关键字触发同一个方法还在???
if(msg=="攻击"||msg=="打击"){
goAttack(fromQQ,target);
}
else if(msg=="防御"){
goDef(fromQQ,target);
}
OH MY GOD!!
这里帮你解决!
应用启动处增加映射关系(进行初始化,仅在应用第一次运行的机器中进行)
public void AppEnable(object sender, CQAppEnableEventArgs e)
{
//此处仅演示 私聊 和 群聊
Common.CqApi = e.CQApi;
string commandPath = Common.CqApi.AppDirectory + "command.ini";
IniConfig rootConfig=null;
if (!File.Exists(commandPath))
{
rootConfig = new IniConfig(commandPath);
rootConfig.Object["gcommands"]["功能1"] = "funcOne";
rootConfig.Object["gcommands"]["功能2"] = "funcTwo";
rootConfig.Object["pcommands"]["功能1"] = "funcOne";
rootConfig.Object["pcommands"]["功能2"] = "funcTwo";
rootConfig.Save();
}
else
{
rootConfig = new IniConfig(commandPath);
rootConfig.Load();
}
ISection pCommand = rootConfig.Object["pcommands"];
Common.PCommandDic = pCommand.ToDictionary(p => p.Key, p => p.Value.ToString());
ISection gCommand = rootConfig.Object["gcommands"];
Common.GCommandDic = gCommand.ToDictionary(p => p.Key, p => p.Value.ToString());
书写反射代码(直接Clone本仓库无需书写)
public class Event_GroupMsg : IGroupMessage
{
//群聊
public void GroupMessage(object sender, CQGroupMessageEventArgs e)
{
AnalysisMsg nowModel = new AnalysisMsg(e.Message.Text);
if (String.IsNullOrEmpty(nowModel.GCommand))
{
e.Handler = false;
return;
}
var gapp = Activator.CreateInstance(typeof(GroupApp)) as GroupApp;
var method = gapp.GetType().GetMethod(nowModel.GCommand);
object result = method.Invoke(null, new object[] { e, nowModel });
e.Handler = false;
}
}
public class Event_PrivateMsg : IPrivateMessage
{
//私聊
public void PrivateMessage(object sender, CQPrivateMessageEventArgs e)
{
AnalysisMsg nowModel = new AnalysisMsg(e.Message.Text);
if (String.IsNullOrEmpty(nowModel.PCommand))
{
e.Handler = false;
return;
}
var papp = Activator.CreateInstance(typeof(FriendApp)) as FriendApp;
var method = papp.GetType().GetMethod(nowModel.PCommand);
object result = method.Invoke(null, new object[] { e, nowModel });
e.Handler = false;
}
}
书写业务代码(群聊为例)
public class GroupApp
{
public static void funcOne(CQGroupMessageEventArgs e, AnalysisMsg msg)
{
e.CQApi.SendPrivateMessage(415206409,$"[这里是群方法 攻击]", $"参数数 {msg.OrderCount}\n", $"触发指令(第一参数 what) {msg.What}\n", $"目标(第二参数 who) {msg.Who}\n", $"怎么做(第三参数 how) {msg.How}\n", $"原始信息 {msg.OriginStr}\n", e.ToString());
}
public static void funcTwo(CQGroupMessageEventArgs e, AnalysisMsg msg)
{
e.CQApi.SendPrivateMessage(415206409, $"[这里是群方法 防御]\n", $"参数数 {msg.OrderCount}\n", $"触发指令(第一参数 what) {msg.What}\n", $"目标(第二参数 who) {msg.Who}\n", $"怎么做(第三参数 how) {msg.How}\n", $"原始信息 {msg.OriginStr}\n", e.ToString());
}
}
体验快感!
群聊“打击 麻花疼 50”效果等于“攻击 麻花疼 50”!(一个方法多个触发)
修改酷Q“\data\app\site.traceless.nativedemo\command.ini”重启应用即可更新指令映射!无需修改代码!
以下部分为框架作者的原文(包括打赏码)
Native.SDK 优点介绍
Native.SDK 是为了方便 .Net 平台开发者高效开发 酷Q应用 的开发框架。封装酷Q 提供的接口,提供了安全高效的Api,同时抽象了事件中的基础数据类型,并且提供了完整的托管异常处理,提供了优秀的开发环境。
特点
支持原生导出函数,不需要前置插件作为服务端。(能够在 .Net 平台中导出 C/C++ 可用的导出函数)
支持包括 WebServices 在内的所有 .Net 项目进行交互。
支持编译整合DLL。(在编译的同时,对所有使用到的程序集进行整合打包,保证最终结果只有 app.dll)
支持自由调整 .Net Framework 版本
支持 C# 和 VB.NET 两种语言编写代码
使用 UTF-8 编码,并且在托管和非托管之间启用了 GB18030 编码的转换
可以在 酷Q on Docker 中运行。(目前仅支持 .Net Framework 4.5)
在线文档
更新日志
关于打赏
您的支持就是我更新的动力!
本文标签: 怎么用c语言编辑酷qGitHub
版权声明:本文标题:怎么用c语言编辑酷q,GitHub 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1701781978a479539.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论