diff --git a/legend/仓库_补给完成#L284,599.png b/legend/仓库_补给完成#L284,599.png new file mode 100644 index 0000000..9ffdd68 Binary files /dev/null and b/legend/仓库_补给完成#L284,599.png differ diff --git a/legend/兵营_任意位置继续#L168,903.png b/legend/兵营_任意位置继续#L168,903.png new file mode 100644 index 0000000..ed7bf05 Binary files /dev/null and b/legend/兵营_任意位置继续#L168,903.png differ diff --git a/legend/无尽#L69,-22.png b/legend/无尽#L69,-22.png new file mode 100644 index 0000000..7a96ac1 Binary files /dev/null and b/legend/无尽#L69,-22.png differ diff --git a/src/main/java/xyz/wbsite/jmacro/JMacro.java b/src/main/java/xyz/wbsite/jmacro/JMacro.java index 1983dc3..aa34fda 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMacro.java +++ b/src/main/java/xyz/wbsite/jmacro/JMacro.java @@ -137,7 +137,7 @@ public abstract class JMacro { double absY = Math.abs(startY - endY); double absZ = Math.sqrt(Math.pow(absX, 2) + Math.pow(absY, 2)); int times = (int) (absZ / 10 + (absZ % 10 > 0 ? 1 : 0)); - int interval = Math.min(500 / times, 10); + int interval = Math.max(500 / times, 10); times = Math.min(times, 10); // 分times次移动到指定点 @@ -171,7 +171,7 @@ public abstract class JMacro { * @param rect 矩形区域 */ public void mouseLeftClick(ViewRect rect) { - mouseLeftClick(new ViewPoint(rect.getCenter()[0], rect.getCenter()[1])); + mouseLeftClick(new ViewPoint(rect.getCenter().getX(), rect.getCenter().getY())); } /** @@ -235,7 +235,7 @@ public abstract class JMacro { */ public void mouseWheelClick(ViewRect rect) { delayUnstable(); - robot.mouseMove(rect.getCenter()[0], rect.getCenter()[1]); + robot.mouseMove(rect.getCenter().getX(), rect.getCenter().getY()); delayUnstable(); robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); delayUnstable(); @@ -249,7 +249,7 @@ public abstract class JMacro { */ public void mouseRightClick(ViewRect rect) { delayUnstable(); - robot.mouseMove(rect.getCenter()[0], rect.getCenter()[1]); + robot.mouseMove(rect.getCenter().getX(), rect.getCenter().getY()); delayUnstable(); robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); delayUnstable(); @@ -263,7 +263,7 @@ public abstract class JMacro { */ public void mouseLeftDoubleClick(ViewRect rect) { delayUnstable(); - robot.mouseMove(rect.getCenter()[0], rect.getCenter()[1]); + robot.mouseMove(rect.getCenter().getX(), rect.getCenter().getY()); delayUnstable(); robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); delay(100); diff --git a/src/main/java/xyz/wbsite/jmacro/base/ViewRect.java b/src/main/java/xyz/wbsite/jmacro/base/ViewRect.java index eef4b01..2e3687a 100644 --- a/src/main/java/xyz/wbsite/jmacro/base/ViewRect.java +++ b/src/main/java/xyz/wbsite/jmacro/base/ViewRect.java @@ -77,8 +77,20 @@ public class ViewRect { return this.bottom - this.top + 1; } - public int[] getCenter() { - return new int[]{(left + right) / 2, (top + bottom) / 2}; + public ViewPoint getCenter() { + return new ViewPoint((left + right) / 2, (top + bottom) / 2); + } + + public ViewRect offset(int offsetX, int offsetY) { + return new ViewRect(this.left + offsetX, this.top + offsetY, this.right + offsetX, this.bottom + offsetY); + } + + public ViewRect offsetX(int offsetX) { + return new ViewRect(this.left + offsetX, this.top, this.right + offsetX, this.bottom); + } + + public ViewRect offsetY(int offsetY) { + return new ViewRect(this.left, this.top + offsetY, this.right, this.bottom + offsetY); } @Override diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java index 3fa01e4..fac9267 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java @@ -25,7 +25,7 @@ public class MacroForWJDR extends JMacro { /** * 工作结束时间 */ - private final String workEnd = "24:00:00"; + private final String workEnd = "23:00:00"; /** * 最大工作时间(ms) @@ -60,6 +60,17 @@ public class MacroForWJDR extends JMacro { 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("休眠1分钟!"); delay(60 * 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 9ea8e45..2c13c15 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_仓库奖励领取.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_仓库奖励领取.java @@ -34,26 +34,45 @@ public class Task_仓库奖励领取 extends BaseTask { Logger.info("滑动到底部"); macro.mouseLeftDrag(macro.of(158, 626), macro.of(163, 231), true); + macro.delay(1000); ViewRect 仓库_补给完成 = macro.matchLegend("仓库_补给完成", 0.9); - if (仓库_补给完成 != null) { - Logger.info("仓库补给完成,去领取"); - macro.mouseLeftClick(仓库_补给完成); + if (仓库_补给完成 == null) { + Logger.info("关闭面板"); + ViewRect rect = macro.matchLegend("城镇_关闭面板", 0.6); + if (rect != null) { + macro.mouseLeftClick(rect); + } else { + Logger.error("关闭面板失败"); + } + return; + } + Logger.info("仓库补给完成,去领取"); + macro.delay(500); + macro.mouseLeftClick(macro.of(164, 621)); + macro.delay(1000); - ViewRect 仓库_距离下个包裹 = macro.matchLegend("仓库_距离下个包裹", 0.5); + Logger.info("点击领取"); + macro.mouseLeftClick(macro.of(258, 433)); + macro.delay(1000); - if (仓库_距离下个包裹 != null) { - macro.mouseLeftClick(仓库_距离下个包裹); - } - return; + Logger.info("检测下个包裹提示"); + ViewRect 仓库_距离下个包裹 = macro.matchLegend("仓库_距离下个包裹", 0.5); + if (仓库_距离下个包裹 != null) { + Logger.info("关闭下个包裹提示"); + macro.mouseLeftClick(仓库_距离下个包裹); + macro.delay(1000); } - Logger.info("关闭面板"); - ViewRect rect = macro.matchLegend("城镇_关闭面板", 0.6); - if (rect == null) { + Logger.info("检测体力宝箱"); + ViewRect 仓库_体力宝箱 = macro.matchLegend("仓库_体力宝箱", 0.5); + if (仓库_体力宝箱 == null) { + Logger.info("无体力宝箱"); return; } - macro.mouseLeftClick(rect); + Logger.info("领取体力宝箱"); + macro.mouseLeftClick(仓库_体力宝箱); + macro.delay(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 7b17a7f..85d7851 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动练兵.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动练兵.java @@ -60,8 +60,20 @@ public class Task_自动练兵 extends BaseTask { macro.mouseLeftClick(macro.of(355, 632)); macro.delay(1000); + Logger.info("检测任意位置继续"); + ViewRect 兵营_任意位置继续 = macro.waitAndMatchLegend("兵营_任意位置继续", 0.9, 2); + if (兵营_任意位置继续 != null) { + Logger.error("点击继续"); + macro.mouseLeftClick(兵营_任意位置继续); + macro.delay(1500); + } + + ViewRect 兵营_训练 = macro.waitAndMatchLegend("兵营_训练", 0.9, 2); + if (兵营_训练 == null) { + Logger.error("训练失败,未检测到兵营训练"); + } Logger.error("确认训练"); - macro.mouseLeftClick(macro.of(396, 885)); + macro.mouseLeftClick(兵营_训练); macro.delay(1000); ViewRect 兵营_返回 = macro.matchLegend("兵营_返回", 0.9D); @@ -143,6 +155,14 @@ public class Task_自动练兵 extends BaseTask { macro.mouseLeftClick(macro.of(355, 632)); macro.delay(1000); + Logger.info("检测任意位置继续"); + ViewRect 兵营_任意位置继续 = macro.waitAndMatchLegend("兵营_任意位置继续", 0.9, 2); + if (兵营_任意位置继续 != null) { + Logger.error("点击继续"); + macro.mouseLeftClick(兵营_任意位置继续); + macro.delay(1500); + } + ViewRect 兵营_训练 = macro.waitAndMatchLegend("兵营_训练", 0.9, 2); if (兵营_训练 == null) { Logger.error("训练失败,未检测到兵营训练"); @@ -230,6 +250,14 @@ public class Task_自动练兵 extends BaseTask { macro.mouseLeftClick(macro.of(355, 632)); macro.delay(1000); + Logger.info("检测任意位置继续"); + ViewRect 兵营_任意位置继续 = macro.waitAndMatchLegend("兵营_任意位置继续", 0.9, 2); + if (兵营_任意位置继续 != null) { + Logger.error("点击继续"); + macro.mouseLeftClick(兵营_任意位置继续); + macro.delay(1500); + } + ViewRect 兵营_训练 = macro.waitAndMatchLegend("兵营_训练", 0.9, 2); if (兵营_训练 == null) { Logger.error("训练失败,未检测到兵营训练"); 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 1a2b7bf..1f378f1 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动采矿.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动采矿.java @@ -188,7 +188,7 @@ public class Task_自动采矿 extends BaseTask { return false; } - Logger.info("选择【{}】图标,坐标[{},{}]", type, typeRect.getCenter()[0], typeRect.getCenter()[1]); + Logger.info("选择【{}】图标,坐标[{},{}]", type, typeRect.getCenter().getX(), typeRect.getCenter().getY()); macro.mouseLeftClick(typeRect); switch (level) {