diff --git a/legend/一键已读领取#L360,908.png b/legend/一键已读领取#L360,908.png new file mode 100644 index 0000000..7d43ff9 Binary files /dev/null and b/legend/一键已读领取#L360,908.png differ diff --git a/legend/城镇#广告.png b/legend/城镇#广告.png deleted file mode 100644 index 1d6dfc6..0000000 Binary files a/legend/城镇#广告.png and /dev/null differ diff --git a/src/main/java/xyz/wbsite/jmacro/JMacro.java b/src/main/java/xyz/wbsite/jmacro/JMacro.java index e2f78f2..080d191 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMacro.java +++ b/src/main/java/xyz/wbsite/jmacro/JMacro.java @@ -442,7 +442,7 @@ public abstract class JMacro { } } } - if (maxSimilar > 0.5D) { + if (maxSimilar > 0.1D) { Logger.info("最大相似度{}", NumberUtil.formatPercent(maxSimilar, 0)); } return null; @@ -668,10 +668,20 @@ public abstract class JMacro { * @return 匹配区域 */ public ViewRect waitAndMatchLegend(Legend legend, double minSimilar, long seconds) { - Logger.info("等待并匹配图例:{}", legend.getName()); + BufferedImage image = ImageUtil.load(legend.getFile()); + // 获取图例相对坐标 + int offsetX = legend.getLocation().getX(); + int offsetY = legend.getLocation().getY(); + // 根据原点计算图例绝对坐标 + ViewRect viewRect = new ViewRect(); + viewRect.setLeft(getFocusRect().getLeft() + offsetX); + viewRect.setTop(getFocusRect().getTop() + offsetY); + viewRect.setRight(viewRect.getLeft() + image.getWidth()); + viewRect.setBottom(viewRect.getTop() + image.getHeight()); + Logger.info("等待并匹配图例:{},区域:{}", legend.getName(), viewRect); return TaskUtil.timeTask(() -> { while (JMainService.getInstance().run) { - ViewRect result = findPic(getFocusRect(), legend.getImage(), minSimilar); + ViewRect result = findPic(viewRect, image, minSimilar); if (result != null) { return result; } diff --git a/src/main/java/xyz/wbsite/jmacro/base/ViewRect.java b/src/main/java/xyz/wbsite/jmacro/base/ViewRect.java index 75c3cb6..eef4b01 100644 --- a/src/main/java/xyz/wbsite/jmacro/base/ViewRect.java +++ b/src/main/java/xyz/wbsite/jmacro/base/ViewRect.java @@ -70,11 +70,11 @@ public class ViewRect { } public int getWidth() { - return this.right - this.left; + return this.right - this.left + 1; } public int getHeight() { - return this.bottom - this.top; + return this.bottom - this.top + 1; } public int[] getCenter() { diff --git a/src/main/java/xyz/wbsite/jmacro/tool/PickPoint.java b/src/main/java/xyz/wbsite/jmacro/tool/PickPoint.java index ff96952..1318829 100644 --- a/src/main/java/xyz/wbsite/jmacro/tool/PickPoint.java +++ b/src/main/java/xyz/wbsite/jmacro/tool/PickPoint.java @@ -107,7 +107,7 @@ public class PickPoint extends JFrame { Logger.info("用法示例:"); Logger.info("1、点击坐标:mouseLeftClick(of({},{}));", x - originX, y - originY); - Logger.info("2、色值比对:matchColor(of({},{},{}));", x - originX, y - originY, hexColor); + Logger.info("2、色值比对:matchColor(of({},{},\"#{}\"));", x - originX, y - originY, hexColor); Logger.info("=========================坐标采集========================="); close(); diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java index f17ccb6..413f095 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java @@ -6,10 +6,7 @@ import xyz.wbsite.jmacro.JMacro; import xyz.wbsite.jmacro.JMainService; import xyz.wbsite.jmacro.base.ViewRect; import xyz.wbsite.jmacro.util.Logger; -import xyz.wbsite.jmacro.wjdr.task.Task_定位城镇; -import xyz.wbsite.jmacro.wjdr.task.Task_收留避难者; -import xyz.wbsite.jmacro.wjdr.task.Task_自动采矿; -import xyz.wbsite.jmacro.wjdr.task.Task_采矿被攻击; +import xyz.wbsite.jmacro.wjdr.task.*; /** * 无尽冬日脚本 @@ -91,6 +88,12 @@ public class MacroForWJDR extends JMacro { // 避难者 new Task_收留避难者(this, focusRect).run(); + // 邮箱礼包领取 + new Task_邮箱礼包领取(this, focusRect).run(); + + // 探险领取 + new Task_探险领取(this, focusRect).run(); + // 自动采矿任务 new Task_自动采矿(this, focusRect).run(); } 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 fa63149..af0413b 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_定位城镇.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_定位城镇.java @@ -16,8 +16,8 @@ public class Task_定位城镇 extends BaseTask { {// 野外返回 ViewRect rect = macro.matchLegend("野外", 0.9); if (rect != null) { - macro.mouseLeftClick(rect); Logger.info("当前位置:城镇"); + macro.delay(1000); 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 c7fc77d..2a1f5b2 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_收留避难者.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_收留避难者.java @@ -21,7 +21,7 @@ public class Task_收留避难者 extends BaseTask { Logger.info("收留避难者"); macro.mouseLeftClick(rect); - ViewRect rect1 = macro.waitAndMatchLegend("城镇_欢迎新成员", 0.9, 2000); + ViewRect rect1 = macro.waitAndMatchLegend("城镇_欢迎新成员", 0.9, 2); if (rect1 == 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 new file mode 100644 index 0000000..f024a28 --- /dev/null +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_邮箱礼包领取.java @@ -0,0 +1,57 @@ +package xyz.wbsite.jmacro.wjdr.task; + +import xyz.wbsite.jmacro.JMacro; +import xyz.wbsite.jmacro.base.ViewRect; +import xyz.wbsite.jmacro.util.Logger; + +public class Task_邮箱礼包领取 extends BaseTask { + + public Task_邮箱礼包领取(JMacro macro, ViewRect viewRect) { + super(macro, viewRect); + } + + @Override + public void task(JMacro macro, ViewRect viewRect) { + Logger.info("检测邮箱待领取礼包"); + boolean b = macro.matchColor(macro.of(505, 750, "#fd3939")); + if (!b) { + Logger.info("邮箱无待领取礼包"); + return; + } + + Logger.info("点击邮箱"); + macro.mouseLeftClick(macro.of(505, 750)); + macro.delay(1000); + + // todo 战争 + // todo 联盟 + // todo 系统 + + // 报告 + if (macro.matchColor(macro.of(398,71,"#ff3a3a"))){ + macro.mouseLeftClick(macro.of(398, 71)); + macro.delay(500); + + ViewRect 一键已读领取 = macro.waitAndMatchLegend("一键已读领取", 0.9); + if (一键已读领取 == null) { + Logger.info("异常结束"); + return; + } + macro.mouseLeftClick(一键已读领取); + + ViewRect 点击任意位置退出 = macro.waitAndMatchLegend("点击任意位置退出", 0.9); + + if (点击任意位置退出 == null) { + Logger.info("异常结束"); + return; + } + macro.mouseLeftClick(点击任意位置退出); + } + + ViewRect rect = macro.matchLegend("返回", 0.9); + if (rect != null) { + macro.mouseLeftClick(rect); + Logger.info("返回城镇"); + } + } +}