起因
本人在平时偶尔玩玩阴阳师,最近阴阳师推出了拜师系统,奖励丰厚。收够五个徒弟还能有动态框框和皮蛋。但是自己又不是魔鬼那种巨佬,又没人看的上。故开了个小号,小号又没有樱饼开不了系统自带的代刷系统。想到python能够通过模块来控制鼠标,那么能不能通过python控制鼠标来代肝呢。
实现
python用来控制鼠标之类的系统控件的模块为pywin32,pywin32模块下载地址在安装时需先配置python环境,安装完pywin32后就可以开始编码了。(本人使用网易阴阳师官方电脑版客户端登录)
import random
import time
import win32api, win32gui, win32con# 需要点击的坐标
pos = {'people':(578, 336),#单人开始按钮的坐标'team':(659, 398),#多人组队开始按钮的坐标
}def reset_window_pos(targetTitle):'''搜索桌面上的应用,将对应应用名的窗口固定并拉伸尺寸 '''hWndList = []win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hWndList)for hwnd in hWndList:title = win32gui.GetWindowText(hwnd)if (title.find(targetTitle) >= 0): #调整目标窗口到坐标(600,300),大小设置为(600,600)win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 0,0,800,0, win32con.SWP_SHOWWINDOW)def ClickLeftCur():'''鼠标的单击事件 '''win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)time.sleep(0.05)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)def moveCurPos(pos):'''鼠标的移动事件'''win32api.SetCursorPos(pos)def getCurPos():'''获取鼠标的坐标 '''return win32gui.GetCursorPos()def GetRandom():'''生成随机坐标元祖'''return (random.randint(20,700),random.randint(300,400))if __name__ == '__main__':time.sleep(2)# 获取当前鼠标的坐标# xy = getCurPos()# print(xy)# 获取阴阳师手游的窗口并将它固定reset_window_pos('阴阳师-网易游戏')# 循环操作for i in range(100):# 移动到单人开始的坐标,模拟点击,并等待23秒# 组队时,将pos['people']改为pos['team']即可moveCurPos(pos['people'])ClickLeftCur()time.sleep(23)# 战斗结算画面,随机点击御魂下方的画面moveCurPos(GetRandom())ClickLeftCur()time.sleep(1.5)moveCurPos(GetRandom())ClickLeftCur()time.sleep(3)moveCurPos(GetRandom())ClickLeftCur()moveCurPos(pos['people'])ClickLeftCur()ClickLeftCur()#等待转场动画结束time.sleep(3)
其中的时间设定可根据具体情况来设定。运行时需要使用管理员权限来运行不然会报错
这只是一段粗制滥造的代码,测试下来刷了三四百体力没啥问题。虽然程序友好性极差,但已经基本满足了我的个人需求。可能等以后有新需求了会再做优化吧。