自动采集

wjdr
wangbing 12 months ago
parent 8c8b718d5b
commit b94c1c080c

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -2,6 +2,7 @@ package xyz.wbsite.jmacro.wjdr;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil;
import xyz.wbsite.jmacro.JMacro; import xyz.wbsite.jmacro.JMacro;
import xyz.wbsite.jmacro.JMainService; import xyz.wbsite.jmacro.JMainService;
import xyz.wbsite.jmacro.base.ViewRect; import xyz.wbsite.jmacro.base.ViewRect;
@ -59,50 +60,53 @@ public class MacroForWJDR extends JMacro {
Logger.info("工作时间:{}~{}", workStart, workEnd); Logger.info("工作时间:{}~{}", workStart, workEnd);
Logger.info("当前时间:{}", currentTime); Logger.info("当前时间:{}", currentTime);
if (!DateUtil.parseTime(currentTime).isIn(DateUtil.parseTime(workStart), DateUtil.parseTime(workEnd))) { if (!DateUtil.parseTime(currentTime).isIn(DateUtil.parseTime(workStart), DateUtil.parseTime(workEnd))) {
Logger.info("当前时间为非工作时间,休眠待命!"); Logger.info("当前时间为工作时间");
Logger.info("任务线程开始", current.toString("yyyy-MM-dd HH:mm:ss"));
Logger.info("检测游戏窗口是否关闭!"); // 获取启动图标
ViewRect = findLegend(getFocusRect().offsetY(-30), "无尽", 0.8); Logger.info("查找启动图标");
if ( != null) { ViewRect launch = findLegend("启动图标", 0.9);
Logger.info("游戏窗口存在,关闭窗口!"); if (launch != null) {
mouseMove(.getCenter()); Logger.info("启动图标坐标:", launch.toString());
delay(1000); Logger.info("点击启动图标");
mouseLeftClick(.getCenter()); mouseLeftClick(launch);
Logger.info("等待程序启动中,请稍等...");
delay(10 * 1000);
} }
Logger.info("休眠1分钟"); Logger.info("启动循环任务");
delay(60 * 1000); int count = 10;
return; while (JMainService.getInstance().run && count > 0) {
} count--;
Logger.info("当前时间为工作时间"); // 任意界面优先返回城镇
Logger.info("任务线程开始", current.toString("yyyy-MM-dd HH:mm:ss")); new Task_(this, focusRect).run();
// 获取启动图标
Logger.info("查找启动图标");
ViewRect launch = findLegend("启动图标", 0.9);
if (launch != null) {
Logger.info("启动图标坐标:", launch.toString());
Logger.info("点击启动图标");
mouseLeftClick(launch);
Logger.info("等待程序启动中,请稍等...");
delay(10 * 1000);
}
Logger.info("启动循环任务"); // 可按优先级排序以下任务
while (JMainService.getInstance().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();
new Task_(this, focusRect).run();
}
} else {
Logger.info("当前时间为非工作时间,休眠待命!");
}
// 可按优先级排序以下任务 Logger.info("检测游戏窗口是否关闭!");
new Task_(this, focusRect).run(); ViewRect = findLegend(getFocusRect().offsetY(-30), "无尽", 0.8);
new Task_(this, focusRect).run(); if ( != null) {
new Task_(this, focusRect).run(); Logger.info("游戏窗口存在,关闭窗口!");
new Task_(this, focusRect).run(); mouseMove(.getCenter());
new Task_(this, focusRect).run(); delay(1000);
new Task_(this, focusRect).run(); mouseLeftClick(.getCenter());
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
new Task_(this, focusRect).run();
} }
int randomInt = RandomUtil.randomInt(5, 20);
Logger.info("休眠中{}分钟", randomInt);
delay(randomInt * 60 * 1000);
} }
} }

@ -12,20 +12,17 @@ public class Task_仓库奖励领取 extends BaseTask {
@Override @Override
public void task(JMacro macro, ViewRect viewRect) { public void task(JMacro macro, ViewRect viewRect) {
Logger.info("检测面板状态"); Logger.info("打开面板");
ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"), 0.6); boolean _ = macro.matchLegendAndClick("城镇_打开面板", 0.6);
if (viewRects == null || viewRects.length == 0) { if (!_) {
Logger.info("检测面板状态检测失败"); Logger.error("打开面板失败");
return; return;
} }
if (viewRects[0] != null) { Logger.info("检测关闭按钮");
Logger.info("打开面板"); ViewRect _ = macro.matchLegend("城镇_关闭面板", 0.6);
macro.mouseLeftClick(viewRects[0]); if (_ == null) {
macro.delay(1000); Logger.error("未检测到面板关闭按钮,中断任务");
} return;
if (viewRects[1] != null) {
Logger.info("面板已打开");
} }
Logger.info("选中城镇"); Logger.info("选中城镇");
@ -39,8 +36,8 @@ public class Task_仓库奖励领取 extends BaseTask {
ViewRect _ = macro.matchLegend("仓库_补给完成", 0.9); ViewRect _ = macro.matchLegend("仓库_补给完成", 0.9);
if (_ == null) { if (_ == null) {
Logger.info("关闭面板"); Logger.info("关闭面板");
boolean _ = macro.matchLegendAndClick("城镇_关闭面板", 0.6); boolean = macro.matchLegendAndClick("城镇_关闭面板", 0.6);
if (!_) { if (!) {
Logger.error("关闭面板失败"); Logger.error("关闭面板失败");
} }
return; return;

@ -18,28 +18,35 @@ public class Task_自动练兵 extends BaseTask {
} }
private void (JMacro macro, ViewRect viewRect) { private void (JMacro macro, ViewRect viewRect) {
Logger.info("检测面板状态"); ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9);
ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"),0.6); if (viewRects[0] == null && viewRects[1] == null) {
if (viewRects == null || viewRects.length == 0) { Logger.info("面板未打开");
Logger.info("检测面板状态检测失败"); Logger.info("检测面板打开按钮,打开面板");
return; boolean _ = macro.matchLegendAndClick("城镇_打开面板", 0.6);
} if (!_) {
if (viewRects[0] != null) { Logger.error("打开面板失败");
Logger.info("打开面板"); return;
macro.mouseLeftClick(viewRects[0]); }
macro.delay(1000); Logger.info("检测关闭按钮");
} ViewRect _ = macro.matchLegend("城镇_关闭面板", 0.6);
if (_ == null) {
if (viewRects[1] != null) { Logger.error("未检测到面板关闭按钮,打开失败");
return;
}
} else {
Logger.info("面板已打开"); Logger.info("面板已打开");
} }
Logger.info("选中城镇"); Logger.info("选中城镇");
macro.mouseLeftClick(macro.of(85, 200)); macro.mouseLeftClick(macro.of(85, 200));
macro.delay(500);
Logger.info("滑动到顶部");
macro.mouseLeftDrag(macro.of(163, 231), macro.of(158, 626), true);
macro.delay(1000); macro.delay(1000);
Logger.info("检测盾兵"); Logger.info("检测盾兵");
ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成盾兵", "城镇_空闲盾兵"),0.8D, 3); ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成盾兵", "城镇_空闲盾兵"), 0.8D, 3);
if (viewRects2 == null) { if (viewRects2 == null) {
Logger.info("检测失败"); Logger.info("检测失败");
return; return;
@ -136,28 +143,27 @@ public class Task_自动练兵 extends BaseTask {
} }
private void (JMacro macro, ViewRect viewRect) { private void (JMacro macro, ViewRect viewRect) {
Logger.info("检测面板状态"); ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9);
ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"),0.6); if (viewRects[0] == null && viewRects[1] == null) {
if (viewRects == null || viewRects.length == 0) { Logger.info("面板未打开");
Logger.info("检测面板状态检测失败"); Logger.info("检测面板打开按钮,打开面板");
return; boolean _ = macro.matchLegendAndClick("城镇_打开面板", 0.6);
} if (!_) {
if (viewRects[0] != null) { Logger.error("打开面板失败");
Logger.info("打开面板"); return;
macro.mouseLeftClick(viewRects[0]); }
macro.delay(1000); Logger.info("检测关闭按钮");
} ViewRect _ = macro.matchLegend("城镇_关闭面板", 0.6);
if (_ == null) {
if (viewRects[1] != null) { Logger.error("未检测到面板关闭按钮,打开失败");
return;
}
} else {
Logger.info("面板已打开"); Logger.info("面板已打开");
} }
Logger.info("选中城镇");
macro.mouseLeftClick(macro.of(85, 200));
macro.delay(1000);
Logger.info("检测矛兵"); Logger.info("检测矛兵");
ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成矛兵", "城镇_空闲矛兵"),0.8D, 3); ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成矛兵", "城镇_空闲矛兵"), 0.8D, 3);
if (viewRects2 == null) { if (viewRects2 == null) {
Logger.info("检测失败"); Logger.info("检测失败");
return; return;
@ -255,28 +261,27 @@ public class Task_自动练兵 extends BaseTask {
} }
private void (JMacro macro, ViewRect viewRect) { private void (JMacro macro, ViewRect viewRect) {
Logger.info("检测面板状态"); ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9);
ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"),0.6); if (viewRects[0] == null && viewRects[1] == null) {
if (viewRects == null || viewRects.length == 0) { Logger.info("面板未打开");
Logger.info("检测面板状态检测失败"); Logger.info("检测面板打开按钮,打开面板");
return; boolean _ = macro.matchLegendAndClick("城镇_打开面板", 0.6);
} if (!_) {
if (viewRects[0] != null) { Logger.error("打开面板失败");
Logger.info("打开面板"); return;
macro.mouseLeftClick(viewRects[0]); }
macro.delay(1000); Logger.info("检测关闭按钮");
} ViewRect _ = macro.matchLegend("城镇_关闭面板", 0.6);
if (_ == null) {
if (viewRects[1] != null) { Logger.error("未检测到面板关闭按钮,打开失败");
return;
}
} else {
Logger.info("面板已打开"); Logger.info("面板已打开");
} }
Logger.info("选中城镇");
macro.mouseLeftClick(macro.of(85, 200));
macro.delay(1000);
Logger.info("检测矛兵"); Logger.info("检测矛兵");
ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成射手", "城镇_空闲射手"),0.8D, 3); ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成射手", "城镇_空闲射手"), 0.8D, 3);
if (viewRects2 == null) { if (viewRects2 == null) {
Logger.info("检测失败"); Logger.info("检测失败");
return; return;

@ -20,48 +20,52 @@ public class Task_自动采矿 extends BaseTask {
@Override @Override
public void task(JMacro macro, ViewRect viewRect) { public void task(JMacro macro, ViewRect viewRect) {
{ ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9);
Logger.info("打开面板,读取行军状态"); if (viewRects[0] == null && viewRects[1] == null) {
ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"), 0.6); Logger.info("面板未打开");
if (viewRects[0] == null && viewRects[1] == null) { Logger.info("检测面板打开按钮,打开面板");
Logger.error("检测面板状态失败"); boolean _ = macro.matchLegendAndClick("城镇_打开面板", 0.6);
if (!_) {
Logger.error("打开面板失败");
return; return;
} }
Logger.info("检测关闭按钮");
if (viewRects[0] != null) { ViewRect _ = macro.matchLegend("城镇_关闭面板", 0.6);
Logger.info("打开面板"); if (_ == null) {
macro.mouseLeftClick(viewRects[0]); Logger.error("未检测到面板关闭按钮,打开失败");
macro.delay(1000); return;
} }
} else {
Logger.info("面板已打开");
}
Logger.info("选中野外"); Logger.info("选中野外");
macro.mouseLeftClick(macro.of(245, 200)); macro.mouseLeftClick(macro.of(245, 200));
macro.delay(1000); macro.delay(1000);
if (null != macro.matchLegend("城镇_面板_空闲1", 0.6D)) { if (null != macro.matchLegend("城镇_面板_空闲1", 0.6D)) {
1 = true; 1 = true;
Logger.info("队列1空闲"); Logger.info("队列1空闲");
} }
if (null != macro.matchLegend("城镇_面板_空闲2", 0.6D)) { if (null != macro.matchLegend("城镇_面板_空闲2", 0.6D)) {
2 = true; 2 = true;
Logger.info("队列2空闲"); Logger.info("队列2空闲");
} }
if (null != macro.matchLegend("城镇_面板_空闲3", 0.6D)) { if (null != macro.matchLegend("城镇_面板_空闲3", 0.6D)) {
3 = true; 3 = true;
Logger.info("队列3空闲"); Logger.info("队列3空闲");
} }
if (null != macro.matchLegend("城镇_面板_空闲4", 0.6D)) { if (null != macro.matchLegend("城镇_面板_空闲4", 0.6D)) {
4 = true; 4 = true;
Logger.info("队列4空闲"); Logger.info("队列4空闲");
} }
if (null != macro.matchLegend("城镇_面板_空闲5", 0.6D)) { if (null != macro.matchLegend("城镇_面板_空闲5", 0.6D)) {
5 = true; 5 = true;
Logger.info("队列5空闲"); Logger.info("队列5空闲");
} }
if (null != macro.matchLegend("城镇_面板_空闲6", 0.6D)) { if (null != macro.matchLegend("城镇_面板_空闲6", 0.6D)) {
6 = true; 6 = true;
Logger.info("队列6空闲"); Logger.info("队列6空闲");
}
} }
ViewRect _ = macro.matchLegend("城镇_关闭面板", 0.6); ViewRect _ = macro.matchLegend("城镇_关闭面板", 0.6);

@ -31,16 +31,23 @@ public class Task_自动野怪 extends BaseTask {
{ {
Logger.info("打开面板,读取行军状态"); Logger.info("打开面板,读取行军状态");
ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_打开面板", "城镇_关闭面板"), 0.6); ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9);
if (viewRects[0] == null && viewRects[1] == null) { if (viewRects[0] == null && viewRects[1] == null) {
Logger.error("检测面板状态失败"); Logger.info("面板未打开");
return; Logger.info("检测面板打开按钮,打开面板");
} boolean _ = macro.matchLegendAndClick("城镇_打开面板", 0.6);
if (!_) {
if (viewRects[0] != null) { Logger.error("打开面板失败");
Logger.info("打开面板"); return;
macro.mouseLeftClick(viewRects[0]); }
macro.delay(1000); Logger.info("检测关闭按钮");
ViewRect _ = macro.matchLegend("城镇_关闭面板", 0.6);
if (_ == null) {
Logger.error("未检测到面板关闭按钮,打开失败");
return;
}
} else {
Logger.info("面板已打开");
} }
Logger.info("选中野外"); Logger.info("选中野外");

Loading…
Cancel
Save

Powered by TurnKey Linux.