Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
bf8418f
fix(parse.py): 修复了带〇的技能无法被正确识别的问题
ZJChe Sep 23, 2023
bec54ba
fix(parse.py): 修复了技能模糊识别时,目标技能列表移除错误的问题
ZJChe Sep 23, 2023
05a766a
fix(parse.py): 修复合并冲突
ZJChe Sep 23, 2023
373bbb8
style(parse.py): 将部分变量名标注地更清晰
ZJChe Sep 23, 2023
4c9a87d
style(parse.py): 将部分变量名标注地更清晰
ZJChe Sep 23, 2023
f61d736
style(parse.py): 优化了寻找技能优先级的循环
ZJChe Sep 23, 2023
5659f4b
fix(parse.py): 解决合并冲突
ZJChe Sep 24, 2023
4dc16cc
Merge remote-tracking branch 'remotes/upstream/dev' into skill
ZJChe Sep 25, 2023
2fe42f6
Merge remote-tracking branch 'remotes/upstream/dev' into skill
ZJChe Sep 27, 2023
948874a
Merge remote-tracking branch 'upstream/dev' into skill
ZJChe Oct 6, 2023
4b4a6df
feat(TaskEditModal.vue): test adding new text boxes
ZJChe Dec 22, 2023
87d4a5d
feat(.gitignore): forbid .pyc files
ZJChe Dec 22, 2023
4c1a5cf
fix: solve merge conflicts
ZJChe Dec 22, 2023
1fd0888
feat(TaskEditModal.vue): 前端允许添加多优先级技能学习, 允许添加技能黑名单
ZJChe Dec 25, 2023
6715e24
feat(context.py-task.py-cultivate.py-parse.py-index.html): 后端实现了多技能优先…
ZJChe Dec 25, 2023
1b235e1
feat(TaskEditModal.vue-index.html): 允许保存和加载预设时包含额外训练权重
ZJChe Dec 25, 2023
01417ff
fix(TaskEditModal.vue-index.html): 修复了提交任务是有技能输入框为空导致的问题;修复了输入的技能中存在空…
ZJChe Dec 25, 2023
83a849b
fix(TaskEditModal.vue-index.html): 修复了赋值错误导致三年的技能额外权重始终相等的问题
ZJChe Dec 25, 2023
2738116
fix(TaskEditModal.vue): 修复了技能字符串偶尔为Proxy对象导致无法开始任务的bug
ZJChe Dec 26, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
*.pyc
venv
.idea
userdata
**/__pycache__
.vscode
.vscode
5 changes: 4 additions & 1 deletion module/umamusume/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@ class CultivateContextDetail:
follow_support_card_name: str
follow_support_card_level: int
extra_race_list: list[int]
learn_skill_list: list[str]
learn_skill_list: list[list[str]]
learn_skill_blacklist: list[str]
learn_skill_done: bool
learn_skill_selected: bool
cultivate_finish: bool
Expand All @@ -165,6 +166,7 @@ def __init__(self):
self.turn_info_history = []
self.extra_race_list = []
self.learn_skill_list = []
self.learn_skill_blacklist = []
self.learn_skill_done = False
self.learn_skill_selected = False
self.cultivate_finish = False
Expand Down Expand Up @@ -201,6 +203,7 @@ def build_context(task: UmamusumeTask, ctrl) -> UmamusumeContext:
detail.follow_support_card_level = task.detail.follow_support_card_level
detail.extra_race_list = task.detail.extra_race_list
detail.learn_skill_list = task.detail.learn_skill_list
detail.learn_skill_blacklist = task.detail.learn_skill_blacklist
detail.tactic_list = task.detail.tactic_list
detail.clock_use_limit = task.detail.clock_use_limit
detail.learn_skill_threshold = task.detail.learn_skill_threshold
Expand Down
26 changes: 17 additions & 9 deletions module/umamusume/script/cultivate_task/cultivate.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,26 +344,28 @@ def script_cultivate_learn_skill(ctx: UmamusumeContext):
else:
ctx.ctrl.click_by_point(RETURN_TO_CULTIVATE_FINISH)
return
learn_skill_list: list
learn_skill_list: list[list[str]]
learn_skill_blacklist: list[str] = ctx.cultivate_detail.learn_skill_blacklist
if ctx.cultivate_detail.cultivate_finish or not ctx.cultivate_detail.learn_skill_only_user_provided:
if len(ctx.cultivate_detail.learn_skill_list) == 0:
learn_skill_list = SKILL_LEARN_PRIORITY_LIST
else:
learn_skill_list = [ctx.cultivate_detail.learn_skill_list] + SKILL_LEARN_PRIORITY_LIST
#如果用户自定义了技能优先级,那么不再采用预设的优先级
learn_skill_list = ctx.cultivate_detail.learn_skill_list
else:
if len(ctx.cultivate_detail.learn_skill_list) == 0:
ctx.ctrl.click_by_point(RETURN_TO_CULTIVATE_FINISH)
ctx.cultivate_detail.learn_skill_done = True
ctx.cultivate_detail.turn_info.turn_learn_skill_done = True
return
else:
learn_skill_list = [ctx.cultivate_detail.learn_skill_list]
learn_skill_list = ctx.cultivate_detail.learn_skill_list

# 遍历整页, 找出所有可点的技能
skill_list = []
while ctx.task.running():
img = ctx.ctrl.get_screen()
current_screen_skill_list = get_skill_list(img, learn_skill_list)
current_screen_skill_list = get_skill_list(img, learn_skill_list,learn_skill_blacklist)
# 避免重复统计(会出现在页末翻页不完全的情况)
for i in current_screen_skill_list:
if i not in skill_list:
Expand Down Expand Up @@ -391,6 +393,7 @@ def script_cultivate_learn_skill(ctx: UmamusumeContext):
else:
total_skill_point = int(total_skill_point_text)
target_skill_list = []
target_skill_list_raw = []
curr_point = 0
for i in range(len(learn_skill_list) + 1):
if (i > 0 and ctx.cultivate_detail.learn_skill_only_user_provided is True and
Expand All @@ -402,6 +405,7 @@ def script_cultivate_learn_skill(ctx: UmamusumeContext):
if curr_point + skill_list[j]["skill_cost"] <= total_skill_point:
curr_point += skill_list[j]["skill_cost"]
target_skill_list.append(skill_list[j]["skill_name"])
target_skill_list_raw.append(skill_list[j]["skill_name_raw"])
# 如果点的是金色技能, 就将其绑定的下位技能设置为不可点
if skill_list[j]["gold"] is True and skill_list[j]["subsequent_skill"] != '':
for k in range(len(skill_list)):
Expand All @@ -413,12 +417,16 @@ def script_cultivate_learn_skill(ctx: UmamusumeContext):
time.sleep(1)

# 删除已经学会的技能
for skill in target_skill_list:
if ctx.cultivate_detail.learn_skill_list.__contains__(skill):
ctx.cultivate_detail.learn_skill_list.remove(skill)
for skill in target_skill_list_raw:
for prioritylist in ctx.cultivate_detail.learn_skill_list:
if prioritylist.__contains__(skill):
prioritylist.remove(skill)
for skill in skill_list:
if skill['available'] is False and ctx.cultivate_detail.learn_skill_list.__contains__(skill['skill_name']):
ctx.cultivate_detail.learn_skill_list.remove(skill['skill_name'])
for prioritylist in ctx.cultivate_detail.learn_skill_list:
if skill['available'] is False and prioritylist.__contains__(skill['skill_name_raw']):
prioritylist.remove(skill['skill_name_raw'])
#如果一个优先级全为空,则直接将其删除
ctx.cultivate_detail.learn_skill_list = [x for x in ctx.cultivate_detail.learn_skill_list if x != []]

# 点技能
while True:
Expand Down
30 changes: 21 additions & 9 deletions module/umamusume/script/cultivate_task/parse.py
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ def find_skill(ctx: UmamusumeContext, img, skill: list[str], learn_any_skill: bo
return find


def get_skill_list(img, skill: list[str]) -> list:
def get_skill_list(img, skill: list[str], skill_blacklist: list[str]) -> list:
origin_img = img
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
res = []
Expand All @@ -452,24 +452,35 @@ def get_skill_list(img, skill: list[str]) -> list:
is_gold = True if mask[120, 600] == 255 else False

skill_in_priority_list = False
skill_name_raw = "" #保存原始技能名字, 以防ocr产生偏差
priority = 99
for i in range(len(skill)):
if find_similar_text(text, skill[i], 0.7) != "":
found_similar_blacklist = find_similar_text(text, skill_blacklist, 0.7)
found_similar_prioritylist = find_similar_text(text, skill[i], 0.7)
if found_similar_blacklist != "": # 排除出现在黑名单中的技能
priority = -1
skill_name_raw = found_similar_blacklist
skill_in_priority_list = True
break
elif found_similar_prioritylist != "":
priority = i
skill_name_raw = found_similar_prioritylist
skill_in_priority_list = True
break
if not skill_in_priority_list:
priority = len(skill)

available = not image_match(skill_info_img, REF_SKILL_LEARNED).find_match

res.append({"skill_name": text,
"skill_cost": int(cost),
"priority": priority,
"gold": is_gold,
"subsequent_skill": "",
"available": available,
"y_pos": int(pos_center[1])})
if priority != -1: # 排除出现在黑名单中的技能
res.append({"skill_name": text,
"skill_name_raw": skill_name_raw,
"skill_cost": int(cost),
"priority": priority,
"gold": is_gold,
"subsequent_skill": "",
"available": available,
"y_pos": int(pos_center[1])})
img[match_result.matched_area[0][1]:match_result.matched_area[1][1],
match_result.matched_area[0][0]:match_result.matched_area[1][0]] = 0

Expand All @@ -489,6 +500,7 @@ def get_skill_list(img, skill: list[str]) -> list:
skill_name_img = skill_info_img[10: 47, 100: 445]
text = ocr_line(skill_name_img)
res.append({"skill_name": text,
"skill_name_raw": text,
"skill_cost": 0,
"priority": -1,
"gold": is_gold,
Expand Down
4 changes: 3 additions & 1 deletion module/umamusume/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ class TaskDetail:
follow_support_card_name: str
follow_support_card_level: int
extra_race_list: list[int]
learn_skill_list: list[str]
learn_skill_list: list[list[str]]
learn_skill_blacklist: list[str]
tactic_list: list[int]
clock_use_limit: int
learn_skill_threshold: int
Expand Down Expand Up @@ -48,6 +49,7 @@ def build_task(task_execute_mode: TaskExecuteMode, task_type: int,
td.follow_support_card_name = attachment_data['follow_support_card_name']
td.extra_race_list = attachment_data['extra_race_list']
td.learn_skill_list = attachment_data['learn_skill_list']
td.learn_skill_blacklist = attachment_data['learn_skill_blacklist']
td.tactic_list = attachment_data['tactic_list']
td.clock_use_limit = attachment_data['clock_use_limit']
td.learn_skill_threshold = attachment_data['learn_skill_threshold']
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 11 additions & 11 deletions public/assets/index.2a72224a.js → public/assets/index.c779d109.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
<link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script type="module" crossorigin src="./assets/index.2a72224a.js"></script>
<link rel="stylesheet" href="./assets/index.f92d0adc.css">
<script type="module" crossorigin src="./assets/index.c779d109.js"></script>
<link rel="stylesheet" href="./assets/index.5a82e49d.css">
</head>
<body>
<div id="app"></div>
Expand Down
2 changes: 1 addition & 1 deletion run.ps1
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
.\venv\Scripts\activate
python main.py
python .\main.py
Loading