diff --git a/legend/任务奖励_关闭#L494,79.png b/legend/任务奖励_关闭#L494,79.png new file mode 100644 index 0000000..edca354 Binary files /dev/null and b/legend/任务奖励_关闭#L494,79.png differ diff --git a/legend/任务奖励_待领取#L40,751.png b/legend/任务奖励_待领取#L40,751.png new file mode 100644 index 0000000..1e61f43 Binary files /dev/null and b/legend/任务奖励_待领取#L40,751.png differ diff --git a/legend/任务奖励_待领取2#L41,752.png b/legend/任务奖励_待领取2#L41,752.png new file mode 100644 index 0000000..f7f4af4 Binary files /dev/null and b/legend/任务奖励_待领取2#L41,752.png differ diff --git a/legend/任务奖励_成长任务#L328,846.png b/legend/任务奖励_成长任务#L328,846.png new file mode 100644 index 0000000..1962517 Binary files /dev/null and b/legend/任务奖励_成长任务#L328,846.png differ diff --git a/legend/任务奖励_每日任务#L500,846.png b/legend/任务奖励_每日任务#L500,846.png new file mode 100644 index 0000000..b5cff1d Binary files /dev/null and b/legend/任务奖励_每日任务#L500,846.png differ diff --git a/legend/任务奖励_点击退出#L191,863.png b/legend/任务奖励_点击退出#L191,863.png new file mode 100644 index 0000000..02b58d3 Binary files /dev/null and b/legend/任务奖励_点击退出#L191,863.png differ diff --git a/legend/任务奖励_章节任务#L157,846.png b/legend/任务奖励_章节任务#L157,846.png new file mode 100644 index 0000000..d8b2fc1 Binary files /dev/null and b/legend/任务奖励_章节任务#L157,846.png differ diff --git a/legend/任务奖励_章节任务领取按钮#L415,378.png b/legend/任务奖励_章节任务领取按钮#L415,378.png new file mode 100644 index 0000000..a8f01f7 Binary files /dev/null and b/legend/任务奖励_章节任务领取按钮#L415,378.png differ diff --git a/legend/任务奖励_领取按钮#L405,411.png b/legend/任务奖励_领取按钮#L405,411.png new file mode 100644 index 0000000..c515006 Binary files /dev/null and b/legend/任务奖励_领取按钮#L405,411.png differ diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java index 48c1da7..29a1b57 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java @@ -34,9 +34,10 @@ public class MacroForWJDR extends JMacro { @Override public synchronized ViewRect focus() { - Logger.info("聚焦窗口"); - ViewRect mumu = findLegend("慕慕_工具栏", 0.95d); + Logger.info("请确保MuMu显示分辨率为540 x 960(DPI 240)"); ViewRect rect = getScreenRect(); + Logger.info("查找定位MuMu工具栏"); + ViewRect mumu = findLegend("慕慕_工具栏", 0.95d); if (mumu == null) { Logger.info("聚焦窗口失败,默认全屏"); } else { @@ -80,10 +81,6 @@ public class MacroForWJDR extends JMacro { // 任意界面优先返回城镇 new Task_定位城镇(this, focusRect).run(); - // 检测状态 - Task_状态检测 task_状态检测 = new Task_状态检测(this, focusRect); - task_状态检测.run(); - // 可按优先级排序以下任务 { // 矿场攻击检测任务 @@ -92,23 +89,20 @@ public class MacroForWJDR extends JMacro { // 避难者 new Task_收留避难者(this, focusRect).run(); - // 邮箱礼包领取 - if (task_状态检测.有邮件奖励) { - new Task_邮箱礼包领取(this, focusRect).run(); - } + // 探险领取 + new Task_任务奖励领取(this, focusRect).run(); // 探险领取 - if (task_状态检测.有探险奖励) { - new Task_探险领取(this, focusRect).run(); - } + new Task_探险奖励领取(this, focusRect).run(); + + // 邮箱礼包领取 + new Task_邮件奖励领取(this, focusRect).run(); // 自动练兵 new Task_自动练兵(this, focusRect).run(); // 自动采矿任务 - if (task_状态检测.有空闲队列()) { - new Task_自动采矿(this, focusRect).run(); - } + new Task_自动采矿(this, focusRect).run(); } Logger.info("休眠1分钟..."); 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..5f6ea2b --- /dev/null +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_任务奖励领取.java @@ -0,0 +1,81 @@ +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("检测任务奖励"); + ViewRect[] viewRects = macro.matchLegends(0.3, "任务奖励_待领取", "任务奖励_待领取2"); + if (viewRects[0] == null && viewRects[1] == null) { + Logger.info("无任务奖励,跳过"); + return; + } + Logger.info("进入任务页面,领取奖励"); + macro.mouseLeftClick(macro.of(43, 758)); + + Logger.info("检测章节任务"); + ViewRect 章节任务 = macro.matchLegend("任务奖励_章节任务", 0.5); + if (章节任务 != null) { + Logger.info("领取章节任务"); + macro.mouseLeftClick(章节任务); + macro.delay(500); + ViewRect 领取; + do { + 领取 = macro.matchLegend("任务奖励_章节任务领取按钮", 0.9); + if (领取 != null) { + macro.mouseLeftClick(领取); + } + } while (领取 != null); + } + + Logger.info("检测成长任务"); + ViewRect 成长任务 = macro.matchLegend("任务奖励_成长任务", 0.5); + if (成长任务 != null) { + Logger.info("领取成长任务"); + macro.mouseLeftClick(成长任务); + macro.delay(500); + ViewRect 领取; + do { + 领取 = macro.matchLegend("任务奖励_领取按钮", 0.9); + if (领取 != null) { + macro.mouseLeftClick(领取); + macro.delay(1000); + } + } while (领取 != null); + } + + Logger.info("检测每日任务"); + ViewRect 每日任务 = macro.matchLegend("任务奖励_每日任务", 0.5); + if (每日任务 != null) { + Logger.info("领取每日任务"); + macro.mouseLeftClick(每日任务); + macro.delay(500); + ViewRect 领取; + do { + 领取 = macro.matchLegend("任务奖励_领取按钮", 0.9); + if (领取 != null) { + macro.mouseLeftClick(领取); + ViewRect 任务奖励_点击退出 = macro.waitAndMatchLegend("任务奖励_点击退出", 0.5, 2); + if (任务奖励_点击退出 != null) { + macro.mouseLeftClick(任务奖励_点击退出); + macro.delay(500); + } + } + } while (领取 != null); + } + + ViewRect legend = macro.matchLegend("任务奖励_关闭", 0.9); + if (legend != null) { + Logger.info("关闭任务奖励面板"); + macro.mouseLeftClick(legend); + } + } +} diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_探险领取.java b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_探险奖励领取.java similarity index 90% rename from src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_探险领取.java rename to src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_探险奖励领取.java index 88f2195..779dd7b 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_探险领取.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_探险奖励领取.java @@ -4,15 +4,15 @@ import xyz.wbsite.jmacro.JMacro; import xyz.wbsite.jmacro.base.ViewRect; import xyz.wbsite.jmacro.util.Logger; -public class Task_探险领取 extends BaseTask { +public class Task_探险奖励领取 extends BaseTask { - public Task_探险领取(JMacro macro, ViewRect viewRect) { + public Task_探险奖励领取(JMacro macro, ViewRect viewRect) { super(macro, viewRect); } @Override public void task(JMacro macro, ViewRect viewRect) { - boolean 有探险奖励 = macro.matchColor(macro.of(71, 877, "#ff1e1f")); + boolean 有探险奖励 = macro.matchColor(macro.of(71,877,"#ff1e1f")); if (!有探险奖励) { 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 deleted file mode 100644 index 172c53c..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_状态检测.java +++ /dev/null @@ -1,108 +0,0 @@ -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 boolean 队列1空闲; - public boolean 队列2空闲; - public boolean 队列3空闲; - public boolean 队列4空闲; - public boolean 队列5空闲; - public boolean 队列6空闲; - - public boolean 满体力; - public boolean 有任务奖励; - public boolean 有邮件奖励; - public boolean 有探险奖励; - - public Task_状态检测(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - Logger.info("读取行军状态"); - { - Logger.info("检测面板状态"); - ViewRect[] viewRects = macro.matchLegends(0.6, "城镇_打开面板", "城镇_关闭面板"); - if (viewRects[0] == null && viewRects[1] == null) { - Logger.info("检测面板状态失败"); - return; - } - - if (viewRects[0] != null) { - Logger.info("打开面板"); - macro.mouseLeftClick(viewRects[0]); - macro.delay(1000); - } - - Logger.info("选中城镇"); - macro.mouseLeftClick(macro.of(85,200)); - macro.delay(1000); - // todo - - Logger.info("选中野外"); - macro.mouseLeftClick(macro.of(245,200)); - macro.delay(1000); - - ViewRect[] viewRects1 = macro.matchLegends(0.6D, - "城镇_面板_空闲1", - "城镇_面板_空闲2", - "城镇_面板_空闲3", - "城镇_面板_空闲4", - "城镇_面板_空闲5", - "城镇_面板_空闲6" - ); - - if (null != macro.matchLegend("城镇_面板_空闲1", 0.6D)) { - 队列1空闲 = true; - Logger.info("队列1空闲"); - } - if (null != macro.matchLegend("城镇_面板_空闲2", 0.6D)) { - 队列2空闲 = true; - Logger.info("队列2空闲"); - } - if (null != macro.matchLegend("城镇_面板_空闲3", 0.6D)) { - 队列3空闲 = true; - Logger.info("队列3空闲"); - } - if (null != macro.matchLegend("城镇_面板_空闲4", 0.6D)) { - 队列4空闲 = true; - Logger.info("队列4空闲"); - } - if (null != macro.matchLegend("城镇_面板_空闲5", 0.6D)) { - 队列5空闲 = true; - Logger.info("队列5空闲"); - } - if (null != macro.matchLegend("城镇_面板_空闲6", 0.6D)) { - 队列6空闲 = true; - Logger.info("队列6空闲"); - } - } - - ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); - if (城镇_关闭面板 == null) { - Logger.info("关闭面板异常"); - return; - } - Logger.info("关闭面板"); - macro.mouseLeftClick(城镇_关闭面板); - - {// 任务奖励 - 有任务奖励 = macro.matchColor(macro.of(43, 759, "#ff3939")); - } - {// 邮件奖励 - 有邮件奖励 = macro.matchColor(macro.of(506, 751, "#fe3939")); - } - {// 探险奖励 - 有探险奖励 = macro.matchColor(macro.of(71,877,"#ff1e1f")); - } - } - - public boolean 有空闲队列() { - return 队列1空闲 || 队列2空闲 || 队列3空闲 || 队列4空闲 || 队列5空闲 || 队列6空闲; - } -} 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 9a85f17..f1afbe9 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动采矿.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动采矿.java @@ -7,41 +7,136 @@ import xyz.wbsite.jmacro.util.Logger; public class Task_自动采矿 extends BaseTask { + public boolean 队列1空闲; + public boolean 队列2空闲; + public boolean 队列3空闲; + public boolean 队列4空闲; + public boolean 队列5空闲; + public boolean 队列6空闲; + public Task_自动采矿(JMacro macro, ViewRect viewRect) { super(macro, viewRect); } @Override public void task(JMacro macro, ViewRect viewRect) { + Logger.info("读取行军状态"); + { + Logger.info("检测面板状态"); + ViewRect[] viewRects = macro.matchLegends(0.6, "城镇_打开面板", "城镇_关闭面板"); + if (viewRects[0] == null && viewRects[1] == null) { + Logger.info("检测面板状态失败"); + return; + } + + if (viewRects[0] != null) { + Logger.info("打开面板"); + macro.mouseLeftClick(viewRects[0]); + macro.delay(1000); + } + + Logger.info("选中野外"); + macro.mouseLeftClick(macro.of(245,200)); + macro.delay(1000); + + ViewRect[] viewRects1 = macro.matchLegends(0.6D, + "城镇_面板_空闲1", + "城镇_面板_空闲2", + "城镇_面板_空闲3", + "城镇_面板_空闲4", + "城镇_面板_空闲5", + "城镇_面板_空闲6" + ); + + if (null != macro.matchLegend("城镇_面板_空闲1", 0.6D)) { + 队列1空闲 = true; + Logger.info("队列1空闲"); + } + if (null != macro.matchLegend("城镇_面板_空闲2", 0.6D)) { + 队列2空闲 = true; + Logger.info("队列2空闲"); + } + if (null != macro.matchLegend("城镇_面板_空闲3", 0.6D)) { + 队列3空闲 = true; + Logger.info("队列3空闲"); + } + if (null != macro.matchLegend("城镇_面板_空闲4", 0.6D)) { + 队列4空闲 = true; + Logger.info("队列4空闲"); + } + if (null != macro.matchLegend("城镇_面板_空闲5", 0.6D)) { + 队列5空闲 = true; + Logger.info("队列5空闲"); + } + if (null != macro.matchLegend("城镇_面板_空闲6", 0.6D)) { + 队列6空闲 = true; + Logger.info("队列6空闲"); + } + } + + ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); + if (城镇_关闭面板 == null) { + Logger.info("关闭面板异常"); + return; + } + Logger.info("关闭面板"); + macro.mouseLeftClick(城镇_关闭面板); + + Logger.info("定位【野外】"); + ViewRect 野外 = macro.matchLegend("野外", 0.99); + if (野外 == null) { + Logger.error("定位【野外】失败,采矿终止"); + return; + } + Logger.info("定位【野外】成功,{}", 野外.toString()); + + Logger.info("点击【野外】,坐标{}", JSONUtil.toJsonStr(野外.getCenter())); + macro.mouseLeftClick(野外); macro.delayUnstable(); - Logger.info("判断是否在野外"); - ViewRect 城镇 = macro.matchLegend("城镇", 0.9); - if (城镇 != null) { - Logger.info("当前界面【野外】"); - } else { - Logger.info("定位【野外】"); - ViewRect 野外 = macro.matchLegend("野外", 0.99); - if (野外 == null) { - Logger.error("定位【野外】失败,采矿终止"); + Logger.info("定位野外按钮成功"); + + if (队列1空闲) { + Logger.info("队列一空闲资源,派去采集生肉"); + boolean success = collect("生肉", 3); + if (!success) { // 中断采集 return; } - Logger.info("定位【野外】成功,{}", 野外.toString()); + } - Logger.info("点击【野外】,坐标{}", JSONUtil.toJsonStr(野外.getCenter())); - macro.mouseLeftClick(野外); - macro.delayUnstable(); - Logger.info("定位野外按钮成功"); + if (队列2空闲) { + Logger.info("队列一空闲资源,派去采集木材"); + boolean success = collect("木材", 3); + if (!success) { // 中断采集 + return; + } + } + if (队列3空闲) { + Logger.info("队列一空闲资源,派去采集煤矿"); + boolean success = collect("煤矿", 3); + if (!success) { // 中断采集 + return; + } + } + if (队列4空闲) { + Logger.info("队列一空闲资源,派去采集铁矿"); + boolean success = collect("铁矿", 3); + if (!success) { // 中断采集 + return; + } } - Logger.info("开始采集资源"); - String[] types = new String[]{ - "生肉", "木材", "煤矿", "铁矿" - }; - for (String type : types) { - Logger.info("搜索资源【{}】", type); - boolean success = collect(type, 3); + if (队列5空闲) { + Logger.info("队列一空闲资源,派去采集煤矿"); + boolean success = collect("生肉", 3); if (!success) { // 中断采集 - break; + return; + } + } + if (队列6空闲) { + Logger.info("队列一空闲资源,派去采集铁矿"); + boolean success = collect("木材", 3); + if (!success) { // 中断采集 + return; } } @@ -57,6 +152,7 @@ public class Task_自动采矿 extends BaseTask { Logger.error("未检测到【城镇】,异常终止"); return; } + macro.mouseLeftClick(城1); Logger.info("返回城镇"); } diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_邮箱礼包领取.java b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_邮件奖励领取.java similarity index 53% rename from src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_邮箱礼包领取.java rename to src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_邮件奖励领取.java index a2b808b..16a3afb 100644 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_邮箱礼包领取.java +++ b/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_邮件奖励领取.java @@ -4,16 +4,16 @@ import xyz.wbsite.jmacro.JMacro; import xyz.wbsite.jmacro.base.ViewRect; import xyz.wbsite.jmacro.util.Logger; -public class Task_邮箱礼包领取 extends BaseTask { +public class Task_邮件奖励领取 extends BaseTask { - public Task_邮箱礼包领取(JMacro macro, ViewRect viewRect) { + 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(506, 751, "#fe3939")); + boolean b = macro.matchColor(macro.of(504,751,"#f93838")); if (!b) { Logger.info("邮箱无待领取礼包"); return; @@ -23,10 +23,48 @@ public class Task_邮箱礼包领取 extends BaseTask { macro.mouseLeftClick(macro.of(505, 750)); macro.delay(1000); - // todo 战争 - // todo 联盟 + // 战争 + if (!macro.matchColor(macro.of(98,71,"#6c9fd8"))) { + macro.mouseLeftClick(macro.of(198,71)); + macro.delay(500); + + ViewRect 一键已读领取 = macro.waitAndMatchLegend("一键已读领取", 0.9, 2); + if (一键已读领取 == null) { + Logger.info("异常结束"); + return; + } + macro.mouseLeftClick(一键已读领取); + + ViewRect 点击任意位置退出 = macro.waitAndMatchLegend("点击任意位置退出", 0.5, 2); + if (点击任意位置退出 != null) { + Logger.info("点击任意位置退出"); + macro.mouseLeftClick(点击任意位置退出); + macro.delay(500); + } + } + + // 联盟 + if (!macro.matchColor(macro.of(198,71,"#6c9fd8"))) { + macro.mouseLeftClick(macro.of(198,71)); + macro.delay(500); + + ViewRect 一键已读领取 = macro.waitAndMatchLegend("一键已读领取", 0.9, 2); + if (一键已读领取 == null) { + Logger.info("异常结束"); + return; + } + macro.mouseLeftClick(一键已读领取); + + ViewRect 点击任意位置退出 = macro.waitAndMatchLegend("点击任意位置退出", 0.5, 2); + if (点击任意位置退出 != null) { + Logger.info("点击任意位置退出"); + macro.mouseLeftClick(点击任意位置退出); + macro.delay(500); + } + } + // 系统 - if (macro.matchColor(macro.of(297, 70, "#fe3939"))) { + if (!macro.matchColor(macro.of(297, 70, "#6c9fd8"))) { macro.mouseLeftClick(macro.of(297, 70)); macro.delay(500); @@ -46,7 +84,7 @@ public class Task_邮箱礼包领取 extends BaseTask { } // 报告 - if (macro.matchColor(macro.of(398, 71, "#fe3939"))) { + if (!macro.matchColor(macro.of(398, 71, "#6c9fd8"))) { macro.mouseLeftClick(macro.of(398, 71)); macro.delay(500);