diff --git a/assets/i18n/zh-CN.json b/assets/i18n/zh-CN.json index 156dc1003..9cdbfa500 100644 --- a/assets/i18n/zh-CN.json +++ b/assets/i18n/zh-CN.json @@ -9,6 +9,7 @@ "costume_shikigami_7": "赤溟幽界", "costume_shikigami_8": "童梦基地", "costume_shikigami_9": "眠鹿之森", + "costume_shikigami_10": "今宵胧明", "costume_carpbanner_type": "鲤鱼旗皮肤", "costume_carpbanner_default": "吉鲤游风", "costume_carpbanner_1": "无垢莲台", diff --git a/tasks/Component/Costume/config.py b/tasks/Component/Costume/config.py index 4b09932a0..96f784a77 100644 --- a/tasks/Component/Costume/config.py +++ b/tasks/Component/Costume/config.py @@ -48,7 +48,8 @@ class ShikigamiType(str, Enum): COSTUME_SHIKIGAMI_6 = 'costume_shikigami_6' # 月下火舞 COSTUME_SHIKIGAMI_7 = 'costume_shikigami_7' # 赤溟幽界 COSTUME_SHIKIGAMI_8 = 'costume_shikigami_8' # 童梦基地 - COSTUME_SHIKIGAMI_9 = 'costume_shikigami_9' # 眠鹿之森 + COSTUME_SHIKIGAMI_9 = 'costume_shikigami_9' # 鹿眠之森 + COSTUME_SHIKIGAMI_10 = 'costume_shikigami_10' # 今宵胧明 # 签到主题 class SignType(str, Enum): diff --git a/tasks/Component/Costume/costume_base.py b/tasks/Component/Costume/costume_base.py index 1dd962a22..6c8b5d620 100644 --- a/tasks/Component/Costume/costume_base.py +++ b/tasks/Component/Costume/costume_base.py @@ -77,7 +77,7 @@ 'I_ST_SOULS': f'I_ST_SOULS_{i}', 'I_ST_REPLACE': f'I_ST_REPLACE_{i}', } - for i in range(1, 10) # 目前支持 COSTUME_SHIKIGAMI_1 到 COSTUME_SHIKIGAMI_9 + for i in range(1, 11) # 目前支持 COSTUME_SHIKIGAMI_1 到 COSTUME_SHIKIGAMI_10 } class CostumeBase: diff --git a/tasks/Component/CostumeShikigami/assets.py b/tasks/Component/CostumeShikigami/assets.py index 19dad1fed..8a2f843da 100644 --- a/tasks/Component/CostumeShikigami/assets.py +++ b/tasks/Component/CostumeShikigami/assets.py @@ -53,6 +53,49 @@ class CostumeShikigamiAssets: I_ST_REPLACE_1 = RuleImage(roi_front=(856,170,100,100), roi_back=(856,170,100,100), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk1/sk1_st_replace_1.png") + # Image Rule Assets + # 用于判断在式神录 + I_CHECK_RECORDS_10 = RuleImage(roi_front=(276,79,34,36), roi_back=(265,71,60,50), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_check_records_10.png") + # 退出式神录 + I_RECORD_SOUL_BACK_10 = RuleImage(roi_front=(19,9,51,44), roi_back=(19,9,51,44), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_record_soul_back_10.png") + # 预设 + I_SOUL_PRESET_10 = RuleImage(roi_front=(342,82,73,36), roi_back=(310,57,169,72), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_soul_preset_10.png") + # 第一组切换 + I_SOU_SWITCH_1_10 = RuleImage(roi_front=(979,141,25,27), roi_back=(960,131,60,50), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_1_10.png") + # 第二组切换 + I_SOU_SWITCH_2_10 = RuleImage(roi_front=(980,296,25,27), roi_back=(960,285,60,50), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_2_10.png") + # 第三组切换 + I_SOU_SWITCH_3_10 = RuleImage(roi_front=(980,450,25,27), roi_back=(960,442,60,50), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_3_10.png") + # 第四组切换 + I_SOU_SWITCH_4_10 = RuleImage(roi_front=(979,602,25,27), roi_back=(960,592,60,50), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_4_10.png") + # 确认切换 + I_SOU_SWITCH_SURE_10 = RuleImage(roi_front=(669,401,190,61), roi_back=(669,401,190,61), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_sure_10.png") + # 用于判断是否在式神录里面 + I_SOU_CHECK_IN_10 = RuleImage(roi_front=(277,79,34,36), roi_back=(265,71,60,50), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_check_in_10.png") + # 检查是否为第一组 + I_SOU_CHECK_GROUP_1_10 = RuleImage(roi_front=(1096,80,25,56), roi_back=(1096,80,25,56), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_1_10.png") + # 检查是否为第二组 + I_SOU_CHECK_GROUP_2_10 = RuleImage(roi_front=(1098,150,25,60), roi_back=(1098,150,25,60), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_2_10.png") + # 检查是否为第三组 + I_SOU_CHECK_GROUP_3_10 = RuleImage(roi_front=(1096,219,25,60), roi_back=(1096,219,25,60), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_3_10.png") + # 检查是否为第四组 + I_SOU_CHECK_GROUP_4_10 = RuleImage(roi_front=(1096,288,25,60), roi_back=(1096,288,25,60), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_4_10.png") + # 检查是否为第五组 + I_SOU_CHECK_GROUP_5_10 = RuleImage(roi_front=(1096,356,25,60), roi_back=(1096,356,25,60), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_5_10.png") + # 检查是否为第六组 + I_SOU_CHECK_GROUP_6_10 = RuleImage(roi_front=(1094,428,25,60), roi_back=(1094,428,25,60), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_6_10.png") + # 检查是否为第七组 + I_SOU_CHECK_GROUP_7_10 = RuleImage(roi_front=(1095,496,25,60), roi_back=(1095,496,25,60), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_7_10.png") + # 匹配队伍预设 + I_SOU_TEAM_PRESENT_10 = RuleImage(roi_front=(720,76,112,35), roi_back=(706,69,175,63), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_team_present_10.png") + # 需要切换的预设按钮(颜色深一点) + I_SOU_CLICK_PRESENT_10 = RuleImage(roi_front=(980,294,25,27), roi_back=(965,132,49,500), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_sou_click_present_10.png") + # 选中的御魂 + I_ST_SOULS_10 = RuleImage(roi_front=(1196,234,33,65), roi_back=(1170,220,70,90), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_st_souls_10.png") + # 更换 + I_ST_REPLACE_10 = RuleImage(roi_front=(878,224,63,39), roi_back=(855,175,110,130), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk10/sk10_st_replace_10.png") + + # Image Rule Assets # 用于判断在式神录 I_CHECK_RECORDS_2 = RuleImage(roi_front=(267,76,51,46), roi_back=(265,74,55,50), threshold=0.8, method="Template matching", file="./tasks/Component/CostumeShikigami/sk2/sk2_check_records_2.png") diff --git a/tasks/Component/CostumeShikigami/sk10/image.json b/tasks/Component/CostumeShikigami/sk10/image.json new file mode 100644 index 000000000..79e63d707 --- /dev/null +++ b/tasks/Component/CostumeShikigami/sk10/image.json @@ -0,0 +1,182 @@ +[ + { + "itemName": "check_records_10", + "imageName": "sk10_check_records_10.png", + "roiFront": "276,79,34,36", + "roiBack": "265,71,60,50", + "method": "Template matching", + "threshold": 0.8, + "description": "用于判断在式神录" + }, + { + "itemName": "record_soul_back_10", + "imageName": "sk10_record_soul_back_10.png", + "roiFront": "19,9,51,44", + "roiBack": "19,9,51,44", + "method": "Template matching", + "threshold": 0.8, + "description": "退出式神录" + }, + { + "itemName": "soul_preset_10", + "imageName": "sk10_soul_preset_10.png", + "roiFront": "342,82,73,36", + "roiBack": "310,57,169,72", + "method": "Template matching", + "threshold": 0.8, + "description": "预设" + }, + { + "itemName": "sou_switch_1_10", + "imageName": "sk10_sou_switch_1_10.png", + "roiFront": "979,141,25,27", + "roiBack": "960,131,60,50", + "method": "Template matching", + "threshold": 0.8, + "description": "第一组切换" + }, + { + "itemName": "sou_switch_2_10", + "imageName": "sk10_sou_switch_2_10.png", + "roiFront": "980,296,25,27", + "roiBack": "960,285,60,50", + "method": "Template matching", + "threshold": 0.8, + "description": "第二组切换" + }, + { + "itemName": "sou_switch_3_10", + "imageName": "sk10_sou_switch_3_10.png", + "roiFront": "980,450,25,27", + "roiBack": "960,442,60,50", + "method": "Template matching", + "threshold": 0.8, + "description": "第三组切换" + }, + { + "itemName": "sou_switch_4_10", + "imageName": "sk10_sou_switch_4_10.png", + "roiFront": "979,602,25,27", + "roiBack": "960,592,60,50", + "method": "Template matching", + "threshold": 0.8, + "description": "第四组切换" + }, + { + "itemName": "sou_switch_sure_10", + "imageName": "sk10_sou_switch_sure_10.png", + "roiFront": "669,401,190,61", + "roiBack": "669,401,190,61", + "method": "Template matching", + "threshold": 0.8, + "description": "确认切换" + }, + { + "itemName": "sou_check_in_10", + "imageName": "sk10_sou_check_in_10.png", + "roiFront": "277,79,34,36", + "roiBack": "265,71,60,50", + "method": "Template matching", + "threshold": 0.8, + "description": "用于判断是否在式神录里面" + }, + { + "itemName": "sou_check_group_1_10", + "imageName": "sk10_sou_check_group_1_10.png", + "roiFront": "1096,80,25,56", + "roiBack": "1096,80,25,56", + "method": "Template matching", + "threshold": 0.8, + "description": "检查是否为第一组" + }, + { + "itemName": "sou_check_group_2_10", + "imageName": "sk10_sou_check_group_2_10.png", + "roiFront": "1098,150,25,60", + "roiBack": "1098,150,25,60", + "method": "Template matching", + "threshold": 0.8, + "description": "检查是否为第二组" + }, + { + "itemName": "sou_check_group_3_10", + "imageName": "sk10_sou_check_group_3_10.png", + "roiFront": "1096,219,25,60", + "roiBack": "1096,219,25,60", + "method": "Template matching", + "threshold": 0.8, + "description": "检查是否为第三组" + }, + { + "itemName": "sou_check_group_4_10", + "imageName": "sk10_sou_check_group_4_10.png", + "roiFront": "1096,288,25,60", + "roiBack": "1096,288,25,60", + "method": "Template matching", + "threshold": 0.8, + "description": "检查是否为第四组" + }, + { + "itemName": "sou_check_group_5_10", + "imageName": "sk10_sou_check_group_5_10.png", + "roiFront": "1096,356,25,60", + "roiBack": "1096,356,25,60", + "method": "Template matching", + "threshold": 0.8, + "description": "检查是否为第五组" + }, + { + "itemName": "sou_check_group_6_10", + "imageName": "sk10_sou_check_group_6_10.png", + "roiFront": "1094,428,25,60", + "roiBack": "1094,428,25,60", + "method": "Template matching", + "threshold": 0.8, + "description": "检查是否为第六组" + }, + { + "itemName": "sou_check_group_7_10", + "imageName": "sk10_sou_check_group_7_10.png", + "roiFront": "1095,496,25,60", + "roiBack": "1095,496,25,60", + "method": "Template matching", + "threshold": 0.8, + "description": "检查是否为第七组" + }, + { + "itemName": "sou_team_present_10", + "imageName": "sk10_sou_team_present_10.png", + "roiFront": "720,76,112,35", + "roiBack": "706,69,175,63", + "method": "Template matching", + "threshold": 0.8, + "description": "匹配队伍预设" + }, + { + "itemName": "sou_click_present_10", + "imageName": "sk10_sou_click_present_10.png", + "roiFront": "980,294,25,27", + "roiBack": "965,132,49,500", + "method": "Template matching", + "threshold": 0.8, + "description": "需要切换的预设按钮(颜色深一点)" + }, + { + "itemName": "st_souls_10", + "imageName": "sk10_st_souls_10.png", + "roiFront": "1196,234,33,65", + "roiBack": "1170,220,70,90", + "method": "Template matching", + "threshold": 0.8, + "description": "选中的御魂" + }, + { + "itemName": "st_replace_10", + "imageName": "sk10_st_replace_10.png", + "roiFront": "878,224,63,39", + "roiBack": "855,175,110,130", + "method": "Template matching", + "threshold": 0.8, + "description": "更换" + } +] \ No newline at end of file diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_check_records_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_check_records_10.png new file mode 100644 index 000000000..56ee6fba2 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_check_records_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_record_soul_back_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_record_soul_back_10.png new file mode 100644 index 000000000..d74dc1d38 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_record_soul_back_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_1_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_1_10.png new file mode 100644 index 000000000..89b6e1524 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_1_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_2_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_2_10.png new file mode 100644 index 000000000..8efd73b37 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_2_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_3_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_3_10.png new file mode 100644 index 000000000..390d78ed2 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_3_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_4_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_4_10.png new file mode 100644 index 000000000..bfb975f1c Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_4_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_5_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_5_10.png new file mode 100644 index 000000000..3fb4210e1 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_5_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_6_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_6_10.png new file mode 100644 index 000000000..33d5999b7 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_6_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_7_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_7_10.png new file mode 100644 index 000000000..fa41f10bb Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_group_7_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_in_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_in_10.png new file mode 100644 index 000000000..c54f13ed2 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_check_in_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_click_present_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_click_present_10.png new file mode 100644 index 000000000..3350c6009 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_click_present_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_1_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_1_10.png new file mode 100644 index 000000000..9e3905596 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_1_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_2_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_2_10.png new file mode 100644 index 000000000..d71cfc23f Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_2_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_3_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_3_10.png new file mode 100644 index 000000000..7760addeb Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_3_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_4_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_4_10.png new file mode 100644 index 000000000..46065a073 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_4_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_sure_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_sure_10.png new file mode 100644 index 000000000..da75c7e13 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_switch_sure_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_sou_team_present_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_sou_team_present_10.png new file mode 100644 index 000000000..d09227b05 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_sou_team_present_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_soul_preset_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_soul_preset_10.png new file mode 100644 index 000000000..977ae228c Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_soul_preset_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_st_replace_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_st_replace_10.png new file mode 100644 index 000000000..2579fd749 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_st_replace_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk10/sk10_st_souls_10.png b/tasks/Component/CostumeShikigami/sk10/sk10_st_souls_10.png new file mode 100644 index 000000000..097234bd4 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk10/sk10_st_souls_10.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_check_records_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_check_records_9.png new file mode 100644 index 000000000..9d07b1bd9 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_check_records_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_record_soul_back_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_record_soul_back_9.png new file mode 100644 index 000000000..a2eaeb649 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_record_soul_back_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_1_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_1_9.png new file mode 100644 index 000000000..7057e1835 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_1_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_2_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_2_9.png new file mode 100644 index 000000000..eaf2678dc Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_2_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_3_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_3_9.png new file mode 100644 index 000000000..623dfcbf0 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_3_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_4_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_4_9.png new file mode 100644 index 000000000..58b66e94f Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_4_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_5_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_5_9.png new file mode 100644 index 000000000..64c8c4c2d Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_5_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_6_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_6_9.png new file mode 100644 index 000000000..f759c10db Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_6_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_7_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_7_9.png new file mode 100644 index 000000000..9aa4018e1 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_group_7_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_in_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_in_9.png new file mode 100644 index 000000000..35fdaaa92 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_sou_check_in_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_sou_switch_sure_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_sou_switch_sure_9.png new file mode 100644 index 000000000..dba71212c Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_sou_switch_sure_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_sou_team_preset_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_sou_team_preset_9.png new file mode 100644 index 000000000..4b1391390 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_sou_team_preset_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_soul_preset_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_soul_preset_9.png new file mode 100644 index 000000000..c8343d6e5 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_soul_preset_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_st_replace_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_st_replace_9.png new file mode 100644 index 000000000..04674c8c8 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_st_replace_9.png differ diff --git a/tasks/Component/CostumeShikigami/sk9/sk9_st_souls_9.png b/tasks/Component/CostumeShikigami/sk9/sk9_st_souls_9.png new file mode 100644 index 000000000..f75b27396 Binary files /dev/null and b/tasks/Component/CostumeShikigami/sk9/sk9_st_souls_9.png differ diff --git a/tasks/DemonEncounter/config.py b/tasks/DemonEncounter/config.py index 67199972b..11d4e75aa 100644 --- a/tasks/DemonEncounter/config.py +++ b/tasks/DemonEncounter/config.py @@ -45,8 +45,7 @@ class DemonConfig(BaseModel): description="通过预设名称来匹配普通封魔御魂分组\n例如=> 逢魔之时,歌(中间的是英文逗号)", ) # 周一 - demon_kiryou_utahime: str = Field(default="group,team", description="鬼灵歌姬御魂1") - demon_kiryou_utahime_supplementary: str = Field(default="group,team", description="鬼灵歌姬御魂补充") + demon_kiryou_utahime: str = Field(default="group,team", description="鬼灵歌姬御魂") # 周二 demon_shinkirou: str = Field(default="group,team", description="蜃气楼御魂") # 周三 土蜘蛛 @@ -67,8 +66,7 @@ class BestDemonConfig(BaseModel): default=False, description="通过预设名称来匹配极封魔御魂分组\n例如=> 逢魔之时,歌(中间的是英文逗号)", ) - best_demon_kiryou_utahime: str = Field(default="group,team", description="极鬼灵歌姬御魂1") - best_demon_kiryou_utahime_supplementary: str = Field(default="group,team", description="极鬼灵歌姬御魂补充") + best_demon_kiryou_utahime: str = Field(default="group,team", description="极鬼灵歌姬御魂") best_demon_shinkirou: str = Field(default="group,team", description="极蜃气楼御魂") best_demon_tsuchigumo: str = Field(default="group,team", description="极土蜘蛛御魂") best_demon_gashadokuro: str = Field(default="group,team", description="极荒骷髅御魂") @@ -76,8 +74,8 @@ class BestDemonConfig(BaseModel): best_demon_oboroguruma: str = Field(default="group,team", description="极胧车御魂") best_demon_nightly_aramitamau: str = Field(default="group,team", description="极夜荒魂御魂") - hide_fields = dynamic_hide('best_demon_kiryou_utahime', 'best_demon_kiryou_utahime_supplementary', - 'best_demon_oboroguruma', 'best_demon_nightly_aramitamau') + hide_fields = dynamic_hide('best_demon_kiryou_utahime', 'best_demon_oboroguruma', + 'best_demon_nightly_aramitamau') def convert_to_general_battle_config(boss_type: str, demon_battle_conf: 'DemonBattleConfig' = None, diff --git a/tasks/DemonEncounter/script_task.py b/tasks/DemonEncounter/script_task.py index 383a33c9a..22a7b35f9 100644 --- a/tasks/DemonEncounter/script_task.py +++ b/tasks/DemonEncounter/script_task.py @@ -65,12 +65,8 @@ def checkout_soul(self): group, team = getattr(self.conf.demon_soul_config, self.boss_type).split(",") if group and team: self.run_switch_soul_by_name(group, team) - if datetime.now().weekday() == 0: - if select_best_demon: - group, team = getattr(self.conf.best_demon_soul_config, f'{self.boss_type}_supplementary').split(",") - else: - group, team = getattr(self.conf.demon_soul_config, f'{self.boss_type}_supplementary').split(",") - self.run_switch_soul_by_name(group, team) + return + logger.error(f'Unknown switch soul conf: group[{group}], team[{team}]') def execute_boss(self): """ diff --git a/tasks/GameUi/additional/additional_close_chat_window.png b/tasks/GameUi/additional/additional_close_chat_window.png new file mode 100644 index 000000000..e19d1fecc Binary files /dev/null and b/tasks/GameUi/additional/additional_close_chat_window.png differ diff --git a/tasks/GameUi/additional/guild.json b/tasks/GameUi/additional/guild.json new file mode 100644 index 000000000..f6e6e83c4 --- /dev/null +++ b/tasks/GameUi/additional/guild.json @@ -0,0 +1,11 @@ +[ + { + "itemName": "close_chat_window", + "imageName": "additional_close_chat_window.png", + "roiFront": "653,397,18,18", + "roiBack": "653,397,18,18", + "method": "Template matching", + "threshold": 0.91, + "description": "关闭聊天窗口" + } +] \ No newline at end of file diff --git a/tasks/GameUi/assets.py b/tasks/GameUi/assets.py index 6244311c6..5e5e06de7 100644 --- a/tasks/GameUi/assets.py +++ b/tasks/GameUi/assets.py @@ -24,6 +24,11 @@ class GameUiAssets: O_CLICK_CLOSE_2 = RuleOcr(roi=(508,584,214,40), area=(508,584,214,40), mode="Single", method="Default", keyword="点击空白处关闭弹窗", name="click_close_2") + # Image Rule Assets + # 关闭聊天窗口 + I_CLOSE_CHAT_WINDOW = RuleImage(roi_front=(653,397,18,18), roi_back=(653,397,18,18), threshold=0.91, method="Template matching", file="./tasks/GameUi/additional/additional_close_chat_window.png") + + # Image Rule Assets # 商店弹窗红色关闭 I_AD_CLOSE_RED = RuleImage(roi_front=(993,130,33,36), roi_back=(953,91,215,121), threshold=0.8, method="Template matching", file="./tasks/GameUi/additional/additional_ad_close_red.png") @@ -172,7 +177,7 @@ class GameUiAssets: # description I_CHECK_TEAM = RuleImage(roi_front=(32,585,82,90), roi_back=(32,585,82,90), threshold=0.8, method="Template matching", file="./tasks/GameUi/page/page_check_team.png") # description - I_CHECK_COLLECTION = RuleImage(roi_front=(380,620,100,100), roi_back=(380,620,100,100), threshold=0.8, method="Template matching", file="./tasks/GameUi/page/page_check_collection.png") + I_CHECK_COLLECTION = RuleImage(roi_front=(579,639,63,65), roi_back=(118,626,1162,94), threshold=0.8, method="Template matching", file="./tasks/GameUi/page/page_check_collection.png") # description I_BACK_Y = RuleImage(roi_front=(15,4,57,52), roi_back=(1,2,100,91), threshold=0.8, method="Template matching", file="./tasks/GameUi/page/page_back_y.png") # description diff --git a/tasks/GameUi/game_ui.py b/tasks/GameUi/game_ui.py index bcc3f165e..034608aa0 100644 --- a/tasks/GameUi/game_ui.py +++ b/tasks/GameUi/game_ui.py @@ -353,9 +353,13 @@ def appear_then_operate(self, target: RuleList | RuleImage | RuleGif | RuleOcr | if __name__ == '__main__': from module.config.config import Config from module.device.device import Device + from tasks.GameUi.page import page_guild - c = Config('oas2') + c = Config('oas1') d = Device(c) game = GameUi(config=c, device=d) - game.ui_get_current_page() - game.ui_goto(page_main) + for i in range(10): + game.ui_get_current_page() + game.ui_goto(page_guild) + game.ui_get_current_page() + game.ui_goto(page_main) diff --git a/tasks/GameUi/page.py b/tasks/GameUi/page.py index 2fe3500a9..d3ce4a346 100644 --- a/tasks/GameUi/page.py +++ b/tasks/GameUi/page.py @@ -54,7 +54,8 @@ def link(self, button, destination): # Main Home 主页 page_main = Page(G.I_CHECK_MAIN) page_main.additional = [G.I_AD_CLOSE_RED, G.I_BACK_FRIENDS, RestartAssets.I_CANCEL_BATTLE, - [RestartAssets.I_LOGIN_COURTYARD, RestartAssets.C_LOGIN_SCROLL_CLOSE_AREA]] + [RestartAssets.I_LOGIN_COURTYARD, RestartAssets.C_LOGIN_SCROLL_CLOSE_AREA, + G.I_CLOSE_CHAT_WINDOW]] # 召唤summon page_summon = Page(G.I_CHECK_SUMMON) page_summon.link(button=G.I_SUMMON_GOTO_MAIN, destination=page_main) @@ -181,7 +182,7 @@ def link(self, button, destination): page_main.link(button=G.I_MAIN_GOTO_MALL, destination=page_mall) # 阴阳寮 guild page_guild = Page(G.I_CHECK_GUILD) -page_guild.additional = [KekkaiUtilizeAssets.I_PLANT_TREE_CLOSE] +page_guild.additional = [KekkaiUtilizeAssets.I_PLANT_TREE_CLOSE, G.I_CLOSE_CHAT_WINDOW] page_guild.link(button=G.I_BACK_Y, destination=page_main) page_main.link(button=G.I_MAIN_GOTO_GUILD, destination=page_guild) # 组队 team diff --git a/tasks/GameUi/page/page_img_3.json b/tasks/GameUi/page/page_img_3.json index 4118636ec..dde89eba5 100644 --- a/tasks/GameUi/page/page_img_3.json +++ b/tasks/GameUi/page/page_img_3.json @@ -137,8 +137,8 @@ { "itemName": "check_collection", "imageName": "page_check_collection.png", - "roiFront": "380,620,100,100", - "roiBack": "380,620,100,100", + "roiFront": "579,639,63,65", + "roiBack": "118,626,1162,94", "method": "Template matching", "threshold": 0.8, "description": "description" diff --git a/tasks/Orochi/assets.py b/tasks/Orochi/assets.py index 66f2278d7..e28b92640 100644 --- a/tasks/Orochi/assets.py +++ b/tasks/Orochi/assets.py @@ -16,9 +16,9 @@ class OrochiAssets: # 组队 I_FORM_TEAM = RuleImage(roi_front=(957,582,100,100), roi_back=(957,582,100,100), threshold=0.8, method="Template matching", file="./tasks/Orochi/o/o_form_team.png") # description - I_OROCHI_LOCK = RuleImage(roi_front=(652,657,22,26), roi_back=(628,644,191,62), threshold=0.8, method="Template matching", file="./tasks/Orochi/o/o_orochi_lock.png") + I_OROCHI_LOCK = RuleImage(roi_front=(706,659,19,20), roi_back=(628,646,262,60), threshold=0.7, method="Template matching", file="./tasks/Orochi/o/o_orochi_lock.png") # description - I_OROCHI_UNLOCK = RuleImage(roi_front=(652,656,21,21), roi_back=(624,644,188,60), threshold=0.8, method="Template matching", file="./tasks/Orochi/o/o_orochi_unlock.png") + I_OROCHI_UNLOCK = RuleImage(roi_front=(707,659,15,18), roi_back=(624,645,271,59), threshold=0.7, method="Template matching", file="./tasks/Orochi/o/o_orochi_unlock.png") # 点击挑战 I_OROCHI_FIRE = RuleImage(roi_front=(1133,584,110,59), roi_back=(1122,572,131,124), threshold=0.6, method="Template matching", file="./tasks/Orochi/o/o_orochi_fire.png") # 式神录 @@ -35,6 +35,6 @@ class OrochiAssets: # Ocr Rule Assets # Ocr-description - O_O_TEST_OCR = RuleOcr(roi=(126,136,360,491), area=(126,136,360,491), mode="Full", method="Default", keyword="", name="o_test_ocr") + O_O_TEST_OCR = RuleOcr(roi=(126,136,346,561), area=(126,136,346,561), mode="Full", method="Default", keyword="", name="o_test_ocr") diff --git a/tasks/Orochi/o/image.json b/tasks/Orochi/o/image.json index 267108ff8..379c0a91c 100644 --- a/tasks/Orochi/o/image.json +++ b/tasks/Orochi/o/image.json @@ -20,19 +20,19 @@ { "itemName": "orochi_lock", "imageName": "o_orochi_lock.png", - "roiFront": "652,657,22,26", - "roiBack": "628,644,191,62", + "roiFront": "706,659,19,20", + "roiBack": "628,646,262,60", "method": "Template matching", - "threshold": 0.8, + "threshold": 0.7, "description": "description" }, { "itemName": "orochi_unlock", "imageName": "o_orochi_unlock.png", - "roiFront": "652,656,21,21", - "roiBack": "624,644,188,60", + "roiFront": "707,659,15,18", + "roiBack": "624,645,271,59", "method": "Template matching", - "threshold": 0.8, + "threshold": 0.7, "description": "description" }, { diff --git a/tasks/Orochi/o/o_orochi_lock.png b/tasks/Orochi/o/o_orochi_lock.png index e4a393a21..e17802afd 100644 Binary files a/tasks/Orochi/o/o_orochi_lock.png and b/tasks/Orochi/o/o_orochi_lock.png differ diff --git a/tasks/Orochi/o/o_orochi_unlock.png b/tasks/Orochi/o/o_orochi_unlock.png index ba5527ac7..3d770a4c4 100644 Binary files a/tasks/Orochi/o/o_orochi_unlock.png and b/tasks/Orochi/o/o_orochi_unlock.png differ diff --git a/tasks/Orochi/res/ocr.json b/tasks/Orochi/res/ocr.json index 6a8540025..3792ae489 100644 --- a/tasks/Orochi/res/ocr.json +++ b/tasks/Orochi/res/ocr.json @@ -1,8 +1,8 @@ [ { "itemName": "o_test_ocr", - "roiFront": "126,136,360,491", - "roiBack": "126,136,360,491", + "roiFront": "126,136,346,561", + "roiBack": "126,136,346,561", "mode": "Full", "method": "Default", "keyword": "", diff --git a/tasks/SixRealms/config.py b/tasks/SixRealms/config.py index e0cefd48e..e1dd06e23 100644 --- a/tasks/SixRealms/config.py +++ b/tasks/SixRealms/config.py @@ -17,8 +17,7 @@ class SixRealmsGate(BaseModel): class SixRealms(ConfigBase): scheduler: Scheduler = Field(default_factory=Scheduler) - switch_soul_config_1: SwitchSoulConfig = Field(default_factory=SwitchSoulConfig) - switch_soul_config_2: SwitchSoulConfig = Field(default_factory=SwitchSoulConfig) + switch_soul_config: SwitchSoulConfig = Field(default_factory=SwitchSoulConfig) six_realms_gate: SixRealmsGate = Field(default_factory=SixRealmsGate) diff --git a/tasks/SixRealms/script_task.py b/tasks/SixRealms/script_task.py index d8a3c7172..ed7e3f626 100644 --- a/tasks/SixRealms/script_task.py +++ b/tasks/SixRealms/script_task.py @@ -31,28 +31,14 @@ def _config(self): return self.config.model.six_realms def run(self): - if self._config.switch_soul_config_1.enable: + if self._config.switch_soul_config.enable: self.ui_get_current_page() self.ui_goto(page_shikigami_records) - self.run_switch_soul(self._config.switch_soul_config_1.switch_group_team) - if self._config.switch_soul_config_1.enable_switch_by_name: + self.run_switch_soul(self._config.switch_soul_config.switch_group_team) + if self._config.switch_soul_config.enable_switch_by_name: self.ui_get_current_page() self.ui_goto(page_shikigami_records) - self.run_switch_soul_by_name( - self._config.switch_soul_config_1.group_name, - self._config.switch_soul_config_1.team_name - ) - if self._config.switch_soul_config_2.enable: - self.ui_get_current_page() - self.ui_goto(page_shikigami_records) - self.run_switch_soul(self._config.switch_soul_config_2.switch_group_team) - if self._config.switch_soul_config_2.enable_switch_by_name: - self.ui_get_current_page() - self.ui_goto(page_shikigami_records) - self.run_switch_soul_by_name( - self._config.switch_soul_config_2.group_name, - self._config.switch_soul_config_2.team_name - ) + self.run_switch_soul_by_name(self._config.switch_soul_config.group_name, self._config.switch_soul_config.team_name) self.ui_get_current_page() self.ui_goto(page_six_gates) diff --git a/tasks/Sougenbi/assets.py b/tasks/Sougenbi/assets.py index 0f5b2dfaf..870ccaead 100644 --- a/tasks/Sougenbi/assets.py +++ b/tasks/Sougenbi/assets.py @@ -47,4 +47,3 @@ class SougenbiAssets: O_S_FOOLERY = RuleOcr(roi=(955,10,68,36), area=(955,10,68,36), mode="Digit", method="Default", keyword="", name="s_foolery") - diff --git a/tasks/WantedQuests/assets.py b/tasks/WantedQuests/assets.py index 06c898125..d91a593bc 100644 --- a/tasks/WantedQuests/assets.py +++ b/tasks/WantedQuests/assets.py @@ -10,54 +10,6 @@ class WantedQuestsAssets: - # Click Rule Assets - # 秘闻的挑战对话 - C_SECRET_CHAT = RuleClick(roi_front=(597,296,59,100), roi_back=(597,296,59,100), name="secret_chat") - # 特殊的庭院需要点击,然后才能找到这个悬赏 - C_SPECIAL_MAIN = RuleClick(roi_front=(409,572,32,30), roi_back=(404,569,41,35), name="special_main") - # 关闭 单个任务追踪界面 所需点击 的 空白区域 - C_WQ_TRACE_ONE_CLOSE = RuleClick(roi_front=(170,30,400,100), roi_back=(170,30,400,100), name="wq_trace_one_close") - - - # Ocr Rule Assets - # 挑战券的数量 - O_WQ_NUMBER = RuleOcr(roi=(569,13,50,32), area=(569,13,50,32), mode="Digit", method="Default", keyword="", name="wq_number") - # 悬赏封印 - O_WQ_WANTED = RuleOcr(roi=(15,116,85,401), area=(15,116,85,401), mode="Full", method="Default", keyword="", name="wq_wanted") - # Ocr-description - O_WQ_TEXT_1 = RuleOcr(roi=(67,233,52,32), area=(67,233,52,32), mode="Single", method="Default", keyword="封印", name="wq_text_1") - # Ocr-description - O_WQ_TEXT_2 = RuleOcr(roi=(66,377,52,32), area=(66,377,52,32), mode="Single", method="Default", keyword="封印", name="wq_text_2") - # Ocr-description - O_WQ_NUM_1 = RuleOcr(roi=(32,260,72,27), area=(32,260,72,27), mode="DigitCounter", method="Default", keyword="", name="wq_num_1") - # Ocr-description - O_WQ_NUM_2 = RuleOcr(roi=(34,406,65,24), area=(34,406,65,24), mode="DigitCounter", method="Default", keyword="", name="wq_num_2") - # 备用识别1 - O_WQ_NUM_UNKNOWN_1 = RuleOcr(roi=(32,260,72,27), area=(32,260,72,27), mode="Digit", method="Default", keyword="", name="wq_num_unknown_1") - # 备用识别2 - O_WQ_NUM_UNKNOWN_2 = RuleOcr(roi=(34,406,65,24), area=(34,406,65,24), mode="Digit", method="Default", keyword="", name="wq_num_unknown_2") - # Ocr-description - O_WQ_TYPE_1 = RuleOcr(roi=(544,248,55,36), area=(544,248,55,36), mode="Single", method="Default", keyword="", name="wq_type_1") - # Ocr-description - O_WQ_TYPE_2 = RuleOcr(roi=(544,321,55,30), area=(544,321,55,30), mode="Single", method="Default", keyword="", name="wq_type_2") - # Ocr-description - O_WQ_TYPE_3 = RuleOcr(roi=(544,392,54,30), area=(544,392,54,30), mode="Single", method="Default", keyword="", name="wq_type_3") - # Ocr-description - O_WQ_TYPE_4 = RuleOcr(roi=(545,462,52,32), area=(545,462,52,32), mode="Single", method="Default", keyword="", name="wq_type_4") - # Ocr-description - O_WQ_INFO_1 = RuleOcr(roi=(609,246,309,45), area=(609,246,309,45), mode="Single", method="Default", keyword="", name="wq_info_1") - # Ocr-description - O_WQ_INFO_2 = RuleOcr(roi=(612,318,298,41), area=(612,318,298,41), mode="Single", method="Default", keyword="", name="wq_info_2") - # Ocr-description - O_WQ_INFO_3 = RuleOcr(roi=(612,386,305,44), area=(612,386,305,44), mode="Single", method="Default", keyword="", name="wq_info_3") - # Ocr-description - O_WQ_INFO_4 = RuleOcr(roi=(613,456,315,44), area=(613,456,315,44), mode="Single", method="Default", keyword="", name="wq_info_4") - # 怪物名称,如酒吞,阎魔等 - O_WQ_MONSTER_TYPE = RuleOcr(roi=(165,215,45,175), area=(165,215,45,175), mode="Full", method="Default", keyword="", name="wq_monster_type") - # - O_WQ_TEXT_ALL = RuleOcr(roi=(12,119,88,393), area=(12,119,88,393), mode="Full", method="Default", keyword="", name="wq_text_all") - - # Image Rule Assets # description I_WQC_LOCK = RuleImage(roi_front=(1083,509,27,31), roi_back=(1083,509,27,31), threshold=0.8, method="Template matching", file="./tasks/WantedQuests/chanllenge/chanllenge_wqc_lock.png") @@ -137,6 +89,15 @@ class WantedQuestsAssets: O_WQ_INVITE_COLUMN_2 = RuleOcr(roi=(520,185,190,340), area=(520,185,190,340), mode="FULL", method="Default", keyword="", name="wq_invite_column_2") + # Click Rule Assets + # 秘闻的挑战对话 + C_SECRET_CHAT = RuleClick(roi_front=(597,296,59,100), roi_back=(597,296,59,100), name="secret_chat") + # 特殊的庭院需要点击,然后才能找到这个悬赏 + C_SPECIAL_MAIN = RuleClick(roi_front=(409,572,32,30), roi_back=(404,569,41,35), name="special_main") + # 关闭 单个任务追踪界面 所需点击 的 空白区域 + C_WQ_TRACE_ONE_CLOSE = RuleClick(roi_front=(170,30,400,100), roi_back=(170,30,400,100), name="wq_trace_one_close") + + # Image Rule Assets # 封印 I_WQ_SEAL = RuleImage(roi_front=(174,184,20,29), roi_back=(56,93,664,455), threshold=0.8, method="Template matching", file="./tasks/WantedQuests/wq/wq_wq_seal.png") @@ -157,7 +118,7 @@ class WantedQuestsAssets: # description I_GOTO_2 = RuleImage(roi_front=(979,305,88,43), roi_back=(979,305,88,58), threshold=0.8, method="Template matching", file="./tasks/WantedQuests/wq/wq_goto_2.png") # description - I_GOTO_3 = RuleImage(roi_front=(979,373,88,47), roi_back=(979,373,88,62), threshold=0.8, method="Template matching", file="./tasks/WantedQuests/wq/wq_goto_3.png") + I_GOTO_3 = RuleImage(roi_front=(994,396,58,30), roi_back=(979,373,88,62), threshold=0.8, method="Template matching", file="./tasks/WantedQuests/wq/wq_goto_3.png") # description I_GOTO_4 = RuleImage(roi_front=(979,447,87,42), roi_back=(979,447,87,57), threshold=0.8, method="Template matching", file="./tasks/WantedQuests/wq/wq_goto_4.png") # 判断是否还有任务 @@ -172,6 +133,45 @@ class WantedQuestsAssets: I_WQ_TRACE_ONE_REALWORLD = RuleImage(roi_front=(850,470,180,180), roi_back=(850,470,180,180), threshold=0.8, method="Template matching", file="./tasks/WantedQuests/wq/wq_trace_one_realworld.png") + # Ocr Rule Assets + # 挑战券的数量 + O_WQ_NUMBER = RuleOcr(roi=(569,13,50,32), area=(569,13,50,32), mode="Digit", method="Default", keyword="", name="wq_number") + # 悬赏封印 + O_WQ_WANTED = RuleOcr(roi=(15,116,85,401), area=(15,116,85,401), mode="Full", method="Default", keyword="", name="wq_wanted") + # Ocr-description + O_WQ_TEXT_1 = RuleOcr(roi=(67,233,52,32), area=(67,233,52,32), mode="Single", method="Default", keyword="封印", name="wq_text_1") + # Ocr-description + O_WQ_TEXT_2 = RuleOcr(roi=(66,377,52,32), area=(66,377,52,32), mode="Single", method="Default", keyword="封印", name="wq_text_2") + # Ocr-description + O_WQ_NUM_1 = RuleOcr(roi=(32,260,72,27), area=(32,260,72,27), mode="DigitCounter", method="Default", keyword="", name="wq_num_1") + # Ocr-description + O_WQ_NUM_2 = RuleOcr(roi=(34,406,65,24), area=(34,406,65,24), mode="DigitCounter", method="Default", keyword="", name="wq_num_2") + # 备用识别1 + O_WQ_NUM_UNKNOWN_1 = RuleOcr(roi=(32,260,72,27), area=(32,260,72,27), mode="Digit", method="Default", keyword="", name="wq_num_unknown_1") + # 备用识别2 + O_WQ_NUM_UNKNOWN_2 = RuleOcr(roi=(34,406,65,24), area=(34,406,65,24), mode="Digit", method="Default", keyword="", name="wq_num_unknown_2") + # Ocr-description + O_WQ_TYPE_1 = RuleOcr(roi=(544,248,55,36), area=(544,248,55,36), mode="Single", method="Default", keyword="", name="wq_type_1") + # Ocr-description + O_WQ_TYPE_2 = RuleOcr(roi=(544,321,55,30), area=(544,321,55,30), mode="Single", method="Default", keyword="", name="wq_type_2") + # Ocr-description + O_WQ_TYPE_3 = RuleOcr(roi=(544,392,54,30), area=(544,392,54,30), mode="Single", method="Default", keyword="", name="wq_type_3") + # Ocr-description + O_WQ_TYPE_4 = RuleOcr(roi=(545,462,52,32), area=(545,462,52,32), mode="Single", method="Default", keyword="", name="wq_type_4") + # Ocr-description + O_WQ_INFO_1 = RuleOcr(roi=(609,246,309,45), area=(609,246,309,45), mode="Single", method="Default", keyword="", name="wq_info_1") + # Ocr-description + O_WQ_INFO_2 = RuleOcr(roi=(612,318,298,41), area=(612,318,298,41), mode="Single", method="Default", keyword="", name="wq_info_2") + # Ocr-description + O_WQ_INFO_3 = RuleOcr(roi=(612,386,305,44), area=(612,386,305,44), mode="Single", method="Default", keyword="", name="wq_info_3") + # Ocr-description + O_WQ_INFO_4 = RuleOcr(roi=(613,456,315,44), area=(613,456,315,44), mode="Single", method="Default", keyword="", name="wq_info_4") + # 怪物名称,如酒吞,阎魔等 + O_WQ_MONSTER_TYPE = RuleOcr(roi=(165,215,45,175), area=(165,215,45,175), mode="Full", method="Default", keyword="", name="wq_monster_type") + # + O_WQ_TEXT_ALL = RuleOcr(roi=(12,119,88,393), area=(12,119,88,393), mode="Full", method="Default", keyword="", name="wq_text_all") + + # Image Rule Assets # 奇怪了之前的不能用 I_WQSE_FIRE = RuleImage(roi_front=(1041,556,100,100), roi_back=(1016,534,147,138), threshold=0.8, method="Template matching", file="./tasks/WantedQuests/wq/wq_wqse_fire.png") diff --git a/tasks/WantedQuests/script_task.py b/tasks/WantedQuests/script_task.py index c01423668..4ce0f7b87 100644 --- a/tasks/WantedQuests/script_task.py +++ b/tasks/WantedQuests/script_task.py @@ -77,6 +77,9 @@ def run(self): logger.warning('failed too many times, exit') break cu, re, total, area = self.find_wq(self.device.image) + if re == -2: + logger.info("only completed wanted quests remained") + break if re == -1: error_count += 1 # 没找到任务 尝试上滑 @@ -448,15 +451,15 @@ def secret(self, goto, num=1): success = self.run_general_battle(self.battle_config) while 1: self.screenshot() - if self.appear(self.I_CHECK_EXPLORATION): - self.wait_until_stable(self.I_CHECK_EXPLORATION) + if self.appear(self.I_CHECK_SECRET_ZONES): break if self.appear_then_click(self.I_UI_BACK_RED, interval=1): continue if self.appear_then_click(self.I_UI_BACK_BLUE, interval=1.5): continue - if self.appear_then_click(self.I_UI_BACK_YELLOW, interval=1.5): - continue + self.ui_get_current_page() + self.ui_goto(page_exploration) + self.wait_until_stable(self.I_CHECK_EXPLORATION) logger.info('Secret mission finished') def invite_random(self, add_button: RuleImage): @@ -725,6 +728,7 @@ def calc_xywh(box): reg_progress = re.compile(r'^(\d+)([7/])(\d+)$') # 没有检测到斜杠,符合格式:前N位与后N位相同,表示已完成 reg_XX = re.compile(r'^(\d+)\1$') + completed_only = False for index, res in enumerate(res_list): if reg_fengyin.match(res.ocr_text): continue @@ -744,6 +748,7 @@ def calc_xywh(box): cu = cu // 10 if cu == total: # 该任务已完成,一般是悬赏任务,邀请人没有做导致的 + completed_only = True continue return cu, re, total, xywh # 例如:1414 66 1212 @@ -754,6 +759,8 @@ def calc_xywh(box): if reg_fengyin.match(res_list[last_index].ocr_text): return 0, 1, 3, calc_xywh(res_list[last_index].box) + if completed_only: + return -2, -2, -2, [0, 0, 0, 0] return -1, -1, -1, [0, 0, 0, 0] def is_wq_remained(self): diff --git a/tasks/WantedQuests/click.json b/tasks/WantedQuests/wq/click.json similarity index 100% rename from tasks/WantedQuests/click.json rename to tasks/WantedQuests/wq/click.json diff --git a/tasks/WantedQuests/wq/image.json b/tasks/WantedQuests/wq/image.json index 5c0c1396f..45fc829dc 100644 --- a/tasks/WantedQuests/wq/image.json +++ b/tasks/WantedQuests/wq/image.json @@ -83,7 +83,7 @@ { "itemName": "goto_3", "imageName": "wq_goto_3.png", - "roiFront": "979,373,88,47", + "roiFront": "994,396,58,30", "roiBack": "979,373,88,62", "method": "Template matching", "threshold": 0.8, diff --git a/tasks/WantedQuests/ocr.json b/tasks/WantedQuests/wq/ocr.json similarity index 100% rename from tasks/WantedQuests/ocr.json rename to tasks/WantedQuests/wq/ocr.json diff --git a/tasks/WantedQuests/wq/wq_goto_3.png b/tasks/WantedQuests/wq/wq_goto_3.png index b46d07f7c..9bdc8083c 100644 Binary files a/tasks/WantedQuests/wq/wq_goto_3.png and b/tasks/WantedQuests/wq/wq_goto_3.png differ diff --git a/tasks/WeeklyTrifles/assets.py b/tasks/WeeklyTrifles/assets.py index b5ba821e6..8b7801981 100644 --- a/tasks/WeeklyTrifles/assets.py +++ b/tasks/WeeklyTrifles/assets.py @@ -57,15 +57,11 @@ class WeeklyTriflesAssets: # 点击“式神” I_WT_SHIKIAGMI = RuleImage(roi_front=(280,620,920,100), roi_back=(280,620,920,100), threshold=0.8, method="Template matching", file="./tasks/WeeklyTrifles/collect/collect_wt_shikiagmi.png") # 点击式神绘卷 - I_WT_SCROLL = RuleImage(roi_front=(1128,615,77,67), roi_back=(1128,615,77,67), threshold=0.8, method="Template matching", file="./tasks/WeeklyTrifles/collect/collect_wt_scroll.png") - # 点击分享 - I_WT_COLLECT = RuleImage(roi_front=(1170,606,78,83), roi_back=(1170,606,78,83), threshold=0.8, method="Template matching", file="./tasks/WeeklyTrifles/collect/collect_wt_collect.png") + I_WT_SHARE = RuleImage(roi_front=(336,280,50,48), roi_back=(266,241,199,141), threshold=0.8, method="Template matching", file="./tasks/WeeklyTrifles/collect/collect_wt_share.png") # 百鬼夜行图 - I_WT_SCROLL_1 = RuleImage(roi_front=(1180,27,28,121), roi_back=(1159,12,65,152), threshold=0.7, method="Template matching", file="./tasks/WeeklyTrifles/collect/collect_wt_scroll_1.png") - # 百妖风物鉴 - I_WT_SCROLL_2 = RuleImage(roi_front=(1182,24,24,122), roi_back=(1163,12,63,155), threshold=0.7, method="Template matching", file="./tasks/WeeklyTrifles/collect/collect_wt_scroll_2.png") + I_WT_LOGO = RuleImage(roi_front=(1106,72,34,111), roi_back=(1065,11,117,207), threshold=0.7, method="Template matching", file="./tasks/WeeklyTrifles/collect/collect_wt_logo.png") # 微信分享 - I_WT_COLLECT_WECHAT = RuleImage(roi_front=(280,600,440,100), roi_back=(280,600,440,100), threshold=0.8, method="Template matching", file="./tasks/WeeklyTrifles/collect/collect_wt_collect_wechat.png") + I_WT_COLLECT_WECHAT = RuleImage(roi_front=(325,645,50,45), roi_back=(119,594,1045,126), threshold=0.8, method="Template matching", file="./tasks/WeeklyTrifles/collect/collect_wt_collect_wechat.png") # 二维码 I_WT_QR_CODE = RuleImage(roi_front=(473,161,336,96), roi_back=(404,112,483,168), threshold=0.65, method="Template matching", file="./tasks/WeeklyTrifles/collect/collect_wt_qr_code.png") diff --git a/tasks/WeeklyTrifles/collect/collect_wt_collect.png b/tasks/WeeklyTrifles/collect/collect_wt_collect.png deleted file mode 100644 index b13078200..000000000 Binary files a/tasks/WeeklyTrifles/collect/collect_wt_collect.png and /dev/null differ diff --git a/tasks/WeeklyTrifles/collect/collect_wt_collect_wechat.png b/tasks/WeeklyTrifles/collect/collect_wt_collect_wechat.png index f59f5644b..44a0de165 100644 Binary files a/tasks/WeeklyTrifles/collect/collect_wt_collect_wechat.png and b/tasks/WeeklyTrifles/collect/collect_wt_collect_wechat.png differ diff --git a/tasks/WeeklyTrifles/collect/collect_wt_logo.png b/tasks/WeeklyTrifles/collect/collect_wt_logo.png new file mode 100644 index 000000000..4327df965 Binary files /dev/null and b/tasks/WeeklyTrifles/collect/collect_wt_logo.png differ diff --git a/tasks/WeeklyTrifles/collect/collect_wt_scroll.png b/tasks/WeeklyTrifles/collect/collect_wt_scroll.png deleted file mode 100644 index b403cb206..000000000 Binary files a/tasks/WeeklyTrifles/collect/collect_wt_scroll.png and /dev/null differ diff --git a/tasks/WeeklyTrifles/collect/collect_wt_scroll_1.png b/tasks/WeeklyTrifles/collect/collect_wt_scroll_1.png deleted file mode 100644 index 7fe1174b6..000000000 Binary files a/tasks/WeeklyTrifles/collect/collect_wt_scroll_1.png and /dev/null differ diff --git a/tasks/WeeklyTrifles/collect/collect_wt_scroll_2.png b/tasks/WeeklyTrifles/collect/collect_wt_scroll_2.png deleted file mode 100644 index 342de2737..000000000 Binary files a/tasks/WeeklyTrifles/collect/collect_wt_scroll_2.png and /dev/null differ diff --git a/tasks/WeeklyTrifles/collect/collect_wt_share.png b/tasks/WeeklyTrifles/collect/collect_wt_share.png new file mode 100644 index 000000000..a1ee05627 Binary files /dev/null and b/tasks/WeeklyTrifles/collect/collect_wt_share.png differ diff --git a/tasks/WeeklyTrifles/collect/image.json b/tasks/WeeklyTrifles/collect/image.json index 888206098..ee614f42e 100644 --- a/tasks/WeeklyTrifles/collect/image.json +++ b/tasks/WeeklyTrifles/collect/image.json @@ -9,46 +9,28 @@ "description": "点击“式神”" }, { - "itemName": "wt_scroll", - "imageName": "collect_wt_scroll.png", - "roiFront": "1128,615,77,67", - "roiBack": "1128,615,77,67", + "itemName": "wt_share", + "imageName": "collect_wt_share.png", + "roiFront": "336,280,50,48", + "roiBack": "266,241,199,141", "method": "Template matching", "threshold": 0.8, "description": "点击式神绘卷" }, { - "itemName": "wt_collect", - "imageName": "collect_wt_collect.png", - "roiFront": "1170,606,78,83", - "roiBack": "1170,606,78,83", - "method": "Template matching", - "threshold": 0.8, - "description": "点击分享" - }, - { - "itemName": "wt_scroll_1", - "imageName": "collect_wt_scroll_1.png", - "roiFront": "1180,27,28,121", - "roiBack": "1159,12,65,152", + "itemName": "wt_logo", + "imageName": "collect_wt_logo.png", + "roiFront": "1106,72,34,111", + "roiBack": "1065,11,117,207", "method": "Template matching", "threshold": 0.7, "description": "百鬼夜行图" }, - { - "itemName": "wt_scroll_2", - "imageName": "collect_wt_scroll_2.png", - "roiFront": "1182,24,24,122", - "roiBack": "1163,12,63,155", - "method": "Template matching", - "threshold": 0.7, - "description": "百妖风物鉴" - }, { "itemName": "wt_collect_wechat", "imageName": "collect_wt_collect_wechat.png", - "roiFront": "280,600,440,100", - "roiBack": "280,600,440,100", + "roiFront": "325,645,50,45", + "roiBack": "119,594,1045,126", "method": "Template matching", "threshold": 0.8, "description": "微信分享" diff --git a/tasks/WeeklyTrifles/script_task.py b/tasks/WeeklyTrifles/script_task.py index e5070bf09..b9e45bd0f 100644 --- a/tasks/WeeklyTrifles/script_task.py +++ b/tasks/WeeklyTrifles/script_task.py @@ -69,15 +69,12 @@ def _share_collect(self): # 一路进去 while 1: self.screenshot() - if self.appear(self.I_WT_COLLECT): + if self.appear(self.I_WT_LOGO): break if self.appear_then_click(self.I_WT_SHIKIAGMI, interval=1): continue - if self.appear_then_click(self.I_WT_SCROLL, interval=1): + if self.appear_then_click(self.I_WT_SHARE, interval=1): continue - # 确认的是百鬼夜行图 - self.ui_click(self.I_WT_SCROLL_2, self.I_WT_SCROLL_1) - logger.info('Confirm the picture is 百妖风物鉴') # 点击分享 while 1: self.screenshot() @@ -85,8 +82,6 @@ def _share_collect(self): break if self.appear_then_click(self.I_WT_COLLECT_WECHAT, interval=1): continue - if self.appear_then_click(self.I_WT_COLLECT, interval=5): - continue logger.info('Click share') get_timer = Timer(3) get_timer.start() @@ -109,8 +104,6 @@ def _share_collect(self): break if self.appear_then_click(self.I_UI_BACK_RED, interval=1): continue - if self.appear_then_click(self.I_UI_BACK_BLUE, interval=1): - continue if self.appear_then_click(self.I_UI_BACK_YELLOW, interval=1): continue