目前主流的游戏外挂或者脚本的制作方式主要有:
1、利用CE等修改内存中的值,使游戏里的属性或者金币增加。主要适用于单机游戏。
2、利用自动点击脚本模拟人进行点击,完成每日任务等。主要适用于回合制网游。
3、大型网络游戏脚本,比如LOL自动躲技能脚本,原理是截取数据包,然后识别技能范围、路线,进行躲避规划。
首先我们先开始学习做类型2的脚本,这类脚本通常是通过定位坐标去寻找任务或者活动的图标位置,然后使用模拟点击鼠标去实现自动点击脚本。主要工具包也是这次学习的autopy包主要用来模拟鼠标和键盘的点击操作
开发环境:windows
开发语言:python3.6
pip install autopy
如果python2安装失败:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
找到:
autopy‑0.51‑cp27‑cp27m‑win_amd64.whl
下载成功后,找到文件位置,在当前位置打开命令行之后
pip install autopy‑0.51‑cp27‑cp27m‑win_amd64.whl
import autopy as at
print(at.screen.scale())
#1.0 表示一个坐标点包含1.0个像素点,
#像素是指由图像的小方格组成的,这些小方块都有一个明确的位置
#和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子
print(at.screen.size())
#(1920.0, 1080.0)
#屏幕的大小
scale=at.screen.scale()
print(at.screen.size()[0]*scale,at.screen.size()[1]*scale)
#像素点的大小,因为一个坐标点包含1.0个像素点,所以也是 1920.0, 1080.0
print(at.screen.is_point_visible(1919,1079))
#判断是否超出范围
print(at.screen.is_point_visible(1920,1080))
#判断是否超出范围
print(at.screen.get_color(100,1))
#16进制图片颜色属性
print(at.color.hex_to_rgb(at.screen.get_color(1,1)))
#RGB图片颜色属性
#at.mouse.move(100,100)
#鼠标迅速移动到(100,100)
#at.mouse.smooth_move(100,100)
#鼠标移动到(100,100)有移动过程
#at.mouse.toggle(autopy.mouse.Button.LEFT, True) #按下指定鼠标键
#at.mouse.toggle(autopy.mouse.Button.LEFT, False) #释放指定鼠标键
#注意释放,要不然会电脑会一直按着那个键,直到你终止程序
#参数
#at.mouse.Button.LEFT 鼠标左键
#at.mouse.Button.RIGHT 鼠标右键
#at.mouse.Button.MIDDLE 鼠标中键
#None 默认左键
print(at.mouse.location())
#获取鼠标当前位置
at.mouse.smooth_move(221.0, 786.0)
at.mouse.click(None)
#点左键一下,然后松开
#at.mouse.click(at.mouse.Button.LEFT, 3)
# 按住左键保持3秒,然后松开
at.key.type_string('Hello123',0)
#输入相应的字符串, 0表示速度 ,0最快
autopy.key.toggle(autopy.key.Code.UP_ARROW, True, []) #按下方向键
autopy.key.toggle(autopy.key.Code.UP_ARROW, False, []) #释放方向键
autopy.key.toggle(autopy.key.Code.UP_ARROW,True,[autopy.key.Modifier.CONTROL],0) #按键或者释放键
#参数1 键盘代码(看下表)或键名
#参数2 True表示按下,False松开
#参数3 同时按下的修饰键
#参数4 延迟n秒后再往下执行
autopy.key.toggle(autopy.key.Code.UP_ARROW, False, [autopy.key.Modifier.CONTROL], 0)
#注意释放,要不然会电脑会一直按着那个修饰键,直到你终止程序
autopy.key.tap(autopy.key.Code.CONTROL, [], 2) #对autopy.key.toggle进行的封装,方便使用,按下并自动释放.
print('xx')
autopy.key.type_string('Hello123', 0) #输入相应的字符串
#参数2 每分钟的字符个数,0表示最快
键盘代码建议百度。
a=at.bitmap.capture_screen(None)
a.save('screen.png')
#截取当前屏幕,在本文件目录下生成了一个名为some的png图片
photo1 = at.bitmap.Bitmap.open('screen.png')
photo2 = at.bitmap.Bitmap.open('1.png')
i=photo1.find_every_bitmap(photo2)
#在图片1中寻找图片2的坐标
print(i)
#打印坐标
at.mouse.smooth_move(1269.0, 76.0)