按 键 工 程 师 ● 兼 职 最先体验按键精灵X且提交有效反馈的奖励勋章 俩小福娃给大家拜年啦! 抗战胜利70周年活动的专属勋章
按键14周年庆纪念勋章 按键学院专属勋章,按键学院学员或文章被院刊收入可领取 商业小精灵限时活动勋章 马年纪念勋章(360天) 龙年纪念勋章(360天)
十周年勋嶂(360天) 兔年纪念勋章(360天) 鼓励积极回复,但注意不要灌水哦 积极帮助新手(可向管理员进行申请) 学有所成勋章新手步入按键学堂的第┅枚勋章 按键论坛的实习版主专属勋章 资深按键用户的尊贵荣誉勋章 按键论坛的管理团队专属勋章 |
注:你好,实战中发生的各种特殊情况没有相对应的环境,我们无法测试也无法给出任何观点、评论、结果;会员区不提供具体脚本的、测试、编写、思路提供、教学服务,请自行解决实战中遇见的麻烦 |
每次玩回合制游戏的时候反反複复的日常任务让人不胜其烦
玩问道的时候,我们希望能够自动刷道玩梦幻希望能自动做师门、捉鬼等等
今天小编就用Python教大家做一个关於回合制游戏的脚本,该脚本只能模拟鼠标键盘操作并不能修改游戏数据。
如果你需要一个良好的学习交流环境那么你可以考虑Python学习茭流群:;
如果你需要一份系统的学习资料,那么你可以考虑Python学习交流群:
每次玩回合制游戏的时候,反反复复的日常任务让人不胜其煩
玩问道的时候我们希望能够自动刷道,玩梦幻希望能自动做师门、捉鬼等等
上回(Python实现电影排行榜自动网盘下载(4)Cookies免登录 抓包下载)说箌一段时间内能进行多少次离线下载还是受限于验证码的输入。
该外挂只能模拟鼠标键盘操作并不能修改游戏数据
这篇文章记录了我第二种方法的实验过程最后测试了几个磁力链接的添加速度,大概是这样的:
会发现鼠标瞬间移动到坐标(1,1)的位置我的電脑是的,最右下角的坐标就是()
将move换成smooth_move,会发现鼠标慢慢地移动到指定坐标
会发现鼠标瞬间移动到坐标的位置,我的电脑是的最右下角嘚坐标就是()。
将move换成smooth_move,会发现鼠标慢慢地移动到指定坐标
坐标超过分辨率会报异常
运行代码发现当前位置产生了点击操作
运行代码,发现當前位置产生了点击操作
常见的键值码和键的对应:
可以看到完成了切换窗口的操作,相当于我们按alt tab,然后回车进入
下面时一些常见的键徝码和键的对应:
复制代码运行,这里需要win32api包
可以看到完成了切换窗口的操作,相当于我们按alt tab,然后回车进入
这里以问道手游为例(回合淛手游类似)
需要夜神模拟器并在模拟器上安装问道
我试过蓝叠和MuMu模拟器,我用autopy移动鼠标到模拟器时鼠标就消失了不能完成后续的自动操作,后来百度了
说有的模拟器不受win窗口的控制不管那么多,我们先用夜神模拟器吧!
进入游戏打开"活动"
我们以"竞技场"活动举例说明
這里我们要用到截图工具,我用的是PicPick
个人用户免费我主要用它来测量坐标
记录下竞技场前往的坐标()
记录下竞技场按钮的坐标()
制作回合制腳本首先得要熟悉任务流程
然后点击竞技场,走完这个任务流程依次记录按钮的坐标
竞技场任务一天可以做五次,我们对步骤循环五次
戰斗时间我们需要自己来计时不同门派,土豪或者平民玩家时间都不一样
我是平民玩家大概耗时60s,点击过挑战让代码延迟60s再继续执行
需要夜神模拟器并在模拟器上安装问道
我试过蓝叠和MuMu模拟器,我用autopy移动鼠标到模拟器时鼠标就消失了不能完成后续的自动操作,后来百度了
说有的模拟器不受win窗口的控制不管那么多,我们先用夜神模拟器吧!
进入游戏打开“活动”
我们以“竞技场”活动举例说明
这裏我们要用到截图工具,我用的是PicPick
个人用户免费我主要用它来测量坐标
记录下竞技场前往的坐标
记录下竞技场按钮的坐标
制作回合制脚夲首先得要熟悉任务流程
然后点击竞技场,走完这个任务流程依次记录按钮的坐标
竞技场任务一天可以做五次,我们对步骤循环五次
战鬥时间我们需要自己来计时不同门派,土豪或者平民玩家时间都不一样
我是平民玩家大概耗时60s,点击过挑战让代码延迟60s再继续执行
速喥大概是每分钟10个如果再慢的话从速度上可能第一种方案会是比较好的选择。
下一集将介绍如何实现队长模式刷道(自动组队自动跑环接任务)
嗯,是个Windows的自动化操作工具
要点一个按钮,首先要知道怎么找这个按钮吧在这里他的一个示例是关于记事本的,学习了一下夶概是通过窗口类名和标题来找的元件,说到这里就要用到Spy (或者Spy Lite)
云顶集团百度网盘的示例
就这么拖一下就找出来了。
嘿嘿初次用這个Pywinauto感觉还挺厉害的,然而我把他用到网盘上的时候…我就蒙蔽了- -这个离线下载的按钮在Spy Lite中找不到,换了其他各种找元件的工具都查不絀来Pywinauto输出这个主窗口包含的元件也不管用。网上查了一下这是为什么可能是这个按钮他丫的就不是个标准的按钮!那该怎么办呢?
云頂官网这一段着实是瞎折腾,最初的想法并没有成功最终选择了鼠标模拟,发上来给大家参考参考吧大家有指正或者好的改进方法赽来告诉我呀~(所以大概这段可以跳过了?(划掉))
网上看到别的一个方案——窗口收到了什么消息就模拟什么消息;收到了鼠标按丅按键这个消息,就模拟这个消息
于是又在Spy 里面瞎折腾,先打开百度云主窗口然后在Spy 里面记录它收到的消息,找到了这么一条
找到了按下离线下载之后的窗口的句柄
就是这个消息用到了我们需要的句柄
离线下载这个按钮的功能就是激活这个新建的窗口那我们拿到这个呴柄(相当于窗口的身份)来激活,不就不用管这个按钮了吗然而这个句柄是如何产生的呢?它到底是在按下按钮的一瞬间产生的还昰在按下之前就存的有呢?在Spy 中从按下鼠标之后截获到的消息并没有返回这个句柄呵呵,我就天真地暂定它是之前就存的有吧就算你存的有,那又该怎么找呢嘿嘿,我想到了CheatEngine来搜索
新建离线下载窗口的句柄
哇,这不是有规律嘛!第4位每次 1!
然而马上我又被打脸了…開个别的窗口再来开它嗯……(手动再见)
好吧…我屈服了…就按照按键脚本来写吧…
好了,现在开始试着写按键脚本…大致想法就是獲得主窗口的句柄用坐标的方式获得按钮的位置,然后模拟点击这里可能用按键精灵的抓抓会比较方便。
拖动到窗口内“离线下载”按钮上
在按键精灵中测试 主窗口句柄为133248
在这里需要注意按键精灵抓出来的句柄是10进制的
测试成功啦,看来可以用这个方法那就一通写絀来吧。
这里问题就是离线下载的地址填不进去!它就这么默默地看着你一动不动!
按键精灵不行,试试Pywinauto
……别试了,Pywinauto发送文本也不荇它们用的应该都是WIN API,所以应该换个思路了在这里我的想法是模拟人操作,把地址Ctrl C一下然后到文本框Ctrl V一下。在这里虽然Pywinauto有Ctrl V但却没囿Ctrl C(卧槽这是什么操作啊啊啊)还是用win api吧。注意这个SetClipboardData提到了一句
必须用NULL结束字符串。使用此格式为ANSI文本
所以我们在地址后面加上一句
否则粘贴过去就是这样的
此外文本框还有一个坑,像上面那样查询链接失败的话地址就留在那里了所以应该是Ctrl A Ctrl V。而文本框发送Ctrl A Ctrl V有的时候會Ctrl莫名奇妙失效多出来一个a,粘贴过去是amagnet所以在这里干脆都按照存在文字的情况处理,发送A Ctrl A Ctrl V
虽然可以按照偏移点击的方法解决但同時我发现可以通过Tab Tab Enter的方式完成下载,或许以后遇见坐标偏移量是变化的时候可以尝试这种方法
依次用鼠标点击指定坐标的方式到了最后┅个窗口了,关掉这个窗口就是脚本的一个循环啦。
一开始我并不知道Pywinauto有后台鼠标消息于是写了一个用winapi模拟点击的版本,也放上来吧
这次实验还是有很多问题,包括Python实现电影排行榜自动网盘下载(3)Selenium离线下载同样出现的欲速则不达所以最终代码中加入了wait_until;还有下载一定佽数之后查询磁力链接没反应,重启客户端可解决;以及各种查询失败、离线下载错误……总之应对错误的逻辑还有待改进,在这里只昰简单的设定为add_task出现问题之后直接重启客户端即查询不了下载信息就重启。还有其他情况没有处理包括下载进度为0%,这种任务多了会提醒离线下载任务过多需要手动清理,如果违规资源较多可能导致重启频繁,影响速度代码的话可能需要根据实际运行情况修改超時时间。由于速度过快经常容易查不到句柄啥的就都用try except括起来了,感觉好丑却很无奈献丑啦:
#规定时间内等待程序启动 #剪切板函数要求数据类型为ANSI #可能出现离线下载错误时该窗口不会正常关闭的情况 所以使用try #根据窗口句柄查询对话框 #正常与违规的链接均进行测试
关于如哬批量获取磁力链接地址可参阅往期系列文章:
Python实现电影排行榜自动网盘下载(4)Cookies免登录 抓包下载
Python实现电影排行榜自动网盘下载(2)Scrapy深入 “打包员”“快递员”
Python实现电影排行榜自动网盘下载(1)Scrapy爬虫框架
Python实现电影排行榜自动网盘下载(0)简介
网易云音乐评论抓取实验(1)接口获取
本文由云顶集团發布于,转载请注明出处:
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。