赞
踩
首先需要安装好需要用到的库,如下图
脚本的功能是点击开始以及在战斗结束时点击屏幕退出战斗
判断游戏状态的是pixelMatchesColor方法,这个方法前两个参数是屏幕像素的位置,后面三个参数是RGB值,若当前位置RGB值与设置值相同则会返回true。
在准备界面中随便找一个像素点获取RGB值,这里我使用的是qq的截屏功能,最好取一个RGB值不变的区域,否则容易判断不出来,我也不知道为什么。点击开始的代码如下:
- def start():
- star_huodong = pag.pixelMatchesColor(413, 889, (58, 32, 33))
- #battle = pag.pixelMatchesColor(457, 165, (214, 196, 161)) # 确认是否在战斗界面
- if star_huodong:
- pag.moveTo(random.uniform(1490, 1590), random.uniform(800, 900))
- pag.click()
- print('点击开始')
-
- else:
- check()
-
- #开始点击后检查
- def check():
- star_huodong = pag.pixelMatchesColor(413, 889, (58, 32, 33))
- battle = pag.pixelMatchesColor(457, 165, (214, 196, 161)) # 确认是否在战斗界面
- if star_huodong:
- print('重新开始')
- time.sleep(0.5)
- start()
- if battle:
- print('进入战斗成功')
- else:
- print('出了问题,退出程序')
- sys.exit(0)

在战斗界面就简单多了,因为打一把需要的时间都是差不多的,只需要设置等待时间即可
- def waiting(wt):
- # 战斗等待
- time.sleep(wt)
- bcheck()
时间根据自己的阵容在运行脚本的时候设置。
领取奖励的时候使用moveTo方法将鼠标移动到空白位置,最好不要选中间的位置容易点击到掉落的奖励。
- def end():
- #领取奖励
- pag.moveTo(random.uniform(1246, 1448), random.uniform(610, 720))
- pag.click()
- print('点击结束')
- endcheck()
脚本使用了递归来检查,如下
- def endcheck():
- star_huodong = pag.pixelMatchesColor(413, 889, (58, 32, 33))
- wangfu = pag.pixelMatchesColor(290, 852, (6, 3,7))#往复之间界面判断
- #battle = pag.pixelMatchesColor(457, 165, (214, 196, 161)) # 确认是否在战斗界面
- if star_huodong:
- print('活动退出完成')
-
- else:
- if wangfu:
- pag.moveTo(random.uniform(943, 979), random.uniform(369, 500))
- pag.click()
- time.sleep(3)
- endcheck()
- else:
- print('退出失败')
- time.sleep(5)
- pag.click()
- endcheck()

- def bcheck():
- battle = pag.pixelMatchesColor(457, 165, (214, 196, 161)) # 确认是否在战斗界面
- if battle:
- print('战斗还未结束,请等待')
- time.sleep(3)
- bcheck()
- else:
- print("战斗结束")
由于结束的时候,结算动画没有结束,点击了也会没有反应,所以我设置sleep几秒后检查一次。这次活动通关或被面灵气抓住后会进入往复之间入口界面,所以比平时刷御魂的时候要多加一个判断是否在往复之间界面。
在战斗的时候设置的时间可能会有点误差 ,用bcheck隔几秒检查一次是否在战斗界面。
最后写个循环,就能运行了
- if __name__=="__main__":
- pag.PAUSE = 0.5
- pag.FAILSAFE = True
- print('开始业原火')
- i = 0 #定时休息
- n = 0
- times = int(input("输入自动次数"))
- wt = int(input('输入等待时间'))
- while(True):
- i = i+1
- n = n+1
- times = times-1
- start()
- waiting(wt)
- end()
- print('完成%s次' % n)
- print('剩余%s次自动' % times)
- time.sleep(random.uniform(0.3, 0.6))
- # if i == 60:#防封号等待
- # time.sleep(60) #60把后休息1分钟,之后继续
- # i = 0
-
- if times == 0:
- print('任务完成,开始关机,请等待10秒')
- sys.exit(0)

脚本是参考这篇写的:https://blog.csdn.net/weixin_39575775/article/details/110019648
B站上也有教程,不过好像被删掉了,本人水平有限,勿喷。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。