自动打怪模型脚本
【脚本介绍】:该脚本实现了一个自动打怪示例,这是一个实战型的脚本。源码的注释详细介绍了自动打怪的基本思路,只要你了解了怎样取色,编写自动打怪模型你就成功了一半。
【原理】:详细原理:首先我们在开始这个函数开启一个线程,由于在写自动打怪的时候会涉及到循环打怪,若不开启线程会导致界面卡死情况,所以我们首先在开始这个函数写了一个线程,大家也可以理解为在开始这个函数中开启了打怪这个函数,这样相信大家就不难理解线程概念了,之后我们第一步是让程序找到这个游戏的窗口,若没找到的话程序会提示窗口句柄为空或者没有找到窗口句柄的信息,所以我们第一步就是找到这个游戏窗口才能在游戏中进行操作,这个窗口名称也就是你游戏的名称,当然这里不是指模糊名称而是指游戏最顶上出现的那个标题名称:如:打开一个1命名的记事本,那么它上面的名称为:1.txt - 记事本 ,那么我们就需要把1.txt - 记事本 这个名称输入进去,游戏中也是一样的。这样我们就通过获得编辑框得到了窗口名称,并在代码中找到这个游戏窗口,然后我们把该游戏窗口置顶,为什么置顶有的人会很疑惑,由于是前台的操作,如果不置顶的话鼠标就或者键盘就无法对该游戏窗口进行操作。最后开始进入循环打怪阶段,首先利用游戏切换TAB键切换一下,找到一个怪物,然后利用区域找色找怪物这个颜色是否存在,若存在就执行打怪放技能,放完一轮技能后判断任务血条和蓝条是否存在,然后再判断怪物是否存在还是死亡,若存在继续放技能,若死亡就TAB切换一下继续打怪,这样一直轮流下去,就实现了自动打怪功能。
【使用说明】:
1、把电脑分辨率调制1280*768,进入游戏后并进行最大化;
2、因为游戏版本的原因,若颜色值与你游戏的颜色值或鼠标移动位置不相符合,用户可以尝试修改区域找色的坐标和颜色值达到适合用户的脚本。
【源码如下】:
空间 自动打怪
功能 逻辑型 打怪线程() 整型 x
整型 y
整型 窗口编号
逻辑型 取怪颜色
逻辑型 取怪生命值
逻辑型 生命值
逻辑型 蓝值 字符型 窗口标题
//获得界面文本框的值
窗口标题=编辑框.获得文本("编辑框0")
//查找游戏窗口是否存在
窗口编号=窗口.找到窗口(窗口标题)
//根据返回的值判断为窗口是否存在,如果返回值为0,证明没有找到窗口,否则找到窗口
如果(窗口编号==0)
辅助.消息框("没有找到游戏窗口")
否则
//找到窗口,把窗口置顶
窗口.置顶(窗口编号,"")
辅助.等待(1000)
//这里写个while死循环,大家都知道,自动打怪是不停的打的,而不是打一次,
//所以我这里写个while,不停的重复执行打怪功能
//循环(true)
//tab键的按键码是9,这里我们执行tab操作,就是锁定怪,大部分游戏都是通过tab实现的
//但是你不同游戏的锁定怪,你这里可以选择不同的键来锁定。
循环(true)
键盘.按键(9,1)
辅助.等待(1000)
//这里通过区域找色,根据延时判断是否锁定了怪,如果锁定了,就会进下面的while循环
//执行打怪操作,反正继续执行外面的while循环,继续执行锁定怪的操作.
取怪颜色=图像.区域找色(10,10,500,600,0,#1E3C04,x,y) //如果返回true,证明锁定了怪,那就执行下面的打怪功能
循环(取怪颜色)
//2的键码是50,这里按下2键。也就是功能键技能2
键盘.按键(50,1)
//按键完成延时,这个是延时1秒执行下面的操作
辅助.等待(1000)
//1的键码是49,这里按下1键.也就是功能键技能1
键盘.按键(49,1)
辅助.等待(1000)
键盘.按键(49,1)
辅助.等待(1000)
//这个是取生命值的颜色,根据颜色判断。当生命值到这个坐标点,延时值变了,
//证明掉血掉到这里了,要执行补血功能了。如果返回的是true,证明血没有掉
生命值=图像.区域找色(10,10,500,600,0,#1E3C04,x,y) 如果(!生命值)
//6的键码是54,这里按下6键.也就是功能键补血的
键盘.按键(54,1)
辅助.等待(1000)
如果结束
//这个判断和上面取生命值一样的,这个是取蓝值
蓝值=图像.区域找色(10,10,500,600,0,#1E3C04,x,y) 如果(!蓝值)
//7的键码是55,这里按下7键.也就是功能键补蓝的
键盘.按键(55,1)
辅助.等待(1000)
如果结束
//这个时候取怪的颜色,是为了怪是否死亡,如果没有死,继续执行while循环打怪
//如果死了,停止这个while循环,跳到外面的while循环,再锁定怪。
取怪颜色=图像.区域找色(10,10,500,600,0,#1E3C04,x,y) 循环结束
循环结束
如果结束
返回 真
功能结束
功能 逻辑型 开始_点击()
整型 线程编号
线程编号=线程.开启("自动打怪.打怪线程","")
如果(线程编号==0)
辅助.消息框("线程开启失败")
如果结束
返回 真
功能结束
功能 逻辑型 退出_点击()
辅助.退出()
返回 真 功能结束
空间结束
|