package xyz.wbsite.jmacro.wjdr; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.RandomUtil; import xyz.wbsite.jmacro.JMacro; import xyz.wbsite.jmacro.JMainService; import xyz.wbsite.jmacro.base.ViewRect; import xyz.wbsite.jmacro.util.Logger; import xyz.wbsite.jmacro.wjdr.task.*; /** * 无尽冬日脚本 * * @author wangbing * @version 0.0.1 * @since 1.8 */ public class MacroForWJDR extends JMacro { /** * 工作开始时间 */ private final String workStart = "07:00:00"; /** * 工作结束时间 */ private final String workEnd = "24:00:00"; /** * 最大工作时间(ms) */ private final long workTime = 30 * 60 * 1000; @Override public synchronized ViewRect focus() { 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 { // 计算应用窗口返回 rect.setLeft(mumu.getLeft() - 428); rect.setTop(mumu.getBottom() + 7); rect.setRight(mumu.getRight()); rect.setBottom(mumu.getBottom() + 951); } Logger.info("聚焦窗口:" + rect.toString()); Logger.info("聚焦窗口大小:{}x{}", rect.getRight() - rect.getLeft(), rect.getBottom() - rect.getTop()); return rect; } @Override public void run() { DateTime current = DateUtil.date(); String currentTime = current.toString("HH:mm:ss"); Logger.info("工作时间:{}~{}", workStart, workEnd); Logger.info("当前时间:{}", currentTime); if (DateUtil.parseTime(currentTime).isIn(DateUtil.parseTime(workStart), DateUtil.parseTime(workEnd))) { Logger.info("当前时间为工作时间"); Logger.info("任务线程开始", current.toString("yyyy-MM-dd HH:mm:ss")); // 获取启动图标 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("启动循环任务"); int count = 10; while (JMainService.getInstance().run && count > 0) { count--; // 任意界面优先返回城镇 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("检测游戏窗口是否关闭!"); ViewRect 无尽 = findLegend(getFocusRect().offsetY(-30), "无尽", 0.8); if (无尽 != null) { Logger.info("游戏窗口存在,关闭窗口!"); mouseMove(无尽.getCenter(), true); delay(50); mouseMove(无尽.getCenter().offsetY(1), true); mouseLeftClick(无尽); } int randomInt = RandomUtil.randomInt(5, 10); Logger.info("休眠中{}分钟", randomInt); delay(randomInt * 60 * 1000); } }