步骤 2 : 打怪升级 步骤 3 : 按键精灵 步骤 4 : 自己做一个 步骤 5 : jar 步骤 6 : dll 步骤 7 : 代码 步骤 8 : git 步骤 9 : 切莫沉迷游戏
魔兽世界怀旧服开了大半个月啦,作为45内测就开始 high 的老玩家,自然是不能放过呀,哈哈哈
玩魔兽世界免不了要升级,而且在很多时候,都会按相同组合的一系列技能键来度过相当漫长而枯燥的一段时光。
为了减轻这个痛苦,于是站长就自己做了个按键小工具,让角色自己放一系列技能。。。略微缓解练级的烦闷~
这个小工具,其实就是个简单的按键精灵。 按键精灵想必大家都用过吧,这个小工具的功能远远不如按键精灵那么强大和丰富。 不过呢,毕竟是用 java 自己开发的,其中自有一番乐趣啦。 而且,通过这个小工具,很多同学才会意识到,原来 java 还可以捕捉热键,还可以进行自动按键操作呢。
那么接下来,我们就自动做一个吧。
首先需要2个jar. 分别是 jintellitype-1.3.1.jar 和 com.springsource.org.apache.commons.logging-1.1.1.jar
jintellitype-1.3.1.jar 是用来捕捉热键的,比如按下 ctrl+w, 它就知道是在唤醒它了。 com.springsource.org.apache.commons.logging-1.1.1.jar 这个是日志包。 已经放在右上角下载区了。
其实呢, java 本来是不能捕捉热键的,只能通过 jni 的方式来做。 所谓的 jni, 就是 java native interface, 简单说,就是java调用 c语言写好的 dll 文件来实现 java 本身实现不了的功能。 这一类的功能,往往都和操作系统有关,所以大都是 c语言写的。
所以需要提供一个动态链接库 dll 文件: JIntellitype.dll 已经放在右上角下载区了。
代码呢,就相对简单了。
都有注释了。 package wow;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import com.melloware.jintellitype.HotkeyListener;
import com.melloware.jintellitype.JIntellitype;
public class TestWow {
public static void main(String[] args) {
// 注册热键 ctrl+W,当触发的时候,带上key值:1
JIntellitype.getInstance().registerHotKey(1, JIntellitype.MOD_CONTROL, (int) 'W');
// 注册热键 alt+F,当触发的时候,带上key值:2
JIntellitype.getInstance().registerHotKey(2, JIntellitype.MOD_ALT, (int) 'F');
//加上热键监听器
JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() {
@Override
public void onHotKey(int k) {
//通过判断k的值来剪间接地知道是触发了哪个热键,比如这里是1,就表示触发了 ctrl+W
if (1 == k) {
try {
//启动机器人。。。
Robot robot=new Robot();
//暂停半秒
Thread.sleep(500);
//狂按5秒钟的c键,每下间隔 300毫秒
for (int i = 0; i < 17; i++) {
//按下C键
robot.keyPress(KeyEvent.VK_C);
//弹起C键
//注: 一次按下,加上一次弹起,才能组合成一个点击
robot.keyRelease(KeyEvent.VK_C);
//间隔300毫秒
Thread.sleep(300);
}
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//通过判断k的值来剪间接地知道是触发了哪个热键,比如这里是2,就表示触发了 alt+f
if (2 == k) {
try {
Robot robot = null;
robot = new Robot();
Thread.sleep(500);
//一下组合的意思是挨个点击 2,3,4,1,每次点击之间间隔 1.5秒。因为魔兽世界每个瞬发技能公共CD是 1.5秒,需要经过 1.5秒之后,才能点击下一个技能
robot.keyPress(KeyEvent.VK_2);
robot.keyRelease(KeyEvent.VK_2);
Thread.sleep(1500);
robot.keyPress(KeyEvent.VK_3);
robot.keyRelease(KeyEvent.VK_3);
Thread.sleep(1500);
robot.keyPress(KeyEvent.VK_4);
robot.keyRelease(KeyEvent.VK_4);
Thread.sleep(1500);
robot.keyPress(KeyEvent.VK_1);
robot.keyRelease(KeyEvent.VK_1);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
}
}
与此同时,代码也放在 git 上了:
https://github.com/how2j/wow
希望大家合理安排时间,切莫沉迷于游戏而不能自拔呀
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2020-10-29
老师,你提供的 github 链接打不开,是不是需要VPN工具 才可以呀?
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2019-09-29
站长,项目启动报错
2 个答案
ztbingt 跳转到问题位置 答案时间:2019-10-09 站在提供的JIntellitype.dll是32位的,网上下载64位的dll 就可以正常运行了
站在提供的JIntellitype.dll是32位的,网上下载64位的dll 就可以正常运行了 how2j 跳转到问题位置 答案时间:2019-09-29 e? 我也是 System32啊,就放在项目下即可了啊
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2019-09-19
我怀疑站长你在监视我的电脑
2019-09-18
站长牛逼
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|