Fix: 修复夜间委托捕捉

This commit is contained in:
LmeSzinc 2020-05-05 22:04:36 +08:00
parent 1c2db1ec26
commit f9f0b59657
2 changed files with 10 additions and 27 deletions

View File

@ -136,7 +136,6 @@ python -m uiautomator2 init
- **GUI启动慢, uiautomator2启动慢** - **GUI启动慢, uiautomator2启动慢**
- **无法处理网络波动** 重连弹窗, 跳小黄鸡 - **无法处理网络波动** 重连弹窗, 跳小黄鸡
- **处理夜间委托的弹窗可能出错** 有捕捉, 但是可能会在一些奇怪的时间弹出来
- **会显示绿脸黄脸红脸, 红脸出击确认** 这个是瓜游心情值更新BUG的锅了, 只要填对了`RECOVER_PER_HOUR` 和 `EMOTION_LIMIT` 就不会红脸出击, 或者保证一直处于经验加成状态. - **会显示绿脸黄脸红脸, 红脸出击确认** 这个是瓜游心情值更新BUG的锅了, 只要填对了`RECOVER_PER_HOUR` 和 `EMOTION_LIMIT` 就不会红脸出击, 或者保证一直处于经验加成状态.
- **演习可能SL失败** 演习看的是屏幕上方的血槽, 血槽可能被立绘遮挡, 因此需要一定时间(默认1s)血量低于一定值(默认40%)才会触发SL. 一个血皮后排就有30%左右的血槽, 所以别以为在1s内被打掉40%是不可能的. 另外如果后排立绘过大且CD重叠严重, 建议增大确认时间(比如3s), 或者换皮肤, 这样可以减少误判. - **演习可能SL失败** 演习看的是屏幕上方的血槽, 血槽可能被立绘遮挡, 因此需要一定时间(默认1s)血量低于一定值(默认40%)才会触发SL. 一个血皮后排就有30%左右的血槽, 所以别以为在1s内被打掉40%是不可能的. 另外如果后排立绘过大且CD重叠严重, 建议增大确认时间(比如3s), 或者换皮肤, 这样可以减少误判.
- **极少数情况下ADB和uiautomator2会抽风** - **极少数情况下ADB和uiautomator2会抽风**

View File

@ -1,6 +1,5 @@
from datetime import datetime, time from datetime import datetime, time
from module.base.timer import Timer
from module.device.app import AppControl from module.device.app import AppControl
from module.device.control import Control from module.device.control import Control
from module.device.screenshot import Screenshot from module.device.screenshot import Screenshot
@ -9,7 +8,7 @@ from module.logger import logger
class Device(Screenshot, Control, AppControl): class Device(Screenshot, Control, AppControl):
def handle_night_commission(self, hour=21, threshold=5): def handle_night_commission(self, hour=21, threshold=30):
""" """
Args: Args:
hour (int): Hour that night commission refresh. hour (int): Hour that night commission refresh.
@ -24,35 +23,20 @@ class Device(Screenshot, Control, AppControl):
if now > time(hour, 0, threshold): if now > time(hour, 0, threshold):
return False return False
logger.info('Handling night commission') if GET_MISSION.match(self.image, offset=True):
wait = Timer(10) logger.info('Night commission appear.')
wait.start() self.click(GET_MISSION)
return True
while 1: return False
super().screenshot()
if GET_MISSION.appear_on(self.image):
super().click(GET_MISSION)
if wait.reached():
break
logger.info('Handle night commission finished')
return True
def screenshot(self): def screenshot(self):
""" """
Returns: Returns:
PIL.Image.Image: PIL.Image.Image:
""" """
self.handle_night_commission() super().screenshot()
return super().screenshot() if self.handle_night_commission():
super().screenshot()
def click(self, button):
self.handle_night_commission()
return super().click(button)
def swipe(self, vector, box=(123, 159, 1193, 628), random_range=(0, 0, 0, 0), padding=15, duration=(0.1, 0.2)):
self.handle_night_commission()
return super().swipe(vector=vector, box=box, random_range=random_range, padding=padding, duration=duration)
return self.image