| 15 | |
| 16 | |
| 17 | class ScriptTask(BaseActivity, ActivityShikigamiAssets): |
| 18 | |
| 19 | def run(self) -> None: |
| 20 | |
| 21 | config = self.config.activity_shikigami |
| 22 | self.limit_time: timedelta = config.general_climb.limit_time |
| 23 | if isinstance(self.limit_time, time): |
| 24 | self.limit_time = timedelta(hours=self.limit_time.hour, minutes=self.limit_time.minute, |
| 25 | seconds=self.limit_time.second) |
| 26 | self.limit_count = config.general_climb.limit_count |
| 27 | |
| 28 | self.home_main() |
| 29 | |
| 30 | # 设定是否锁定阵容 |
| 31 | if config.general_battle.lock_team_enable: |
| 32 | logger.info("Lock team") |
| 33 | while 1: |
| 34 | self.screenshot() |
| 35 | if self.appear_then_click(self.I_UNLOCK, interval=1): |
| 36 | continue |
| 37 | if self.appear(self.I_LOCK): |
| 38 | break |
| 39 | else: |
| 40 | logger.info("Unlock team") |
| 41 | while 1: |
| 42 | self.screenshot() |
| 43 | if self.appear_then_click(self.I_LOCK, interval=1): |
| 44 | continue |
| 45 | if self.appear(self.I_UNLOCK): |
| 46 | break |
| 47 | |
| 48 | # 选择是游戏的体力还是活动的体力 |
| 49 | current_ap = config.general_climb.ap_mode |
| 50 | self.switch(current_ap) |
| 51 | |
| 52 | # 流程应该是 在页面处: |
| 53 | # 1. 判定计数是否超了,时间是否超了 |
| 54 | # 2. 如果是消耗活动体力,判定活动体力是否足够 如果是消耗一般的体力,判定一般体力是否足够 |
| 55 | # 3. 如果开启买体力,就买体力 |
| 56 | # 4. 如果开启了切换到游戏体力,就切换 |
| 57 | while 1: |
| 58 | # 1 |
| 59 | if self.limit_time is not None and self.limit_time + self.start_time < datetime.now(): |
| 60 | logger.info("Time out") |
| 61 | break |
| 62 | if self.current_count >= self.limit_count: |
| 63 | logger.info("Count out") |
| 64 | break |
| 65 | # 2 |
| 66 | self.wait_until_appear(self.I_FIRE) |
| 67 | is_remain = self.check_ap_remain(current_ap) |
| 68 | # 如果没有剩余了且这个时候是体力,就退出活动 |
| 69 | if not is_remain and current_ap == ApMode.AP_GAME: |
| 70 | logger.info("Game ap out") |
| 71 | break |
| 72 | # 如果不是那就切换到体力 |
| 73 | elif not is_remain and current_ap == ApMode.AP_ACTIVITY: |
| 74 | if config.general_climb.activity_toggle: |