当前位置:   article > 正文

用python实现阴阳师简单挂机脚本_挂机脚本怎么写

挂机脚本怎么写

首先需要安装好需要用到的库,如下图

 脚本的功能是点击开始以及在战斗结束时点击屏幕退出战斗

判断游戏状态的是pixelMatchesColor方法,这个方法前两个参数是屏幕像素的位置,后面三个参数是RGB值,若当前位置RGB值与设置值相同则会返回true。

 在准备界面中随便找一个像素点获取RGB值,这里我使用的是qq的截屏功能,最好取一个RGB值不变的区域,否则容易判断不出来,我也不知道为什么。点击开始的代码如下:

  1. def start():
  2. star_huodong = pag.pixelMatchesColor(413, 889, (58, 32, 33))
  3. #battle = pag.pixelMatchesColor(457, 165, (214, 196, 161)) # 确认是否在战斗界面
  4. if star_huodong:
  5. pag.moveTo(random.uniform(1490, 1590), random.uniform(800, 900))
  6. pag.click()
  7. print('点击开始')
  8. else:
  9. check()
  10. #开始点击后检查
  11. def check():
  12. star_huodong = pag.pixelMatchesColor(413, 889, (58, 32, 33))
  13. battle = pag.pixelMatchesColor(457, 165, (214, 196, 161)) # 确认是否在战斗界面
  14. if star_huodong:
  15. print('重新开始')
  16. time.sleep(0.5)
  17. start()
  18. if battle:
  19. print('进入战斗成功')
  20. else:
  21. print('出了问题,退出程序')
  22. sys.exit(0)

在战斗界面就简单多了,因为打一把需要的时间都是差不多的,只需要设置等待时间即可

  1. def waiting(wt):
  2. # 战斗等待
  3. time.sleep(wt)
  4. bcheck()

 时间根据自己的阵容在运行脚本的时候设置。

 领取奖励的时候使用moveTo方法将鼠标移动到空白位置,最好不要选中间的位置容易点击到掉落的奖励。

  1. def end():
  2. #领取奖励
  3. pag.moveTo(random.uniform(1246, 1448), random.uniform(610, 720))
  4. pag.click()
  5. print('点击结束')
  6. endcheck()

脚本使用了递归来检查,如下

  1. def endcheck():
  2. star_huodong = pag.pixelMatchesColor(413, 889, (58, 32, 33))
  3. wangfu = pag.pixelMatchesColor(290, 852, (6, 3,7))#往复之间界面判断
  4. #battle = pag.pixelMatchesColor(457, 165, (214, 196, 161)) # 确认是否在战斗界面
  5. if star_huodong:
  6. print('活动退出完成')
  7. else:
  8. if wangfu:
  9. pag.moveTo(random.uniform(943, 979), random.uniform(369, 500))
  10. pag.click()
  11. time.sleep(3)
  12. endcheck()
  13. else:
  14. print('退出失败')
  15. time.sleep(5)
  16. pag.click()
  17. endcheck()
  1. def bcheck():
  2. battle = pag.pixelMatchesColor(457, 165, (214, 196, 161)) # 确认是否在战斗界面
  3. if battle:
  4. print('战斗还未结束,请等待')
  5. time.sleep(3)
  6. bcheck()
  7. else:
  8. print("战斗结束")

由于结束的时候,结算动画没有结束,点击了也会没有反应,所以我设置sleep几秒后检查一次。这次活动通关或被面灵气抓住后会进入往复之间入口界面,所以比平时刷御魂的时候要多加一个判断是否在往复之间界面。

在战斗的时候设置的时间可能会有点误差 ,用bcheck隔几秒检查一次是否在战斗界面。

 最后写个循环,就能运行了

  1. if __name__=="__main__":
  2. pag.PAUSE = 0.5
  3. pag.FAILSAFE = True
  4. print('开始业原火')
  5. i = 0 #定时休息
  6. n = 0
  7. times = int(input("输入自动次数"))
  8. wt = int(input('输入等待时间'))
  9. while(True):
  10. i = i+1
  11. n = n+1
  12. times = times-1
  13. start()
  14. waiting(wt)
  15. end()
  16. print('完成%s次' % n)
  17. print('剩余%s次自动' % times)
  18. time.sleep(random.uniform(0.3, 0.6))
  19. # if i == 60:#防封号等待
  20. # time.sleep(60) #60把后休息1分钟,之后继续
  21. # i = 0
  22. if times == 0:
  23. print('任务完成,开始关机,请等待10秒')
  24. sys.exit(0)

 脚本是参考这篇写的:https://blog.csdn.net/weixin_39575775/article/details/110019648

B站上也有教程,不过好像被删掉了,本人水平有限,勿喷。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/490023
推荐阅读
相关标签
  

闽ICP备14008679号