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

Adj: Only enable ShipChanger in GemsFarming

This commit is contained in:
Zuosizhu
2024-07-21 02:33:06 +08:00
parent de307044eb
commit 90bf70f578
5 changed files with 98 additions and 31 deletions

View File

@@ -606,13 +606,13 @@ class AzurLaneAutoScript:
def loop(self):
gl.gl_set("g_config", self.config)
GGH=GGHandler(config=self.config, device=self.device)
self.gg_check()
logger.set_file_logger(self.config_name)
logger.info(f'Start scheduler loop: {self.config_name}')
# Try forced task_call restart to reset GG status
self.checker.wait_until_available()
GGHandler(config=self.config, device=self.device).handle_restart_before_tasks()
GGH.handle_restart_before_tasks()
check_fail = 0
while 1:
# Check update event from GUI
@@ -651,9 +651,9 @@ class AzurLaneAutoScript:
continue
# Check GG config before a task begins (to reset temporary config), and decide to enable it.
GGHandler(config=self.config, device=self.device).check_config()
GGH.check_config()
try:
GGHandler(config=self.config, device=self.device).check_then_set_gg_status(inflection.underscore(task))
GGH.check_then_set_gg_status(inflection.underscore(task))
check_fail = 0
except GameStuckError:
del_cached_property(self, 'config')

View File

@@ -46,15 +46,15 @@ from functools import wraps
# return decorator2
#
# return decorator
def timeout(func, timeout_sec=30.0, *args, **kwargs):
def timeout(_function, timeout_sec=30.0, *args, **kwargs):
"""Won't kill that task until it finishes"""
from threading import Thread
from module.logger import logger
def function_timeout(func):
def function_timeout(_func):
t0 = time.time()
success = True
p = Thread(target=func, args=args, kwargs=kwargs)
p = Thread(target=_func, args=args, kwargs=kwargs)
p.start()
p.join(timeout_sec)
if p.is_alive():
@@ -63,11 +63,11 @@ def timeout(func, timeout_sec=30.0, *args, **kwargs):
if t1 - t0 < 10:
success = False
_success = 'Done' if success else 'Failed'
logger.hr(f'{func.__name__}: {_success} in {str(round(t1 - t0, 1))}s', 1)
logger.hr(f'{_func.__name__}: {_success} in {str(round(t1 - t0, 1))}s', 1)
if not success:
return True
return False
return function_timeout(func)
return function_timeout(_function)
def timer(function):

View File

@@ -6,6 +6,7 @@ class GGData(ModuleBase):
gg_on = False
gg_enable = False
gg_auto = False
gg_type = False
ggdata = {}
def __init__(self, config=None):
@@ -29,6 +30,7 @@ class GGData(ModuleBase):
tmp.write(f'{self.config.config_name}\n')
tmp.write('gg_on=False\n')
self.ggdata['gg_on'] = False
self.ggdata['gg_type'] = False
self.ggdata['gg_enable'] = deep_get(d=self.config.data,
keys='GameManager.GGHandler.Enabled',
default=False)
@@ -37,10 +39,13 @@ class GGData(ModuleBase):
default=False)
tmp.write('gg_enable=' + str(self.ggdata['gg_enable']) + '\n')
tmp.write('gg_auto=' + str(self.ggdata['gg_auto']) + '\n')
tmp.write('gg_type=' + str(self.ggdata['gg_type']) + '\n')
tmp.close()
else:
for i in range(3):
for i in range(4):
line = tmp.readline()
if i == 3 and line == '':
line = 'gg_type=False\n'
line1, line2 = line.split('=')
self.ggdata[line1] = True if line2[:-1] == 'True' else False
tmp.close()

View File

@@ -15,6 +15,7 @@ class GGHandler:
"""
def __init__(self, config=None, device=None):
self.task = ''
self.config = config
self.device = device
self.factor = deep_get(self.config.data,
@@ -60,7 +61,8 @@ class GGHandler:
# GGU2(config=self.config, device=self.device) \
# .set_on(factor=self.factor)
self.handle_u2_restart()
success = timeout(GGU2(config=self.config, device=self.device).set_on, timeout_sec=deep_get(self.config.data, "GameManager.GGHandler.Timeout"), factor=self.factor)
success = self.change_attribute()
success = success and self.multiplier()
if success:
from module.exception import GameStuckError
raise GameStuckError
@@ -100,7 +102,7 @@ class GGHandler:
gg_data = GGData(self.config).get_data()
logger.info(f'GG status:')
logger.info(
f'Enabled={gg_data["gg_enable"]} AutoRestart={gg_data["gg_auto"]} Current stage={gg_data["gg_on"]}')
f'Enabled={gg_data["gg_enable"]} AutoRestart={gg_data["gg_auto"]} Current stage={gg_data["gg_on"]} Type Changed={gg_data["gg_type"]}')
return gg_data
def handle_u2_restart(self):
@@ -127,9 +129,10 @@ class GGHandler:
gg_enable = gg_data['gg_enable']
if gg_enable:
GGData(config=self.config).set_data(target='gg_on', value=False)
GGData(config=self.config).set_data(target='gg_type', value=False)
logger.info(f'GG status:')
logger.info(
f'Enabled={gg_data["gg_enable"]} AutoRestart={gg_data["gg_auto"]} Current stage={gg_data["gg_on"]}')
f'Enabled={gg_data["gg_enable"]} AutoRestart={gg_data["gg_auto"]} Current stage={gg_data["gg_on"]} Type Changed={gg_data["gg_type"]}')
if not self.skip_error():
logger.hr('Assume game died without GG panel')
@@ -156,8 +159,11 @@ class GGHandler:
default=False) else False
logger.info(f'Check GG status:')
logger.info(
f'Enabled={gg_data["gg_enable"]} AutoRestart={gg_data["gg_auto"]} Current stage={gg_data["gg_on"]}')
f'Enabled={gg_data["gg_enable"]} AutoRestart={gg_data["gg_auto"]} Current stage={gg_data["gg_on"]} '
f'Type Changed={gg_data["gg_type"]}')
if gg_auto:
if not gg_data['gg_type']:
self.change_ship_type(task=self.task)
if not gg_data['gg_on']:
self.set(True)
elif gg_data['gg_on']:
@@ -212,6 +218,7 @@ class GGHandler:
Args:
task : str = the next task to run
"""
self.task = task
_disabled_task = deep_get(self.config.data, 'GameManager.GGHandler.DisabledTask')
"""
'disable_all_dangerous_task'
@@ -298,3 +305,32 @@ class GGHandler:
self.check_status(False)
elif task in _enabled:
self.check_status(True)
def change_ship_type(self, task):
if task == 'gems_farming':
logger.hr('GG Ship Type', level=2)
success = timeout(GGU2(config=self.config, device=self.device).set_on,
timeout_sec=deep_get(self.config.data, "GameManager.GGHandler.Timeout"),
func='change_type',
factor=self.factor)
# success = GGU2(config=self.config, device=self.device).set_on('change_type')
return success
return True
def change_attribute(self):
logger.hr('GG Attribute', level=2)
success = timeout(GGU2(config=self.config, device=self.device).set_on,
timeout_sec=deep_get(self.config.data, "GameManager.GGHandler.Timeout"),
func='change_attribute',
factor=self.factor)
# GGU2(config=self.config, device=self.device).set_on('change_attribute')
return True
def multiplier(self):
logger.hr('GG Multiplier', level=2)
success = timeout(GGU2(config=self.config, device=self.device).set_on,
timeout_sec=deep_get(self.config.data, "GameManager.GGHandler.Timeout"),
func='multiplier',
factor=self.factor)
# success = GGU2(config=self.config, device=self.device).set_on(factor=self.factor)
return success

View File

@@ -31,12 +31,16 @@ class GGU2(Base):
self.exit()
return _skipped
def set_on(self, factor=200):
def set_on(self, func='multiplier', factor=200):
"""
func : 'multiplier' or 'change_type' or 'change_attribute'
factor : factor used in multiplier
"""
_name_dict = {
'en' : 'Azur Lane',
'cn' : '碧蓝航线',
'jp' : 'アズールレーン',
'tw' : '碧藍航線'
'en': 'Azur Lane',
'cn': '碧蓝航线',
'jp': 'アズールレーン',
'tw': '碧藍航線'
}
_server = self.config.SERVER
_name = _name_dict[_server]
@@ -44,9 +48,12 @@ class GGU2(Base):
ggdata = GGData(self.config).get_data()
for _i in range(1):
try:
if ggdata['gg_on']:
if ggdata['gg_on'] and func == 'multiplier':
logger.attr('GG', 'Enabled')
pass
elif ggdata['gg_type'] and func == 'change_type':
logger.attr('Type', 'Changed')
pass
else:
chosen = False
if self.d(resourceId=f"{self.gg_package_name}:id/hot_point_icon").exists:
@@ -104,8 +111,8 @@ class GGU2(Base):
).click()
logger.info('Click run Scripts')
self.device.sleep(0.3)
if self._run():
return 1
self.__getattribute__(func)()
return 1
if self.d.xpath('//*[@text="取消"]').exists:
self.d.xpath('//*[@text="取消"]').click()
logger.info("Cancel exists but not running script, click cancel")
@@ -125,16 +132,28 @@ class GGU2(Base):
finally:
pass
def _run(self):
def change_type(self):
ShipChanger = ChangeShip(self.config, self.device)
ShipChanger.PushLua()
ShipChanger.ChangeShipType()
GGData(self.config).set_data(target='gg_type', value='True')
self.d.app_stop(self.gg_package_name)
logger.hr('GG Enabled: Type Changed', level=2)
return 1
def change_attribute(self):
AttributeChanger = ChangeAttribute(self.config, self.device)
AttributeChanger.PushLua()
AttributeChanger.ChangeAttribute()
self.d.app_stop(self.gg_package_name)
return 1
def multiplier(self):
_run = False
_set = False
_confirmed = False
import os
_repush = deep_get(self.config.data, keys='GameManager.GGHandler.RepushLua')
ShipChanger = ChangeShip(self.config, self.device)
ShipChanger.PushLua()
AttributeChanger = ChangeAttribute(self.config, self.device)
AttributeChanger.PushLua()
if _repush:
# os.popen(f'"toolkit/Lib/site-packages/adbutils/binaries/adb.exe" -s'
# f' {self.device.serial} shell mkdir /sdcard/Notes')
@@ -152,8 +171,6 @@ class GGU2(Base):
self.device.adb_push("bin/Lua/Multiplier.lua", "/sdcard/Notes/Multiplier.lua")
self.device.sleep(0.5)
logger.info('Lua Pushed')
ShipChanger.ChangeShipType()
AttributeChanger.ChangeAttribute()
while 1:
self.device.sleep(1)
if self.d(resourceId=f"{self.gg_package_name}:id/search_toolbar").exists:
@@ -200,6 +217,15 @@ class GGU2(Base):
break
else:
return 0
logger.hr('GG Enabled', level=2)
logger.hr('GG Enabled: Multiplied', level=2)
self.d.app_stop(self.gg_package_name)
return 1
return 1
if __name__ == '__main__':
from module.config.config import AzurLaneConfig
from module.device.device import Device
config = AzurLaneConfig('主号')
device = Device(config)
GGU2(config, device).set_on()