diff --git a/legend/一键已读领取#L321,905.png b/legend/一键已读领取#L321,905.png deleted file mode 100644 index b369ffe..0000000 Binary files a/legend/一键已读领取#L321,905.png and /dev/null differ diff --git a/legend/一键领取#L215,744.png b/legend/一键领取#L215,744.png deleted file mode 100644 index 706eb60..0000000 Binary files a/legend/一键领取#L215,744.png and /dev/null differ diff --git a/legend/仓库_体力宝箱#L245,406.png b/legend/仓库_体力宝箱#L245,406.png deleted file mode 100644 index 20b40cc..0000000 Binary files a/legend/仓库_体力宝箱#L245,406.png and /dev/null differ diff --git a/legend/仓库_体力罐头#L245,406.png b/legend/仓库_体力罐头#L245,406.png deleted file mode 100644 index ed7292e..0000000 Binary files a/legend/仓库_体力罐头#L245,406.png and /dev/null differ diff --git a/legend/仓库_体力罐头领取#L241,692.png b/legend/仓库_体力罐头领取#L241,692.png deleted file mode 100644 index 465d343..0000000 Binary files a/legend/仓库_体力罐头领取#L241,692.png and /dev/null differ diff --git a/legend/仓库_体力罐头领取关闭#L440,126.png b/legend/仓库_体力罐头领取关闭#L440,126.png deleted file mode 100644 index 272015c..0000000 Binary files a/legend/仓库_体力罐头领取关闭#L440,126.png and /dev/null differ diff --git a/legend/仓库_补给完成#L284,599.png b/legend/仓库_补给完成#L284,599.png deleted file mode 100644 index 9ffdd68..0000000 Binary files a/legend/仓库_补给完成#L284,599.png and /dev/null differ diff --git a/legend/仓库_补给完成2#L287,520.png b/legend/仓库_补给完成2#L287,520.png deleted file mode 100644 index b7850a1..0000000 Binary files a/legend/仓库_补给完成2#L287,520.png and /dev/null differ diff --git a/legend/仓库_距离下个包裹#L205,786.png b/legend/仓库_距离下个包裹#L205,786.png deleted file mode 100644 index a7f8809..0000000 Binary files a/legend/仓库_距离下个包裹#L205,786.png and /dev/null differ diff --git a/legend/任务奖励_关闭#L494,79.png b/legend/任务奖励_关闭#L494,79.png deleted file mode 100644 index edca354..0000000 Binary files a/legend/任务奖励_关闭#L494,79.png and /dev/null differ diff --git a/legend/任务奖励_底部领取按钮#L418,733.png b/legend/任务奖励_底部领取按钮#L418,733.png deleted file mode 100644 index 9c96535..0000000 Binary files a/legend/任务奖励_底部领取按钮#L418,733.png and /dev/null differ diff --git a/legend/任务奖励_点击退出#L190,864.png b/legend/任务奖励_点击退出#L190,864.png deleted file mode 100644 index b0c8ca6..0000000 Binary files a/legend/任务奖励_点击退出#L190,864.png and /dev/null differ diff --git a/legend/任务奖励_章节任务领取按钮#L415,378.png b/legend/任务奖励_章节任务领取按钮#L415,378.png deleted file mode 100644 index a8f01f7..0000000 Binary files a/legend/任务奖励_章节任务领取按钮#L415,378.png and /dev/null differ diff --git a/legend/任务奖励_领取按钮#L399,415.png b/legend/任务奖励_领取按钮#L399,415.png deleted file mode 100644 index 8fc20ab..0000000 Binary files a/legend/任务奖励_领取按钮#L399,415.png and /dev/null differ diff --git a/legend/兵营_任意位置继续#L168,903.png b/legend/兵营_任意位置继续#L168,903.png deleted file mode 100644 index ed7bf05..0000000 Binary files a/legend/兵营_任意位置继续#L168,903.png and /dev/null differ diff --git a/legend/兵营_训练#L369,862.png b/legend/兵营_训练#L369,862.png deleted file mode 100644 index 336eb71..0000000 Binary files a/legend/兵营_训练#L369,862.png and /dev/null differ diff --git a/legend/兵营_返回#L10,11.png b/legend/兵营_返回#L10,11.png deleted file mode 100644 index 3e3ec37..0000000 Binary files a/legend/兵营_返回#L10,11.png and /dev/null differ diff --git a/legend/启动图标#L438,485.png b/legend/启动图标#L438,485.png deleted file mode 100644 index 9a855de..0000000 Binary files a/legend/启动图标#L438,485.png and /dev/null differ diff --git a/legend/城镇#L461,902.png b/legend/城镇#L461,902.png deleted file mode 100644 index accb039..0000000 Binary files a/legend/城镇#L461,902.png and /dev/null differ diff --git a/legend/城镇_万象杂货铺关闭#L492,23.png b/legend/城镇_万象杂货铺关闭#L492,23.png deleted file mode 100644 index 7197747..0000000 Binary files a/legend/城镇_万象杂货铺关闭#L492,23.png and /dev/null differ diff --git a/legend/城镇_互助#L380,824.png b/legend/城镇_互助#L380,824.png deleted file mode 100644 index 2f4f933..0000000 Binary files a/legend/城镇_互助#L380,824.png and /dev/null differ diff --git a/legend/城镇_关闭面板#L337,395.png b/legend/城镇_关闭面板#L337,395.png deleted file mode 100644 index cf5bd6a..0000000 Binary files a/legend/城镇_关闭面板#L337,395.png and /dev/null differ diff --git a/legend/城镇_完成射手#L286,514.png b/legend/城镇_完成射手#L286,514.png deleted file mode 100644 index 4a23b19..0000000 Binary files a/legend/城镇_完成射手#L286,514.png and /dev/null differ diff --git a/legend/城镇_完成盾兵#L286,403.png b/legend/城镇_完成盾兵#L286,403.png deleted file mode 100644 index 0d439ae..0000000 Binary files a/legend/城镇_完成盾兵#L286,403.png and /dev/null differ diff --git a/legend/城镇_完成矛兵#L286,459.png b/legend/城镇_完成矛兵#L286,459.png deleted file mode 100644 index 87dc697..0000000 Binary files a/legend/城镇_完成矛兵#L286,459.png and /dev/null differ diff --git a/legend/城镇_打开面板#L4,394.png b/legend/城镇_打开面板#L4,394.png deleted file mode 100644 index 984112f..0000000 Binary files a/legend/城镇_打开面板#L4,394.png and /dev/null differ diff --git a/legend/城镇_挂机收益#L238,682.png b/legend/城镇_挂机收益#L238,682.png deleted file mode 100644 index 6c14842..0000000 Binary files a/legend/城镇_挂机收益#L238,682.png and /dev/null differ diff --git a/legend/城镇_探险#L35,881.png b/legend/城镇_探险#L35,881.png deleted file mode 100644 index e373e3e..0000000 Binary files a/legend/城镇_探险#L35,881.png and /dev/null differ diff --git a/legend/城镇_欢迎回来#L239,743.png b/legend/城镇_欢迎回来#L239,743.png deleted file mode 100644 index ca36061..0000000 Binary files a/legend/城镇_欢迎回来#L239,743.png and /dev/null differ diff --git a/legend/城镇_礼包#L459,45.png b/legend/城镇_礼包#L459,45.png deleted file mode 100644 index a14f554..0000000 Binary files a/legend/城镇_礼包#L459,45.png and /dev/null differ diff --git a/legend/城镇_礼包2#L446,77.png b/legend/城镇_礼包2#L446,77.png deleted file mode 100644 index fdd2359..0000000 Binary files a/legend/城镇_礼包2#L446,77.png and /dev/null differ diff --git a/legend/城镇_离线收益#L204,734.png b/legend/城镇_离线收益#L204,734.png deleted file mode 100644 index cd70d82..0000000 Binary files a/legend/城镇_离线收益#L204,734.png and /dev/null differ diff --git a/legend/城镇_空闲射手#L297,505.png b/legend/城镇_空闲射手#L297,505.png deleted file mode 100644 index b83b2a8..0000000 Binary files a/legend/城镇_空闲射手#L297,505.png and /dev/null differ diff --git a/legend/城镇_空闲盾兵#L309,464.png b/legend/城镇_空闲盾兵#L309,464.png deleted file mode 100644 index 7798482..0000000 Binary files a/legend/城镇_空闲盾兵#L309,464.png and /dev/null differ diff --git a/legend/城镇_空闲矛兵#L298,451.png b/legend/城镇_空闲矛兵#L298,451.png deleted file mode 100644 index 8b65a98..0000000 Binary files a/legend/城镇_空闲矛兵#L298,451.png and /dev/null differ diff --git a/legend/城镇_避难者#L3,174.png b/legend/城镇_避难者#L3,174.png deleted file mode 100644 index 9c15314..0000000 Binary files a/legend/城镇_避难者#L3,174.png and /dev/null differ diff --git a/legend/城镇_面板1未选中#L63,190.png b/legend/城镇_面板1未选中#L63,190.png deleted file mode 100644 index 4e0ebfc..0000000 Binary files a/legend/城镇_面板1未选中#L63,190.png and /dev/null differ diff --git a/legend/城镇_面板1选中#L19,187.png b/legend/城镇_面板1选中#L19,187.png deleted file mode 100644 index 9993ce4..0000000 Binary files a/legend/城镇_面板1选中#L19,187.png and /dev/null differ diff --git a/legend/城镇_面板2未选中#L221,190.png b/legend/城镇_面板2未选中#L221,190.png deleted file mode 100644 index ef3782d..0000000 Binary files a/legend/城镇_面板2未选中#L221,190.png and /dev/null differ diff --git a/legend/城镇_面板2选中#L181,187.png b/legend/城镇_面板2选中#L181,187.png deleted file mode 100644 index 781423e..0000000 Binary files a/legend/城镇_面板2选中#L181,187.png and /dev/null differ diff --git a/legend/城镇_面板_空闲1#L144,281.png b/legend/城镇_面板_空闲1#L144,281.png deleted file mode 100644 index e17a44c..0000000 Binary files a/legend/城镇_面板_空闲1#L144,281.png and /dev/null differ diff --git a/legend/城镇_面板_空闲2#L145,335.png b/legend/城镇_面板_空闲2#L145,335.png deleted file mode 100644 index 9a469ac..0000000 Binary files a/legend/城镇_面板_空闲2#L145,335.png and /dev/null differ diff --git a/legend/城镇_面板_空闲3#L143,389.png b/legend/城镇_面板_空闲3#L143,389.png deleted file mode 100644 index 49436fc..0000000 Binary files a/legend/城镇_面板_空闲3#L143,389.png and /dev/null differ diff --git a/legend/城镇_面板_空闲4#L144,444.png b/legend/城镇_面板_空闲4#L144,444.png deleted file mode 100644 index cf2c2ff..0000000 Binary files a/legend/城镇_面板_空闲4#L144,444.png and /dev/null differ diff --git a/legend/城镇_面板_空闲5#L144,496.png b/legend/城镇_面板_空闲5#L144,496.png deleted file mode 100644 index 03303a2..0000000 Binary files a/legend/城镇_面板_空闲5#L144,496.png and /dev/null differ diff --git a/legend/城镇_面板_空闲6#L144,550.png b/legend/城镇_面板_空闲6#L144,550.png deleted file mode 100644 index 03303a2..0000000 Binary files a/legend/城镇_面板_空闲6#L144,550.png and /dev/null differ diff --git a/legend/慕慕_工具栏.png b/legend/慕慕_工具栏.png deleted file mode 100644 index 31f0095..0000000 Binary files a/legend/慕慕_工具栏.png and /dev/null differ diff --git a/legend/我的电脑#L22,10.png b/legend/我的电脑#L22,10.png new file mode 100644 index 0000000..1288d9b Binary files /dev/null and b/legend/我的电脑#L22,10.png differ diff --git a/legend/我的电脑窗口#L409,528.png b/legend/我的电脑窗口#L409,528.png new file mode 100644 index 0000000..c4221db Binary files /dev/null and b/legend/我的电脑窗口#L409,528.png differ diff --git a/legend/探险_不可领取#L417,672.png b/legend/探险_不可领取#L417,672.png deleted file mode 100644 index ef84830..0000000 Binary files a/legend/探险_不可领取#L417,672.png and /dev/null differ diff --git a/legend/探险_按钮#L240,854.png b/legend/探险_按钮#L240,854.png deleted file mode 100644 index 773a563..0000000 Binary files a/legend/探险_按钮#L240,854.png and /dev/null differ diff --git a/legend/探险_获得奖励#L200,221.png b/legend/探险_获得奖励#L200,221.png deleted file mode 100644 index 2638b0d..0000000 Binary files a/legend/探险_获得奖励#L200,221.png and /dev/null differ diff --git a/legend/探险_返回#L8,11.png b/legend/探险_返回#L8,11.png deleted file mode 100644 index 87d4c71..0000000 Binary files a/legend/探险_返回#L8,11.png and /dev/null differ diff --git a/legend/探险_领取#L416,669.png b/legend/探险_领取#L416,669.png deleted file mode 100644 index 1759658..0000000 Binary files a/legend/探险_领取#L416,669.png and /dev/null differ diff --git a/legend/探险_领取2#L217,683.png b/legend/探险_领取2#L217,683.png deleted file mode 100644 index 732f4c1..0000000 Binary files a/legend/探险_领取2#L217,683.png and /dev/null differ diff --git a/legend/无尽#L69,-22.png b/legend/无尽#L69,-22.png deleted file mode 100644 index 7a96ac1..0000000 Binary files a/legend/无尽#L69,-22.png and /dev/null differ diff --git a/legend/每日任务关闭#L496,80.png b/legend/每日任务关闭#L496,80.png deleted file mode 100644 index 4901c62..0000000 Binary files a/legend/每日任务关闭#L496,80.png and /dev/null differ diff --git a/legend/点击任意位置退出#L189,899.png b/legend/点击任意位置退出#L189,899.png deleted file mode 100644 index dc30d64..0000000 Binary files a/legend/点击任意位置退出#L189,899.png and /dev/null differ diff --git a/legend/自动野怪_返回#L8,12.png b/legend/自动野怪_返回#L8,12.png deleted file mode 100644 index 880c30d..0000000 Binary files a/legend/自动野怪_返回#L8,12.png and /dev/null differ diff --git a/legend/英雄招募_免费招募#L137,532.png b/legend/英雄招募_免费招募#L137,532.png deleted file mode 100644 index 81f577f..0000000 Binary files a/legend/英雄招募_免费招募#L137,532.png and /dev/null differ diff --git a/legend/英雄招募_史诗招募#L122,891.png b/legend/英雄招募_史诗招募#L122,891.png deleted file mode 100644 index 7055c45..0000000 Binary files a/legend/英雄招募_史诗招募#L122,891.png and /dev/null differ diff --git a/legend/英雄招募_奖励清单#L238,169.png b/legend/英雄招募_奖励清单#L238,169.png deleted file mode 100644 index 753b133..0000000 Binary files a/legend/英雄招募_奖励清单#L238,169.png and /dev/null differ diff --git a/legend/英雄招募_点击任意位置退出#L187,897.png b/legend/英雄招募_点击任意位置退出#L187,897.png deleted file mode 100644 index 15d7422..0000000 Binary files a/legend/英雄招募_点击任意位置退出#L187,897.png and /dev/null differ diff --git a/legend/英雄招募_返回#L8,16.png b/legend/英雄招募_返回#L8,16.png deleted file mode 100644 index 3481c85..0000000 Binary files a/legend/英雄招募_返回#L8,16.png and /dev/null differ diff --git a/legend/英雄招募_高级招募#L122,626.png b/legend/英雄招募_高级招募#L122,626.png deleted file mode 100644 index a1071d8..0000000 Binary files a/legend/英雄招募_高级招募#L122,626.png and /dev/null differ diff --git a/legend/返回#L6,8.png b/legend/返回#L6,8.png deleted file mode 100644 index 4d0c492..0000000 Binary files a/legend/返回#L6,8.png and /dev/null differ diff --git a/legend/邮件_点击任意位置退出#L187,863.png b/legend/邮件_点击任意位置退出#L187,863.png deleted file mode 100644 index 4b91dca..0000000 Binary files a/legend/邮件_点击任意位置退出#L187,863.png and /dev/null differ diff --git a/legend/邮件_获得奖励#L198,220.png b/legend/邮件_获得奖励#L198,220.png deleted file mode 100644 index 90b3509..0000000 Binary files a/legend/邮件_获得奖励#L198,220.png and /dev/null differ diff --git a/legend/邮件_返回#L5,14.png b/legend/邮件_返回#L5,14.png deleted file mode 100644 index bd0249b..0000000 Binary files a/legend/邮件_返回#L5,14.png and /dev/null differ diff --git a/legend/野外#L456,870.png b/legend/野外#L456,870.png deleted file mode 100644 index e61dcc8..0000000 Binary files a/legend/野外#L456,870.png and /dev/null differ diff --git a/legend/野外_任务#L16,759.png b/legend/野外_任务#L16,759.png deleted file mode 100644 index f2af0a4..0000000 Binary files a/legend/野外_任务#L16,759.png and /dev/null differ diff --git a/legend/野外_搜索面板_搜索按钮#L172,874.png b/legend/野外_搜索面板_搜索按钮#L172,874.png deleted file mode 100644 index d360866..0000000 Binary files a/legend/野外_搜索面板_搜索按钮#L172,874.png and /dev/null differ diff --git a/legend/野外_攻击#L243,435.png b/legend/野外_攻击#L243,435.png deleted file mode 100644 index c8c8d90..0000000 Binary files a/legend/野外_攻击#L243,435.png and /dev/null differ diff --git a/legend/野外_攻击出征#L389,874.png b/legend/野外_攻击出征#L389,874.png deleted file mode 100644 index c383122..0000000 Binary files a/legend/野外_攻击出征#L389,874.png and /dev/null differ diff --git a/legend/野外_攻击平均配置#L200,858.png b/legend/野外_攻击平均配置#L200,858.png deleted file mode 100644 index a307e8d..0000000 Binary files a/legend/野外_攻击平均配置#L200,858.png and /dev/null differ diff --git a/legend/野外_放大镜搜索#L19,632.png b/legend/野外_放大镜搜索#L19,632.png deleted file mode 100644 index 2d1c7fb..0000000 Binary files a/legend/野外_放大镜搜索#L19,632.png and /dev/null differ diff --git a/legend/野外_资源出征#L357,879.png b/legend/野外_资源出征#L357,879.png deleted file mode 100644 index fe585c1..0000000 Binary files a/legend/野外_资源出征#L357,879.png and /dev/null differ diff --git a/legend/野外_资源搜索#L241,887.png b/legend/野外_资源搜索#L241,887.png deleted file mode 100644 index 33eb01d..0000000 Binary files a/legend/野外_资源搜索#L241,887.png and /dev/null differ diff --git a/legend/野外_资源搜索_木材#L212,649.png b/legend/野外_资源搜索_木材#L212,649.png deleted file mode 100644 index b143a3c..0000000 Binary files a/legend/野外_资源搜索_木材#L212,649.png and /dev/null differ diff --git a/legend/野外_资源搜索_煤矿#L332,651.png b/legend/野外_资源搜索_煤矿#L332,651.png deleted file mode 100644 index ef5fc09..0000000 Binary files a/legend/野外_资源搜索_煤矿#L332,651.png and /dev/null differ diff --git a/legend/野外_资源搜索_生肉#L84,648.png b/legend/野外_资源搜索_生肉#L84,648.png deleted file mode 100644 index e640283..0000000 Binary files a/legend/野外_资源搜索_生肉#L84,648.png and /dev/null differ diff --git a/legend/野外_资源搜索_铁矿#L446,651.png b/legend/野外_资源搜索_铁矿#L446,651.png deleted file mode 100644 index 8cdb87f..0000000 Binary files a/legend/野外_资源搜索_铁矿#L446,651.png and /dev/null differ diff --git a/legend/野外_资源无士兵#L214,691.png b/legend/野外_资源无士兵#L214,691.png deleted file mode 100644 index 93115a5..0000000 Binary files a/legend/野外_资源无士兵#L214,691.png and /dev/null differ diff --git a/legend/野外_资源无对队列#L217,238.png b/legend/野外_资源无对队列#L217,238.png deleted file mode 100644 index cdde4fa..0000000 Binary files a/legend/野外_资源无对队列#L217,238.png and /dev/null differ diff --git a/legend/野外_资源等级1#L444,769.png b/legend/野外_资源等级1#L444,769.png deleted file mode 100644 index 3f1fb68..0000000 Binary files a/legend/野外_资源等级1#L444,769.png and /dev/null differ diff --git a/legend/野外_资源等级2#L442,769.png b/legend/野外_资源等级2#L442,769.png deleted file mode 100644 index 2df456e..0000000 Binary files a/legend/野外_资源等级2#L442,769.png and /dev/null differ diff --git a/legend/野外_资源等级3#L443,770.png b/legend/野外_资源等级3#L443,770.png deleted file mode 100644 index 08d3d6e..0000000 Binary files a/legend/野外_资源等级3#L443,770.png and /dev/null differ diff --git a/legend/野外_资源等级4#L440,767.png b/legend/野外_资源等级4#L440,767.png deleted file mode 100644 index 1e4126d..0000000 Binary files a/legend/野外_资源等级4#L440,767.png and /dev/null differ diff --git a/legend/野外_资源等级5#L443,768.png b/legend/野外_资源等级5#L443,768.png deleted file mode 100644 index 30274dc..0000000 Binary files a/legend/野外_资源等级5#L443,768.png and /dev/null differ diff --git a/legend/野外_资源等级6#L443,767.png b/legend/野外_资源等级6#L443,767.png deleted file mode 100644 index d90838c..0000000 Binary files a/legend/野外_资源等级6#L443,767.png and /dev/null differ diff --git a/legend/野外_资源等级7#L442,769.png b/legend/野外_资源等级7#L442,769.png deleted file mode 100644 index 0467b49..0000000 Binary files a/legend/野外_资源等级7#L442,769.png and /dev/null differ diff --git a/legend/野外_资源等级8#L442,768.png b/legend/野外_资源等级8#L442,768.png deleted file mode 100644 index cfc8adc..0000000 Binary files a/legend/野外_资源等级8#L442,768.png and /dev/null differ diff --git a/legend/野外_资源采集#L218,453.png b/legend/野外_资源采集#L218,453.png deleted file mode 100644 index 793da22..0000000 Binary files a/legend/野外_资源采集#L218,453.png and /dev/null differ diff --git a/src/main/java/xyz/wbsite/jmacro/JMacro.java b/src/main/java/xyz/wbsite/jmacro/JMacro.java index 6e95d7c..32e5eb0 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMacro.java +++ b/src/main/java/xyz/wbsite/jmacro/JMacro.java @@ -7,7 +7,11 @@ import xyz.wbsite.jmacro.base.Legend; import xyz.wbsite.jmacro.base.ViewColor; import xyz.wbsite.jmacro.base.ViewPoint; import xyz.wbsite.jmacro.base.ViewRect; -import xyz.wbsite.jmacro.util.*; +import xyz.wbsite.jmacro.util.ColorUtil; +import xyz.wbsite.jmacro.util.ImageUtil; +import xyz.wbsite.jmacro.util.Logger; +import xyz.wbsite.jmacro.util.TaskUtil; +import xyz.wbsite.jmacro.util.ValueUtil; import java.awt.*; import java.awt.event.InputEvent; @@ -189,18 +193,93 @@ public abstract class JMacro { * @param rect 点 */ public void mouseLeftClick(ViewPoint rect, long delay) { - // 获取当前鼠标位置 Point mousePoint = MouseInfo.getPointerInfo().getLocation(); if (mousePoint.x != rect.getX() || mousePoint.y != rect.getY()) { Logger.info("鼠标移动至[{},{}]", rect.getX(), rect.getY()); mouseMove(rect); } + mouseLeftClick(delay); + } + + /** + * 鼠标左键单击 + * + * @param delay 延迟 + */ + public void mouseLeftClick(long delay) { robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); delay(delay); robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); } + /** + * 鼠标左键单击 + */ + public void mouseLeftClick() { + mouseLeftClick(100); + } + + /** + * 鼠标右键单击 + * + * @param rect 矩形区域 + */ + public void mouseRightClick(ViewRect rect) { + mouseRightClick(rect, 100); + } + + /** + * 鼠标右键单击 + * + * @param rect 矩形区域 + */ + public void mouseRightClick(ViewRect rect, long delay) { + mouseRightClick(new ViewPoint(rect.getCenter().getX(), rect.getCenter().getY()), delay); + } + + /** + * 鼠标右键单击 + * + * @param rect 点 + */ + public void mouseRightClick(ViewPoint rect) { + mouseRightClick(rect, 100); + } + + /** + * 鼠标右键单击 + * + * @param rect 点 + */ + public void mouseRightClick(ViewPoint rect, long delay) { + // 获取当前鼠标位置 + Point mousePoint = MouseInfo.getPointerInfo().getLocation(); + if (mousePoint.x != rect.getX() || mousePoint.y != rect.getY()) { + Logger.info("鼠标移动至[{},{}]", rect.getX(), rect.getY()); + mouseMove(rect); + } + mouseRightClick(delay); + } + + /** + * 鼠标右键单击 + * + * @param delay 延迟 + */ + public void mouseRightClick(long delay) { + robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); + delay(delay); + robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); + } + + /** + * 鼠标右键单击 + */ + public void mouseRightClick() { + mouseLeftClick(100); + } + /** * 鼠标左键拖拽 * @@ -269,20 +348,6 @@ public abstract class JMacro { robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); } - /** - * 鼠标右键单击 - * - * @param rect 矩形区域 - */ - public void mouseRightClick(ViewRect rect) { - delayUnstable(); - robot.mouseMove(rect.getCenter().getX(), rect.getCenter().getY()); - delayUnstable(); - robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); - delayUnstable(); - robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); - } - /** * 鼠标左键双击 * diff --git a/src/main/java/xyz/wbsite/jmacro/JMainApplication.java b/src/main/java/xyz/wbsite/jmacro/JMainApplication.java index aa5b5fe..7031755 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMainApplication.java +++ b/src/main/java/xyz/wbsite/jmacro/JMainApplication.java @@ -1,16 +1,14 @@ package xyz.wbsite.jmacro; -import xyz.wbsite.jmacro.base.ViewRect; -import xyz.wbsite.jmacro.ui.FXMLUtil; -import xyz.wbsite.jmacro.util.Logger; -import xyz.wbsite.jmacro.util.ResourceUtil; import com.melloware.jintellitype.JIntellitype; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.stage.Stage; -import xyz.wbsite.jmacro.wjdr.MacroForWJDR; +import xyz.wbsite.jmacro.ui.FXMLUtil; +import xyz.wbsite.jmacro.util.ResourceUtil; +import xyz.wbsite.jtask.TaskImpl; import java.awt.event.KeyEvent; import java.io.File; @@ -65,7 +63,7 @@ public class JMainApplication extends Application { }); // 服务初始化 - JMainService.init(new MacroForWJDR(), new File("legend")); + JMainService.init(new TaskImpl(), new File("legend")); } public static void main(String[] args) { diff --git a/src/main/java/xyz/wbsite/jmacro/JMainController.java b/src/main/java/xyz/wbsite/jmacro/JMainController.java index 82283db..a389977 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMainController.java +++ b/src/main/java/xyz/wbsite/jmacro/JMainController.java @@ -2,6 +2,7 @@ package xyz.wbsite.jmacro; import cn.hutool.core.collection.BoundedPriorityQueue; import cn.hutool.core.util.StrUtil; +import javafx.application.Platform; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.TextArea; @@ -127,8 +128,8 @@ public class JMainController { @FXML public void onStop() { boolean stop = JMainService.stop(); - this.start.setDisable(!stop); - this.stop.setDisable(stop); + this.start.setDisable(false); + this.stop.setDisable(true); this.preview.setImage(null); } @@ -159,12 +160,14 @@ public class JMainController { * @param args 参数 */ public synchronized void println(String log, Object... args) { - String format = StrUtil.format(log, args) + "\n"; - if (logs.size() >= MAX_LENGTH) { - String poll = logs.poll(); - console.deleteText(0, poll.length()); - } - logs.add(format); - console.appendText(format); + Platform.runLater(() -> { + String format = StrUtil.format(log, args) + "\n"; + if (logs.size() >= MAX_LENGTH) { + String poll = logs.poll(); + console.deleteText(0, poll.length()); + } + logs.add(format); + console.appendText(format); + }); } } diff --git a/src/main/java/xyz/wbsite/jmacro/JMainService.java b/src/main/java/xyz/wbsite/jmacro/JMainService.java index b24a188..4365a71 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMainService.java +++ b/src/main/java/xyz/wbsite/jmacro/JMainService.java @@ -2,9 +2,9 @@ package xyz.wbsite.jmacro; import cn.hutool.core.thread.ThreadUtil; import xyz.wbsite.jmacro.base.Legend; -import xyz.wbsite.jmacro.wjdr.MacroForWJDR; import xyz.wbsite.jmacro.util.DialogUtil; import xyz.wbsite.jmacro.util.Logger; +import xyz.wbsite.jtask.TaskImpl; import java.io.File; @@ -133,7 +133,7 @@ public class JMainService { * 服务启动入口 */ public static void main(String[] args) { - JMainService.init(new MacroForWJDR(), new File("legend")); + JMainService.init(new TaskImpl(), new File("legend")); JMainService.start(); } } diff --git a/src/main/java/xyz/wbsite/jmacro/util/Logger.java b/src/main/java/xyz/wbsite/jmacro/util/Logger.java index fb3ea83..fd58997 100644 --- a/src/main/java/xyz/wbsite/jmacro/util/Logger.java +++ b/src/main/java/xyz/wbsite/jmacro/util/Logger.java @@ -18,14 +18,19 @@ import xyz.wbsite.jmacro.ex.MacroErrorException; public class Logger { public static void info(String format, Object... arg) { + // 获取当前时间 DateTime date = DateUtil.date(); + // 获取日志级别 String level = Level.INFO.toString(); + // 格式化日志信息 String log = StrUtil.format(format, arg); + // 获取调用者类名 String name = CallerUtil.getCallerCaller().getSimpleName(); // 获取当前线程的堆栈追踪 StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); // 通常堆栈追踪数组的第三个元素是logMessage方法的调用者 int lineNumber = stackTrace[2].getLineNumber(); + // 打印日志信息 JMainApplication.mainController.println("[{}] [{}] {} [{}:{}]", date, level, log, name, lineNumber); } diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java b/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java deleted file mode 100644 index 2efae8b..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/MacroForWJDR.java +++ /dev/null @@ -1,124 +0,0 @@ -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.ex.MacroErrorException; -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 = "00: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配置如下:"); - Logger.info("显卡渲染模式:Vulkan模式"); - Logger.info("性能配置:中性能"); - Logger.info("显卡使用策略:画面标签更好"); - Logger.info("其他优化:强制使用独立显卡"); - Logger.info("分辨率设置:显示分辨率为540 x 960(DPI 240)"); - Logger.info("画面设置:画面亮度【50】,画面风格【普通】"); - Logger.info("帧率设置:60"); - Logger.info("技术上次关闭时的窗口位置和大小:60"); - Logger.info("固定窗口大小,禁止手动拉伸"); - ViewRect rect = getScreenRect(); - Logger.info("查找定位MuMu工具栏"); - ViewRect mumu = findLegend("慕慕_工具栏", 0.98d); - if (mumu == null) { - Logger.error("聚焦窗口失败"); - } 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 = 99; - while (JMainService.getInstance().run && count > 0) { - count--; - try { - // 任意界面优先返回城镇 - 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(); - } catch (MacroErrorException ignored) { - - } - } - } 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); - } -} diff --git a/src/main/java/xyz/wbsite/jmacro/wjdr/task/BaseTask.java b/src/main/java/xyz/wbsite/jmacro/wjdr/task/BaseTask.java deleted file mode 100644 index ed5cc3c..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/BaseTask.java +++ /dev/null @@ -1,64 +0,0 @@ -package xyz.wbsite.jmacro.wjdr.task; - -import xyz.wbsite.jmacro.JMacro; -import xyz.wbsite.jmacro.JMainService; -import xyz.wbsite.jmacro.base.ViewRect; -import xyz.wbsite.jmacro.ex.MacroErrorException; -import xyz.wbsite.jmacro.util.Logger; - -/** - * 基础任务类 - */ -public abstract class BaseTask { - - /** - * 脚本持有对象 - */ - protected JMacro macro; - - /** - * 应用窗口 - */ - protected ViewRect viewRect; - - public BaseTask(JMacro macro, ViewRect viewRect) { - this.macro = macro; - this.viewRect = viewRect; - } - - public void run() { - if (!JMainService.getInstance().run) { - Logger.error("服务中断"); - return; - } - String name = getClass().getSimpleName(); - try { - Logger.info("》》》任务[{}]开始》》》", name); - this.task(macro, viewRect); - Logger.info("》》》任务[{}]结束》》》", name); - } catch (Exception e) { - Logger.info("》》》任务[{}]异常中断》》》", name); - throw e; - } - } - - public void isReady() { - for (int i = 0; i < 10; i++) { - ViewRect rect = macro.matchLegend("野外", 0.9); - if (rect != null) { - return; - } - macro.delay(100); - } - - throw new MacroErrorException("请返回城镇"); - } - - /** - * 任务 - * - * @param macro 脚本 - * @param viewRect 视口 - */ - public abstract void task(JMacro macro, ViewRect viewRect); -} 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 ff13934..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_仓库奖励领取.java +++ /dev/null @@ -1,93 +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 Task_仓库奖励领取(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - isReady(); - - Logger.info("打开面板"); - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.7); - if (viewRects[0] == null && viewRects[1] == null) { - Logger.info("面板未打开"); - Logger.info("检测面板打开按钮,打开面板"); - boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); - if (!城镇_打开面板) { - Logger.error("打开面板失败"); - return; - } - Logger.info("检测关闭按钮"); - ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); - if (城镇_关闭面板 == null) { - Logger.error("未检测到面板关闭按钮,打开失败"); - return; - } - } else { - Logger.info("面板已打开"); - } - - 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.matchLegends(macro.of("仓库_补给完成", "仓库_补给完成2"), 0.9); - if (补给完成[0] == null && 补给完成[1] == null) { - Logger.info("未检测到仓库补给完成状态"); - Logger.info("关闭面板"); - macro.matchLegendAndClick("城镇_关闭面板", 0.6); - macro.delay(1000); - return; - } - - Logger.info("仓库补给完成,去领取"); - macro.delay(500); - if (补给完成[0] != null) { - macro.mouseLeftClick(补给完成[0]); - } - if (补给完成[1] != null) { - macro.mouseLeftClick(补给完成[1]); - } - macro.delay(1000); - - Logger.info("点击领取"); - macro.mouseLeftClick(macro.of(258, 433)); - macro.delay(1000); - - Logger.info("检测下个包裹提示"); - ViewRect 仓库_距离下个包裹 = macro.matchLegend("仓库_距离下个包裹", 0.3); - if (仓库_距离下个包裹 != null) { - Logger.info("关闭下个包裹提示"); - macro.mouseLeftClick(仓库_距离下个包裹); - macro.delay(1000); - } - - Logger.info("检测体力罐头"); - ViewRect 仓库_体力罐头 = macro.waitAndMatchLegend("仓库_体力罐头", 0.5, 5); - if (仓库_体力罐头 == null) { - Logger.info("无体力宝箱"); - return; - } else { - Logger.info("领取体力罐头"); - macro.mouseLeftClick(仓库_体力罐头); - macro.delay(1000); - - ViewRect 仓库_体力罐头领取 = macro.matchLegend("仓库_体力罐头领取", 0.6); - if (仓库_体力罐头领取 != null) { - macro.mouseLeftClick(仓库_体力罐头领取); - } - } - macro.delay(2000); - } -} 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 d4370f8..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_任务奖励领取.java +++ /dev/null @@ -1,186 +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 { - - String[] numColor = new String[]{ - "#f15252", - "#fe3838", - "#e33335", - "#f23335", - "#e12929", - "#f65455", - "#d44446", - "#871829", - "#c22526", - "#e92f2f", - "#d02020", - "#b64046", - "#cb4840", - "#f93a3a", - "#962433", - "#f73132", - "#c82a28", - "#c21b1d", - "#e22424", - "#fd3e3e", - "#ff3939", - "#a42e38", - "#c83532", - "#f83838", - "#ccb7c9", - "#c89dab", - "#c58794", - "#c58592", - "#c68b98", - "#c699a8", - "#cab4c4", - "#c894a1", - "#c7484c", - "#c73d40", - "#c4383a", - "#c7393a", - "#c8474b", - "#c65e64", - "#ce5252", - "#c3696b", - "#fb5d5d", - "#fe3535", - "#fe3535", - "#d4262d", - }; - - public Task_任务奖励领取(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - isReady(); - - Logger.info("检测任务奖励"); - boolean hasColor = macro.hasColor(macro.of(38, 751, 56, 765), numColor); - if (!hasColor) { - Logger.info("无任务奖励,跳过"); - return; - } - Logger.info("进入任务页面,领取奖励"); - 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 (章节任务) { - Logger.info("领取章节任务"); - macro.mouseLeftClick(macro.of(158, 849, 171, 857)); - macro.delay(500); - ViewRect 领取; - do { - 领取 = macro.matchLegend("任务奖励_底部领取按钮", 0.9); - if (领取 != null) { - macro.mouseLeftClick(领取); - } - ViewRect 底部领取 = macro.matchLegend("任务奖励_底部领取按钮", 0.9); - if (底部领取 != null) { - 领取 = 底部领取; - macro.mouseLeftClick(底部领取); - macro.delay(1000); - - ViewRect 任务奖励_点击退出 = macro.waitAndMatchLegend("任务奖励_点击退出", 0.5, 5); - if (任务奖励_点击退出 != null) { - macro.mouseLeftClick(任务奖励_点击退出); - macro.delay(500); - } - } - } while (领取 != null); - } - - Logger.info("检测成长任务"); - boolean 成长任务 = macro.hasColor(macro.of(330, 848, 342, 857), numColor); - if (成长任务) { - Logger.info("领取成长任务"); - macro.mouseLeftClick(macro.of(330, 848, 342, 857)); - macro.delay(500); - ViewRect 领取; - do { - 领取 = macro.matchLegend("任务奖励_领取按钮", 0.9); - if (领取 != null) { - macro.mouseLeftClick(领取); - macro.delay(1000); - } - } while (领取 != null); - } - - Logger.info("检测每日任务"); - 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)); - macro.delay(500); - ViewRect 领取; - do { - 领取 = macro.matchLegend("任务奖励_领取按钮", 0.9); - if (领取 != null) { - macro.mouseLeftClick(领取); - ViewRect 任务奖励_点击退出 = macro.waitAndMatchLegend("任务奖励_点击退出", 0.5, 5); - if (任务奖励_点击退出 != null) { - macro.mouseLeftClick(任务奖励_点击退出); - macro.delay(500); - } - } - } while (领取 != null); - } - - Logger.info("检测成长任务2"); - boolean 成长任务2 = macro.hasColor(macro.of(241, 845, 257, 860), numColor); - if (成长任务2) { - Logger.info("领取成长任务"); - macro.mouseLeftClick(macro.of(241, 845, 257, 860)); - macro.delay(500); - ViewRect 领取; - do { - 领取 = macro.matchLegend("任务奖励_领取按钮", 0.5); - if (领取 != null) { - macro.mouseLeftClick(领取); - macro.delay(1000); - } - } while (领取 != null); - } - - Logger.info("检测每日任务2"); - boolean 每日任务2 = macro.hasColor(macro.of(414, 845, 430, 859), numColor); - if (每日任务2) { - Logger.info("领取每日任务"); - macro.mouseLeftClick(macro.of(414, 845, 430, 859)); - macro.delay(500); - ViewRect 领取; - do { - 领取 = macro.matchLegend("任务奖励_领取按钮", 0.5); - if (领取 != null) { - macro.mouseLeftClick(领取); - ViewRect 任务奖励_点击退出 = macro.waitAndMatchLegend("任务奖励_点击退出", 0.5, 5); - if (任务奖励_点击退出 != null) { - macro.mouseLeftClick(任务奖励_点击退出); - macro.delay(500); - } - } - } while (领取 != null); - } - - ViewRect 任务奖励_关闭 = macro.matchLegend("任务奖励_关闭", 0.9); - if (任务奖励_关闭 != null) { - Logger.info("关闭任务奖励面板"); - macro.mouseLeftClick(任务奖励_关闭); - } - macro.delay(2000); - } -} 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 279ecd2..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_定位城镇.java +++ /dev/null @@ -1,143 +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 Task_定位城镇(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - while (true) { - {// 野外返回 - ViewRect rect = macro.matchLegend("野外", 0.9); - if (rect != null) { - Logger.info("当前位置:城镇"); - macro.delay(1000); - return; - } - } - {// 仓库_体力罐头领取关闭 - ViewRect rect = macro.matchLegend("仓库_体力罐头领取关闭", 0.9); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("返回城镇"); - } - } - {// 城镇_挂机收益 - ViewRect rect = macro.matchLegend("城镇_挂机收益", 0.9); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("返回城镇"); - } - } - {// 探险返回 - ViewRect rect = macro.matchLegend("探险_返回", 0.9); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("返回城镇"); - } - } - {// 野外返回 - ViewRect rect = macro.matchLegend("城镇", 0.8); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("返回城镇"); - } - } - {// 其他页面返回 - ViewRect rect = macro.matchLegend("返回", 0.5); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("返回城镇"); - } - } - {// 侧边面板关闭 - ViewRect rect = macro.matchLegend("城镇_关闭面板", 0.6); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("关闭侧面板"); - } - } - { // 定位弹框,关闭弹框 - ViewRect rect = macro.findLegend(macro.of(450, 36, 484, 76), "城镇_礼包", 0.7); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("关闭充值广告弹框"); - } - } - { // 定位弹框,关闭弹框 - ViewRect rect = macro.findLegend(macro.of(436, 54, 465, 162), "城镇_礼包", 0.7); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("关闭充值广告弹框"); - } - } - { // 定位弹框2 - ViewRect rect = macro.findLegend(macro.of(436, 54, 465, 162), "城镇_礼包2", 0.7); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("关闭充值广告弹框"); - } - } - {// 定位离线收益 - ViewRect rect = macro.matchLegend("城镇_离线收益", 0.9); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("关闭离线收益弹框"); - } - } - macro.matchLegendAndClick("城镇_欢迎回来",0.9); - {// 无行军队列弹框 - ViewRect rect = macro.matchLegend("野外_资源无对队列", 0.9); - if (rect != null) { - macro.mouseLeftClick(macro.of(471, 250)); - Logger.info("关闭弹框无对队列弹框"); - } - } - {// 无行军队列弹框 - ViewRect rect = macro.matchLegend("野外_搜索", 0.9); - if (rect != null) { - macro.mouseLeftClick(macro.of(253, 426)); - Logger.info("关闭野外搜索弹框"); - } - } - {// 一键领取弹框 - ViewRect rect = macro.matchLegend("一键领取", 0.9); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("一键领取"); - macro.delay(500); - continue; - } - } - {// 点击任务位置退出 - ViewRect rect = macro.matchLegend("点击任意位置退出", 0.5); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("点击任意位置退出"); - macro.delay(500); - continue; - } - } - {// 每日任务 - ViewRect rect = macro.matchLegend("每日任务关闭", 0.9); - if (rect != null) { - macro.mouseLeftClick(rect); - Logger.info("关闭每日任务关闭弹框"); - } - } - {// 万象杂货铺 - ViewRect rect = macro.matchLegend("城镇_万象杂货铺关闭", 0.9); - if (rect != null) { - macro.mouseLeftClick(rect); - 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 deleted file mode 100644 index 6bb154e..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_探险奖励领取.java +++ /dev/null @@ -1,62 +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 Task_探险奖励领取(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - isReady(); - - boolean 有探险奖励 = macro.matchColor(macro.of(71,877,"#ff1e1f")); - if (!有探险奖励) { - Logger.info("探险奖励未满,跳过"); - return; - } - Logger.info("进入探险页面,领取奖励"); - macro.mouseLeftClick(macro.of(71, 877)); - - ViewRect[] viewRects = macro.waitAndMatchLegends(macro.of("探险_领取", "探险_不可领取"),0.9, 5); - if (viewRects[0] != null) { // 可以领取 - Logger.info("定位领取按钮"); - ViewRect 探险_领取 = macro.waitAndMatchLegend("探险_领取", 0.8); - if (探险_领取 == null) { - Logger.error("未检测到【探险_领取】,领取终止"); - return; - } - Logger.info("定位领取按钮成功,准备领取:{}", 探险_领取.toString()); - macro.mouseLeftClick(探险_领取); - ViewRect 探险_领取2 = macro.waitAndMatchLegend("探险_领取2", 0.8); - if (探险_领取2 == null) { - Logger.error("任务终止"); - return; - } - macro.mouseLeftClick(探险_领取2); - - ViewRect 探险_获得奖励 = macro.waitAndMatchLegend("探险_获得奖励", 0.5); - if (探险_获得奖励 == null) { - Logger.error("任务终止"); - return; - } - macro.mouseLeftClick(探险_获得奖励); - } - - if (viewRects[1] != null) { // 不可以领取 - Logger.info("探险不可领取"); - } - - ViewRect 探险_返回 = macro.waitAndMatchLegend("探险_返回", 0.8); - if (探险_返回 == null) { - Logger.error("任务终止"); - return; - } - macro.mouseLeftClick(探险_返回); - macro.delay(2000); - } -} 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 b5970f9..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_收留避难者.java +++ /dev/null @@ -1,38 +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 Task_收留避难者(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - isReady(); - - ViewRect rect = macro.matchLegend("城镇_避难者", 0.9); - if (rect == null) { - Logger.info("未发现避难者"); - return; - } - Logger.info("发现避难者,{}", rect); - - Logger.info("收留避难者"); - macro.mouseLeftClick(rect); - ViewRect rect1 = macro.waitAndMatchLegend("城镇_欢迎新成员", 0.9, 2); - if (rect1 == null) { - Logger.error("收留避难者异常"); - return; - } - - Logger.info("欢迎新成员"); - macro.mouseLeftClick(rect1); - - Logger.info("返回城镇"); - macro.delay(2000); - } -} 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 80a7c9b..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_联盟互助.java +++ /dev/null @@ -1,23 +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 Task_联盟互助(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - {// 联盟互助 - ViewRect rect = macro.matchLegend("城镇_互助", 0.9); - if (rect != null) { - macro.mouseLeftClick(rect); - 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 deleted file mode 100644 index e6767c2..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动练兵.java +++ /dev/null @@ -1,380 +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 Task_自动练兵(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - isReady(); - 盾兵自动训练(macro, viewRect); - 矛兵自动训练(macro, viewRect); - 射手自动训练(macro, viewRect); - macro.delay(2000); - } - - private void 盾兵自动训练(JMacro macro, ViewRect viewRect) { - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9); - if (viewRects[0] == null && viewRects[1] == null) { - Logger.info("面板未打开"); - Logger.info("检测面板打开按钮,打开面板"); - boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); - if (!城镇_打开面板) { - Logger.error("打开面板失败"); - return; - } - Logger.info("检测关闭按钮"); - ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); - if (城镇_关闭面板 == null) { - Logger.error("未检测到面板关闭按钮,打开失败"); - return; - } - } else { - Logger.info("面板已打开"); - } - - Logger.info("选中城镇"); - 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); - - Logger.info("检测盾兵"); - ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成盾兵", "城镇_空闲盾兵"), 0.8D, 3); - if (viewRects2 == null) { - Logger.info("检测失败"); - return; - } - if (viewRects2[0] != null) { - Logger.info("训练完成,去领取"); - macro.mouseLeftClick(viewRects2[0]); - macro.delay(1000); - - Logger.info("点击领取"); - macro.mouseLeftClick(macro.of(268, 431)); - macro.delay(1000); - - Logger.info("点击兵营"); - macro.mouseLeftClick(macro.of(268, 431)); - macro.delay(1000); - - Logger.info("点击训练"); - macro.mouseLeftClick(macro.of(355, 632)); - macro.delay(1000); - - Logger.info("检测任意位置继续"); - ViewRect 兵营_任意位置继续 = macro.waitAndMatchLegend("兵营_任意位置继续", 0.9, 2); - if (兵营_任意位置继续 != null) { - Logger.info("点击继续"); - macro.mouseLeftClick(兵营_任意位置继续); - macro.delay(1500); - } - - ViewRect 兵营_训练 = macro.waitAndMatchLegend("兵营_训练", 0.9, 2); - if (兵营_训练 == null) { - Logger.error("训练失败,未检测到兵营训练"); - return; - } - Logger.info("确认训练"); - macro.mouseLeftClick(兵营_训练); - macro.delay(1000); - - ViewRect 兵营_返回 = macro.matchLegend("兵营_返回", 0.9D); - if (兵营_返回 == null) { - Logger.error("兵营返回失败"); - return; - } - macro.mouseLeftClick(兵营_返回); - macro.delay(1000); - } - if (viewRects2[1] != null) { - Logger.info("兵营空闲,去练兵"); - macro.mouseLeftClick(viewRects2[1]); - macro.delay(1000); - - Logger.info("点击兵营"); - macro.mouseLeftClick(macro.of(268, 431)); - macro.delay(1000); - - Logger.info("点击训练"); - macro.mouseLeftClick(macro.of(355, 632)); - macro.delay(1000); - - Logger.info("检测任意位置继续"); - ViewRect 兵营_任意位置继续 = macro.waitAndMatchLegend("兵营_任意位置继续", 0.9, 2); - if (兵营_任意位置继续 != null) { - Logger.info("点击继续"); - macro.mouseLeftClick(兵营_任意位置继续); - macro.delay(1500); - } - - ViewRect 兵营_训练 = macro.waitAndMatchLegend("兵营_训练", 0.9, 2); - if (兵营_训练 == null) { - Logger.error("训练失败,未检测到兵营训练"); - return; - } - Logger.info("确认训练"); - macro.mouseLeftClick(兵营_训练); - macro.delay(1000); - - ViewRect 兵营_返回 = macro.matchLegend("兵营_返回", 0.9D); - if (兵营_返回 == null) { - Logger.error("兵营返回失败"); - return; - } - macro.mouseLeftClick(兵营_返回); - macro.delay(1000); - } - if (viewRects2[0] != null && viewRects2[1] != null) { - Logger.info("关闭面板"); - ViewRect rect = macro.matchLegend("城镇_关闭面板", 0.6); - if (rect == null) { - return; - } - macro.mouseLeftClick(rect); - macro.delay(1000); - } - } - - private void 矛兵自动训练(JMacro macro, ViewRect viewRect) { - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9); - if (viewRects[0] == null && viewRects[1] == null) { - Logger.info("面板未打开"); - Logger.info("检测面板打开按钮,打开面板"); - boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); - if (!城镇_打开面板) { - Logger.error("打开面板失败"); - return; - } - Logger.info("检测关闭按钮"); - ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); - if (城镇_关闭面板 == null) { - Logger.error("未检测到面板关闭按钮,打开失败"); - return; - } - } else { - Logger.info("面板已打开"); - } - - Logger.info("检测矛兵"); - ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成矛兵", "城镇_空闲矛兵"), 0.8D, 3); - if (viewRects2 == null) { - Logger.info("检测失败"); - return; - } - if (viewRects2[0] != null) { - Logger.info("训练完成,去领取"); - macro.mouseLeftClick(viewRects2[0]); - macro.delay(1000); - - Logger.info("点击领取"); - macro.mouseLeftClick(macro.of(268, 431)); - macro.delay(1000); - - Logger.info("点击兵营"); - macro.mouseLeftClick(macro.of(268, 431)); - macro.delay(1000); - - Logger.info("点击训练"); - macro.mouseLeftClick(macro.of(355, 632)); - macro.delay(1000); - - Logger.info("检测任意位置继续"); - ViewRect 兵营_任意位置继续 = macro.waitAndMatchLegend("兵营_任意位置继续", 0.9, 2); - if (兵营_任意位置继续 != null) { - Logger.info("点击继续"); - macro.mouseLeftClick(兵营_任意位置继续); - macro.delay(1500); - } - - ViewRect 兵营_训练 = macro.waitAndMatchLegend("兵营_训练", 0.9, 2); - if (兵营_训练 == null) { - Logger.error("训练失败,未检测到兵营训练"); - return; - } - Logger.info("确认训练"); - macro.mouseLeftClick(兵营_训练); - macro.delay(1000); - - ViewRect 兵营_返回 = macro.matchLegend("兵营_返回", 0.9D); - if (兵营_返回 == null) { - Logger.error("兵营返回失败"); - return; - } - macro.mouseLeftClick(兵营_返回); - macro.delay(1000); - } - if (viewRects2[1] != null) { - Logger.info("兵营空闲,去练兵"); - macro.mouseLeftClick(viewRects2[1]); - macro.delay(1000); - - Logger.info("点击兵营"); - macro.mouseLeftClick(macro.of(268, 431)); - macro.delay(1000); - - Logger.info("点击训练"); - macro.mouseLeftClick(macro.of(355, 632)); - macro.delay(1000); - - Logger.info("检测任意位置继续"); - ViewRect 兵营_任意位置继续 = macro.waitAndMatchLegend("兵营_任意位置继续", 0.9, 2); - if (兵营_任意位置继续 != null) { - Logger.info("点击继续"); - macro.mouseLeftClick(兵营_任意位置继续); - macro.delay(1500); - } - - ViewRect 兵营_训练 = macro.waitAndMatchLegend("兵营_训练", 0.9, 2); - if (兵营_训练 == null) { - Logger.error("训练失败,未检测到兵营训练"); - return; - } - Logger.info("确认训练"); - macro.mouseLeftClick(兵营_训练); - macro.delay(1000); - - ViewRect 兵营_返回 = macro.matchLegend("兵营_返回", 0.9D); - if (兵营_返回 == null) { - Logger.error("兵营返回失败"); - return; - } - macro.mouseLeftClick(兵营_返回); - macro.delay(1000); - } - if (viewRects2[0] != null && viewRects2[1] != null) { - Logger.info("关闭面板"); - ViewRect rect = macro.matchLegend("城镇_关闭面板", 0.6); - if (rect == null) { - Logger.error("关闭面板失败"); - return; - } - macro.mouseLeftClick(rect); - macro.delay(1000); - } - } - - private void 射手自动训练(JMacro macro, ViewRect viewRect) { - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9); - if (viewRects[0] == null && viewRects[1] == null) { - Logger.info("面板未打开"); - Logger.info("检测面板打开按钮,打开面板"); - boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); - if (!城镇_打开面板) { - Logger.error("打开面板失败"); - return; - } - Logger.info("检测关闭按钮"); - ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); - if (城镇_关闭面板 == null) { - Logger.error("未检测到面板关闭按钮,打开失败"); - return; - } - } else { - Logger.info("面板已打开"); - } - - Logger.info("检测矛兵"); - ViewRect[] viewRects2 = macro.waitAndMatchLegends(macro.of("城镇_完成射手", "城镇_空闲射手"), 0.8D, 3); - if (viewRects2 == null) { - Logger.info("检测失败"); - return; - } - if (viewRects2[0] != null) { - Logger.info("训练完成,去领取"); - macro.mouseLeftClick(viewRects2[0]); - macro.delay(1000); - - Logger.info("点击领取"); - macro.mouseLeftClick(macro.of(268, 431)); - macro.delay(1000); - - Logger.info("点击兵营"); - macro.mouseLeftClick(macro.of(268, 431)); - macro.delay(1000); - - Logger.info("点击训练"); - macro.mouseLeftClick(macro.of(355, 632)); - macro.delay(1000); - - Logger.info("检测任意位置继续"); - ViewRect 兵营_任意位置继续 = macro.waitAndMatchLegend("兵营_任意位置继续", 0.9, 2); - if (兵营_任意位置继续 != null) { - Logger.info("点击继续"); - macro.mouseLeftClick(兵营_任意位置继续); - macro.delay(1500); - } - - ViewRect 兵营_训练 = macro.waitAndMatchLegend("兵营_训练", 0.9, 2); - if (兵营_训练 == null) { - Logger.error("训练失败,未检测到兵营训练"); - } - Logger.info("确认训练"); - macro.mouseLeftClick(兵营_训练); - macro.delay(1000); - - ViewRect 兵营_返回 = macro.matchLegend("兵营_返回", 0.9D); - if (兵营_返回 == null) { - Logger.error("兵营返回失败"); - return; - } - macro.mouseLeftClick(兵营_返回); - macro.delay(1000); - } - if (viewRects2[1] != null) { - Logger.info("兵营空闲,去练兵"); - macro.mouseLeftClick(viewRects2[1]); - macro.delay(1000); - - Logger.info("点击兵营"); - macro.mouseLeftClick(macro.of(268, 431)); - macro.delay(1000); - - Logger.info("点击训练"); - macro.mouseLeftClick(macro.of(355, 632)); - macro.delay(1000); - - Logger.info("检测任意位置继续"); - ViewRect 兵营_任意位置继续 = macro.waitAndMatchLegend("兵营_任意位置继续", 0.9, 2); - if (兵营_任意位置继续 != null) { - Logger.info("点击继续"); - macro.mouseLeftClick(兵营_任意位置继续); - macro.delay(1500); - } - - ViewRect 兵营_训练 = macro.waitAndMatchLegend("兵营_训练", 0.9, 2); - if (兵营_训练 == null) { - Logger.error("训练失败,未检测到兵营训练"); - return; - } - Logger.info("确认训练"); - macro.mouseLeftClick(兵营_训练); - macro.delay(1000); - - ViewRect 兵营_返回 = macro.matchLegend("兵营_返回", 0.9D); - if (兵营_返回 == null) { - Logger.error("兵营返回失败"); - return; - } - macro.mouseLeftClick(兵营_返回); - macro.delay(1000); - } - if (viewRects2[0] != null && viewRects2[1] != null) { - Logger.info("关闭面板"); - ViewRect rect = macro.matchLegend("城镇_关闭面板", 0.6); - if (rect == null) { - return; - } - macro.mouseLeftClick(rect); - macro.delay(1000); - } - } -} 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 84e4f5e..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动采矿.java +++ /dev/null @@ -1,257 +0,0 @@ -package xyz.wbsite.jmacro.wjdr.task; - -import cn.hutool.json.JSONUtil; -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 Task_自动采矿(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - isReady(); - - ViewRect[] viewRects = macro.matchLegends(macro.of("城镇_面板1选中", "城镇_面板2选中"), 0.9); - if (viewRects[0] == null && viewRects[1] == null) { - Logger.info("面板未打开"); - Logger.info("检测面板打开按钮,打开面板"); - boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); - if (!城镇_打开面板) { - Logger.error("打开面板失败"); - return; - } - Logger.info("检测关闭按钮"); - ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); - if (城镇_关闭面板 == null) { - Logger.error("未检测到面板关闭按钮,打开失败"); - return; - } - } else { - Logger.info("面板已打开"); - } - - Logger.info("选中野外"); - macro.mouseLeftClick(macro.of(245, 200)); - macro.delay(1000); - - 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.delay(1000); - - 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("定位野外按钮成功"); - - if (队列1空闲) { - Logger.info("队列一空闲资源,派去采集生肉"); - boolean success = collect("生肉", 3); - if (!success) { // 中断采集 - return; - } - } - - 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; - } - } - - if (队列5空闲) { - Logger.info("队列一空闲资源,派去采集煤矿"); - boolean success = collect("生肉", 3); - if (!success) { // 中断采集 - return; - } - } - if (队列6空闲) { - Logger.info("队列一空闲资源,派去采集铁矿"); - boolean success = collect("木材", 3); - if (!success) { // 中断采集 - return; - } - } - - // 检测是否是搜索界面 - ViewRect 野外_任务2 = macro.matchLegend("野外_任务", 0.9); - if (野外_任务2 != null) { - Logger.info("退出资源搜索界面"); - macro.mouseLeftClick(this.viewRect); - } - - ViewRect 城1 = macro.waitAndMatchLegend("城镇", 0.9); - if (城1 == null) { - Logger.error("未检测到【城镇】,异常终止"); - return; - } - macro.mouseLeftClick(城1); - Logger.info("返回城镇"); - macro.delay(2000); - } - - /** - * @param type 资源类型 - * @param level 等级(0为重置) - * @return 采集是否结束(满队则返回true,接下来的采集也不需要了) - */ - private boolean collect(String type, int level) { - Logger.info("查看放大镜搜索"); - ViewRect 野外_放大镜搜索 = macro.waitAndMatchLegend("野外_放大镜搜索", 0.4); - if (野外_放大镜搜索 == null) { - Logger.error("未检测到【放大镜搜索】,采矿终止"); - return false; - } - - Logger.info("点击放大镜搜索按钮"); - macro.mouseLeftClick(野外_放大镜搜索); - - Logger.info("等待搜索面板"); - ViewRect 野外_搜索面板_搜索按钮 = macro.waitAndMatchLegend("野外_搜索面板_搜索按钮", 0.9); - if (野外_搜索面板_搜索按钮 == null) { - Logger.error("未检测到【待搜索面板】,采矿终止"); - return false; - } - - Logger.info("拖动面板"); - macro.mouseLeftDrag(macro.of(433, 679), macro.of(61, 682), true); - - Logger.info("定位【野外_资源搜索_{}】图标", type); - ViewRect typeRect = macro.waitAndMatchLegend("野外_资源搜索_" + type, 0.9, 2); - if (typeRect == null) { - Logger.error("定位【{}】图标失败", type); - return false; - } - - Logger.info("选择【{}】图标,坐标[{},{}]", type, typeRect.getCenter().getX(), typeRect.getCenter().getY()); - macro.mouseLeftClick(typeRect); - - switch (level) { - case 1: - macro.mouseLeftClick(macro.of(93, 777)); - break; - case 2: - macro.mouseLeftClick(macro.of(125, 777)); - break; - case 3: - macro.mouseLeftClick(macro.of(158, 777)); - break; - case 4: - macro.mouseLeftClick(macro.of(192, 777)); - break; - case 5: - macro.mouseLeftClick(macro.of(223, 777)); - break; - case 6: - macro.mouseLeftClick(macro.of(256, 777)); - break; - case 7: - macro.mouseLeftClick(macro.of(288, 777)); - break; - case 8: - macro.mouseLeftClick(macro.of(321, 777)); - break; - } - - ViewRect 野外_资源搜索 = macro.matchLegend("野外_资源搜索", 0.9); - if (野外_资源搜索 == null) { - Logger.error("定位【野外_资源搜索】失败,采矿终止"); - return false; - } - - Logger.info("点击搜索{}{}级矿", type, level); - macro.mouseLeftClick(野外_资源搜索); - - macro.delayUnstable(1500); - ViewRect 采集 = macro.waitAndMatchLegend("野外_资源采集", 0.8); - if (采集 != null) { - Logger.info("点击采集"); - macro.mouseLeftClick(采集); - - ViewRect[] viewRects = macro.waitAndMatchLegends(macro.of("野外_资源出征", "野外_资源无对队列", "野外_资源无士兵"), 0.9); - if (viewRects[0] != null) { - Logger.info("出征"); - macro.mouseLeftClick(viewRects[0]); - return true; - } - if (viewRects[1] != null) { - Logger.info("队列已满,取消采集"); - macro.mouseLeftClick(macro.of(471, 250)); - return false; - } - if (viewRects[2] != null) { - Logger.info("士兵不足,取消采集"); - macro.mouseLeftClick(macro.of(32, 30)); - return false; - } - } else if (level > 1) { // 当前等级无资源,降低资源等级 - return collect(type, level - 1); - } - - return true; - } -} 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 f82350b..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_自动野怪.java +++ /dev/null @@ -1,335 +0,0 @@ -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; -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) { - isReady(); - - 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("城镇_面板1选中", "城镇_面板2选中"), 0.9); - if (viewRects[0] == null && viewRects[1] == null) { - Logger.info("面板未打开"); - Logger.info("检测面板打开按钮,打开面板"); - boolean 城镇_打开面板 = macro.matchLegendAndClick("城镇_打开面板", 0.6); - if (!城镇_打开面板) { - Logger.error("打开面板失败"); - return; - } - Logger.info("检测关闭按钮"); - ViewRect 城镇_关闭面板 = macro.matchLegend("城镇_关闭面板", 0.6); - if (城镇_关闭面板 == null) { - Logger.error("未检测到面板关闭按钮,打开失败"); - return; - } - } else { - Logger.info("面板已打开"); - } - - Logger.info("选中野外"); - macro.mouseLeftClick(macro.of(245, 200)); - macro.delay(1000); - - 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.8); - if (野外 == null) { - Logger.error("定位【野外】失败,刷怪终止"); - return; - } - Logger.info("定位【野外】成功,{}", 野外.toString()); - - Logger.info("点击【野外】,坐标{}", JSONUtil.toJsonStr(野外.getCenter())); - macro.mouseLeftClick(野外); - macro.delayUnstable(); - Logger.info("定位野外按钮成功"); - - if (队列1空闲) { - Logger.info("队列一派去打野怪"); - boolean success = challenge(15); - if (!success) { // 中断采集 - return; - } - } - - if (队列2空闲) { - Logger.info("队列一派去打野怪"); - boolean success = challenge(15); - if (!success) { // 中断采集 - return; - } - } - if (队列3空闲) { - Logger.info("队列一派去打野怪"); - boolean success = challenge(15); - if (!success) { // 中断采集 - return; - } - } - if (队列4空闲) { - Logger.info("队列一派去打野怪"); - boolean success = challenge(15); - if (!success) { // 中断采集 - return; - } - } - - if (队列5空闲) { - Logger.info("队列一派去打野怪"); - boolean success = challenge(15); - if (!success) { // 中断采集 - return; - } - } - if (队列6空闲) { - Logger.info("队列一派去打野怪"); - boolean success = challenge(15); - if (!success) { // 中断采集 - return; - } - } - - // 检测是否是搜索界面 - ViewRect 野外_任务2 = macro.matchLegend("野外_任务", 0.9); - if (野外_任务2 != null) { - Logger.info("退出资源搜索界面"); - macro.mouseLeftClick(this.viewRect); - } - - ViewRect 城1 = macro.waitAndMatchLegend("城镇", 0.6); - if (城1 == null) { - Logger.error("未检测到【城镇】,异常终止"); - return; - } - macro.mouseLeftClick(城1); - Logger.info("返回城镇"); - macro.delay(2000); - } - - /** - * @param level 等级(0为重置) - * @return 采集是否结束(满队则返回true,接下来的采集也不需要了) - */ - private boolean challenge(int level) { - Logger.info("查看放大镜搜索"); - ViewRect 野外_放大镜搜索 = macro.waitAndMatchLegend("野外_放大镜搜索", 0.4); - if (野外_放大镜搜索 == null) { - Logger.error("未检测到【放大镜搜索】,采矿终止"); - return false; - } - - Logger.info("点击放大镜搜索按钮"); - macro.mouseLeftClick(野外_放大镜搜索); - - Logger.info("等待搜索面板"); - ViewRect 野外_搜索面板_搜索按钮 = macro.waitAndMatchLegend("野外_搜索面板_搜索按钮", 0.6); - if (野外_搜索面板_搜索按钮 == null) { - Logger.error("未检测到【待搜索面板】,采矿终止"); - return false; - } - - Logger.info("点击野兽"); - macro.mouseLeftDrag(macro.of(61, 682), macro.of(433, 679), true); - macro.delay(1000); - macro.mouseLeftClick(macro.of(60, 677)); - macro.delay(1000); - - switch (level) { - case 1: - macro.mouseLeftClick(macro.of(93, 778)); - break; - case 2: - macro.mouseLeftClick(macro.of(101, 778)); - break; - case 3: - macro.mouseLeftClick(macro.of(109, 778)); - break; - case 4: - macro.mouseLeftClick(macro.of(117, 778)); - break; - case 5: - macro.mouseLeftClick(macro.of(125, 778)); - break; - case 6: - macro.mouseLeftClick(macro.of(133, 778)); - break; - case 7: - macro.mouseLeftClick(macro.of(141, 778)); - break; - case 8: - macro.mouseLeftClick(macro.of(149, 778)); - break; - case 9: - macro.mouseLeftClick(macro.of(157, 778)); - break; - case 10: - macro.mouseLeftClick(macro.of(165, 778)); - break; - case 11: - macro.mouseLeftClick(macro.of(173, 778)); - break; - case 12: - macro.mouseLeftClick(macro.of(181, 778)); - break; - case 13: - macro.mouseLeftClick(macro.of(189, 778)); - break; - case 14: - macro.mouseLeftClick(macro.of(197, 778)); - break; - case 15: - macro.mouseLeftClick(macro.of(205, 778)); - break; - case 16: - macro.mouseLeftClick(macro.of(213, 778)); - break; - case 17: - macro.mouseLeftClick(macro.of(221, 778)); - break; - case 18: - macro.mouseLeftClick(macro.of(229, 778)); - break; - case 19: - macro.mouseLeftClick(macro.of(237, 778)); - break; - case 20: - macro.mouseLeftClick(macro.of(245, 778)); - break; - case 21: - macro.mouseLeftClick(macro.of(253, 778)); - break; - case 22: - macro.mouseLeftClick(macro.of(261, 778)); - break; - case 23: - macro.mouseLeftClick(macro.of(269, 778)); - break; - case 24: - macro.mouseLeftClick(macro.of(277, 778)); - break; - case 25: - macro.mouseLeftClick(macro.of(285, 778)); - break; - case 26: - macro.mouseLeftClick(macro.of(293, 778)); - break; - case 27: - macro.mouseLeftClick(macro.of(301, 778)); - break; - case 28: - macro.mouseLeftClick(macro.of(309, 778)); - break; - case 29: - macro.mouseLeftClick(macro.of(317, 778)); - break; - case 30: - macro.mouseLeftClick(macro.of(325, 778)); - break; - } - - ViewRect 野外_资源搜索 = macro.matchLegend("野外_资源搜索", 0.6); - if (野外_资源搜索 == null) { - Logger.error("定位【野外_资源搜索】失败,挑战终止"); - return false; - } - - Logger.info("点击搜索{}级野怪", level); - macro.mouseLeftClick(野外_资源搜索); - macro.delay(1500); - - ViewRect 野外_攻击 = macro.waitAndMatchLegend("野外_攻击", 0.6); - if (野外_攻击 != null) { - macro.mouseLeftClick(野外_攻击); - macro.delay(1000); - - boolean 野外_攻击平均配置 = macro.findLegendAndClick(macro.of(110, 842, 282, 909), "野外_攻击平均配置", 0.6); - if (!野外_攻击平均配置) Logger.error("查找点击平均异常"); - macro.delay(1000); - - boolean 体力不足 = macro.hasColor(macro.of(405, 899, 427, 915), "#f43b3b"); - if (体力不足) { - Logger.info("体力不足,取消"); - macro.matchLegendAndClick("自动野怪_返回", 0.6); - return false; - } - - ViewRect[] viewRects = macro.waitAndMatchLegends(macro.of("野外_攻击出征", "野外_资源无对队列"), 0.6); - if (viewRects[0] != null) { - Logger.info("出征"); - macro.mouseLeftClick(viewRects[0]); - return true; - } - if (viewRects[1] != null) { - Logger.info("队列已满,取消采集"); - macro.mouseLeftClick(macro.of(471, 250)); - return false; - } - if (viewRects[2] != null) { - Logger.info("士兵不足,取消采集"); - macro.mouseLeftClick(macro.of(32, 30)); - return false; - } - } - - return true; - } -} 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 5e9fd8f..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_英雄招募领取.java +++ /dev/null @@ -1,102 +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 Task_英雄招募领取(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - isReady(); - - 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.8, 4); - if (点击任意位置退出 != null) { - Logger.info("点击任意位置退出"); - macro.mouseLeftClick(点击任意位置退出); - macro.delay(1500); - } - } - - { - Logger.info("检测奖励清单"); - ViewRect 点击任意位置退出 = macro.waitAndMatchLegend("英雄招募_奖励清单", 0.8, 4); - if (点击任意位置退出 != null) { - Logger.info("点击任意位置退出"); - macro.mouseLeftClick(点击任意位置退出); - macro.delay(1500); - } - } - } - } - { - boolean 英雄招募_史诗招募 = macro.matchLegendAndClick("英雄招募_史诗招募", 0.8); - if (英雄招募_史诗招募) { - macro.delay(500); - macro.mouseLeftClick(macro.getFocusRect()); - macro.delay(1000); - - { - Logger.info("检测任意位置继续"); - ViewRect 点击任意位置退出 = macro.waitAndMatchLegend("英雄招募_奖励清单", 0.9, 4); - if (点击任意位置退出 != null) { - Logger.info("点击任意位置退出"); - macro.mouseLeftClick(点击任意位置退出); - macro.delay(1500); - } - } - - { - Logger.info("检测任意位置继续"); - ViewRect 点击任意位置退出 = macro.waitAndMatchLegend("英雄招募_奖励清单", 0.9, 4); - if (点击任意位置退出 != null) { - Logger.info("点击任意位置退出"); - macro.mouseLeftClick(点击任意位置退出); - macro.delay(1500); - } - } - } - } - - macro.matchLegendAndClick("英雄招募_返回", 0.9); - macro.delay(2000); - } -} 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 6371a2c..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_邮件奖励领取.java +++ /dev/null @@ -1,161 +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 { - - - String[] numColor = new String[]{ - "#f15252", - "#fe3838", - "#e33335", - "#f23335", - "#e12929", - "#f65455", - "#d44446", - "#871829", - "#c22526", - "#e92f2f", - "#d02020", - "#b64046", - "#cb4840", - "#f93a3a", - "#962433", - "#f73132", - "#c82a28", - "#c21b1d", - "#e22424", - "#fd3e3e", - "#ff3939", - "#a42e38", - "#c83532", - "#f83838", - "#ccb7c9", - "#c89dab", - "#c58794", - "#c58592", - "#c68b98", - "#c699a8", - "#cab4c4", - "#c894a1", - "#c7484c", - "#c73d40", - "#c4383a", - "#c7393a", - "#c8474b", - "#c65e64", - "#ce5252", - "#c3696b", - "#fb5d5d", - "#fe3535", - "#fe3535", - "#d4262d", - }; - - public Task_邮件奖励领取(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - isReady(); - - Logger.info("检测邮箱待领取礼包"); - - boolean hasColor = macro.hasColor(macro.of(503,745,518,756), numColor); - if (!hasColor) { - Logger.info("邮箱无待领取礼包"); - return; - } - - Logger.info("点击邮箱"); - macro.mouseLeftClick(macro.of(505, 750)); - macro.delay(1000); - - // 战争 - if (macro.hasColor(macro.of(92,64,111,77), numColor)) { - macro.mouseLeftClick(macro.of(99,71)); - macro.delay(500); - - ViewRect 一键已读领取 = macro.waitAndMatchLegend("一键已读领取", 0.9, 2); - if (一键已读领取 == null) { - Logger.info("异常结束"); - return; - } - macro.mouseLeftClick(一键已读领取); - - ViewRect 点击任意位置退出 = macro.waitAndMatchLegend("邮件_获得奖励", 0.5, 5); - if (点击任意位置退出 != null) { - Logger.info("点击获得奖励退出"); - macro.mouseLeftClick(点击任意位置退出); - macro.delay(500); - } - } - - // 联盟 - if (macro.hasColor(macro.of(187,68,209,83), numColor)) { - 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, 5); - if (点击任意位置退出 != null) { - Logger.info("点击获得奖励退出"); - macro.mouseLeftClick(点击任意位置退出); - macro.delay(500); - } - } - - // 系统 - if (macro.hasColor(macro.of(291,62,311,78), numColor)) { - macro.mouseLeftClick(macro.of(297, 70)); - macro.delay(500); - - ViewRect 一键已读领取 = macro.waitAndMatchLegend("一键已读领取", 0.9, 2); - if (一键已读领取 == null) { - Logger.info("异常结束"); - return; - } - macro.mouseLeftClick(一键已读领取); - - ViewRect 点击任意位置退出 = macro.waitAndMatchLegend("邮件_获得奖励", 0.5, 5); - if (点击任意位置退出 != null) { - Logger.info("点击获得奖励退出"); - macro.mouseLeftClick(点击任意位置退出); - macro.delay(500); - } - } - - // 报告 - if (macro.hasColor(macro.of(390,64,411,77), numColor)) { - macro.mouseLeftClick(macro.of(398, 71)); - macro.delay(500); - - ViewRect 一键已读领取 = macro.waitAndMatchLegend("一键已读领取", 0.9); - if (一键已读领取 == null) { - Logger.info("异常结束"); - return; - } - macro.mouseLeftClick(一键已读领取); - - ViewRect 点击任意位置退出 = macro.waitAndMatchLegend("邮件_获得奖励", 0.5, 5); - if (点击任意位置退出 != null) { - Logger.info("点击获得奖励退出"); - macro.mouseLeftClick(点击任意位置退出); - macro.delay(500); - } - } - - Logger.info("返回城镇"); - macro.matchLegendAndClick("邮件_返回", 0.9); - macro.delay(2000); - } -} 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 4ba6bef..0000000 --- a/src/main/java/xyz/wbsite/jmacro/wjdr/task/Task_采矿被攻击.java +++ /dev/null @@ -1,19 +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 Task_采矿被攻击(JMacro macro, ViewRect viewRect) { - super(macro, viewRect); - } - - @Override - public void task(JMacro macro, ViewRect viewRect) { - isReady(); - - Logger.info("开发中..."); - } -} diff --git a/src/main/java/xyz/wbsite/jtask/TaskImpl.java b/src/main/java/xyz/wbsite/jtask/TaskImpl.java new file mode 100644 index 0000000..963994a --- /dev/null +++ b/src/main/java/xyz/wbsite/jtask/TaskImpl.java @@ -0,0 +1,64 @@ +package xyz.wbsite.jtask; + +import cn.hutool.core.util.RandomUtil; +import xyz.wbsite.jmacro.JMacro; +import xyz.wbsite.jmacro.base.ViewRect; +import xyz.wbsite.jmacro.util.Logger; + +/** + * 无尽冬日脚本 + * + * @author wangbing + * @version 0.0.1 + * @since 1.8 + */ +public class TaskImpl extends JMacro { + + @Override + public synchronized ViewRect focus() { + Logger.info("定位工作窗口"); + ViewRect rect = getScreenRect(); + Logger.info("聚焦窗口:" + rect.toString()); + Logger.info("聚焦窗口大小:{}x{}", rect.getRight() - rect.getLeft(), rect.getBottom() - rect.getTop()); + return rect; + } + + @Override + public void run() { + // 此处我们模拟一个简单的脚本 + // 比如在window11打开我的电脑再关闭 + Logger.info("启动任务"); + + Logger.info("查找我的电脑图标"); +// ViewRect launch = findLegend("我的电脑", 0.9); +// if (launch == null) { +// Logger.error("未找到我的电脑图标"); +// return; +// } +// +// Logger.info("启动图标坐标:", launch.toString()); +// Logger.info("移动鼠标"); +// mouseMove(launch.getCenter(), true); +// Logger.info("双击我的电脑"); +// mouseLeftDoubleClick(launch); +// Logger.info("等待程序启动中,请稍等..."); +// delay(5 * 1000); +// +// ViewRect windows = findLegend("我的电脑窗口", 0.9); +// if (windows == null) { +// Logger.error("我的电脑启动失败"); +// return; +// } +// Logger.info("定位到我的电脑窗口"); +// Logger.info("移动鼠标"); +// mouseMove(windows.getCenter().offsetX(100), true); +// mouseLeftClick(windows.getCenter().offsetX(100)); +// Logger.info("等待3秒后自动关闭"); +// delay(3 * 1000); +// + Logger.info("结束任务"); + int randomInt = RandomUtil.randomInt(5, 10); + Logger.info("随机休眠{}分钟", randomInt); + delay(randomInt * 60 * 1000); + } +}