1
0
mirror of https://github.com/0O0o0oOoO00/Alas.git synced 2026-05-14 14:29:26 +08:00

Add: Meta record

This commit is contained in:
ZuoSiZhu
2025-02-19 01:24:46 +08:00
parent b48679be35
commit ad5564cf2f
10 changed files with 114 additions and 6 deletions

View File

@@ -37,6 +37,7 @@
"ResearchRecord": "do_not",
"CommissionRecord": "do_not",
"CombatRecord": "do_not",
"MetaRecord": "do_not",
"OpsiRecord": "do_not",
"MeowfficerBuy": "do_not",
"MeowfficerTalent": "do_not"

View File

@@ -275,6 +275,14 @@
"save"
]
},
"MetaRecord": {
"type": "select",
"value": "do_not",
"option": [
"do_not",
"save"
]
},
"OpsiRecord": {
"type": "select",
"value": "do_not",

View File

@@ -114,6 +114,9 @@ DropRecord:
CombatRecord:
value: do_not
option: [ do_not, save ]
MetaRecord:
value: do_not
option: [ do_not, save ]
OpsiRecord:
value: do_not
option: [ do_not, save, upload, save_and_upload ]

View File

@@ -54,6 +54,7 @@ class GeneratedConfig:
DropRecord_ResearchRecord = 'do_not' # do_not, save, upload, save_and_upload
DropRecord_CommissionRecord = 'do_not' # do_not, save, upload, save_and_upload
DropRecord_CombatRecord = 'do_not' # do_not, save
DropRecord_MetaRecord = 'do_not' # do_not, save
DropRecord_OpsiRecord = 'do_not' # do_not, save, upload, save_and_upload
DropRecord_MeowfficerBuy = 'do_not' # do_not, save
DropRecord_MeowfficerTalent = 'do_not' # do_not, save, upload, save_and_upload

View File

@@ -612,6 +612,12 @@
"do_not": "Do nothing",
"save": "Save"
},
"MetaRecord": {
"name": "Meta Record",
"help": "",
"do_not": "Do nothing",
"save": "Save"
},
"OpsiRecord": {
"name": "OpSi Record",
"help": "",

View File

@@ -612,6 +612,12 @@
"do_not": "do_not",
"save": "save"
},
"MetaRecord": {
"name": "DropRecord.MetaRecord.name",
"help": "DropRecord.MetaRecord.help",
"do_not": "do_not",
"save": "save"
},
"OpsiRecord": {
"name": "DropRecord.OpsiRecord.name",
"help": "DropRecord.OpsiRecord.help",

View File

@@ -612,6 +612,12 @@
"do_not": "无操作",
"save": "保存"
},
"MetaRecord": {
"name": "Meta结算截图",
"help": "启用后会放缓结算时的点击速度",
"do_not": "无操作",
"save": "保存"
},
"OpsiRecord": {
"name": "大世界掉落截图",
"help": "",

View File

@@ -612,6 +612,12 @@
"do_not": "無操作",
"save": "保存"
},
"MetaRecord": {
"name": "DropRecord.MetaRecord.name",
"help": "DropRecord.MetaRecord.help",
"do_not": "do_not",
"save": "save"
},
"OpsiRecord": {
"name": "大世界掉落截圖",
"help": "",

View File

@@ -2,6 +2,7 @@ from datetime import datetime, timedelta
import module.config.server as server
from module.base.timer import Timer
from module.base.utils import image_left_strip
from module.combat.combat import BATTLE_PREPARATION, Combat
from module.config.utils import DEFAULT_TIME
@@ -11,6 +12,7 @@ from module.os_ash.assets import *
from module.os_handler.map_event import MapEventHandler
from module.ui.assets import BACK_ARROW
from module.ui.ui import UI
from module.statistics.azurstats import DropImage
class DailyDigitCounter(DigitCounter):
@@ -37,7 +39,9 @@ class AshCombat(Combat):
return False
if self.appear(BATTLE_STATUS, offset=(120, 20), interval=self.battle_status_click_interval):
if drop:
drop.handle_add(self)
self.device.sleep(3)
self.device.screenshot()
drop.add(self.device.image)
else:
self.device.sleep((0.25, 0.5))
self.device.click(BATTLE_STATUS)
@@ -45,7 +49,7 @@ class AshCombat(Combat):
if self.appear(BATTLE_PREPARATION, offset=(30, 30), interval=2):
self.device.click(BACK_ARROW)
return True
if super().handle_battle_status(drop=drop):
if super().handle_battle_status():
return True
return False
@@ -77,9 +81,68 @@ class AshCombat(Combat):
return False
def combat(self, *args, expected_end=None, **kwargs):
def combat_execute(self, auto='combat_auto', submarine='do_not_use', drop=None):
"""
Args:
auto (str): ['combat_auto', 'combat_manual', 'stand_still_in_the_middle', 'hide_in_bottom_left']
submarine (str): ['do_not_use', 'hunt_only', 'every_combat']
drop (DropImage):
"""
logger.info('Combat execute')
auto = 'combat_auto'
self.submarine_call_reset()
self.combat_auto_reset()
self.combat_manual_reset()
self.device.stuck_record_clear()
self.device.click_record_clear()
confirm_timer = Timer(10)
confirm_timer.start()
while 1:
self.device.screenshot()
if not confirm_timer.reached():
if self.handle_combat_automation_confirm():
continue
if self.handle_story_skip():
continue
if self.handle_combat_auto(auto):
continue
if self.handle_combat_manual(auto):
continue
if auto != 'combat_auto' and self.auto_mode_checked and self.is_combat_executing():
if self.handle_combat_weapon_release():
continue
if self.handle_submarine_call(submarine):
continue
if self.handle_popup_confirm('COMBAT_EXECUTE'):
continue
# End
if self.handle_get_items():
self.device.sleep((0.5,0.75))
continue
if self.handle_battle_status(drop=drop):
break
def combat(self, balance_hp=None, emotion_reduce=None, auto_mode="combat_auto", submarine_mode=None,
save_get_items=None, expected_end=None, fleet_index=1):
try:
super().combat(*args, expected_end=expected_end, **kwargs)
with self.stat.new(
genre="meta", method=self.config.DropRecord_MetaRecord
) as drop:
if save_get_items is False:
drop = None
elif isinstance(save_get_items, DropImage):
drop = save_get_items
self.combat_preparation(
balance_hp=balance_hp, emotion_reduce=emotion_reduce, auto=auto_mode, fleet_index=fleet_index)
self.combat_execute(drop=drop,
auto=auto_mode, submarine=submarine_mode)
self.combat_status(expected_end=expected_end)
logger.info('Combat end.')
except AshBeaconFinished:
pass

View File

@@ -156,7 +156,11 @@ class OpsiAshBeacon(Meta):
# Attack
combat = AshCombat(config=self.config, device=self.device)
combat.combat(expected_end=expected_end, save_get_items=False, emotion_reduce=False)
if self.config.DropRecord_MetaRecord == "save":
_save = True
else:
_save = False
combat.combat(expected_end=expected_end, save_get_items=_save, emotion_reduce=False)
def _handle_ash_beacon_reward(self, skip_first_screenshot=True):
"""
@@ -548,7 +552,11 @@ class AshBeaconAssist(Meta):
# Attack
combat = AshCombat(config=self.config, device=self.device)
combat.combat(expected_end=expected_end, save_get_items=False, emotion_reduce=False)
if self.config.DropRecord_MetaRecord == "save":
_save = True
else:
_save = False
combat.combat(expected_end=expected_end, save_get_items=_save, emotion_reduce=False)
def _ensure_meta_level(self):
"""