赞
踩
本文记录了在过去一段时间,对制作外挂的研发经历,从利用按键精灵模拟键盘鼠标到读取内存远程调call的开发之路,留以纪念那些逝去的青春…
本篇记录了使用按键精灵取色,判断,模拟按键等常见脚本操作
飞飞,这是一款年代久远十分经典的打怪升级且可以飞行的游戏,上初中的时候特别喜欢这款游戏,记得那时候每天下了早自习就飞奔到网吧,叫醒睡梦中的网管,开1块钱时间,那时候上网是1块钱50分钟,刚好来得及赶上上课,后来变成1块钱40分钟,在后面2块一个小时,也算见证了网吧的发展史,上线后骑着我的滑板到处飞,看到守护就++++++++,哈哈哈,无忧无虑的时光过得总是很快,可惜后来游戏停服了,偶然不知道从什么地方看到熟悉的游戏,仔细一看原来是私服,怀着激动的心情,下载了游戏…
游戏的玩法很简单,双击一个怪,角色就会一直持续攻击怪物,怪物受到攻击也会攻击玩家,玩家需要使用物品栏上的物品保证自己生命值,因此我们需要盯着血条,及时按下f1-f10使用对应的物品以免阵亡,玩了一段时候后,觉得太机械了,我在想能不能有什么东西可以帮我自动去按按键去加血呢?
首先想到按键精灵,简单粗暴,用来模拟按键实在太好用了,打开按键精灵界面,想一想我需要按键精灵每隔一段时间,就帮我按下F1,于是就有了下面这段代码
While 1
KeyPress "F1", 1
Delay 1000
Wend
运行起来,脚本就能以每秒1次的频率自动帮我们加血,使用了一会儿,感觉还是不妥,主要有问题有:
于是想想如果能知道我的血减少了,才去吃血就好了
翻了翻按键精灵,发现有个屏幕取色功能,于是就有了以下的想法,在角色血条一半的地方获取的颜色,如果是红色,说明有血,如果是白色说明要去加血:
于是就有了以下代码
While 1 // 获取某个点的颜色 GetColor = GetPixelColor(10, 5) // 在控制台输出颜色 TracePrint GetColor // 判断颜色 如果这个点的颜色 不是红色,加血 IfColor 10, 5, "61839B", 1 Then // 按键键盘 KeyPress "F1", 1 End If // 每一秒循环一次 Delay 1000 Wend
这一次果然比之前好了很多,没血了就才会去加血,但是依然还是存在一些问题:
又翻了翻按键精灵的命令库,发现对按键精灵窗口支持也挺好,于是就想,可以先获取一下窗口的坐标,因为血条的坐标是相对窗口固定的,那么只要得到了窗口的坐标就也能得到血条的坐标了,这样就解决了窗口位置改变时,获取血条点不准的问题了,顺便还发现了激活窗口的方法,这样在按键执行前,先激活一下窗口,在执行按键也能正常了
// 查找窗口类名(0)或者标题("无标题 - 记事本"),返回找到的句柄Hwnd Hwnd = Plugin.Window.Find(0, "Flyff") // 得到窗口句柄的边框大小(包括标题栏) Rect = Plugin.Window.GetWindowRect(Hwnd) // 分割字符串 RectArray = Split(Rect, "|") // 得到窗口位置 然后偏移到我们的血条坐标 x = CInt(RectArray(0)) + 10 y = CInt(RectArray(1)) + 5 While 1 // 获取某个点的颜色 GetColor = GetPixelColor(x, y) // 在控制台输出颜色 TracePrint GetColor // 判断颜色 如果这个点的颜色 不是红色,加血 IfColor x, y, "61839B", 1 Then // 先激活窗口 Call Plugin.Window.Active(Hwnd) // 在按下按键 KeyPress "F1", 1 End If // 每一秒循环一次 Delay 1000 Wend
再次运行,脚本这次更好用了,只要启动程序就能准确的帮助我们去吃血,似乎挺智能的,但随着等级的提升,怪物攻击力越来越高,新的问题来了:
其实很容易就想到,可以采用多点取色的方式来解决上面两个问题,但按键精灵的代码不想写了,因为我想用更高级的方法来解决,如果能知道我掉了多少血(具体的数值),然后根据自己的掉血值,来精确选择正确的加血方案就更好了…未完待续
以上就是本篇博客讲述的内容了,本文仅仅简单介绍了按键精灵的使用,而按键精灵提供了大量内库函数,能使我们快速高效解决一些需要模拟鼠标或键盘的重复机械操作!
KeyPress "F1", 1
Delay 1000
GetPixelColor(2,2)
IfColor 2,2 'ffffff' 0 then
0=颜色值相等 1= 颜色值不同 Hwnd = Plugin.Window.Find(0, "Flyff")
Rect = Plugin.Window.GetWindowRect(Hwnd)
TracePrint args
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。