该功能新建表 主要是为了方便区分播报和玩家主动发送消息
自行根据下方教程 组合消息内容即可
Tips.此方法适合有一定基础的,至少要知道,什么代码放什么地方!!!!
//建表 frida.user_message
api_MySQL_exec(mysql_frida, `
CREATE TABLE frida.user_message (
id int(20) NOT NULL AUTO_INCREMENT,
\`type\` int(5) NULL,
chara_no int(20) NULL,
message varchar(600) NULL,
create_time datetime NULL,
send_flag int(5) DEFAULT 0,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
`);注释:
api_MySQL_exec 意思是执行sql语句
mysql_frida 数据库连接句柄 这里要根据你的frida里实际情况修改
sql语句中的frida库和user_message表为固定值 机器人固定读取该表内容 无法修改
//机器人组合消息传输到user_message表
function userRobot(type,user,msg){
log(msg);
if(type == 1){
//获取用户
var charNo = CUserCharacInfo_getCurCharacNo(user);
api_MySQL_exec(mysql_frida, "insert into frida.user_message (type,chara_no,message,send_flag) values (" + type + "," + charNo + ",'" + msg + "',0);");
}else{
api_MySQL_exec(mysql_frida, "insert into frida.user_message (type,message,send_flag) values (" + type + ",'" + msg + "',0);");
}
}注释:
api_MySQL_exec 意思是执行sql语句
mysql_frida 数据库连接句柄 这里要根据你的frida里实际情况修改
后续的语句为在user_message表中新增数据 便于机器人读取
userRobot函数可以自行修改,前提条件是 这里修改了函数 那么下面的调用userRobot就也要同步的修改
Frida里搜索 hook_characterMessageLog
这个就是hook角色消息的函数
简单说 就是吧开始和结束的部分插入到查询角色id下方
如果不想要哪部分的消息 就注释掉即可
function hook_characterMessageLog() {
Interceptor.attach(ptr(0x086C9638),
{
onEnter: function (args) {
var user = args[1];
var charac_name = api_CUserCharacInfo_getCurCharacName(user);
var reason = args[2].toInt32();
var msg = args[3].readUtf8String(-1);
this.notice = null;
this.notice2 = null;
//查询当前角色id
var UID = CUser_get_acc_id(user);
//组装信息发送给机器人-----------开始
if(reason == 2){
var message = '玩家[' + charac_name + ']发送队伍消息:\n' + msg;
userRobot(0,null,message);
}
if(reason == 3){
var message = '玩家[' + charac_name + ']发送普通消息:\n' + msg;
userRobot(0,null,message);
}
if(reason == 6){
var message = '玩家[' + charac_name + ']发送公会消息:\n' + msg;
userRobot(0,null,message);
}
if(reason == 8){
var message = '玩家[' + charac_name + ']发送师徒消息:\n' + msg;
userRobot(0,null,message);
}
if(reason == 11){
var message = '玩家[' + charac_name + ']发送喇叭消息:\n' + msg;
userRobot(0,null,message);
}
//组装信息发送给机器人-----------结束注释:
可以根据你的实际情况 去组合消息内容