From b94c1c080cd318228a29e9afe0a757bfb8071a3b Mon Sep 17 00:00:00 2001 From: wangbing Date: Wed, 18 Sep 2024 23:49:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E9=87=87=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- legend/城镇_面板_空闲4#L144,442.png | Bin 1715 -> 0 bytes legend/城镇_面板_空闲4#L144,443.png | Bin 0 -> 1417 bytes .../xyz/wbsite/jmacro/wjdr/MacroForWJDR.java | 84 +++++++------- .../wjdr/task/Task_仓库奖励领取.java | 25 ++--- .../jmacro/wjdr/task/Task_自动练兵.java | 105 +++++++++--------- .../jmacro/wjdr/task/Task_自动采矿.java | 78 +++++++------ .../jmacro/wjdr/task/Task_自动野怪.java | 25 +++-- 7 files changed, 167 insertions(+), 150 deletions(-) delete mode 100644 legend/城镇_面板_空闲4#L144,442.png create mode 100644 legend/城镇_面板_空闲4#L144,443.png diff --git a/legend/城镇_面板_空闲4#L144,442.png b/legend/城镇_面板_空闲4#L144,442.png deleted file mode 100644 index 03303a2005616149e39d6be7ce456727d51abeeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1715 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 0) { + count--; + // 任意界面优先返回城镇 + new Task_定位城镇(this, focusRect).run(); - Logger.info("启动循环任务"); - while (JMainService.getInstance().run) { - // 任意界面优先返回城镇 - new Task_定位城镇(this, focusRect).run(); + // 可按优先级排序以下任务 + new Task_采矿被攻击(this, focusRect).run(); + new Task_收留避难者(this, focusRect).run(); + new Task_自动练兵(this, focusRect).run(); + new Task_自动野怪(this, focusRect).run(); + new Task_自动采矿(this, focusRect).run(); + new Task_英雄招募领取(this, focusRect).run(); + new Task_任务奖励领取(this, focusRect).run(); + new Task_探险奖励领取(this, focusRect).run(); + new Task_邮件奖励领取(this, focusRect).run(); + new Task_仓库奖励领取(this, focusRect).run(); + } + } else { + Logger.info("当前时间为非工作时间,休眠待命!"); + } - // 可按优先级排序以下任务 - new Task_采矿被攻击(this, focusRect).run(); - new Task_收留避难者(this, focusRect).run(); - new Task_自动练兵(this, focusRect).run(); - new Task_自动野怪(this, focusRect).run(); - new Task_自动采矿(this, focusRect).run(); - new Task_英雄招募领取(this, focusRect).run(); - new Task_任务奖励领取(this, focusRect).run(); - new Task_探险奖励领取(this, focusRect).run(); - new Task_邮件奖励领取(this, focusRect).run(); - new Task_仓库奖励领取(this, focusRect).run(); + Logger.info("检测游戏窗口是否关闭!"); + ViewRect 无尽 = findLegend(getFocusRect().offsetY(-30), "无尽", 0.8); + if (无尽 != null) { + Logger.info("游戏窗口存在,关闭窗口!"); + mouseMove(无尽.getCenter()); + delay(1000); + mouseLeftClick(无尽.getCenter()); } + + int randomInt = RandomUtil.randomInt(5, 20); + Logger.info("休眠中{}分钟", randomInt); + delay(randomInt * 60 * 1000); } } diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_仓库奖励领取.java b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_仓库奖励领取.java index 9e2438c..4d378a8 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_仓库奖励领取.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_仓库奖励领取.java @@ -12,20 +12,17 @@ public class Task_仓库奖励领取 extends BaseTask { @Override public void task(JMacro macro, ViewRect viewRect) { - Logger.info("检测面板状态"); - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"), 0.6); - if (viewRects == null || viewRects.length == 0) { - Logger.info("检测面板状态检测失败"); + Logger.info("打开面板"); + boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); + if (!城镇_打开面板) { + Logger.error("打开面板失败"); return; } - if (viewRects[0] != null) { - Logger.info("打开面板"); - macro.mouseLeftClick(viewRects[0]); - macro.delay(1000); - } - - if (viewRects[1] != null) { - Logger.info("面板已打开"); + Logger.info("检测关闭按钮"); + ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); + if (城镇_关闭面板 == null) { + Logger.error("未检测到面板关闭按钮,中断任务"); + return; } Logger.info("选中城镇"); @@ -39,8 +36,8 @@ public class Task_仓库奖励领取 extends BaseTask { ViewRect 仓库_补给完成 = macro.matchLegend("仓库_补给完成", 0.9); if (仓库_补给完成 == null) { Logger.info("关闭面板"); - boolean 城镇_关闭面板 = macro.matchLegendAndClick("城镇_关闭面板", 0.6); - if (!城镇_关闭面板) { + boolean 关闭面板 = macro.matchLegendAndClick("城镇_关闭面板", 0.6); + if (!关闭面板) { Logger.error("关闭面板失败"); } return; diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动练兵.java b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动练兵.java index 52c8b9e..ae00e27 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动练兵.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动练兵.java @@ -18,28 +18,35 @@ public class Task_自动练兵 extends BaseTask { } private void 盾兵自动训练(JMacro macro, ViewRect viewRect) { - Logger.info("检测面板状态"); - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"),0.6); - if (viewRects == null || viewRects.length == 0) { - Logger.info("检测面板状态检测失败"); - return; - } - if (viewRects[0] != null) { - Logger.info("打开面板"); - macro.mouseLeftClick(viewRects[0]); - macro.delay(1000); - } - - if (viewRects[1] != null) { + ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9); + if (viewRects[0] == null && viewRects[1] == null) { + Logger.info("面板未打开"); + Logger.info("检测面板打开按钮,打开面板"); + boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); + if (!城镇_打开面板) { + Logger.error("打开面板失败"); + return; + } + Logger.info("检测关闭按钮"); + ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); + if (城镇_关闭面板 == null) { + Logger.error("未检测到面板关闭按钮,打开失败"); + return; + } + } else { Logger.info("面板已打开"); } Logger.info("选中城镇"); macro.mouseLeftClick(macro.of(85, 200)); + macro.delay(500); + + Logger.info("滑动到顶部"); + macro.mouseLeftDrag(macro.of(163, 231), macro.of(158, 626), true); macro.delay(1000); Logger.info("检测盾兵"); - ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成盾兵", "城镇_空闲盾兵"),0.8D, 3); + ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成盾兵", "城镇_空闲盾兵"), 0.8D, 3); if (viewRects2 == null) { Logger.info("检测失败"); return; @@ -136,28 +143,27 @@ public class Task_自动练兵 extends BaseTask { } private void 矛兵自动训练(JMacro macro, ViewRect viewRect) { - Logger.info("检测面板状态"); - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"),0.6); - if (viewRects == null || viewRects.length == 0) { - Logger.info("检测面板状态检测失败"); - return; - } - if (viewRects[0] != null) { - Logger.info("打开面板"); - macro.mouseLeftClick(viewRects[0]); - macro.delay(1000); - } - - if (viewRects[1] != null) { + ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9); + if (viewRects[0] == null && viewRects[1] == null) { + Logger.info("面板未打开"); + Logger.info("检测面板打开按钮,打开面板"); + boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); + if (!城镇_打开面板) { + Logger.error("打开面板失败"); + return; + } + Logger.info("检测关闭按钮"); + ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); + if (城镇_关闭面板 == null) { + Logger.error("未检测到面板关闭按钮,打开失败"); + return; + } + } else { Logger.info("面板已打开"); } - Logger.info("选中城镇"); - macro.mouseLeftClick(macro.of(85, 200)); - macro.delay(1000); - Logger.info("检测矛兵"); - ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成矛兵", "城镇_空闲矛兵"),0.8D, 3); + ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成矛兵", "城镇_空闲矛兵"), 0.8D, 3); if (viewRects2 == null) { Logger.info("检测失败"); return; @@ -255,28 +261,27 @@ public class Task_自动练兵 extends BaseTask { } private void 射手自动训练(JMacro macro, ViewRect viewRect) { - Logger.info("检测面板状态"); - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"),0.6); - if (viewRects == null || viewRects.length == 0) { - Logger.info("检测面板状态检测失败"); - return; - } - if (viewRects[0] != null) { - Logger.info("打开面板"); - macro.mouseLeftClick(viewRects[0]); - macro.delay(1000); - } - - if (viewRects[1] != null) { + ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9); + if (viewRects[0] == null && viewRects[1] == null) { + Logger.info("面板未打开"); + Logger.info("检测面板打开按钮,打开面板"); + boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); + if (!城镇_打开面板) { + Logger.error("打开面板失败"); + return; + } + Logger.info("检测关闭按钮"); + ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); + if (城镇_关闭面板 == null) { + Logger.error("未检测到面板关闭按钮,打开失败"); + return; + } + } else { Logger.info("面板已打开"); } - Logger.info("选中城镇"); - macro.mouseLeftClick(macro.of(85, 200)); - macro.delay(1000); - Logger.info("检测矛兵"); - ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成射手", "城镇_空闲射手"),0.8D, 3); + ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成射手", "城镇_空闲射手"), 0.8D, 3); if (viewRects2 == null) { Logger.info("检测失败"); return; diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动采矿.java b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动采矿.java index 5a3d21f..222dfe3 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动采矿.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动采矿.java @@ -20,48 +20,52 @@ public class Task_自动采矿 extends BaseTask { @Override public void task(JMacro macro, ViewRect viewRect) { - { - Logger.info("打开面板,读取行军状态"); - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"), 0.6); - if (viewRects[0] == null && viewRects[1] == null) { - Logger.error("检测面板状态失败"); + ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9); + if (viewRects[0] == null && viewRects[1] == null) { + Logger.info("面板未打开"); + Logger.info("检测面板打开按钮,打开面板"); + boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); + if (!城镇_打开面板) { + Logger.error("打开面板失败"); return; } - - if (viewRects[0] != null) { - Logger.info("打开面板"); - macro.mouseLeftClick(viewRects[0]); - macro.delay(1000); + Logger.info("检测关闭按钮"); + ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); + if (城镇_关闭面板 == null) { + Logger.error("未检测到面板关闭按钮,打开失败"); + return; } + } else { + Logger.info("面板已打开"); + } - Logger.info("选中野外"); - macro.mouseLeftClick(macro.of(245, 200)); - macro.delay(1000); + Logger.info("选中野外"); + macro.mouseLeftClick(macro.of(245, 200)); + macro.delay(1000); - if (null != macro.matchLegend("城镇_面板_空闲1", 0.6D)) { - 队列1空闲 = true; - Logger.info("队列1空闲"); - } - if (null != macro.matchLegend("城镇_面板_空闲2", 0.6D)) { - 队列2空闲 = true; - Logger.info("队列2空闲"); - } - if (null != macro.matchLegend("城镇_面板_空闲3", 0.6D)) { - 队列3空闲 = true; - Logger.info("队列3空闲"); - } - if (null != macro.matchLegend("城镇_面板_空闲4", 0.6D)) { - 队列4空闲 = true; - Logger.info("队列4空闲"); - } - if (null != macro.matchLegend("城镇_面板_空闲5", 0.6D)) { - 队列5空闲 = true; - Logger.info("队列5空闲"); - } - if (null != macro.matchLegend("城镇_面板_空闲6", 0.6D)) { - 队列6空闲 = true; - Logger.info("队列6空闲"); - } + if (null != macro.matchLegend("城镇_面板_空闲1", 0.6D)) { + 队列1空闲 = true; + Logger.info("队列1空闲"); + } + if (null != macro.matchLegend("城镇_面板_空闲2", 0.6D)) { + 队列2空闲 = true; + Logger.info("队列2空闲"); + } + if (null != macro.matchLegend("城镇_面板_空闲3", 0.6D)) { + 队列3空闲 = true; + Logger.info("队列3空闲"); + } + if (null != macro.matchLegend("城镇_面板_空闲4", 0.6D)) { + 队列4空闲 = true; + Logger.info("队列4空闲"); + } + if (null != macro.matchLegend("城镇_面板_空闲5", 0.6D)) { + 队列5空闲 = true; + Logger.info("队列5空闲"); + } + if (null != macro.matchLegend("城镇_面板_空闲6", 0.6D)) { + 队列6空闲 = true; + Logger.info("队列6空闲"); } ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动野怪.java b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动野怪.java index ee07d2c..1ce4a47 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动野怪.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动野怪.java @@ -31,16 +31,23 @@ public class Task_自动野怪 extends BaseTask { { Logger.info("打开面板,读取行军状态"); - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"), 0.6); + ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9); if (viewRects[0] == null && viewRects[1] == null) { - Logger.error("检测面板状态失败"); - return; - } - - if (viewRects[0] != null) { - Logger.info("打开面板"); - macro.mouseLeftClick(viewRects[0]); - macro.delay(1000); + Logger.info("面板未打开"); + Logger.info("检测面板打开按钮,打开面板"); + boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); + if (!城镇_打开面板) { + Logger.error("打开面板失败"); + return; + } + Logger.info("检测关闭按钮"); + ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); + if (城镇_关闭面板 == null) { + Logger.error("未检测到面板关闭按钮,打开失败"); + return; + } + } else { + Logger.info("面板已打开"); } Logger.info("选中野外");