Compare commits
58 Commits
84f78230d2
..
v0.2.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
15bf77da3d
|
|||
|
4ce8073096
|
|||
|
aa872c890d
|
|||
|
25e0559171
|
|||
|
df6da1f77a
|
|||
|
fc49adc859
|
|||
|
4582406ef2
|
|||
|
256dc96598
|
|||
|
04744d6f8c
|
|||
|
8fe578615d
|
|||
|
5e9615542c
|
|||
|
36c5f60eb3
|
|||
|
91650cc584
|
|||
|
67881568dd
|
|||
|
f8404edd9e
|
|||
|
ff3ec041d2
|
|||
|
99074a1575
|
|||
|
7862fa6cb8
|
|||
|
baac90ecf0
|
|||
|
53ec298fed
|
|||
|
b4f18f78ff
|
|||
|
eb9af42f38
|
|||
|
c29d972c6c
|
|||
|
92b34d4760
|
|||
|
04853b6c31
|
|||
|
9604e8962a
|
|||
|
03380b2d71
|
|||
|
c27bd74050
|
|||
|
c3e9945b15
|
|||
|
1dd100ac04
|
|||
|
77dca70af1
|
|||
|
b8ecd0c9d6
|
|||
|
ceb24283f3
|
|||
|
d0c591af3a
|
|||
|
589b0b08ec
|
|||
|
299bd6c687
|
|||
|
e61afaf43b
|
|||
|
30e8c8b21b
|
|||
|
f7b165f589
|
|||
|
08959e5f1c
|
|||
|
e929a1efb1
|
|||
|
8e29d7d2c0
|
|||
|
d3a1a77d6a
|
|||
|
930c741de6
|
|||
|
2c19afdf26
|
|||
|
bbf3bf7c36
|
|||
|
5e4abc147e
|
|||
|
eb8048ccd6
|
|||
|
8bec814b8d
|
|||
|
5fb2810bdc
|
|||
|
8ea95dc340
|
|||
|
9d3e581321
|
|||
|
d47e463365
|
|||
|
0a697e9398
|
|||
|
143f519adb
|
|||
|
af71e797db
|
|||
|
6ef18ed8c0
|
|||
|
8781e7830c
|
@@ -15,12 +15,19 @@ The script is still under active development. The following features have been i
|
|||||||
- [x] **Cafe** Claim rewards / Interact / Second floor
|
- [x] **Cafe** Claim rewards / Interact / Second floor
|
||||||
- [x] **Club** Claim AP
|
- [x] **Club** Claim AP
|
||||||
- [x] **Mailbox** Claim rewards
|
- [x] **Mailbox** Claim rewards
|
||||||
|
- [x] **Bounty** Auto sweep
|
||||||
|
- [x] **Scrimmage** Auto sweep
|
||||||
- [x] **Tactical Challenge** Claim rewards / Auto battle
|
- [x] **Tactical Challenge** Claim rewards / Auto battle
|
||||||
|
|
||||||
Supported servers:
|
Supported servers:
|
||||||
|
|
||||||
- [x] JP
|
- [x] JP
|
||||||
- [x] OVERSEA - Global
|
- [x] OVERSEA
|
||||||
|
|
||||||
|
Supported in-game languages:
|
||||||
|
|
||||||
|
- [x] Japanese
|
||||||
|
- [x] English
|
||||||
|
|
||||||
## Relative projects
|
## Relative projects
|
||||||
|
|
||||||
|
|||||||
@@ -15,12 +15,28 @@
|
|||||||
- [x] **咖啡厅** 领取奖励 / 互动 / 第二咖啡厅
|
- [x] **咖啡厅** 领取奖励 / 互动 / 第二咖啡厅
|
||||||
- [x] **公会** 领取体力
|
- [x] **公会** 领取体力
|
||||||
- [x] **邮箱** 领取奖励
|
- [x] **邮箱** 领取奖励
|
||||||
|
- [x] **悬赏通缉** 自动扫荡
|
||||||
|
- [x] **学院交流会** 自动扫荡
|
||||||
- [x] **战术对抗赛** 领取奖励 / 自动战斗
|
- [x] **战术对抗赛** 领取奖励 / 自动战斗
|
||||||
|
|
||||||
目前支持的服务器:
|
目前支持的服务器:
|
||||||
|
|
||||||
- [x] 日服
|
- [x] 日服
|
||||||
- [x] 国际服 - 全球
|
- [x] 国际服
|
||||||
|
|
||||||
|
目前支持的游戏内语言:
|
||||||
|
|
||||||
|
- [x] 日语
|
||||||
|
- [x] 英语
|
||||||
|
|
||||||
|
## 已知问题
|
||||||
|
|
||||||
|
若愿意提供其他语言或国服支持,请开 PR 或 Issue。
|
||||||
|
|
||||||
|
- **国际服登录的全屏通知**:未实现自动关闭,正在研究中
|
||||||
|
- **大小月卡**:未实现自动领取,~~因为没买过~~,可能不影响使用。愿意提供图片的请开 Issue
|
||||||
|
- **月卡的额外悬赏券和学院交流券**:不太清楚月卡领取额外券的机制,~~因为没买过~~,可能影响相关任务使用券和体力的计算。愿意提供相关信息的请开
|
||||||
|
Issue
|
||||||
|
|
||||||
## 相关项目
|
## 相关项目
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,14 @@ class ArisuAutoSweeper(AzurLaneAutoScript):
|
|||||||
from tasks.mail.mail import Mail
|
from tasks.mail.mail import Mail
|
||||||
Mail(config=self.config, device=self.device).run()
|
Mail(config=self.config, device=self.device).run()
|
||||||
|
|
||||||
|
def bounty(self):
|
||||||
|
from tasks.bounty.bounty import Bounty
|
||||||
|
Bounty(config=self.config, device=self.device).run()
|
||||||
|
|
||||||
|
def scrimmage(self):
|
||||||
|
from tasks.scrimmage.scrimmage import Scrimmage
|
||||||
|
Scrimmage(config=self.config, device=self.device).run()
|
||||||
|
|
||||||
def tactical_challenge(self):
|
def tactical_challenge(self):
|
||||||
from tasks.tactical_challenge.tactical_challenge import TacticalChallenge
|
from tasks.tactical_challenge.tactical_challenge import TacticalChallenge
|
||||||
TacticalChallenge(config=self.config, device=self.device).run()
|
TacticalChallenge(config=self.config, device=self.device).run()
|
||||||
|
|||||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 129 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
@@ -285,7 +285,7 @@ pre.rich-traceback-code {
|
|||||||
*[style*="--header-icon--"] {
|
*[style*="--header-icon--"] {
|
||||||
margin: .25rem auto .25rem;
|
margin: .25rem auto .25rem;
|
||||||
border-radius: 1.5rem;
|
border-radius: 1.5rem;
|
||||||
height: 3.5em;
|
height: 3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
*[style*="--header-text--"] {
|
*[style*="--header-text--"] {
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 905 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 905 KiB After Width: | Height: | Size: 905 KiB |
|
After Width: | Height: | Size: 1016 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
@@ -128,8 +128,8 @@ Deploy:
|
|||||||
WebuiHost: 0.0.0.0
|
WebuiHost: 0.0.0.0
|
||||||
# --port. Port to listen
|
# --port. Port to listen
|
||||||
# You will be able to access webui via `http://{host}:{port}`
|
# You will be able to access webui via `http://{host}:{port}`
|
||||||
# [In most cases] Default to 22367
|
# [In most cases] Default to 23467
|
||||||
WebuiPort: 22367
|
WebuiPort: 23467
|
||||||
# Language to use on web ui
|
# Language to use on web ui
|
||||||
# 'zh-CN' for Chinese simplified
|
# 'zh-CN' for Chinese simplified
|
||||||
# 'en-US' for English
|
# 'en-US' for English
|
||||||
|
|||||||
@@ -128,8 +128,8 @@ Deploy:
|
|||||||
WebuiHost: 0.0.0.0
|
WebuiHost: 0.0.0.0
|
||||||
# --port. Port to listen
|
# --port. Port to listen
|
||||||
# You will be able to access webui via `http://{host}:{port}`
|
# You will be able to access webui via `http://{host}:{port}`
|
||||||
# [In most cases] Default to 22367
|
# [In most cases] Default to 23467
|
||||||
WebuiPort: 22367
|
WebuiPort: 23467
|
||||||
# Language to use on web ui
|
# Language to use on web ui
|
||||||
# 'zh-CN' for Chinese simplified
|
# 'zh-CN' for Chinese simplified
|
||||||
# 'en-US' for English
|
# 'en-US' for English
|
||||||
|
|||||||
@@ -63,6 +63,52 @@
|
|||||||
"ServerUpdate": "04:00"
|
"ServerUpdate": "04:00"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Bounty": {
|
||||||
|
"Scheduler": {
|
||||||
|
"Enable": true,
|
||||||
|
"NextRun": "2020-01-01 00:00:00",
|
||||||
|
"Command": "Bounty",
|
||||||
|
"ServerUpdate": "04:00"
|
||||||
|
},
|
||||||
|
"Bounty": {
|
||||||
|
"OnError": "skip"
|
||||||
|
},
|
||||||
|
"Highway": {
|
||||||
|
"Stage": 1,
|
||||||
|
"Count": 2
|
||||||
|
},
|
||||||
|
"DesertRailroad": {
|
||||||
|
"Stage": 1,
|
||||||
|
"Count": 2
|
||||||
|
},
|
||||||
|
"Schoolhouse": {
|
||||||
|
"Stage": 1,
|
||||||
|
"Count": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Scrimmage": {
|
||||||
|
"Scheduler": {
|
||||||
|
"Enable": true,
|
||||||
|
"NextRun": "2020-01-01 00:00:00",
|
||||||
|
"Command": "Scrimmage",
|
||||||
|
"ServerUpdate": "04:00"
|
||||||
|
},
|
||||||
|
"Scrimmage": {
|
||||||
|
"OnError": "skip"
|
||||||
|
},
|
||||||
|
"Trinity": {
|
||||||
|
"Stage": 1,
|
||||||
|
"Count": 2
|
||||||
|
},
|
||||||
|
"Gehenna": {
|
||||||
|
"Stage": 1,
|
||||||
|
"Count": 2
|
||||||
|
},
|
||||||
|
"Millennium": {
|
||||||
|
"Stage": 1,
|
||||||
|
"Count": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
"TacticalChallenge": {
|
"TacticalChallenge": {
|
||||||
"Scheduler": {
|
"Scheduler": {
|
||||||
"Enable": true,
|
"Enable": true,
|
||||||
@@ -84,7 +130,10 @@
|
|||||||
"ItemStorage": {
|
"ItemStorage": {
|
||||||
"AP": {},
|
"AP": {},
|
||||||
"Credit": {},
|
"Credit": {},
|
||||||
"Pyroxene": {}
|
"Pyroxene": {},
|
||||||
|
"BountyTicket": {},
|
||||||
|
"ScrimmageTicket": {},
|
||||||
|
"TacticalChallengeTicket": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ class ConfigModel:
|
|||||||
|
|
||||||
# Webui
|
# Webui
|
||||||
WebuiHost: str = "0.0.0.0"
|
WebuiHost: str = "0.0.0.0"
|
||||||
WebuiPort: int = 22367
|
WebuiPort: int = 23467
|
||||||
Language: str = "en-US"
|
Language: str = "en-US"
|
||||||
Theme: str = "default"
|
Theme: str = "default"
|
||||||
DpiScaling: bool = True
|
DpiScaling: bool = True
|
||||||
@@ -77,6 +77,12 @@ class DeployConfig(ConfigModel):
|
|||||||
self.config_template = {}
|
self.config_template = {}
|
||||||
self.read()
|
self.read()
|
||||||
|
|
||||||
|
self.set_repo()
|
||||||
|
|
||||||
|
self.write()
|
||||||
|
self.show_config()
|
||||||
|
|
||||||
|
def set_repo(self):
|
||||||
# Bypass webui.config.DeployConfig.__setattr__()
|
# Bypass webui.config.DeployConfig.__setattr__()
|
||||||
# Don't write these into deploy.yaml
|
# Don't write these into deploy.yaml
|
||||||
if self.Repository == 'cn':
|
if self.Repository == 'cn':
|
||||||
@@ -84,9 +90,6 @@ class DeployConfig(ConfigModel):
|
|||||||
if self.Repository == 'global':
|
if self.Repository == 'global':
|
||||||
super().__setattr__('Repository', 'https://github.com/TheFunny/ArisuAutoSweeper')
|
super().__setattr__('Repository', 'https://github.com/TheFunny/ArisuAutoSweeper')
|
||||||
|
|
||||||
self.write()
|
|
||||||
self.show_config()
|
|
||||||
|
|
||||||
def show_config(self):
|
def show_config(self):
|
||||||
logger.hr("Show deploy config", 1)
|
logger.hr("Show deploy config", 1)
|
||||||
for k, v in self.config.items():
|
for k, v in self.config.items():
|
||||||
|
|||||||
@@ -128,8 +128,8 @@ Deploy:
|
|||||||
WebuiHost: 0.0.0.0
|
WebuiHost: 0.0.0.0
|
||||||
# --port. Port to listen
|
# --port. Port to listen
|
||||||
# You will be able to access webui via `http://{host}:{port}`
|
# You will be able to access webui via `http://{host}:{port}`
|
||||||
# [In most cases] Default to 22367
|
# [In most cases] Default to 23467
|
||||||
WebuiPort: 22367
|
WebuiPort: 23467
|
||||||
# Language to use on web ui
|
# Language to use on web ui
|
||||||
# 'zh-CN' for Chinese simplified
|
# 'zh-CN' for Chinese simplified
|
||||||
# 'en-US' for English
|
# 'en-US' for English
|
||||||
|
|||||||
@@ -179,20 +179,29 @@ def iter_assets():
|
|||||||
if image.attr != '':
|
if image.attr != '':
|
||||||
row = deep_get(data, keys=[image.module, image.assets, image.server, image.frame])
|
row = deep_get(data, keys=[image.module, image.assets, image.server, image.frame])
|
||||||
row.load_image(image)
|
row.load_image(image)
|
||||||
# Apply `search` of the first frame to all
|
# Set `search`
|
||||||
for path, frames in deep_iter(data, depth=3):
|
for path, frames in deep_iter(data, depth=3):
|
||||||
print(path, frames)
|
print(path, frames)
|
||||||
|
# If `search` attribute is set in the first frame, apply to all
|
||||||
first = frames[1]
|
first = frames[1]
|
||||||
search = first.search if first.search else DataAssets.area_to_search(first.area)
|
if first.search:
|
||||||
for frame in frames.values():
|
for frame in frames.values():
|
||||||
frame.search = search
|
frame.search = first.search
|
||||||
|
else:
|
||||||
|
for frame in frames.values():
|
||||||
|
if frame.search:
|
||||||
|
# Follow frame specific `search`
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
# Generate `search` from `area`
|
||||||
|
frame.search = DataAssets.area_to_search(frame.area)
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
def generate_code():
|
def generate_code():
|
||||||
all = iter_assets()
|
all_assets = iter_assets()
|
||||||
for module, module_data in all.items():
|
for module, module_data in all_assets.items():
|
||||||
path = os.path.join(AzurLaneConfig.ASSETS_MODULE, module.split('/', maxsplit=1)[0])
|
path = os.path.join(AzurLaneConfig.ASSETS_MODULE, module.split('/', maxsplit=1)[0])
|
||||||
output = os.path.join(path, 'assets.py')
|
output = os.path.join(path, 'assets.py')
|
||||||
if os.path.exists(output):
|
if os.path.exists(output):
|
||||||
@@ -204,7 +213,7 @@ def generate_code():
|
|||||||
continue
|
continue
|
||||||
os.remove(prev)
|
os.remove(prev)
|
||||||
|
|
||||||
for module, module_data in all.items():
|
for module, module_data in all_assets.items():
|
||||||
path = os.path.join(AzurLaneConfig.ASSETS_MODULE, module.split('/', maxsplit=1)[0])
|
path = os.path.join(AzurLaneConfig.ASSETS_MODULE, module.split('/', maxsplit=1)[0])
|
||||||
output = os.path.join(path, 'assets')
|
output = os.path.join(path, 'assets')
|
||||||
gen = CodeGenerator()
|
gen = CodeGenerator()
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ def func(ev: threading.Event):
|
|||||||
args, _ = parser.parse_known_args()
|
args, _ = parser.parse_known_args()
|
||||||
|
|
||||||
host = args.host or State.deploy_config.WebuiHost or "0.0.0.0"
|
host = args.host or State.deploy_config.WebuiHost or "0.0.0.0"
|
||||||
port = args.port or int(State.deploy_config.WebuiPort) or 22367
|
port = args.port or int(State.deploy_config.WebuiPort) or 23467
|
||||||
State.electron = args.electron
|
State.electron = args.electron
|
||||||
|
|
||||||
logger.hr("Launcher config")
|
logger.hr("Launcher config")
|
||||||
|
|||||||