diff --git a/legend/城镇_面板_空闲4#L144,442.png b/legend/城镇_面板_空闲4#L144,442.png deleted file mode 100644 index 03303a2..0000000 Binary files a/legend/城镇_面板_空闲4#L144,442.png and /dev/null differ diff --git a/legend/城镇_面板_空闲4#L144,443.png b/legend/城镇_面板_空闲4#L144,443.png new file mode 100644 index 0000000..c6692fa Binary files /dev/null and b/legend/城镇_面板_空闲4#L144,443.png differ diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java index 62d5ce9..9315345 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java @@ -2,6 +2,7 @@ package xyz.wbsite.jmacro.wjdr; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.RandomUtil; import xyz.wbsite.jmacro.JMacro; import xyz.wbsite.jmacro.JMainService; import xyz.wbsite.jmacro.base.ViewRect; @@ -59,50 +60,53 @@ public class MacroForWJDR extends JMacro { Logger.info("工作时间:{}~{}", workStart, workEnd); Logger.info("当前时间:{}", currentTime); if (!DateUtil.parseTime(currentTime).isIn(DateUtil.parseTime(workStart), DateUtil.parseTime(workEnd))) { - Logger.info("当前时间为非工作时间,休眠待命!"); - - Logger.info("检测游戏窗口是否关闭!"); - ViewRect 无尽 = findLegend(getFocusRect().offsetY(-30), "无尽", 0.8); - if (无尽 != null) { - Logger.info("游戏窗口存在,关闭窗口!"); - mouseMove(无尽.getCenter()); - delay(1000); - mouseLeftClick(无尽.getCenter()); + Logger.info("当前时间为工作时间"); + Logger.info("任务线程开始", current.toString("yyyy-MM-dd HH:mm:ss")); + // 获取启动图标 + Logger.info("查找启动图标"); + ViewRect launch = findLegend("启动图标", 0.9); + if (launch != null) { + Logger.info("启动图标坐标:", launch.toString()); + Logger.info("点击启动图标"); + mouseLeftClick(launch); + Logger.info("等待程序启动中,请稍等..."); + delay(10 * 1000); } - Logger.info("休眠1分钟!"); - delay(60 * 1000); - return; - } - Logger.info("当前时间为工作时间"); - Logger.info("任务线程开始", current.toString("yyyy-MM-dd HH:mm:ss")); - // 获取启动图标 - Logger.info("查找启动图标"); - ViewRect launch = findLegend("启动图标", 0.9); - if (launch != null) { - Logger.info("启动图标坐标:", launch.toString()); - Logger.info("点击启动图标"); - mouseLeftClick(launch); - Logger.info("等待程序启动中,请稍等..."); - delay(10 * 1000); - } + Logger.info("启动循环任务"); + int count = 10; + while (JMainService.getInstance().run && count > 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("选中野外");