- 使用Python + win32api实现简单自动鼠标点击
- 使用tkinter设计GUI界面并用pyinstaller打包
不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然很想尝试着写个脚本挂机,话不多说进入正题。
基础模拟点击
简单的鼠标操作
游戏挂机脚本,无非就是自动移动鼠标,自动点击,进行重复操作,所以,第一步就是如何控制鼠标
1 | import win32api |
当然,再后续操作中你可能需要获取屏幕分辨率,我只打算让脚本能在自己电脑上跑就满足了,所以没有实现适配不同分辨率
1 | def resolution(): # 获取屏幕分辨率 |
值得注意的是,一定要在管理员权限下的cmd中运行,否则点击无效
这个时候,你已经可以写个while循环,不停地点击屏幕上不同的几个点了,最基础的挂机脚本就实现了
使用PIL识别图像
我们肯定不满足于机械式的连续点击,万一被封号呢…
所以需要识别图像,再进行点击
首先,就需要定位到阴阳师的窗口
1 | import win32gui |
get_window_info()
函数返回阴阳师窗口信息(x1, y1, x2, y2),(x1, y1)是窗口左上角的坐标,(x2, y2)是窗口右下角的坐标,代码中的text
可以暂时忽略,这在后续GUI界面中用于输出提示信息。
下面使用PIL获取游戏截图
1 | def get_posx(x, window_size): # 返回x相对坐标 |
考虑到窗口大小不同,位置会有所偏移,这里使用屏幕上点的相对位置
获取到关键位置的截图之后,计算图片的hash值
1 | def get_hash(img): |
将关键位置截图的hash值保存下来,下次脚本运行时,将截图hash值与原始hash值进行比对,判断是否相似。
这里使用汉明距离进行计算,比较hash值中相同位置上不同元素的个数
1 | def hamming(hash1, hash2, n=20): |
准备工作做完了,下面就可以开心刷御灵了
1 | def yu_ling(window_size): |
至此,我们已经可以通过管理员cmd运行脚本了。
但这样的脚本运行起来比较麻烦,也没有好看的界面。接下来,我们将使用tkinter设计GUI界面,并用pyinstaller打包成.exe文件
GUI
tkinter
tkinter是Python内置的GUI设计界面,对小白来说容易上手,你也可以尝试用pyqt或者wx
关于tkinter可以看一下莫烦教程
首先创建一个窗口,并设置必要信息1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16import tkinter as tk
from icon import img
window = tk.Tk() # 创建一个窗口
window.title('奴良小轩v0.1')
window.geometry('240x480+120+30') # 窗口的位置以及大小
# 设置图标
with open('tmp.ico', 'wb+') as fp:
fp.write(base64.b64decode(img))
window.iconbitmap('tmp.ico')
os.remove('tmp.ico')
# 设置图标
label = tk.Label(window, font=('微软雅黑', 12),
text='请将PC端阴阳师调节与小宝等高') # 显示一段文本
label.pack()
设置图标
默认情况下,窗口图标是红色的TK
,想修改则使用.iconbitmap(path)方法,但是,在实际使用踩坑了。因为后面我会使用pyinstaller打包,因为找不到path路径运行程序会报错,找了好久才找到这个错误。
解决方案是先将图标读取并写入ico.py
文件,调用.iconbitmap(path)时读取ico.py
,代码如下:
1 | import base64 |
功能选择
1 | # Radiobutton # |
开始按钮
- start_mission()中定义了每一个功能所要执行的函数,注意的是,独立功能需要放在一个线程中执行,不然界面会被阻塞卡死
- 全局变量
is_start
用来控制功能的执行与停止 - click()函数用来改变按钮显示以及锁定功能选择
1 | # button start# |
文本显示
1 | import ScrolledText |
注意的一点是,再每次输出文本的时候希望自动显示低端,这时需要在insert之后执行text.see('end')
Pyinstaller打包
1 | pyinstaller -F -w -i ./yaodao.ico ./tk_gui.py |
-F
表示输出单文件exe-w
表示不显示命令行-i
设置图标
更多参数设置详见这里
至此全部搞定,打开exe时记得右键管理员权限打开
Have Fun!
下一篇,简单碎片登记系统(鸽了)