自动采集

wjdr
wangbing 12 months ago
parent cde7464548
commit f2cb1dda46

@ -453,7 +453,7 @@ public abstract class JMacro {
}
}
}
if (maxSimilar > 0.5D) {
if (fast) {
ImageUtil.show(viewRect);
Logger.info("最大相似度{}", NumberUtil.formatPercent(maxSimilar, 0));
}
@ -537,7 +537,7 @@ public abstract class JMacro {
* @return
*/
public ViewRect findLegend(Legend legend, double minSimilar) {
return findLegend(getFocusRect(), legend, minSimilar);
return findLegend(getFocusRect(), legend, minSimilar, true);
}
/**
@ -559,8 +559,30 @@ public abstract class JMacro {
* @return
*/
public ViewRect findLegend(ViewRect rect, Legend legend, double minSimilar) {
return findLegend(rect, legend, minSimilar, false);
}
/**
*
*
* @param legend
* @param minSimilar
* @return
*/
public ViewRect findLegend(ViewRect rect, String legend, double minSimilar, boolean fast) {
return findLegend(rect, Legend.inflate(legend), minSimilar, fast);
}
/**
*
*
* @param legend
* @param minSimilar
* @return
*/
public ViewRect findLegend(ViewRect rect, Legend legend, double minSimilar, boolean fast) {
Logger.info("查找图例:{}", legend.getName());
return findPic(rect, legend.getImage(), minSimilar, true);
return findPic(rect, legend.getImage(), minSimilar, fast);
}
/**
@ -648,7 +670,9 @@ public abstract class JMacro {
public boolean matchLegendAndClick(String legend, double minSimilar) {
ViewRect matchLegend = matchLegend(legend, minSimilar);
if (matchLegend != null) {
Logger.info("点击【{}】", legend);
mouseLeftClick(matchLegend);
delay(500);
return true;
} else {
return false;
@ -665,7 +689,9 @@ public abstract class JMacro {
public boolean matchLegendAndClick(Legend legend, double minSimilar) {
ViewRect matchLegend = matchLegend(legend, minSimilar);
if (matchLegend != null) {
Logger.info("点击【{}】", legend);
mouseLeftClick(matchLegend);
delay(500);
return true;
} else {
return false;
@ -882,7 +908,8 @@ public abstract class JMacro {
countMap.put(c, countMap.getOrDefault(c, 0) + 1);
}
return countMap.getOrDefault(color, 0);
double has = countMap.getOrDefault(color, 0);
return has / colors.size();
}
/**
@ -894,7 +921,9 @@ public abstract class JMacro {
ViewRect viewRect = of(left, top, right, bottom);
boolean hasColor = hasColor(viewRect, color);
if (hasColor) {
Logger.info("点击【{}】", viewRect);
mouseLeftClick(viewRect);
delay(500);
return true;
} else {
return false;
@ -921,7 +950,9 @@ public abstract class JMacro {
public boolean hasColorAndClick(ViewRect rect, String... color) {
boolean hasColor = hasColor(rect, color);
if (hasColor) {
Logger.info("点击【{}】", rect);
mouseLeftClick(rect);
delay(500);
return true;
} else {
return false;

@ -93,40 +93,16 @@ 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();
// 自动练兵
new Task_(this, focusRect).run();
// 自动采矿任务
new Task_(this, focusRect).run();
// 探险领取
new Task_(this, focusRect).run();
// 探险领取
new Task_(this, focusRect).run();
// 邮箱礼包领取
new Task_(this, focusRect).run();
// 邮箱礼包领取
new Task_(this, focusRect).run();
// 仓库奖励领取
new Task_(this, focusRect).run();
}
Logger.info("休眠1分钟...");
delay(60 * 1000);
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
}
}
}

@ -39,10 +39,8 @@ public class Task_仓库奖励领取 extends BaseTask {
ViewRect _ = macro.matchLegend("仓库_补给完成", 0.9);
if (_ == null) {
Logger.info("关闭面板");
ViewRect rect = macro.matchLegend("城镇_关闭面板", 0.6);
if (rect != null) {
macro.mouseLeftClick(rect);
} else {
boolean _ = macro.matchLegendAndClick("城镇_关闭面板", 0.6);
if (!_) {
Logger.error("关闭面板失败");
}
return;
@ -75,7 +73,7 @@ public class Task_仓库奖励领取 extends BaseTask {
macro.mouseLeftClick(_);
macro.delay(1000);
ViewRect _ = macro.matchLegend("仓库_体力罐头领取", 0.8);
ViewRect _ = macro.matchLegend("仓库_体力罐头领取", 0.6);
if (_ != null) {
macro.mouseLeftClick(_);
}

@ -60,15 +60,21 @@ public class Task_任务奖励领取 extends BaseTask {
@Override
public void task(JMacro macro, ViewRect viewRect) {
Logger.info("检测任务奖励");
boolean hasColor = macro.hasColor(macro.of(38,751,56,765), numColor);
boolean hasColor = macro.hasColor(macro.of(38, 751, 56, 765), numColor);
if (!hasColor) {
Logger.info("无任务奖励,跳过");
return;
}
Logger.info("进入任务页面,领取奖励");
macro.mouseLeftClick(macro.of(33,779));
macro.mouseLeftClick(macro.of(38, 751, 56, 765));
macro.delay(1000);
ViewRect legend = macro.matchLegend("任务奖励_关闭", 0.9);
if (legend == null) {
Logger.error("未正确进入任务领取界面");
return;
}
Logger.info("检测章节任务");
boolean = macro.hasColor(macro.of(158, 849, 171, 857), numColor);
if () {
@ -87,7 +93,7 @@ public class Task_任务奖励领取 extends BaseTask {
macro.mouseLeftClick();
macro.delay(1000);
ViewRect _退 = macro.waitAndMatchLegend("任务奖励_点击退出", 0.5, 2);
ViewRect _退 = macro.waitAndMatchLegend("任务奖励_点击退出", 0.5, 5);
if (_退 != null) {
macro.mouseLeftClick(_退);
macro.delay(500);
@ -113,7 +119,7 @@ public class Task_任务奖励领取 extends BaseTask {
}
Logger.info("检测每日任务");
boolean = macro.hasColor(macro.of(497, 846, 518, 858), "#e2d4d4", "#a74f52", "#ff3c3c","#ef3435","#e9e1e2","#fb3838","#f7f4f4","#fcfbfb");
boolean = macro.hasColor(macro.of(497, 846, 518, 858), "#e2d4d4", "#a74f52", "#ff3c3c", "#ef3435", "#e9e1e2", "#fb3838", "#f7f4f4", "#fcfbfb");
if () {
Logger.info("领取每日任务");
macro.mouseLeftClick(macro.of(499, 847, 517, 858));
@ -123,7 +129,7 @@ public class Task_任务奖励领取 extends BaseTask {
= macro.matchLegend("任务奖励_领取按钮", 0.9);
if ( != null) {
macro.mouseLeftClick();
ViewRect _退 = macro.waitAndMatchLegend("任务奖励_点击退出", 0.5, 2);
ViewRect _退 = macro.waitAndMatchLegend("任务奖励_点击退出", 0.5, 5);
if (_退 != null) {
macro.mouseLeftClick(_退);
macro.delay(500);
@ -133,10 +139,10 @@ public class Task_任务奖励领取 extends BaseTask {
}
Logger.info("检测成长任务2");
boolean 2 = macro.hasColor(macro.of(241,845,257,860), numColor);
boolean 2 = macro.hasColor(macro.of(241, 845, 257, 860), numColor);
if (2) {
Logger.info("领取成长任务");
macro.mouseLeftClick(macro.of(241,845,257,860));
macro.mouseLeftClick(macro.of(241, 845, 257, 860));
macro.delay(500);
ViewRect ;
do {
@ -149,17 +155,17 @@ public class Task_任务奖励领取 extends BaseTask {
}
Logger.info("检测每日任务2");
boolean 2 = macro.hasColor(macro.of(414,845,430,859), numColor);
boolean 2 = macro.hasColor(macro.of(414, 845, 430, 859), numColor);
if (2) {
Logger.info("领取每日任务");
macro.mouseLeftClick(macro.of(414,845,430,859));
macro.mouseLeftClick(macro.of(414, 845, 430, 859));
macro.delay(500);
ViewRect ;
do {
= macro.matchLegend("任务奖励_领取按钮", 0.9);
if ( != null) {
macro.mouseLeftClick();
ViewRect _退 = macro.waitAndMatchLegend("任务奖励_点击退出", 0.5, 2);
ViewRect _退 = macro.waitAndMatchLegend("任务奖励_点击退出", 0.5, 5);
if (_退 != null) {
macro.mouseLeftClick(_退);
macro.delay(500);
@ -168,10 +174,10 @@ public class Task_任务奖励领取 extends BaseTask {
} while ( != null);
}
ViewRect legend = macro.matchLegend("任务奖励_关闭", 0.9);
if (legend != null) {
ViewRect _ = macro.matchLegend("任务奖励_关闭", 0.9);
if (_ != null) {
Logger.info("关闭任务奖励面板");
macro.mouseLeftClick(legend);
macro.mouseLeftClick(_);
}
}
}

@ -1,5 +1,6 @@
package xyz.wbsite.jmacro.wjdr.task;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.json.JSONUtil;
import xyz.wbsite.jmacro.JMacro;
import xyz.wbsite.jmacro.base.ViewRect;
@ -20,6 +21,14 @@ public class Task_自动野怪 extends BaseTask {
@Override
public void task(JMacro macro, ViewRect viewRect) {
Logger.info("读取体力值");
double color = macro.findColor(macro.of(12, 62, 57, 65), "#26c200");
Logger.info("体力值" + NumberUtil.formatPercent(color, 0));
if (color <= 0.1D) {
Logger.info("体力值低于10%,取消自动野怪");
return;
}
{
Logger.info("打开面板,读取行军状态");
ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"), 0.6);

@ -0,0 +1,75 @@
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 _ = macro.matchLegendAndClick("城镇_打开面板", 0.6);
if (!_) {
Logger.error("打开面板失败");
return;
}
Logger.info("选中城镇");
macro.mouseLeftClick(macro.of(85, 200));
macro.delay(1000);
Logger.info("滑动到底部");
macro.mouseLeftDrag(macro.of(158, 626), macro.of(163, 231), true);
macro.delay(1000);
ViewRect _ = macro.findLegend(macro.of(129, 448, 200, 630), "英雄招募_免费招募", 0.5);
if (_ == null) {
Logger.info("未检测到【免费招募】");
return;
}
macro.mouseLeftClick(_);
macro.delay(1000);
{
boolean _ = macro.matchLegendAndClick("英雄招募_高级招募", 0.9);
if (_) {
macro.delay(500);
macro.mouseLeftClick(macro.getFocusRect());
macro.delay(1000);
Logger.info("检测任意位置继续");
ViewRect 退 = macro.waitAndMatchLegend("英雄招募_点击任意位置退出", 0.5, 3);
if (退 != null) {
Logger.info("点击任意位置退出");
macro.mouseLeftClick(退);
macro.delay(1500);
}
}
}
{
boolean _ = macro.matchLegendAndClick("英雄招募_史诗招募", 0.9);
if (_) {
macro.delay(500);
macro.mouseLeftClick(macro.getFocusRect());
macro.delay(1000);
Logger.info("检测任意位置继续");
ViewRect 退 = macro.waitAndMatchLegend("英雄招募_点击任意位置退出", 0.5, 3);
if (退 != null) {
Logger.info("点击任意位置退出");
macro.mouseLeftClick(退);
macro.delay(1500);
}
}
}
macro.matchLegendAndClick("英雄招募_返回", 0.9);
}
}
Loading…
Cancel
Save

Powered by TurnKey Linux.