From fa1e325e7cb11f4d88ebc2bd669b59d3667e9791 Mon Sep 17 00:00:00 2001 From: wangbing Date: Thu, 3 Oct 2024 02:51:24 +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 --- src/main/java/xyz/wbsite/jmacro/JMacro.java | 90 +++++++++++++++++-- .../java/xyz/wbsite/jmacro/JMainService.java | 2 +- .../java/xyz/wbsite/jmacro/util/Logger.java | 15 +++- .../xyz/wbsite/jmacro/wjdr/MacroForWJDR.java | 3 +- .../xyz/wbsite/jmacro/wjdr/task/BaseTask.java | 8 +- .../wjdr/task/Task_收留避难者.java | 2 +- .../jmacro/wjdr/task/Task_自动野怪.java | 3 +- 7 files changed, 108 insertions(+), 15 deletions(-) diff --git a/src/main/java/xyz/wbsite/jmacro/JMacro.java b/src/main/java/xyz/wbsite/jmacro/JMacro.java index fa0e7e6..1c55b56 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMacro.java +++ b/src/main/java/xyz/wbsite/jmacro/JMacro.java @@ -7,11 +7,7 @@ import xyz.wbsite.jmacro.base.Legend; import xyz.wbsite.jmacro.base.ViewColor; import xyz.wbsite.jmacro.base.ViewPoint; import xyz.wbsite.jmacro.base.ViewRect; -import xyz.wbsite.jmacro.util.ValueUtil; -import xyz.wbsite.jmacro.util.ColorUtil; -import xyz.wbsite.jmacro.util.ImageUtil; -import xyz.wbsite.jmacro.util.Logger; -import xyz.wbsite.jmacro.util.TaskUtil; +import xyz.wbsite.jmacro.util.*; import java.awt.*; import java.awt.event.InputEvent; @@ -537,6 +533,82 @@ public abstract class JMacro { }, seconds, TimeUnit.SECONDS); } + /** + * 聚焦区域查找图例并点击 + * + * @param legend 图例 + * @param minSimilar 最低相似度 + * @return 匹配区域 + */ + public boolean findLegendAndClick(String legend, double minSimilar) { + ViewRect matchLegend = matchLegend(legend, minSimilar); + if (matchLegend != null) { + Logger.info("点击【{}】", legend); + mouseLeftClick(matchLegend); + delay(500); + return true; + } else { + return false; + } + } + + /** + * 聚焦区域查找图例并点击 + * + * @param legend 图例 + * @param minSimilar 最低相似度 + * @return 匹配区域 + */ + public boolean findLegendAndClick(Legend legend, double minSimilar) { + ViewRect matchLegend = matchLegend(legend, minSimilar); + if (matchLegend != null) { + Logger.info("点击【{}】", legend); + mouseLeftClick(matchLegend); + delay(500); + return true; + } else { + return false; + } + } + + /** + * 指定区域查找图例并点击 + * + * @param legend 图例 + * @param minSimilar 最低相似度 + * @return 匹配区域 + */ + public boolean findLegendAndClick(ViewRect rect, String legend, double minSimilar) { + ViewRect matchLegend = findLegend(rect, legend, minSimilar); + if (matchLegend != null) { + Logger.info("点击【{}】", legend); + mouseLeftClick(matchLegend); + delay(500); + return true; + } else { + return false; + } + } + + /** + * 指定区域查找图例并点击 + * + * @param legend 图例 + * @param minSimilar 最低相似度 + * @return 匹配区域 + */ + public boolean findLegendAndClick(ViewRect rect, Legend legend, double minSimilar) { + ViewRect matchLegend = findLegend(rect, legend, minSimilar); + if (matchLegend != null) { + Logger.info("点击【{}】", legend); + mouseLeftClick(matchLegend); + delay(500); + return true; + } else { + return false; + } + } + /** * 查找图片 * @@ -562,6 +634,7 @@ public abstract class JMacro { /** * 查找图例 * + * @param rect 范围 * @param legend 图例 * @param minSimilar 最低相似度 * @return 匹配区域 @@ -573,6 +646,7 @@ public abstract class JMacro { /** * 查找图例 * + * @param rect 范围 * @param legend 图例 * @param minSimilar 最低相似度 * @return 匹配区域 @@ -854,7 +928,7 @@ public abstract class JMacro { return new ViewRect[0]; } Logger.info("等待并匹配图例组合:{}", String.join(",", legends)); - return TaskUtil.timeTask(() -> { + ViewRect[] result = TaskUtil.timeTask(() -> { while (JMainService.getInstance().run) { ViewRect[] viewRects = matchLegends(legends, minSimilar); for (ViewRect viewRect : viewRects) { @@ -865,6 +939,10 @@ public abstract class JMacro { } return new ViewRect[legends.length]; }, seconds, TimeUnit.SECONDS); + if (result == null) { + result = new ViewRect[legends.length]; + } + return result; } /** diff --git a/src/main/java/xyz/wbsite/jmacro/JMainService.java b/src/main/java/xyz/wbsite/jmacro/JMainService.java index f4b4c5b..e3c5932 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMainService.java +++ b/src/main/java/xyz/wbsite/jmacro/JMainService.java @@ -121,7 +121,7 @@ public class JMainService { // 服务停止 } else { e.printStackTrace(); - Logger.error("异常中断"); + Logger.info("异常中断"); } } } diff --git a/src/main/java/xyz/wbsite/jmacro/util/Logger.java b/src/main/java/xyz/wbsite/jmacro/util/Logger.java index d0a72f0..7d2421d 100644 --- a/src/main/java/xyz/wbsite/jmacro/util/Logger.java +++ b/src/main/java/xyz/wbsite/jmacro/util/Logger.java @@ -2,9 +2,11 @@ package xyz.wbsite.jmacro.util; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; +import xyz.wbsite.jmacro.JMainService; /** * 日志记录器 + * * @author wangbing * @version 0.0.1 * @since 1.8 @@ -19,15 +21,22 @@ public class Logger { public static void debug(String log, Object... arg) { if (isDebug) { - System.out.println(DateUtil.date() + " " + StrUtil.format(log, arg)); + System.out.println("[DEBUG]" + DateUtil.date() + " " + StrUtil.format(log, arg)); } } public static void info(String log, Object... arg) { - System.out.println(DateUtil.date() + " " + StrUtil.format(log, arg)); + System.out.println("[INFO ]" + DateUtil.date() + " " + StrUtil.format(log, arg)); } public static void error(String log, Object... arg) { - System.err.println(DateUtil.date() + " " + StrUtil.format(log, arg)); + System.out.println("[ERROR]" + DateUtil.date() + " " + StrUtil.format(log, arg)); + while (JMainService.getInstance().run){ + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } } } diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java index bb084ab..b1816fe 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java @@ -17,11 +17,10 @@ import xyz.wbsite.jmacro.wjdr.task.*; * @since 1.8 */ public class MacroForWJDR extends JMacro { - /** * 工作开始时间 */ - private final String workStart = "07:00:00"; + private final String workStart = "00:00:00"; /** * 工作结束时间 diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/task/BaseTask.java b/src/main/java/xyz/wbsite/jmacro/wjdr/task/BaseTask.java index 15f34fa..228c737 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/BaseTask.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/BaseTask.java @@ -33,10 +33,16 @@ public abstract class BaseTask { String name = getClass().getSimpleName(); try { Logger.info("》》》任务[{}]开始》》》", name); + ViewRect rect; + do { + rect = macro.matchLegend("野外", 0.9); + if (rect == null) { + Logger.info("请返回城镇"); + } + } while (rect == null); this.task(macro, viewRect); Logger.info("》》》任务[{}]结束》》》", name); } catch (Exception e) { - e.printStackTrace(); Logger.info("》》》任务[{}]异常中断》》》", name); throw e; } 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 2a1f5b2..8475325 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_收留避难者.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_收留避难者.java @@ -23,7 +23,7 @@ public class Task_收留避难者 extends BaseTask { macro.mouseLeftClick(rect); ViewRect rect1 = macro.waitAndMatchLegend("城镇_欢迎新成员", 0.9, 2); if (rect1 == null) { - Logger.info("收留避难者异常"); + 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 223986f..a69ffa8 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动野怪.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动野怪.java @@ -298,7 +298,8 @@ public class Task_自动野怪 extends BaseTask { macro.mouseLeftClick(野外_攻击); macro.delay(1000); - macro.matchLegendAndClick("野外_攻击平均配置", 0.6); + boolean 野外_攻击平均配置 = macro.findLegendAndClick(macro.of(110, 842, 282, 909), "野外_攻击平均配置", 0.6); + if (!野外_攻击平均配置) Logger.error("查找点击平均异常"); macro.delay(1000); boolean 体力不足 = macro.hasColor(macro.of(405, 899, 427, 915), "#f43b3b");