From 98118997512b551ea71519f0757b9763d5fadc2c Mon Sep 17 00:00:00 2001 From: POLAR me Date: Wed, 1 Jan 2025 06:07:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(campaign):=20=E6=B7=BB=E5=8A=A0=E4=BD=8E?= =?UTF-8?q?=E5=BF=83=E6=83=85=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增低心情检测功能,识别并处理低心情提示 - 当计算误差过大时再报错 --- assets/cn/handler/LOW_EMOTION_LEFT.png | Bin 0 -> 9380 bytes module/campaign/run.py | 51 ++++++++++++++++++++++++- module/handler/assets.py | 1 + 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 assets/cn/handler/LOW_EMOTION_LEFT.png diff --git a/assets/cn/handler/LOW_EMOTION_LEFT.png b/assets/cn/handler/LOW_EMOTION_LEFT.png new file mode 100644 index 0000000000000000000000000000000000000000..f873aa378021998ca3c64a92c71b88add52f5e79 GIT binary patch literal 9380 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 75: + handle_notify( + self.config.Error_OnePushConfig, + title=f"Alas <{self.config.config_name}> {name} Emotion calculate error ", + content=f"<{self.config.config_name}> {fleet} recorded is {getattr(self.campaign.emotion, fleet).current},Emotion calculate error" + ) + setattr(getattr(self.campaign.emotion, fleet), 'current', 0) + self.campaign.emotion.record() + self.campaign.emotion.show() + try: + self.campaign.emotion.check_reduce(self.campaign._map_battle) + except ScriptEnd as e: + logger.hr('Script end') + logger.info(str(e)) + if self.appear_then_click(LOW_EMOTION_LEFT, offset=(30, 30), interval=3): + break + else: + raise GamePageUnknownError(f'LOW EMOTION TIP FOUND, BUT NO LEFT button') + + else: + logger.warning("Game stuck, but not emotion error") + raise GameStuckError(f'Wait too long but not emotion error') + def run(self, name, folder='campaign_main', mode='normal', total=0): """ Args: @@ -405,7 +450,9 @@ class CampaignRun(CampaignEvent, ShopStatus): logger.hr('Script end') logger.info(str(e)) break - + except GameStuckError as e: + self.detect_low_emotion(name) + # Update config if len(self.campaign.config.modified): logger.info('Updating config for dashboard') diff --git a/module/handler/assets.py b/module/handler/assets.py index 939899b44..1d30e44cb 100644 --- a/module/handler/assets.py +++ b/module/handler/assets.py @@ -52,6 +52,7 @@ LOGIN_CHECK = Button(area={'cn': (1214, 653, 1268, 709), 'en': (1214, 653, 1268, LOGIN_GAME_UPDATE = Button(area={'cn': (700, 471, 873, 529), 'en': (726, 474, 850, 519), 'jp': (704, 475, 867, 525), 'tw': (706, 477, 866, 528)}, color={'cn': (238, 170, 78), 'en': (241, 169, 73), 'jp': (234, 167, 77), 'tw': (235, 169, 80)}, button={'cn': (700, 471, 873, 529), 'en': (726, 474, 850, 519), 'jp': (704, 475, 867, 525), 'tw': (706, 477, 866, 528)}, file={'cn': './assets/cn/handler/LOGIN_GAME_UPDATE.png', 'en': './assets/en/handler/LOGIN_GAME_UPDATE.png', 'jp': './assets/jp/handler/LOGIN_GAME_UPDATE.png', 'tw': './assets/tw/handler/LOGIN_GAME_UPDATE.png'}) LOGIN_RETURN_INFO = Button(area={'cn': (960, 123, 1158, 333), 'en': (960, 123, 1158, 333), 'jp': (960, 123, 1158, 333), 'tw': (960, 123, 1158, 333)}, color={'cn': (170, 185, 166), 'en': (170, 185, 166), 'jp': (170, 185, 166), 'tw': (170, 185, 166)}, button={'cn': (960, 123, 1158, 333), 'en': (960, 123, 1158, 333), 'jp': (960, 123, 1158, 333), 'tw': (960, 123, 1158, 333)}, file={'cn': './assets/cn/handler/LOGIN_RETURN_INFO.png', 'en': './assets/en/handler/LOGIN_RETURN_INFO.png', 'jp': './assets/jp/handler/LOGIN_RETURN_INFO.png', 'tw': './assets/tw/handler/LOGIN_RETURN_INFO.png'}) LOGIN_RETURN_SIGN = Button(area={'cn': (1, 7, 104, 47), 'en': (1, 7, 118, 39), 'jp': (1, 7, 104, 47), 'tw': (1, 7, 104, 47)}, color={'cn': (158, 214, 229), 'en': (176, 223, 236), 'jp': (158, 214, 229), 'tw': (158, 214, 229)}, button={'cn': (1, 7, 104, 47), 'en': (1, 7, 118, 39), 'jp': (1, 7, 104, 47), 'tw': (1, 7, 104, 47)}, file={'cn': './assets/cn/handler/LOGIN_RETURN_SIGN.png', 'en': './assets/en/handler/LOGIN_RETURN_SIGN.png', 'jp': './assets/jp/handler/LOGIN_RETURN_SIGN.png', 'tw': './assets/tw/handler/LOGIN_RETURN_SIGN.png'}) +LOW_EMOTION_LEFT = Button(area={'cn': (402, 481, 577, 541), 'en': (402, 481, 577, 541), 'jp': (402, 481, 577, 541), 'tw': (402, 481, 577, 541)}, color={'cn': (166, 167, 170), 'en': (166, 167, 170), 'jp': (166, 167, 170), 'tw': (166, 167, 170)}, button={'cn': (402, 481, 577, 541), 'en': (402, 481, 577, 541), 'jp': (402, 481, 577, 541), 'tw': (402, 481, 577, 541)}, file={'cn': './assets/cn/handler/LOW_EMOTION_LEFT.png', 'en': './assets/cn/handler/LOW_EMOTION_LEFT.png', 'jp': './assets/cn/handler/LOW_EMOTION_LEFT.png', 'tw': './assets/cn/handler/LOW_EMOTION_LEFT.png'}) MAINTENANCE_ANNOUNCE = Button(area={'cn': (923, 141, 990, 186), 'en': (923, 141, 990, 186), 'jp': (923, 141, 990, 186), 'tw': (923, 141, 990, 186)}, color={'cn': (207, 95, 91), 'en': (207, 95, 91), 'jp': (207, 95, 91), 'tw': (207, 95, 91)}, button={'cn': (923, 141, 990, 186), 'en': (923, 141, 990, 186), 'jp': (923, 141, 990, 186), 'tw': (923, 141, 990, 186)}, file={'cn': './assets/cn/handler/MAINTENANCE_ANNOUNCE.png', 'en': './assets/en/handler/MAINTENANCE_ANNOUNCE.png', 'jp': './assets/jp/handler/MAINTENANCE_ANNOUNCE.png', 'tw': './assets/tw/handler/MAINTENANCE_ANNOUNCE.png'}) MAP_AIR_RAID = Button(area={'cn': (350, 447, 1280, 472), 'en': (350, 447, 1280, 472), 'jp': (350, 447, 1280, 472), 'tw': (350, 447, 1280, 472)}, color={'cn': (154, 43, 46), 'en': (154, 43, 46), 'jp': (154, 43, 46), 'tw': (154, 43, 46)}, button={'cn': (350, 447, 1280, 472), 'en': (350, 447, 1280, 472), 'jp': (350, 447, 1280, 472), 'tw': (350, 447, 1280, 472)}, file={'cn': './assets/cn/handler/MAP_AIR_RAID.png', 'en': './assets/en/handler/MAP_AIR_RAID.png', 'jp': './assets/jp/handler/MAP_AIR_RAID.png', 'tw': './assets/tw/handler/MAP_AIR_RAID.png'}) MAP_AMBUSH = Button(area={'cn': (261, 433, 1280, 449), 'en': (261, 433, 1280, 449), 'jp': (261, 433, 1280, 449), 'tw': (261, 433, 1280, 449)}, color={'cn': (161, 41, 43), 'en': (161, 41, 43), 'jp': (161, 41, 43), 'tw': (161, 41, 43)}, button={'cn': (261, 433, 1280, 449), 'en': (261, 433, 1280, 449), 'jp': (261, 433, 1280, 449), 'tw': (261, 433, 1280, 449)}, file={'cn': './assets/cn/handler/MAP_AMBUSH.png', 'en': './assets/en/handler/MAP_AMBUSH.png', 'jp': './assets/jp/handler/MAP_AMBUSH.png', 'tw': './assets/tw/handler/MAP_AMBUSH.png'})