diff --git a/legend/L454,41-城镇_充值.png b/legend/L454,41-城镇_充值.png deleted file mode 100644 index 19b4a49..0000000 Binary files a/legend/L454,41-城镇_充值.png and /dev/null differ diff --git a/legend/L35,881-TAB_探险.png b/legend/TAB_探险_L35,881.png similarity index 100% rename from legend/L35,881-TAB_探险.png rename to legend/TAB_探险_L35,881.png diff --git a/legend/L449,887-城镇.png b/legend/城镇_L449,887.png similarity index 100% rename from legend/L449,887-城镇.png rename to legend/城镇_L449,887.png diff --git a/legend/L456,887-城镇.png b/legend/城镇_L456,887.png similarity index 100% rename from legend/L456,887-城镇.png rename to legend/城镇_L456,887.png diff --git a/legend/城镇_充值_L448,36.png b/legend/城镇_充值_L448,36.png new file mode 100644 index 0000000..5b63ae7 Binary files /dev/null and b/legend/城镇_充值_L448,36.png differ diff --git a/legend/L204,734-城镇_离线收益.png b/legend/城镇_离线收益_L204,734.png similarity index 100% rename from legend/L204,734-城镇_离线收益.png rename to legend/城镇_离线收益_L204,734.png diff --git a/legend/城镇_野外.png b/legend/城镇_野外.png deleted file mode 100644 index d65e02d..0000000 Binary files a/legend/城镇_野外.png and /dev/null differ diff --git a/legend/探险_不可领取_L420,667.png b/legend/探险_不可领取_L420,667.png new file mode 100644 index 0000000..6a73cff Binary files /dev/null and b/legend/探险_不可领取_L420,667.png differ diff --git a/legend/L240,854-探险_按钮.png b/legend/探险_按钮_L240,854.png similarity index 100% rename from legend/L240,854-探险_按钮.png rename to legend/探险_按钮_L240,854.png diff --git a/legend/L196,218-探险_获得奖励.png b/legend/探险_获得奖励_L196,218.png similarity index 100% rename from legend/L196,218-探险_获得奖励.png rename to legend/探险_获得奖励_L196,218.png diff --git a/legend/L4,4-探险_返回.png b/legend/探险_返回_L4,4.png similarity index 100% rename from legend/L4,4-探险_返回.png rename to legend/探险_返回_L4,4.png diff --git a/legend/L230,664-探险_领取2.png b/legend/探险_领取2_L230,664.png similarity index 100% rename from legend/L230,664-探险_领取2.png rename to legend/探险_领取2_L230,664.png diff --git a/legend/L426,667-探险_领取.png b/legend/探险_领取_L426,667.png similarity index 100% rename from legend/L426,667-探险_领取.png rename to legend/探险_领取_L426,667.png diff --git a/legend/L444,888-野外.png b/legend/野外_L444,888.png similarity index 100% rename from legend/L444,888-野外.png rename to legend/野外_L444,888.png diff --git a/legend/野外_L449,885.png b/legend/野外_L449,885.png new file mode 100644 index 0000000..562fa75 Binary files /dev/null and b/legend/野外_L449,885.png differ diff --git a/legend/L15,632-野外_搜索.png b/legend/野外_搜索_L15,632.png similarity index 100% rename from legend/L15,632-野外_搜索.png rename to legend/野外_搜索_L15,632.png diff --git a/legend/L233,881-野外_搜索.png b/legend/野外_搜索_L233,881.png similarity index 100% rename from legend/L233,881-野外_搜索.png rename to legend/野外_搜索_L233,881.png diff --git a/src/main/java/com/example/jmacro/wjdr/JMacro.java b/src/main/java/com/example/jmacro/wjdr/JMacro.java index 091dd5f..0bd888a 100644 --- a/src/main/java/com/example/jmacro/wjdr/JMacro.java +++ b/src/main/java/com/example/jmacro/wjdr/JMacro.java @@ -532,9 +532,9 @@ public class JMacro { String name = file.getName(); int offsetX = 0; int offsetY = 0; - if (name.matches("L[0-9]+,[0-9]+-[\\S\\s]+")) { - offsetX = Convert.toInt(ReUtil.get("L([0-9]+),[0-9]+-[\\S\\s]+", name, 1), 0); - offsetY = Convert.toInt(ReUtil.get("L[0-9]+,([0-9]+)-[\\S\\s]+", name, 1), 0); + if (name.matches("[\\S\\s]+_L[0-9]+,[0-9]+\\.png")) { + offsetX = Convert.toInt(ReUtil.get("[\\S\\s]+_L([0-9]+),[0-9]+\\.png", name, 1), 0); + offsetY = Convert.toInt(ReUtil.get("[\\S\\s]+_L[0-9]+,([0-9]+)\\.png", name, 1), 0); } ScreenRect screenRect = new ScreenRect(); screenRect.setLeft(rect.getLeft() + offsetX); diff --git a/src/main/java/com/example/jmacro/wjdr/MainTask.java b/src/main/java/com/example/jmacro/wjdr/MainTask.java index 457c70c..8d6a407 100644 --- a/src/main/java/com/example/jmacro/wjdr/MainTask.java +++ b/src/main/java/com/example/jmacro/wjdr/MainTask.java @@ -191,7 +191,8 @@ public class MainTask extends JFrame { while (true) { jMacro.delay(); { // 定位弹框,关闭弹框 - ScreenRect rect = jMacro.matchPic(gameScreen, "L454,41-城镇_充值", 0.1d); + Logger.info("检测到广告弹框"); + ScreenRect rect = jMacro.matchPic(gameScreen, "城镇_充值_L448,36", 0.8d); if (rect != null) { jMacro.mouseLeftClick(rect); Logger.info("检测到广告弹框,关闭弹框"); @@ -200,7 +201,7 @@ public class MainTask extends JFrame { jMacro.delay(); { // 定位离线收益弹框,关闭弹框 - ScreenRect rect = jMacro.matchPic(gameScreen, "L204,734-城镇_离线收益", 0.9); + ScreenRect rect = jMacro.matchPic(gameScreen, "城镇_离线收益_L204,734", 0.9); if (rect != null) { jMacro.mouseLeftClick(rect); Logger.info("检测到离线收益弹框,关闭弹框"); @@ -209,7 +210,7 @@ public class MainTask extends JFrame { jMacro.delay(); // 定位主程序 - ScreenRect rect = jMacro.matchPic(gameScreen, "L444,888-野外", 0.9); + ScreenRect rect = jMacro.matchPic(gameScreen, "野外_L444,888", 0.9); if (rect != null) { Logger.info("程序主界面已就绪"); return rect; diff --git a/src/main/java/com/example/jmacro/wjdr/task/TaskMining.java b/src/main/java/com/example/jmacro/wjdr/task/TaskMining.java index 571a898..8e93f72 100644 --- a/src/main/java/com/example/jmacro/wjdr/task/TaskMining.java +++ b/src/main/java/com/example/jmacro/wjdr/task/TaskMining.java @@ -19,12 +19,12 @@ public class TaskMining extends BaseTask { Logger.info("》》》自动采矿开始》》》"); Logger.info("判断是否在野外"); - ScreenRect 城镇 = jMacro.waitAndMatchPic(this.screenRect, "L449,887-城镇", 0.9); + ScreenRect 城镇 = jMacro.waitAndMatchPic(this.screenRect, "城镇_L449,887", 0.9); if (城镇 != null) { Logger.info("当前界面【野外】"); } else { Logger.info("定位【野外】"); - ScreenRect 野外 = jMacro.waitAndMatchPic(this.screenRect, "城镇_野外", 0.99); + ScreenRect 野外 = jMacro.waitAndMatchPic(this.screenRect, "野外_L449,885", 0.99); if (野外 == null) { Logger.error("定位【野外】失败,采矿终止"); return; @@ -37,7 +37,7 @@ public class TaskMining extends BaseTask { } Logger.info("定位资源搜索按钮"); - ScreenRect 野外搜索 = jMacro.waitAndMatchPic(this.screenRect, "L15,632-野外_搜索", 0.8); + ScreenRect 野外搜索 = jMacro.waitAndMatchPic(this.screenRect, "野外_搜索_L15,632", 0.8); if (野外搜索 == null) { Logger.error("未检测到【资源搜索按钮】,采矿终止"); return; @@ -57,13 +57,13 @@ public class TaskMining extends BaseTask { } // 检测是否是搜索界面 - ScreenRect 搜索 = jMacro.waitAndMatchPic(this.screenRect, "L233,881-野外_搜索", 0.98); + ScreenRect 搜索 = jMacro.waitAndMatchPic(this.screenRect, "野外_搜索_L233,881", 0.98); if (搜索 != null) { Logger.info("退出资源搜索界面"); jMacro.mouseLeftClick(this.screenRect); } - ScreenRect 城1 = jMacro.waitAndMatchPic(this.screenRect, "L456,887-城镇", 0.9); + ScreenRect 城1 = jMacro.waitAndMatchPic(this.screenRect, "城镇_L456,887", 0.9); if (城1 == null) { Logger.error("未检测到【城镇】,采矿终止"); return; diff --git a/src/main/java/com/example/jmacro/wjdr/task/TaskRewards.java b/src/main/java/com/example/jmacro/wjdr/task/TaskRewards.java index 7f88572..229aeb8 100644 --- a/src/main/java/com/example/jmacro/wjdr/task/TaskRewards.java +++ b/src/main/java/com/example/jmacro/wjdr/task/TaskRewards.java @@ -15,7 +15,7 @@ public class TaskRewards extends BaseTask { Logger.info("》》》探险奖励领取开始》》》"); Logger.info("定位【探险】按钮"); - ScreenRect TAB_探险 = jMacro.waitAndMatchPic(this.screenRect, "L35,881-TAB_探险", 0.9); + ScreenRect TAB_探险 = jMacro.waitAndMatchPic(this.screenRect, "TAB_探险_L35,881", 0.9); if (TAB_探险 == null) { return; } @@ -23,7 +23,7 @@ public class TaskRewards extends BaseTask { Logger.info("点击【探险】按钮"); jMacro.mouseLeftClick(TAB_探险); - ScreenRect 探险_按钮 = jMacro.waitAndMatchPic(this.screenRect, "L240,854-探险_按钮", 0.9); + ScreenRect 探险_按钮 = jMacro.waitAndMatchPic(this.screenRect, "探险_按钮_L240,854", 0.9); if (探险_按钮 == null) { Logger.info("进入探险界面失败"); return; @@ -31,28 +31,35 @@ public class TaskRewards extends BaseTask { Logger.info("进入探险界面成功"); Logger.info("定位领取按钮"); - ScreenRect 探险_领取 = jMacro.waitAndMatchPic(this.screenRect, "L426,667-探险_领取", 0.8); - if (探险_领取 == null) { - Logger.error("未检测到【探险_领取】,领取终止"); + ScreenRect 探险_不可领取 = jMacro.waitAndMatchPic(this.screenRect, "探险_不可领取_L420,667", 0.8); + if (探险_不可领取 != null) { + Logger.info("探险不可领取"); return; - } - Logger.info("定位领取按钮成功,准备领取:{}", 探险_领取.toString()); - jMacro.mouseLeftClick(探险_领取); - ScreenRect 探险_领取2 = jMacro.waitAndMatchPic(this.screenRect, "L230,664-探险_领取2", 0.8); - if (探险_领取2 == null) { - Logger.error("任务终止"); - return; - } - jMacro.mouseLeftClick(探险_领取2); + } else { + Logger.info("定位领取按钮"); + ScreenRect 探险_领取 = jMacro.waitAndMatchPic(this.screenRect, "探险_领取_L426,667", 0.8); + if (探险_领取 == null) { + Logger.error("未检测到【探险_领取】,领取终止"); + return; + } + Logger.info("定位领取按钮成功,准备领取:{}", 探险_领取.toString()); + jMacro.mouseLeftClick(探险_领取); + ScreenRect 探险_领取2 = jMacro.waitAndMatchPic(this.screenRect, "探险_领取2_L230,664", 0.8); + if (探险_领取2 == null) { + Logger.error("任务终止"); + return; + } + jMacro.mouseLeftClick(探险_领取2); - ScreenRect 探险_获得奖励 = jMacro.waitAndMatchPic(this.screenRect, "L196,218-探险_获得奖励", 0.8); - if (探险_获得奖励 == null) { - Logger.error("任务终止"); - return; + ScreenRect 探险_获得奖励 = jMacro.waitAndMatchPic(this.screenRect, "探险_获得奖励_L196,218", 0.8); + if (探险_获得奖励 == null) { + Logger.error("任务终止"); + return; + } + jMacro.mouseLeftClick(探险_获得奖励); } - jMacro.mouseLeftClick(探险_获得奖励); - ScreenRect 探险_返回 = jMacro.waitAndMatchPic(this.screenRect, "L4,4-探险_返回", 0.8); + ScreenRect 探险_返回 = jMacro.waitAndMatchPic(this.screenRect, "探险_返回_L4,4", 0.8); if (探险_返回 == null) { Logger.error("任务终止"); return; diff --git a/src/main/java/com/example/jmacro/wjdr/util/Capture.java b/src/main/java/com/example/jmacro/wjdr/util/Capture.java index 6bcb3d7..0c0e8f7 100644 --- a/src/main/java/com/example/jmacro/wjdr/util/Capture.java +++ b/src/main/java/com/example/jmacro/wjdr/util/Capture.java @@ -6,13 +6,7 @@ import cn.hutool.log.StaticLog; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.*; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseMotionAdapter; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; +import java.awt.event.*; import java.awt.image.BufferedImage; import java.io.File; import java.util.prefs.Preferences; @@ -193,8 +187,8 @@ public class Capture extends JFrame { // 上一次保存目录 String lastPath = preferences.get(LAST_PATH, ""); // 默认文件名 - String prefix = "L" + (getCaptureX() - originX) + "," + (getCaptureY() - originY) + "-"; - String filename = prefix + System.currentTimeMillis() + ".png"; + String location = "_L" + (getCaptureX() - originX) + "," + (getCaptureY() - originY); + String filename = System.currentTimeMillis() + location + ".png"; JFileChooser jFileChooser = new JFileChooser(); jFileChooser.setFileFilter(new FileNameExtensionFilter("png", "png")); @@ -206,7 +200,7 @@ public class Capture extends JFrame { // 默认文件 File file = jFileChooser.getSelectedFile(); // 修正坐标 - filename = prefix + file.getName().replaceAll("L[0-9]+,[0-9]+-", ""); + filename = file.getName().replaceAll("(_L[0-9]+,[0-9]+)?.png", "") + location + ".png"; file = new File(file.getParent(), filename); Logger.info("保存路径" + file);