Skip to content

Commit 3ea69e7

Browse files
committed
添加5合1功能
1 parent 48d7f84 commit 3ea69e7

File tree

4 files changed

+99
-3
lines changed

4 files changed

+99
-3
lines changed

config.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,9 @@ def make_bottom_right_black(frame):
167167
'version': version,
168168
'onetime_tasks': [ # tasks to execute
169169
["src.task.DailyTask", "DailyTask"],
170-
["src.task.TacetTask", "TacetTask"],
171170
["src.task.FarmEchoTask", "FarmEchoTask"],
171+
["src.task.FiveToOneTask", "FiveToOneTask"],
172+
["src.task.TacetTask", "TacetTask"],
172173
["src.task.FarmMapTask", "FarmMapTask"],
173174
["ok", "DiagnosisTask"],
174175
], 'trigger_tasks': [

requirements-direct-ml.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# pip-compile '.\requirements-dml.in'
66
#
77

8-
ok-script==0.0.571
8+
ok-script==0.0.572
99

1010
antlr4-python3-runtime==4.9.3
1111
# via omegaconf

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# pip-compile '.\requirements.in'
66
#
77

8-
ok-script==0.0.571
8+
ok-script==0.0.572
99

1010
antlr4-python3-runtime==4.9.3
1111
# via omegaconf

src/task/FiveToOneTask.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import cv2
2+
import numpy as np
3+
4+
import re
5+
from ok import find_boxes_by_name, find_boxes_within_boundary, Logger
6+
from src.task.BaseCombatTask import BaseCombatTask
7+
8+
logger = Logger.get_logger(__name__)
9+
10+
11+
class FiveToOneTask(BaseCombatTask):
12+
13+
def __init__(self, *args, **kwargs):
14+
super().__init__(*args, **kwargs)
15+
self.description = "游戏语言必须为简体中文,必须16:9分辨率,勾选需要的, 没勾的都会自动合成"
16+
self.name = "数据坞五合一"
17+
self.default_config = {
18+
}
19+
self.sets = [
20+
'凝夜白霜', '熔山裂谷', '彻空冥雷', '啸谷长风', '浮星祛暗', '沉日劫明', '隐世回光', '轻云出月', '不绝余音',
21+
'凌冽决断之心',
22+
'此间永驻之光', '幽夜隐匿之帷', '高天共奏之曲', '无惧浪涛之勇', '流云逝尽之空']
23+
# , '愿戴荣光之旅', '奔狼燎原之焰',
24+
25+
self.main_stats = ["攻击力百分比", "生命值百分比", "防御力百分比", "暴击率", "暴击伤害", "共鸣效率",
26+
"冷凝伤害加成",
27+
"热熔伤害加成",
28+
"导电伤害加成",
29+
"气动伤害加成", "衍射伤害加成", "湮灭伤害加成", "治疗效果加成"]
30+
self.black_list = ["主属性生命值", "主属性攻击力", "主属性防御力"]
31+
self.add_text_fix(
32+
{'凝夜自霜': '凝夜白霜', '主属性灭伤害加成': '主属性湮灭伤害加成', "灭伤害加成": "主属性湮灭伤害加成",
33+
'主属性行射伤害加成': '主属性衍射伤害加成'})
34+
35+
self.config_type = {}
36+
self.claim_handled = False
37+
for set_name in self.sets:
38+
self.default_config[set_name] = []
39+
for key in self.default_config.keys():
40+
self.config_type[key] = {'type': "multi_selection", 'options': self.main_stats}
41+
42+
def run(self):
43+
self.log_info("开始任务")
44+
self.ensure_main()
45+
self.log_info("在主页")
46+
self.back()
47+
self.wait_click_ocr(match="数据坞", box="right", raise_if_not_found=True, settle_time=0.2)
48+
self.wait_ocr(match="数据坞", box="top_left", raise_if_not_found=True, settle_time=0.2)
49+
self.click_relative(0.04, 0.56, after_sleep=0.5)
50+
self.wait_click_ocr(match="批量融合", box="bottom_right", raise_if_not_found=True, settle_time=0.2)
51+
self.loop_merge()
52+
self.log_info("五合一完成!")
53+
54+
def loop_merge(self):
55+
name_box = self.box_of_screen(0.11, 0.19, 0.87, 0.75)
56+
for set_name in self.sets:
57+
self.click_relative(0.03, 0.91, after_sleep=0.3)
58+
self.click_relative(0.62, 0.82, after_sleep=0.01) # 重置
59+
self.click_relative(0.20, 0.71, after_sleep=0.01) # 1c
60+
self.click_relative(0.47, 0.71, after_sleep=0.01) # 3c
61+
self.click_relative(0.71, 0.71, after_sleep=0.01) # 4c
62+
63+
self.click_relative(0.895, 0.57, after_sleep=0.2) # 滚动
64+
self.wait_click_ocr(box=name_box, match=re.compile(set_name), raise_if_not_found=True)
65+
66+
self.click_relative(0.895, 0.74, after_sleep=0.2) # 滚动
67+
choices = self.ocr(box=name_box)
68+
keeps = self.config.get(set_name, [])
69+
for choice in choices:
70+
in_keep = False
71+
if choice.name in self.black_list:
72+
continue
73+
for keep in keeps:
74+
if keep in choice.name:
75+
in_keep = True
76+
break
77+
if not in_keep:
78+
self.click_box(choice, after_sleep=0.01)
79+
self.log_info(f"不在配置 {set_name} {choice.name} 选择合成!")
80+
self.click_relative(0.81, 0.84, after_sleep=0.5)
81+
while True:
82+
self.click_relative(0.26, 0.91, after_sleep=0.5) # 全选
83+
self.click_relative(0.78, 0.9, after_sleep=1)
84+
if not self.claim_handled:
85+
if confirm := self.ocr(match="确认", box="bottom_right"):
86+
self.click_relative(0.49, 0.55, after_sleep=0.1)
87+
self.click_box(confirm, after_sleep=0.5)
88+
self.claim_handled = True
89+
if self.ocr(match="批量融合", box="bottom_right"):
90+
self.click_relative(0.26, 0.91, after_sleep=0.5)
91+
self.log_info(f"{set_name} 不够5个")
92+
break # 没有更多
93+
self.wait_ocr(match="获得声骸", box="top", raise_if_not_found=True, settle_time=1)
94+
self.click_relative(0.53, 0.05, after_sleep=0.5)
95+
self.click_relative(0.68, 0.91, after_sleep=0.5) # 批量融合

0 commit comments

Comments
 (0)