|
一.前言以下代码只可用于私服,仅可用于学习和娱乐,不可商用,否则后果自负,代码完全开源,这个应该这个系列第四篇了,目前已经写了ai瞄准,罗技鼠标宏,这篇功能相比前俩个更简单一些,因为代码不多所以就不写类与功能函数了,直接直捣黄龙,我还写了一些辅助脚本,可以用来获取鼠标当前坐标和颜色的,改新的分辨率可以用得上所需准备:罗技驱动的.dll文件与之对应的罗技驱动版本,链接我放下面了链接:https://pan.baidu.com/s/1IzudyR8E_uvcmi7zuXSOAg?pwd=6666 提取码:6666注意事项:这里游戏内分辨率必须是1280*720,我的位置坐标参数就是根据这个分辨率调整的二.代码2.1驱动代码这部分代码主要就是调用.dll文件,用里面封装好的方法,比如移动鼠标,点击鼠标,键盘等等,主要实现的功能就是进行射击操作,也就是自动鼠标点击左键importctypesimportostry:#获取当前绝对路径root=os.path.abspath(os.path.dirname(__file__))driver=ctypes.CDLL(f'{root}/logitech.driver.dll')ok=driver.device_open()==1#该驱动每个进程可打开一个实例ifnotok:print('错误,GHUB驱动没有找到')exceptFileNotFoundError:print(f'错误,DLL文件没有找到')classLogitech:classmouse:"""code:1:左键,2:中键,3:右键"""@staticmethoddefpress(code):ifnotok:returndriver.mouse_down(code)@staticmethoddefrelease(code):ifnotok:returndriver.mouse_up(code)@staticmethoddefclick(code):ifnotok:returndriver.mouse_down(code)driver.mouse_up(code)@staticmethoddefscroll(a):"""鼠标滚轮"""ifnotok:returndriver.scroll(a)@staticmethoddefmove(x,y):"""相对移动,绝对移动需配合pywin32的win32gui中的GetCursorPos计算位置pipinstallpywin32-ihttps://pypi.tuna.tsinghua.edu.cn/simplex:水平移动的方向和距离,正数向右,负数向左y:垂直移动的方向和距离"""ifnotok:returnifx==0andy==0:returndriver.moveR(x,y,True)classkeyboard:"""键盘按键函数中,传入的参数采用的是键盘按键对应的键码code:'a'-'z':A键-Z键,'0'-'9':0-9"""@staticmethoddefpress(code):ifnotok:returndriver.key_down(code)@staticmethoddefrelease(code):ifnotok:returndriver.key_up(code)@staticmethoddefclick(code):ifnotok:returndriver.key_down(code)driver.key_up(code)classRunLogitechTwo:def__init__(self):self.log_mouse=Logitech.mousepassdefquick_move(self):#time.sleep(random.randint(1,3))self.log_mouse.click(1)#print('hahaha')2.2红名识别代码代码思路:利用mss库的mss()功能函数,进行时对当前屏幕进行截图,设置了字典monitor参数,里面包含左上角坐标,宽高,用来控制截屏的范围,我这里对敌人红名出现的地方中央截取了16个像素,这16个像素中一定会有红色像素格出现,一旦其中一个符合rgb范围要求就跳出循环不执行剩下像素的判断,节省资源也防止一直开枪for循环部分讲解:俩层for循环就是为了遍历截取的16个像素的RGB值进行判断,第二个for循环的bgr属性(分解的每个像素)是有含4个值的,分别是R,B,G,通透度,我们只取前三个就够了通透度不用管,np.array()会将16个像素值分成二维数组(4*4)类似于矩阵的形状,所以俩层for循环就够了开枪延迟:这个开枪延迟一定要加上,要不然肯定会过快,进行检测,速度大家自行修改尝试就行了,我这个是喷子的延迟,大炮可以调的更长一些,火线还有个问题就是你可能在瞄准那个人附近的时候就开始出现红名了,所以也要通过设置这个开枪延迟来平衡自动开枪时机吐槽:你在瞄准敌人的时候,他的名字是渐变的,从暗红色-红色-亮红色-橘色,这个RGB范围让我一顿好找importlogitech_testfrommssimportmssimportnumpyasnpimporttimeimportrandomif__name__=="__main__":#设置检测区域,这里截取整个屏幕monitor={"top":405,"left":635,"width":4,"height":4}#monitor={"top":490,"left":910,"width":200,"height":200}#反人类的设计,正常左上,他上左obj=logitech_test.RunLogitechTwo()#设置目标颜色(示例:红色)target_color=np.array([163,57,49])#RGB颜色值#创建截屏对象sct=mss()whileTrue:flag=False#获取屏幕截图screen_shot=sct.grab(monitor)#展示scr_img=np.array(screen_shot)foreach_picinscr_img:forbgrineach_pic:b,g,r=bgr[:3]#rgb参数145,245,47,80,20,57ifr>=140andr=45andg=20andb
|
|