diff --git a/legend/仓库_补给完成2#L287,520.png b/legend/仓库_补给完成2#L287,520.png new file mode 100644 index 0000000..b7850a1 Binary files /dev/null and b/legend/仓库_补给完成2#L287,520.png differ diff --git a/legend/城镇_万象杂货铺关闭#L492,23.png b/legend/城镇_万象杂货铺关闭#L492,23.png new file mode 100644 index 0000000..7197747 Binary files /dev/null and b/legend/城镇_万象杂货铺关闭#L492,23.png differ diff --git a/src/main/java/xyz/wbsite/jmacro/JMacro.java b/src/main/java/xyz/wbsite/jmacro/JMacro.java index 4b78d1a..5c7fb52 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMacro.java +++ b/src/main/java/xyz/wbsite/jmacro/JMacro.java @@ -141,7 +141,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 / 15 + (absZ % 15 > 0 ? 1 : 0)); - int interval = (int) Math.max((absZ/4) / times, 10); + int interval = (int) Math.max((absZ / 4) / times, 10); times = Math.min(times, 10); // 分times次移动到指定点 @@ -157,25 +157,43 @@ public abstract class JMacro { } } + /** + * 鼠标左键单击 + * + * @param rect 矩形区域 + */ + public void mouseLeftClick(ViewRect rect) { + mouseLeftClick(rect, 100); + } + + /** + * 鼠标左键单击 + * + * @param rect 矩形区域 + */ + public void mouseLeftClick(ViewRect rect, long delay) { + mouseLeftClick(new ViewPoint(rect.getCenter().getX(), rect.getCenter().getY()), delay); + } + /** * 鼠标左键单击 * * @param rect 点 */ public void mouseLeftClick(ViewPoint rect) { - mouseMove(rect); - robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); - delay(100); - robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + mouseLeftClick(rect, 100); } /** * 鼠标左键单击 * - * @param rect 矩形区域 + * @param rect 点 */ - public void mouseLeftClick(ViewRect rect) { - mouseLeftClick(new ViewPoint(rect.getCenter().getX(), rect.getCenter().getY())); + public void mouseLeftClick(ViewPoint rect, long delay) { + mouseMove(rect); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + delay(delay); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); } /** diff --git a/src/main/java/xyz/wbsite/jmacro/util/AnimateUtil.java b/src/main/java/xyz/wbsite/jmacro/util/AnimateUtil.java new file mode 100644 index 0000000..4da008a --- /dev/null +++ b/src/main/java/xyz/wbsite/jmacro/util/AnimateUtil.java @@ -0,0 +1,36 @@ +package xyz.wbsite.jmacro.util; + +public class AnimateUtil { + + /** + * 由快到慢 + * + * @param time 时间(0~1) + * @return 值(0~1) + */ + public static double easeOut(double time) { + if (time <= 0) { + return 0D; + } + if (time >= 1) { + return 1D; + } + return Math.sin(time * Math.PI / 2); + } + + /** + * 由慢到快 + * + * @param time 时间(0~1) + * @return 值(0~1) + */ + public static double easeIn(double time) { + if (time <= 0) { + return 0D; + } + if (time >= 1) { + return 1D; + } + return 1 - Math.cos(time * Math.PI / 2); + } +} diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java index 4fc0422..2fe0c6a 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java @@ -74,12 +74,11 @@ public class MacroForWJDR extends JMacro { } Logger.info("启动循环任务"); - int count = 10; + int count = 1; while (JMainService.getInstance().run && count > 0) { count--; // 任意界面优先返回城镇 new Task_定位城镇(this, focusRect).run(); - // 可按优先级排序以下任务 new Task_采矿被攻击(this, focusRect).run(); new Task_收留避难者(this, focusRect).run(); @@ -100,8 +99,9 @@ public class MacroForWJDR extends JMacro { ViewRect 无尽 = findLegend(getFocusRect().offsetY(-30), "无尽", 0.8); if (无尽 != null) { Logger.info("游戏窗口存在,关闭窗口!"); - mouseMove(无尽.getCenter()); - delay(1000); + mouseMove(无尽.getCenter(), true); + delay(50); + mouseMove(无尽.getCenter().offsetY(1), true); mouseLeftClick(无尽); } 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 751b68f..dad12ed 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_定位城镇.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_定位城镇.java @@ -64,21 +64,21 @@ public class Task_定位城镇 extends BaseTask { } } { // 定位弹框,关闭弹框 - ViewRect rect = macro.findLegend(macro.of(450,36,484,76), "城镇_礼包", 0.7); + ViewRect rect = macro.findLegend(macro.of(450, 36, 484, 76), "城镇_礼包", 0.7); if (rect != null) { macro.mouseLeftClick(rect); Logger.info("关闭充值广告弹框"); } } { // 定位弹框,关闭弹框 - ViewRect rect = macro.findLegend(macro.of(436,54,465,162), "城镇_礼包", 0.7); + ViewRect rect = macro.findLegend(macro.of(436, 54, 465, 162), "城镇_礼包", 0.7); if (rect != null) { macro.mouseLeftClick(rect); Logger.info("关闭充值广告弹框"); } } { // 定位弹框2 - ViewRect rect = macro.findLegend(macro.of(436,54,465,162), "城镇_礼包2", 0.7); + ViewRect rect = macro.findLegend(macro.of(436, 54, 465, 162), "城镇_礼包2", 0.7); if (rect != null) { macro.mouseLeftClick(rect); Logger.info("关闭充值广告弹框"); @@ -130,6 +130,13 @@ public class Task_定位城镇 extends BaseTask { Logger.info("关闭每日任务关闭弹框"); } } + {// 万象杂货铺 + ViewRect rect = macro.matchLegend("城镇_万象杂货铺关闭", 0.9); + if (rect != null) { + macro.mouseLeftClick(rect); + Logger.info("关闭万象杂货铺"); + } + } } } }