首先我们分析一下Level::setTime(long)的原理。
Level是它的类,然而我们的插件不像js那样温柔,所以,必须获取Level。
我觉得,tick是获取Level的好办法。
class Level {
public:
static void tick();//钩子必须添加static,我现在用的是隐式
void setTime(long);
};
这是前头工作。我们将在教程里详细探讨。
第二个,操作。
static void (*t_r)(Level*);//指针声明
static void t_h(Level*l) {
level=l;
t_r(level);
}
MSHookFunction((void*)&Level::tick,(void*)&t_h,(void**)&t_r);//这是放在模板里jni那一行的。
手头工作搞定了以后,我们喝杯java,继续干。
*t_r的上面添加Level*level=NULL;//初始化,防止寄存器垃圾值
当然,要有钩子,才能触发函数,今晚继续。
Level是它的类,然而我们的插件不像js那样温柔,所以,必须获取Level。
我觉得,tick是获取Level的好办法。
class Level {
public:
static void tick();//钩子必须添加static,我现在用的是隐式
void setTime(long);
};
这是前头工作。我们将在教程里详细探讨。
第二个,操作。
static void (*t_r)(Level*);//指针声明
static void t_h(Level*l) {
level=l;
t_r(level);
}
MSHookFunction((void*)&Level::tick,(void*)&t_h,(void**)&t_r);//这是放在模板里jni那一行的。
手头工作搞定了以后,我们喝杯java,继续干。
*t_r的上面添加Level*level=NULL;//初始化,防止寄存器垃圾值
当然,要有钩子,才能触发函数,今晚继续。