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:
8
alas.py
8
alas.py
@@ -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')
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user