Skip to content
20 changes: 17 additions & 3 deletions alas.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@ def checker(self):
def run(self, command, skip_first_screenshot=False):
try:
if not skip_first_screenshot:
self.device.screenshot()
try:
self.device.screenshot()
except GameNotRunningError:
if command not in ['start', 'restart']:
raise
self.__getattribute__(command)()
return True
except TaskEnd:
Expand Down Expand Up @@ -493,6 +497,7 @@ def get_next_task(self):
"""
Returns:
str: Name of the next task.
None: If an idle action failed while error handling is disabled.
"""
while 1:
task = self.config.get_next()
Expand Down Expand Up @@ -521,7 +526,14 @@ def get_next_task(self):
continue
elif method == 'goto_main':
logger.info('Goto main page during wait')
self.run('goto_main')
if not self.run('goto_main'):
if self.config.Error_HandleError:
# Recovery tasks must bypass the idle queue's hoarding delay.
AzurLaneConfig.is_hoarding_task = False
del_cached_property(self, 'config')
continue
task = None
break
release_resources()
self.device.release_during_wait()
if not self.wait_until(task.next_run):
Expand All @@ -544,7 +556,7 @@ def get_next_task(self):
break

AzurLaneConfig.is_hoarding_task = False
return task.command
return task.command if task is not None else None

def loop(self):
logger.set_file_logger(self.config_name)
Expand All @@ -569,6 +581,8 @@ def loop(self):
self.config.task_call('Restart')
# Get task
task = self.get_next_task()
if task is None:
break
# Init device and change server
_ = self.device
self.device.config = self.config
Expand Down
Binary file added assets/cn/os/SELECT_DANGEROUS_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/cn/os/SELECT_OBSCURE_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/cn/os/SELECT_SAFE_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions config/template.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
"ScreenshotDedithering": false,
"AdbRestart": false
},
"PlayCover": {
"ManagerKey": null
},
"EmulatorInfo": {
"Emulator": "auto",
"name": null,
Expand Down
11 changes: 9 additions & 2 deletions module/combat/hp_balancer.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,7 @@ def _expected_scout_order(self, hp):

return order

@Config.when(DEVICE_CONTROL_METHOD='minitouch')
def _gen_exchange_step(self, target):
def _gen_exchange_step_touchlike(self, target):
"""
Minitouch swiping is more like human, when it drag the first ship to the third ship,
[0, 1, 2] becomes [1, 2, 0], while in adb/uiautomator2, it becomes [2, 1, 0].
Expand Down Expand Up @@ -194,6 +193,14 @@ def _gen_exchange_step(self, target):
# Target is the same as origin. Do nothing
pass

@Config.when(DEVICE_CONTROL_METHOD='minitouch')
def _gen_exchange_step(self, target):
yield from self._gen_exchange_step_touchlike(target)

@Config.when(DEVICE_CONTROL_METHOD='playcover')
def _gen_exchange_step(self, target):
yield from self._gen_exchange_step_touchlike(target)

@Config.when(DEVICE_CONTROL_METHOD=None)
def _gen_exchange_step(self, target):
"""
Expand Down
13 changes: 11 additions & 2 deletions module/config/argument/args.json
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,8 @@
"DroidCast",
"DroidCast_raw",
"nemu_ipc",
"ldopengl"
"ldopengl",
"playcover"
]
},
"ControlMethod": {
Expand All @@ -136,7 +137,8 @@
"uiautomator2",
"minitouch",
"Hermit",
"MaaTouch"
"MaaTouch",
"playcover"
]
},
"ScreenshotDedithering": {
Expand All @@ -148,6 +150,13 @@
"value": false
}
},
"PlayCover": {
"ManagerKey": {
"type": "input",
"value": "",
"valuetype": "str"
}
},
"EmulatorInfo": {
"Emulator": {
"type": "select",
Expand Down
6 changes: 6 additions & 0 deletions module/config/argument/argument.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Emulator:
DroidCast_raw,
nemu_ipc,
ldopengl,
playcover,
]
ControlMethod:
value: MaaTouch
Expand All @@ -52,9 +53,14 @@ Emulator:
minitouch,
Hermit,
MaaTouch,
playcover,
]
ScreenshotDedithering: false
AdbRestart: false
PlayCover:
ManagerKey:
value: ''
valuetype: str
EmulatorInfo:
Emulator:
value: auto
Expand Down
1 change: 1 addition & 0 deletions module/config/argument/task.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Alas:
tasks:
Alas:
- Emulator
- PlayCover
- EmulatorInfo
- Error
- Optimization
Expand Down
7 changes: 5 additions & 2 deletions module/config/config_generated.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,14 @@ class GeneratedConfig:
Emulator_Serial = 'auto'
Emulator_PackageName = 'auto' # auto, com.bilibili.azurlane, com.YoStarEN.AzurLane, com.YoStarJP.AzurLane, com.hkmanjuu.azurlane.gp, com.bilibili.blhx.huawei, com.bilibili.blhx.honor, com.bilibili.blhx.mi, com.tencent.tmgp.bilibili.blhx, com.bilibili.blhx.baidu, com.bilibili.blhx.qihoo, com.bilibili.blhx.nearme.gamecenter, com.bilibili.blhx.vivo, com.bilibili.blhx.mz, com.bilibili.blhx.dl, com.bilibili.blhx.lenovo, com.bilibili.blhx.uc, com.bilibili.blhx.mzw, com.yiwu.blhx.yx15, com.bilibili.blhx.m4399, com.bilibili.blhx.bilibiliMove, com.hkmanjuu.azurlane.gp.mc
Emulator_ServerName = 'disabled' # disabled, cn_android-0, cn_android-1, cn_android-2, cn_android-3, cn_android-4, cn_android-5, cn_android-6, cn_android-7, cn_android-8, cn_android-9, cn_android-10, cn_android-11, cn_android-12, cn_android-13, cn_android-14, cn_android-15, cn_android-16, cn_android-17, cn_android-18, cn_android-19, cn_android-20, cn_android-21, cn_android-22, cn_android-23, cn_android-24, cn_android-25, cn_android-26, cn_android-27, cn_android-28, cn_android-29, cn_ios-0, cn_ios-1, cn_ios-2, cn_ios-3, cn_ios-4, cn_ios-5, cn_ios-6, cn_ios-7, cn_ios-8, cn_ios-9, cn_ios-10, cn_channel-0, cn_channel-1, cn_channel-2, cn_channel-3, cn_channel-4, cn_channel-5, en-0, en-1, en-2, en-3, en-4, en-5, jp-0, jp-1, jp-2, jp-3, jp-4, jp-5, jp-6, jp-7, jp-8, jp-9, jp-10, jp-11, jp-12, jp-13, jp-14, jp-15, jp-16, jp-17
Emulator_ScreenshotMethod = 'auto' # auto, ADB, ADB_nc, uiautomator2, aScreenCap, aScreenCap_nc, DroidCast, DroidCast_raw, nemu_ipc, ldopengl
Emulator_ControlMethod = 'MaaTouch' # ADB, uiautomator2, minitouch, Hermit, MaaTouch
Emulator_ScreenshotMethod = 'auto' # auto, ADB, ADB_nc, uiautomator2, aScreenCap, aScreenCap_nc, DroidCast, DroidCast_raw, nemu_ipc, ldopengl, playcover
Emulator_ControlMethod = 'MaaTouch' # ADB, uiautomator2, minitouch, Hermit, MaaTouch, playcover
Emulator_ScreenshotDedithering = False
Emulator_AdbRestart = False

# Group `PlayCover`
PlayCover_ManagerKey = None

# Group `EmulatorInfo`
EmulatorInfo_Emulator = 'auto' # auto, NoxPlayer, NoxPlayer64, BlueStacks4, BlueStacks5, BlueStacks4HyperV, BlueStacks5HyperV, LDPlayer3, LDPlayer4, LDPlayer9, LDPlayer14, MuMuPlayer, MuMuPlayerX, MuMuPlayer12, MEmuPlayer
EmulatorInfo_name = None
Expand Down
26 changes: 19 additions & 7 deletions module/config/i18n/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@
},
"Serial": {
"name": "Serial",
"help": "Common emulator Serial can be queried in the list below\nUse \"auto\" to auto-detect emulators, but if multiple emulators are running or use emulators that do not support auto-detect, \"auto\" cannot be used and serial must be filled in manually\nDefault serial for select emulators:\n- BlueStacks 127.0.0.1:5555\n- BlueStacks4 Hyper-V use \"bluestacks4-hyperv\", \"bluestacks4-hyperv-2\" for multi instance, and so on\n- BlueStacks5 Hyper-V use \"bluestacks5-hyperv\", \"bluestacks5-hyperv-1\" for multi instance, and so on\n- NoxPlayer 127.0.0.1:62001\n- NoxPlayer64bit 127.0.0.1:59865\n- MuMuPlayer/MuMuPlayer X 127.0.0.1:7555\n- MuMuPlayer12 127.0.0.1:16384\n- MemuPlayer 127.0.0.1:21503\n- LDPlayer emulator-5554 or 127.0.0.1:5555\nIf there are multiple emulator instances running, the default is reserved for one of them and the others will use different serials to avoid conflicts\nOpen console.bat and run `adb devices` to find them or follow the emulator's official tutorial"
"help": "Common emulator Serial can be queried in the list below\nUse \"auto\" to auto-detect emulators, but if multiple emulators are running or use emulators that do not support auto-detect, \"auto\" cannot be used and serial must be filled in manually\nDefault serial for select emulators:\n- BlueStacks 127.0.0.1:5555\n- BlueStacks4 Hyper-V use \"bluestacks4-hyperv\", \"bluestacks4-hyperv-2\" for multi instance, and so on\n- BlueStacks5 Hyper-V use \"bluestacks5-hyperv\", \"bluestacks5-hyperv-1\" for multi instance, and so on\n- NoxPlayer 127.0.0.1:62001\n- NoxPlayer64bit 127.0.0.1:59865\n- MuMuPlayer/MuMuPlayer X 127.0.0.1:7555\n- MuMuPlayer12 127.0.0.1:16384\n- MemuPlayer 127.0.0.1:21503\n- LDPlayer emulator-5554 or 127.0.0.1:5555\nIf there are multiple emulator instances running, the default is reserved for one of them and the others will use different serials to avoid conflicts\nOpen console.bat and run `adb devices` to find them or follow the emulator's official tutorial\n\nPlayCover Serial examples:\n- Management API connection (Recommended), reads each app's configured MaaTools port and provides app management: playcoverm://127.0.0.1:1718 or pm://127.0.0.1:1718\n- Concurrently running PlayCover apps must use different MaaTools ports\n- Direct MaaTools connection without app management: playcover://127.0.0.1:1717"
},
"PackageName": {
"name": "Game Server",
Expand Down Expand Up @@ -456,7 +456,7 @@
},
"ScreenshotMethod": {
"name": "Screenshot Method",
"help": "When using auto-select, a benchmark will be performed and automatically changed to the fastest screenshot method.\nGeneral speed: DroidCast_raw >> aScreenCap_nc > ADB_nc >>> aScreenCap > uiautomator2 ~= ADB.\nRun Tools - Performance Test to find the fastest method.",
"help": "When using auto-select, a benchmark will be performed and automatically changed to the fastest screenshot method.\nGeneral speed: DroidCast_raw >> aScreenCap_nc > ADB_nc >>> aScreenCap > uiautomator2 ~= ADB.\nRun Tools - Performance Test to find the fastest method.\nThis setting is ignored in PlayCover mode.",
"auto": "Auto-select the fastest",
"ADB": "ADB ",
"ADB_nc": "ADB_nc",
Expand All @@ -466,16 +466,18 @@
"DroidCast": "DroidCast",
"DroidCast_raw": "DroidCast_raw",
"nemu_ipc": "nemu_ipc",
"ldopengl": "ldopengl"
"ldopengl": "ldopengl",
"playcover": "PlayCover"
},
"ControlMethod": {
"name": "Control Method",
"help": "Speed: minitouch > Hermit >>> uiautomator2 ~= ADB\nminitouch is recommended, hermit is not recommended unless on vmos",
"help": "Speed: minitouch > Hermit >>> uiautomator2 ~= ADB\nminitouch is recommended, hermit is not recommended unless on vmos\nThis setting is ignored in PlayCover mode.",
"ADB": "ADB",
"uiautomator2": "uiautomator2",
"minitouch": "minitouch",
"Hermit": "Hermit",
"MaaTouch": "MaaTouch"
"MaaTouch": "MaaTouch",
"playcover": "PlayCover"
},
"ScreenshotDedithering": {
"name": "Image Color De-dithering",
Expand All @@ -486,10 +488,20 @@
"help": ""
}
},
"PlayCover": {
"_info": {
"name": "PlayCover",
"help": "PlayCover management API settings. Used only in PlayCover mode."
},
"ManagerKey": {
"name": "Management API Key",
"help": "Access key of the PlayCover management API. Leave empty when authentication is disabled."
}
},
"EmulatorInfo": {
"_info": {
"name": "Emulator Settings",
"help": "The following values are auto-filled according to \"Serial\", if you dont understand, please don't modify them"
"help": "The following values are auto-filled according to \"Serial\" and are ignored in PlayCover mode. If you don't understand them, please don't modify them."
},
"Emulator": {
"name": "Emulator Type",
Expand Down Expand Up @@ -3086,4 +3098,4 @@
"ChooseFile": "Choose file"
}
}
}
}
18 changes: 15 additions & 3 deletions module/config/i18n/ja-JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,8 @@
"DroidCast": "DroidCast",
"DroidCast_raw": "DroidCast_raw",
"nemu_ipc": "nemu_ipc",
"ldopengl": "ldopengl"
"ldopengl": "ldopengl",
"playcover": "PlayCover"
},
"ControlMethod": {
"name": "Emulator.ControlMethod.name",
Expand All @@ -475,7 +476,8 @@
"uiautomator2": "uiautomator2",
"minitouch": "minitouch",
"Hermit": "Hermit",
"MaaTouch": "MaaTouch"
"MaaTouch": "MaaTouch",
"playcover": "PlayCover"
},
"ScreenshotDedithering": {
"name": "Emulator.ScreenshotDedithering.name",
Expand All @@ -486,6 +488,16 @@
"help": "Emulator.AdbRestart.help"
}
},
"PlayCover": {
"_info": {
"name": "PlayCover",
"help": "PlayCover 管理 API の設定です。PlayCover モードでのみ使用します。"
},
"ManagerKey": {
"name": "管理 API キー",
"help": "PlayCover 管理 API のアクセスキーです。認証を使用しない場合は空欄にします。"
}
},
"EmulatorInfo": {
"_info": {
"name": "EmulatorInfo._info.name",
Expand Down Expand Up @@ -3086,4 +3098,4 @@
"ChooseFile": "ファイルを選択してください"
}
}
}
}
26 changes: 19 additions & 7 deletions module/config/i18n/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@
},
"Serial": {
"name": "模拟器 Serial",
"help": "常见的模拟器 Serial 可以查询下方列表\n填 \"auto\" 自动检测模拟器,多个模拟器正在运行或使用不支持自动检测的模拟器时无法使用 \"auto\",必须手动填写\n\n模拟器默认 Serial:\n- 蓝叠模拟器 127.0.0.1:5555\n- 蓝叠模拟器4 Hyper-v版,填\"bluestacks4-hyperv\"自动连接,多开填\"bluestacks4-hyperv-2\"以此类推\n- 蓝叠模拟器5 Hyper-v版,填\"bluestacks5-hyperv\"自动连接,多开填\"bluestacks5-hyperv-1\"以此类推\n- 夜神模拟器 127.0.0.1:62001\n- 夜神模拟器64位 127.0.0.1:59865\n- MuMu模拟器/MuMu模拟器X 127.0.0.1:7555\n- MuMu模拟器12 127.0.0.1:16384\n- 逍遥模拟器 127.0.0.1:21503\n- 雷电模拟器 emulator-5554 或 127.0.0.1:5555\n如果你使用了模拟器的多开功能,它们的 Serial 将不是默认的,可以在 console.bat 中执行 `adb devices` 查询,或根据模拟器官方的教程填写"
"help": "常见的模拟器 Serial 可以查询下方列表\n填 \"auto\" 自动检测模拟器,多个模拟器正在运行或使用不支持自动检测的模拟器时无法使用 \"auto\",必须手动填写\n\n模拟器默认 Serial:\n- 蓝叠模拟器 127.0.0.1:5555\n- 蓝叠模拟器4 Hyper-v版,填\"bluestacks4-hyperv\"自动连接,多开填\"bluestacks4-hyperv-2\"以此类推\n- 蓝叠模拟器5 Hyper-v版,填\"bluestacks5-hyperv\"自动连接,多开填\"bluestacks5-hyperv-1\"以此类推\n- 夜神模拟器 127.0.0.1:62001\n- 夜神模拟器64位 127.0.0.1:59865\n- MuMu模拟器/MuMu模拟器X 127.0.0.1:7555\n- MuMu模拟器12 127.0.0.1:16384\n- 逍遥模拟器 127.0.0.1:21503\n- 雷电模拟器 emulator-5554 或 127.0.0.1:5555\n如果你使用了模拟器的多开功能,它们的 Serial 将不是默认的,可以在 console.bat 中执行 `adb devices` 查询,或根据模拟器官方的教程填写\n\nPlayCover Serial 示例:\n- 连接管理 API(推荐),读取每个应用配置的 MaaTools 端口并管理应用:playcoverm://127.0.0.1:1718 或 pm://127.0.0.1:1718\n- 同时运行的 PlayCover 应用必须使用不同的 MaaTools 端口\n- 直连 MaaTools,不具备应用管理功能:playcover://127.0.0.1:1717"
},
"PackageName": {
"name": "游戏服务器",
Expand Down Expand Up @@ -456,7 +456,7 @@
},
"ScreenshotMethod": {
"name": "模拟器截图方案",
"help": "使用自动选择时,将执行一次性能测试并自动更改为最快的截图方案\n一般情况下的速度: DroidCast_raw >> aScreenCap_nc > ADB_nc >>> aScreenCap > uiautomator2 ~= ADB\n运行 工具 - 性能测试 以寻找最快的方案",
"help": "使用自动选择时,将执行一次性能测试并自动更改为最快的截图方案\n一般情况下的速度: DroidCast_raw >> aScreenCap_nc > ADB_nc >>> aScreenCap > uiautomator2 ~= ADB\n运行 工具 - 性能测试 以寻找最快的方案\nPlayCover 模式下忽略此项。",
"auto": "自动选择最快的",
"ADB": "ADB",
"ADB_nc": "ADB_nc",
Expand All @@ -466,16 +466,18 @@
"DroidCast": "DroidCast",
"DroidCast_raw": "DroidCast_raw",
"nemu_ipc": "nemu_ipc",
"ldopengl": "ldopengl"
"ldopengl": "ldopengl",
"playcover": "PlayCover"
},
"ControlMethod": {
"name": "模拟器控制方案",
"help": "速度: minitouch > Hermit >>> uiautomator2 ~= ADB\n建议选minitouch,不建议选Hermit除非在vmos下",
"help": "速度: minitouch > Hermit >>> uiautomator2 ~= ADB\n建议选minitouch,不建议选Hermit除非在vmos下\nPlayCover 模式下忽略此项。",
"ADB": "ADB",
"uiautomator2": "uiautomator2",
"minitouch": "minitouch",
"Hermit": "Hermit",
"MaaTouch": "MaaTouch"
"MaaTouch": "MaaTouch",
"playcover": "PlayCover"
},
"ScreenshotDedithering": {
"name": "去除图片色彩抖动",
Expand All @@ -486,10 +488,20 @@
"help": ""
}
},
"PlayCover": {
"_info": {
"name": "PlayCover",
"help": "PlayCover 管理 API 设置,仅在 PlayCover 模式下生效。"
},
"ManagerKey": {
"name": "管理密钥",
"help": "PlayCover 管理 API 的访问密钥。未启用认证时留空。"
}
},
"EmulatorInfo": {
"_info": {
"name": "模拟器设置",
"help": "下列数值是根据Serial自动填充的,如果不懂请不要随意修改"
"help": "下列数值会根据 Serial 自动填充,PlayCover 模式下会被忽略。如果不懂请不要随意修改"
},
"Emulator": {
"name": "模拟器类型",
Expand Down Expand Up @@ -3086,4 +3098,4 @@
"ChooseFile": "选择文件"
}
}
}
}
Loading