mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-18 02:10:21 +08:00
fix(roguelike): StrategyChange 插件利用回调直接获取识别结果;NextLevel 区域也进行层名识别;水月肉鸽在 DiceConfirm 之后也进行层名识别
可能把 NextLevel 的识别和点击分开然后把 StrategyChangeAtNextLevel 插进去才比较好,大概
This commit is contained in:
@@ -3791,6 +3791,13 @@
|
||||
"MainThemes#next"
|
||||
]
|
||||
},
|
||||
"NextOnce": {
|
||||
"algorithm": "JustReturn",
|
||||
"next": [
|
||||
"#next",
|
||||
"Stop"
|
||||
]
|
||||
},
|
||||
"LoadingText": {
|
||||
"algorithm": "OcrDetect",
|
||||
"action": "DoNothing",
|
||||
@@ -9101,7 +9108,8 @@
|
||||
"Doc_2": "需要在任务 Task 开始时截图时,将 Task 加入到此任务的 next 列表。",
|
||||
"algorithm": "JustReturn",
|
||||
"next": [
|
||||
"Roguelike@StageEncounterOptionUnknown"
|
||||
"Roguelike@StageEncounterOptionUnknown",
|
||||
"StrategyChanges@Stop"
|
||||
]
|
||||
},
|
||||
"ScreenshotTaskPlugin-Config-Debug": {
|
||||
@@ -11747,8 +11755,10 @@
|
||||
245,
|
||||
144
|
||||
],
|
||||
"sub": [
|
||||
"Roguelike@StrategyChanges@NextOnce"
|
||||
],
|
||||
"next": [
|
||||
"Roguelike@StrategyChange",
|
||||
"Roguelike@Stages#next"
|
||||
]
|
||||
},
|
||||
@@ -12732,6 +12742,22 @@
|
||||
"Roguelike@StartExplore"
|
||||
]
|
||||
},
|
||||
"Roguelike@StrategyChanges": {
|
||||
"algorithm": "JustReturn",
|
||||
"next": [
|
||||
"Roguelike@StrategyChangeAtNextLevel",
|
||||
"Roguelike@StrategyChange"
|
||||
]
|
||||
},
|
||||
"Roguelike@StrategyChangeAtNextLevel": {
|
||||
"baseTask": "Roguelike@StrategyChange",
|
||||
"roi": [
|
||||
522,
|
||||
431,
|
||||
245,
|
||||
144
|
||||
]
|
||||
},
|
||||
"Roguelike@StrategyChange": {
|
||||
"baseTask": "Roguelike@StrategyChange_default"
|
||||
},
|
||||
@@ -12746,10 +12772,6 @@
|
||||
0,
|
||||
186,
|
||||
129
|
||||
],
|
||||
"next": [
|
||||
"Roguelike@NextLevel",
|
||||
"Roguelike@Stages#next"
|
||||
]
|
||||
},
|
||||
"Roguelike@StrategyChange_mode0": {
|
||||
@@ -13400,6 +13422,9 @@
|
||||
],
|
||||
"templThreshold": 0.95,
|
||||
"postDelay": 1000,
|
||||
"sub": [
|
||||
"Mizuki@Roguelike@StrategyChanges@NextOnce"
|
||||
],
|
||||
"next": [
|
||||
"Mizuki@Roguelike@StageEncounterEnter",
|
||||
"Mizuki@Roguelike@Stages#next",
|
||||
@@ -13407,17 +13432,10 @@
|
||||
]
|
||||
},
|
||||
"Mizuki@Roguelike@DiceConfirmThenAbandon": {
|
||||
"Doc": "骰子的确认按钮",
|
||||
"action": "ClickSelf",
|
||||
"baseTask": "Mizuki@Roguelike@DiceConfirm",
|
||||
"template": "Mizuki@Roguelike@DiceConfirm.png",
|
||||
"cache": false,
|
||||
"roi": [
|
||||
551,
|
||||
577,
|
||||
174,
|
||||
143
|
||||
],
|
||||
"templThreshold": 0.95,
|
||||
"postDelay": 0,
|
||||
"sub": [],
|
||||
"next": [
|
||||
"Mizuki@Roguelike@ExitThenAbandon"
|
||||
]
|
||||
|
||||
@@ -23,7 +23,8 @@ bool asst::RoguelikeStrategyChangeTaskPlugin::verify(AsstMsg msg, const json::va
|
||||
if (task_view.starts_with(roguelike_name)) {
|
||||
task_view.remove_prefix(roguelike_name.length());
|
||||
}
|
||||
if (task_view == "Roguelike@StrategyChange") {
|
||||
if (task_view == "Roguelike@StrategyChange" || task_view == "Roguelike@StrategyChangeAtNextLevel") {
|
||||
m_result = details.get("details", "result", json::object());
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
@@ -35,21 +36,12 @@ bool asst::RoguelikeStrategyChangeTaskPlugin::_run()
|
||||
{
|
||||
LogTraceFunction;
|
||||
|
||||
std::string theme = m_config->get_theme();
|
||||
const std::string theme = m_config->get_theme();
|
||||
const std::string stages_task_name = theme + "@Roguelike@Stages";
|
||||
const std::string current_strategy = m_result.get("text", "");
|
||||
const std::string strategy_task_name = stages_task_name + current_strategy;
|
||||
|
||||
// TODO: 这段识别有点冗余,要是 plugin 能获取识别结果就好了
|
||||
std::string task_name = theme + "@Roguelike@StrategyChange";
|
||||
OCRer analyzer(ctrler()->get_image());
|
||||
analyzer.set_task_info(task_name);
|
||||
if (!analyzer.analyze()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string stages_task_name = theme + "@Roguelike@Stages";
|
||||
std::string current_strategy = analyzer.get_result().front().text;
|
||||
std::string strategy_task_name = stages_task_name + current_strategy;
|
||||
|
||||
if (Task.get(strategy_task_name) == nullptr) {
|
||||
if (current_strategy.empty() || Task.get(strategy_task_name) == nullptr) [[unlikely]] {
|
||||
Log.error("Strategy task", strategy_task_name, "doesn't exist!");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -14,5 +14,8 @@ namespace asst
|
||||
|
||||
protected:
|
||||
virtual bool _run() override;
|
||||
|
||||
private:
|
||||
mutable json::object m_result;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user