/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_主线任务); FlowLogicHelper.RepeatRun(() => { if (DMService.Instance.FindStr(dmGuid, new WxRect(550, 418, 634, 446), "领取|接受", $"{WlyColor.Normal}|{WlyColor.White}")) { DMService.Instance.LeftClick(dmGuid, new WxPoint(592, 436)); } if (DMService.Instance.FindStr(dmGuid, new WxRect(550, 418, 634, 446), "取消", $"{WlyColor.Normal}|{WlyColor.White}")) { return(true); } return(false); }, TimeSpan.FromSeconds(20)); WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_每日任务); var key = false; FlowLogicHelper.RepeatRun(() => { if (DMService.Instance.FindColor(dmGuid, "4bd8b0-000000", new WxRect(765, 244, 784, 261))) { DMService.Instance.LeftClick(dmGuid, new WxPoint(721, 220)); } if (DMService.Instance.FindColor(dmGuid, "418674-000000", new WxRect(765, 244, 784, 261))) { return(true); } if (DMService.Instance.FindColor(dmGuid, "101b19-000000", new WxRect(new WxPoint(682, 192), 10, 10))) { key = true; return(true); } return(false); }, TimeSpan.FromSeconds(20)); return(key ? new WlyTaskInfo(ID, true) : new WlyTaskInfo(ID, DateTime.Now.Add(m_interval))); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_生产); Thread.Sleep(1000); // 勾选使用3金币进行暴击 if (!DMService.Instance.FindColor(dmGuid, WlyColor.Normal, new WxRect(534, 236, 566, 255))) { DMService.Instance.LeftClick(dmGuid, new WxPoint(520, 245)); } var wait = FlowLogicHelper.RepeatRun(() => { var result = WlyUtilityBiz.GetAmount(dmGuid, new WxRect(575, 420, 599, 437), "f3f3da-000000", out var amount); if (result && (amount == 0)) { return(true); } if (DMService.Instance.FindStr(dmGuid, new WxRect(458, 260, 521, 294), "金币", "ffff00-000000")) { DMService.Instance.LeftClick(dmGuid, new WxPoint(545, 357)); } FlowLogicHelper.RepeatRun(() => DMService.Instance.LeftClick(dmGuid, new WxPoint(554, 457), TimeSpan.FromMilliseconds(200)), amount); Thread.Sleep(1000); return(false); }, TimeSpan.FromSeconds(30)); if (wait) { Thread.Sleep(1000); if (DMService.Instance.FindStr(dmGuid, new WxRect(531, 342, 561, 364), "取消", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(548, 353)); } // 卖出商品 DMService.Instance.LeftClick(dmGuid, new WxPoint(710, 456)); return(new WlyTaskInfo(ID, true)); } return(new WlyTaskInfo(ID, DateTime.Now.AddHours(1))); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_船坞); for (int i = 0; i < 10; i++) { DMService.Instance.LeftClick(dmGuid, new WxPoint(651, 470)); if (DMService.Instance.FindStr(dmGuid, new WxRect(535, 203, 618, 456), "修理", WlyColor.Normal, out var x, out var y)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(x, y)); } } return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_仓库); // 如果花费0金币则 开启 var result = DMService.Instance.FindStr(dmGuid, new WxRect(390, 464, 434, 490), "0金币", "ffff00-000000"); if (result) { DMService.Instance.LeftClick(dmGuid, new WxPoint(411, 456)); DMService.Instance.LeftClick(dmGuid, new WxPoint(451, 332)); } return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 征召士兵 /// </summary> /// <param name="dmGuid"></param> public static void GetSoldier(string dmGuid) { WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_征兵); FlowLogicHelper.RepeatRun(() => { if (DMService.Instance.FindStr(dmGuid, new WxRect(634, 410, 704, 439), "募集", $"{WlyColor.Normal}|{WlyColor.White}")) { FlowLogicHelper.RepeatRun(() => DMService.Instance.LeftClick(dmGuid, new WxPoint(664, 425), TimeSpan.FromMilliseconds(100)), 10); return(false); } return(true); }, TimeSpan.FromSeconds(10)); DMService.Instance.LeftClick(dmGuid, new WxPoint(562, 261)); DMService.Instance.LeftClick(dmGuid, new WxPoint(666, 292)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_团战报名); var day = WlyUtilityBiz.SystemInfo.GameTime; if (day.Contains("夏") || day.Contains("秋")) { DMService.Instance.LeftClick(dmGuid, new WxPoint(693, 231), TimeSpan.FromSeconds(1)); DMService.Instance.LeftClick(dmGuid, new WxPoint(346, 479), TimeSpan.FromSeconds(1)); if (DMService.Instance.FindStr(dmGuid, new WxRect(438, 268, 570, 369), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(499, 331)); } DMService.Instance.LeftClick(dmGuid, new WxPoint(560, 225)); if (DMService.Instance.FindColor(dmGuid, "ffffff-000000", new WxRect(503, 253, 536, 264))) { DMService.Instance.LeftClick(dmGuid, new WxPoint(519, 259)); DMService.Instance.LeftClick(dmGuid, new WxPoint(693, 231), TimeSpan.FromSeconds(1)); DMService.Instance.LeftClick(dmGuid, new WxPoint(346, 479), TimeSpan.FromSeconds(1)); if (DMService.Instance.FindStr(dmGuid, new WxRect(438, 268, 570, 369), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(499, 331)); } } } if (DMService.Instance.FindColor(dmGuid, "f3f3da-000000", new WxRect(347, 222, 400, 242))) { DMService.Instance.LeftClick(dmGuid, new WxPoint(372, 231)); DMService.Instance.LeftClick(dmGuid, new WxPoint(343, 478)); if (DMService.Instance.FindStr(dmGuid, new WxRect(438, 268, 570, 369), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(499, 331)); } } return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_委派); // 主城等级大于100时自动卖出 if (entity.AccountInfo.GetBuildingInfo(WlyBuildingType.主城).Level >= 100) { // 设置自动卖出 DMService.Instance.LeftClick(dmGuid, new WxPoint(251, 473)); DMService.Instance.LeftClick(dmGuid, new WxPoint(442, 341)); DMService.Instance.LeftClick(dmGuid, new WxPoint(493, 395)); } // 开始委派 var wait = FlowLogicHelper.RepeatRun(() => { if (WlyUtilityBiz.GetAmount(dmGuid, new WxRect(294, 429, 312, 449), "fce69a-000000", out var count) && (count == 0)) { return(true); } if (DMService.Instance.FindStr(dmGuid, new WxRect(524, 338, 569, 367), "取消", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(548, 351)); } FlowLogicHelper.RepeatRun(() => DMService.Instance.LeftClick(dmGuid, new WxPoint(257, 368), TimeSpan.FromMilliseconds(200)), count); Thread.Sleep(1000); return(false); }, TimeSpan.FromSeconds(30)); if (DMService.Instance.FindStr(dmGuid, new WxRect(483, 384, 517, 409), "免费", "ffff00-000000")) { DMService.Instance.LeftClick(dmGuid, new WxPoint(496, 367)); } if (wait) { return(new WlyTaskInfo(ID, true)); } return(new WlyTaskInfo(ID, DateTime.Now.Add(TimeSpan.FromMinutes(30)))); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_出航贸易); Thread.Sleep(1000); if (WlyUtilityBiz.GetAmount(dmGuid, new WxRect(642, 561, 663, 588), "31f101-000000", out var count) && (count == 0)) { return(new WlyTaskInfo(ID, DateTime.Now.AddMinutes(30))); } var targets = DMService.Instance.FindPics(dmGuid, WlyPicType.打劫目标, new WxRect(110, 179, 931, 536)); foreach (var target in targets) { DMService.Instance.LeftClick(dmGuid, target); var wait = DMService.Instance.FindStr(dmGuid, new WxRect(110, 179, 931, 536), "名称", WlyColor.Normal, out var x, out var y); if (!wait) { continue; } if (DMService.Instance.FindStr(dmGuid, new WxRect(x - 5, y - 5, x + 150, y + 50), "墨君", WlyColor.White)) { var nextTime = WlyUtilityBiz.GetTime(dmGuid, new WxRect(x, y, x + 100, y + 100), WlyColor.Selected); if (nextTime == TimeSpan.Zero) { DMService.Instance.LeftClick(dmGuid, new WxPoint(706, 577)); nextTime = TimeSpan.FromMinutes(10); } if (DMService.Instance.FindStr(dmGuid, new WxRect(480, 318, 519, 342), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(499, 331)); } return(new WlyTaskInfo(ID, DateTime.Now.Add(nextTime))); } } return(new WlyTaskInfo(ID, DateTime.Now.AddMinutes(30))); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_巡查); // 获取剩余巡查次数 var countRect = new WxRect(463, 447, 498, 464); var countStr = DMService.Instance.GetWords(dmGuid, countRect, "20ef4c-000000"); var count = int.Parse(countStr.Split('/')[0]); if (count == 0) { return(new WlyTaskInfo(ID, true)); } // 如果已经正在巡查了,则直接返回即可 var autoRect = new WxRect(636, 445, 708, 469); if (!DMService.Instance.FindStr(dmGuid, autoRect, "停止自动", WlyColor.Normal)) { // 点击巡查 DMService.Instance.LeftClick(dmGuid, new WxPoint(670, 456)); // 判断是否目标为公主 if (!DMService.Instance.FindStr(dmGuid, new WxRect(578, 268, 611, 290), "公主", "e9e7cf-000000")) { DMService.Instance.LeftClick(dmGuid, new WxPoint(637, 278)); DMService.Instance.LeftClick(dmGuid, new WxPoint(596, 330)); } // 开始巡查 DMService.Instance.LeftClick(dmGuid, new WxPoint(439, 364)); } // 五分钟后再次执行 return(new WlyTaskInfo(ID) { NextRunTime = DateTime.Now.AddMinutes(5) }); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; // 进入打猎界面 WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_打猎); Thread.Sleep(1000); while (true) { if (WlyUtilityBiz.GetAmount(dmGuid, new WxRect(324, 498, 339, 520), "e9e7cf-000000", out var amount) && (amount == 0)) { break; } DMService.Instance.LeftClick(dmGuid, new WxPoint(502, 253)); DMService.Instance.LeftClick(dmGuid, new WxPoint(454, 352), TimeSpan.FromSeconds(5)); } return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { if (!entity.AccountInfo.GetSwitchInfo(WlySwitchType.群雄逐鹿).Enable) { return(new WlyTaskInfo(ID, true)); } var dmGuid = entity.DMGuid; // 计算时间 WlyViewMgr.GoTo(dmGuid, WlyViewType.日常_群雄逐鹿); var result = DMService.Instance.FindStr(dmGuid, new WxRect(462, 360, 530, 391), "开始匹配", WlyColor.Normal); if (result) { DMService.Instance.LeftClick(dmGuid, new WxPoint(491, 376)); } return(new WlyTaskInfo(ID, DateTime.Now.AddMinutes(2))); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_酒馆); Thread.Sleep(1000); FlowLogicHelper.RepeatRun(() => { // 计算次数 if (WlyUtilityBiz.GetAmount(dmGuid, new WxRect(466, 526, 477, 541), WlyColor.Normal, out var count) && (count == 0)) { return(true); } // 首先检测是否有特殊人物 if (Special(entity)) { } else if (DMService.Instance.FindStr(dmGuid, new WxRect(554, 576, 617, 599), "免费使用", "ff6600-000000")) { // 检测是否可以免费喝酒 DMService.Instance.LeftClick(dmGuid, new WxPoint(584, 565)); DMService.Instance.LeftClick(dmGuid, new WxPoint(454, 331), TimeSpan.FromSeconds(1)); } else if (DMService.Instance.FindStr(dmGuid, new WxRect(414, 575, 472, 599), "免费使用", "ff6600-000000")) { // 检测是否可以免费另寻他城 DMService.Instance.LeftClick(dmGuid, new WxPoint(445, 563)); DMService.Instance.LeftClick(dmGuid, new WxPoint(454, 331), TimeSpan.FromSeconds(1)); } else { // 直接点击 DMService.Instance.LeftClick(dmGuid, new WxPoint(89, 116)); } return(false); }, TimeSpan.FromSeconds(30)); return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_寻访); int GetLastTime() { var countStr = DMService.Instance.GetWords(dmGuid, new WxRect(462, 465, 501, 482), "20ef4c-000000"); var result = int.TryParse(countStr.Split('/')[0], out var count); if (result) { return(count); } return(0); } while (GetLastTime() > 0) { var result = DMService.Instance.FindStr(dmGuid, new WxRect(401, 275, 903, 307), "商贾", WlyColor.Purple, out var x, out var y); DMService.Instance.LeftClick(dmGuid, result ? new WxPoint(x, y) : new WxPoint(573, 474), TimeSpan.FromSeconds(1)); if (DMService.Instance.FindStr(dmGuid, new WxRect(491, 266, 523, 283), "丝绸", WlyColor.Yellow)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(546, 355)); } if (DMService.Instance.FindStr(dmGuid, new WxRect(435, 333, 472, 367), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(458, 315)); DMService.Instance.LeftClick(dmGuid, new WxPoint(455, 352)); } } return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_普通砸罐); Thread.Sleep(2000); var startPoint = new WxPoint(428, 261); while (!DMService.Instance.FindStr(dmGuid, new WxRect(801, 351, 842, 384), "需要", WlyColor.Selected)) { for (var i = 0; i < 2; i++) { for (var j = 0; j < 4; j++) { var point = startPoint.Shift(i * 86, j * 88); DMService.Instance.LeftClick(dmGuid, point, TimeSpan.FromMilliseconds(600)); } } } return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyProgressMgr.GoTo(dmGuid, 4); // 点开军团 DMService.Instance.LeftClick(dmGuid, new WxPoint(831, 188), TimeSpan.FromSeconds(1)); DMService.Instance.LeftClick(dmGuid, new WxPoint(581, 303), TimeSpan.FromSeconds(1)); DMService.Instance.LeftClick(dmGuid, new WxPoint(724, 475), TimeSpan.FromSeconds(1)); // 一直死循环点击就行了 while (true) { DMService.Instance.LeftClick(dmGuid, new WxPoint(321, 476), TimeSpan.FromMilliseconds(5200)); var view = WlyViewMgr.GetView(WlyViewType.略_防沉迷验证); if (view.IsCurrentView(dmGuid)) { view.Exit(dmGuid); } } }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { //var start = DateTime.Today.AddHours(18); //var end = DateTime.Today.AddHours(19).AddMinutes(30); //if (DateTime.Now < start) //{ // return new WlyTaskInfo(ID, start); //} //if (DateTime.Now > end) //{ // return new WlyTaskInfo(ID, true); //} var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_王位争夺战); // 报名 DMService.Instance.LeftClick(dmGuid, new WxPoint(396, 557)); return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; if (entity.AccountInfo.GetBuildingInfo(WlyBuildingType.主城).Level >= 100) { WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_升级科技); DMService.Instance.LeftClick(dmGuid, new WxPoint(524, 473)); DMService.Instance.LeftClick(dmGuid, new WxPoint(455, 333)); } var result = WlyTechnologyMgr.UpgradeTechnology(m_level, dmGuid); if (result) { return(new WlyTaskInfo(ID, true)); } return(new WlyTaskInfo(ID) { NextRunTime = DateTime.Now.AddMinutes(30) }); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_古代战场); DMService.Instance.LeftClick(dmGuid, new WxPoint(493, 444)); var wait = FlowLogicHelper.RepeatRun(() => DMService.Instance.FindStr(dmGuid, new WxRect(449, 77, 504, 94), "剩余时间", "00fc39-000000"), TimeSpan.FromSeconds(60)); if (!wait) { throw new InvalidOperationException("无法进入古代战场"); } DMService.Instance.LeftClick(dmGuid, new WxPoint(125, 500), TimeSpan.FromSeconds(2)); if (DMService.Instance.FindStr(dmGuid, new WxRect(331, 373, 360, 393), "战", WlyColor.Normal)) { DMService.Instance.RepeatLeftClick(dmGuid, new WxPoint(344, 382), 6, 10); var view = WlyViewMgr.GetView(WlyViewType.场景_战斗); FlowLogicHelper.RepeatRun(() => { if (view.IsCurrentView(dmGuid)) { view.Exit(dmGuid); return(true); } return(false); }, TimeSpan.FromSeconds(30)); Thread.Sleep(5000); } DMService.Instance.LeftClick(dmGuid, new WxPoint(913, 560)); return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_活跃); Thread.Sleep(1000); DMService.Instance.LeftClick(dmGuid, new WxPoint(756, 361)); var startPoint = new WxPoint(543, 302); for (var i = 0; i < 6; i++) { DMService.Instance.LeftClick(dmGuid, startPoint.Shift(52 * i, 0), TimeSpan.FromMilliseconds(150)); } startPoint = new WxPoint(270, 441); for (var i = 0; i < 7; i++) { DMService.Instance.LeftClick(dmGuid, startPoint.Shift(86 * i, 0), TimeSpan.FromMilliseconds(100)); } return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_游戏助手); // 点击开始 DMService.Instance.LeftClick(dmGuid, new WxPoint(597, 473)); // 等待结束 var wait = SpinWait.SpinUntil(() => { Thread.Sleep(1000); return(DMService.Instance.FindStr(dmGuid, new WxRect(400, 83, 455, 521), "停止执行", WlyColor.White)); }, TimeSpan.FromMinutes(2)); DMService.Instance.LeftClick(dmGuid, new WxPoint(496, 519)); if (!wait) { return(new WlyTaskInfo(ID, DateTime.Now.AddMinutes(1))); } return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_巡查); while (true) { // 获取剩余巡查次数 var countRect = new WxRect(463, 447, 498, 464); var countStr = DMService.Instance.GetWords(dmGuid, countRect, "20ef4c-000000"); var count = int.Parse(countStr.Split('/')[0]); if (count == 0) { return(new WlyTaskInfo(ID, true)); } FlowLogicHelper.RepeatRun(() => DMService.Instance.LeftClick(dmGuid, new WxPoint(755, 459), TimeSpan.FromMilliseconds(200)), count); if (DMService.Instance.FindStr(dmGuid, new WxRect(479, 344, 519, 364), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(497, 355)); } } }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.场景_游历); var fightView = WlyViewMgr.GetView(WlyViewType.场景_战斗); var oldCount = 0; var tryCount = 0; while (true) { if (DMService.Instance.FindStr(dmGuid, WlyUtilityBiz.GameWndRect, "购买", WlyColor.Normal, out var x, out var y)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(x, y)); DMService.Instance.LeftClick(dmGuid, new WxPoint(453, 331)); } var countStr = DMService.Instance.GetWords(dmGuid, new WxRect(543, 583, 586, 600), "00ff00-000000"); if (!string.IsNullOrEmpty(countStr)) { var count = int.Parse(countStr.Split('/')[0]); if (count == 0) { break; } if (oldCount == count) { tryCount++; if (tryCount >= 10) { throw new InvalidOperationException("可能掉线了游历失败"); } } else { oldCount = count; tryCount = 0; } } if (fightView.IsCurrentView(dmGuid)) { fightView.Exit(dmGuid); } if (DMService.Instance.FindStr(dmGuid, new WxRect(402, 321, 436, 346), "赌场", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(514, 437)); DMService.Instance.LeftClick(dmGuid, new WxPoint(613, 440)); } if (DMService.Instance.FindStr(dmGuid, new WxRect(529, 339, 565, 369), "取消", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(547, 352)); } if (DMService.Instance.FindStr(dmGuid, new WxRect(478, 337, 521, 372), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(500, 353)); } if (DMService.Instance.FindStr(dmGuid, new WxRect(471, 410, 515, 442), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(494, 428)); } if (DMService.Instance.FindStr(dmGuid, new WxRect(657, 426, 704, 452), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(681, 438)); } if (DMService.Instance.FindStr(dmGuid, new WxRect(453, 537, 490, 560), "移动", WlyColor.Normal, WlyColor.White)) { Thread.Sleep(1000); if (DMService.Instance.FindStr(dmGuid, WlyUtilityBiz.GameWndRect, "购买", WlyColor.Normal, out x, out y)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(x, y)); DMService.Instance.LeftClick(dmGuid, new WxPoint(453, 331)); } DMService.Instance.LeftClick(dmGuid, new WxPoint(473, 520), TimeSpan.FromSeconds(2)); } Thread.Sleep(1000); } return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_仓库); var startX = 215; var startY = 233; var column = 8; var row = 3; var width = 56; var height = 56; var key = true; while (key) { for (var r = 0; r < row; r++) { for (var c = 0; c < column; c++) { var x = startX + (c * width); var y = startY + (r * height); if (DMService.Instance.FindColor(dmGuid, "17201d-000000", new WxRect(new WxPoint(x, y), 10, 10))) { continue; } DMService.Instance.LeftClick(dmGuid, new WxPoint(x, y)); if (DMService.Instance.FindStr(dmGuid, new WxRect(438, 259, 468, 277), "仓库", "e9e7cf-000000")) { DMService.Instance.LeftClick(dmGuid, new WxPoint(547, 356)); key = false; r = row; break; } while (WlyEquipMgr.IsEquipment(dmGuid, new WxRect(712, 339, 808, 358))) { DMService.Instance.LeftClick(dmGuid, new WxPoint(412, 419)); DMService.Instance.LeftClick(dmGuid, new WxPoint(454, 328)); } } } if (key) { for (var count = 0; count < 10; count++) { DMService.Instance.LeftClick(dmGuid, new WxPoint(653, 378), TimeSpan.FromMilliseconds(100)); } } } // 退出,重新进入,进行一键领取 WlyViewMgr.ExitCurrentView(dmGuid, TimeSpan.FromSeconds(5)); WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_仓库); DMService.Instance.LeftClick(dmGuid, new WxPoint(startX, startY)); DMService.Instance.LeftClick(dmGuid, new WxPoint(500, 452)); DMService.Instance.LeftClick(dmGuid, new WxPoint(500, 452)); // 将器合成 DMService.Instance.LeftClick(dmGuid, new WxPoint(609, 159)); DMService.Instance.LeftClick(dmGuid, new WxPoint(365, 467)); DMService.Instance.LeftClick(dmGuid, new WxPoint(451, 330)); return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 获取主公等级 /// </summary> /// <param name="dmGuid"></param> /// <returns></returns> public static int GetMainLevel(string dmGuid) { WlyViewMgr.GoTo(dmGuid, WlyViewType.场景_主界面); return(int.Parse(DMService.Instance.GetWords(dmGuid, new WxRect(20, 69, 115, 103), "66ccff-000000").Substring(3))); }
/// <summary> /// 挂机线程 /// </summary> private void AutoPlayThread() { m_run = true; m_final = true; m_isDevelop = false; var errorCount = 0; // 最外层死循环,进程守护 while (m_run) { try { // 登录 OnDescriptionChanged($"开始登录 {Account}"); DMGuid = string.Empty; WlyUtilityBiz.Login(this); // 绑定游戏窗口 BindGameWnd(); InternalAfterLogin(); // 登录成功,等待登录完成 OnDescriptionChanged("等待加载完成"); WlyViewMgr.GoTo(DMGuid, WlyViewType.场景_主界面, TimeSpan.FromSeconds(2)); // 开始挂机 m_aliveTime = DateTime.Now; while (m_run) { if (DMService.Instance.GetWindowState(DMGuid, WndHwnd, 0) == 0) { WxLog.Error($"WlyEntity.AutoPlayThread 游戏窗口不存在"); break; } WlyTaskRunner runner = null; // 检测是否有可以运行的日常任务 if (m_dailyList.Any() && (m_dailyList.First().StartTime < DateTime.Now)) { runner = m_dailyList.First(); OnDescriptionChanged(runner.Task.MainTitle); CurrentRunner = runner; var info = runner.Task.Run(this); WxLog.Debug($"WlyEntity.AutoPlayThread Name <{this}> Run <{runner.Task}> Result <{info}>"); // 无论结果,先进行保存 SaveTaskInfo(info); RemoveTaskRunner(runner); if (!info.IsComplete) { // 未完成的任务重新加入,等待下一次运行 AddTask(runner.Task, info.NextRunTime); } m_aliveTime = DateTime.Now; continue; } // 检测是否有可以运行的主线任务 runner = m_mainList.FirstOrDefault(o => o.StartTime < DateTime.Now); if (runner != null) { OnDescriptionChanged(runner.Task.MainTitle); CurrentRunner = runner; var info = runner.Task.Run(this); // 无论结果,先进行保存 SaveTaskInfo(info); RemoveTaskRunner(runner); if (!info.IsComplete) { // 未完成的任务重新加入,等待下一次运行 AddTask(runner.Task, info.NextRunTime); } m_aliveTime = DateTime.Now; continue; } CurrentRunner = null; // 运行空闲任务 InternalBackupWorkThread(); // 超时重启 if (DateTime.Now - m_aliveTime > m_restartInterval) { break; } } while (m_finalList.Any(o => o.StartTime < DateTime.Now)) { var runner = m_finalList.FirstOrDefault(o => o.StartTime < DateTime.Now); if (runner == null) { break; } OnDescriptionChanged(runner.Task.MainTitle); CurrentRunner = runner; var info = runner.Task.Run(this); WxLog.Debug($"WlyEntity.AutoPlayThread Name <{this}> Run <{runner.Task}> Result <{info}>"); // 无论结果,先进行保存 SaveTaskInfo(info); m_finalList.Remove(runner); if (!info.IsComplete) { // 未完成的任务重新加入,等待下一次运行 AddTask(runner.Task, info.NextRunTime); } m_aliveTime = DateTime.Now; } m_final = false; } catch (InvalidOperationException ex) { WxLog.Error($"WlyEntity.InternalBackupWorkThread Error {ex}"); errorCount++; InternalHandleError(errorCount); //CaptureError(ex); } catch (Exception ex) { WxLog.Error($"WlyEntity.AutoPlayThread Error <{ex}>"); } finally { CloseProcess(); } } WxLog.Debug($"WlyEntity.AutoPlayThread Stopped, Hwnd <{WndHwnd}>, Run <{Run}>"); OnStopped(); }
protected override void InternalAfterLogin() { SubTaskMgr.Instance.InitEntityTasks(this); m_loginFlag = true; if (!m_subAccountInfo.Check) { var wait = FlowLogicHelper.RepeatRun(() => { var view = WlyViewMgr.GetView(WlyViewType.略_防沉迷验证); var view1 = WlyViewMgr.GetView(WlyViewType.略_跳过); return(DMService.Instance.FindPic(DMGuid, WlyPicType.择国家, WlyUtilityBiz.GameWndRect) || view.IsCurrentView(DMGuid) || view1.IsCurrentView(DMGuid)); }, TimeSpan.FromSeconds(30)); if (wait && DMService.Instance.FindPic(DMGuid, WlyPicType.择国家, WlyUtilityBiz.GameWndRect)) { CreateRole(AutoPlayerVM.Instance.GetAvailableName()); } } WxLog.Debug($"SubEntity.InternalAfterLogin AutoPlay Start <{m_subAccountInfo.Name}>"); // 先检测主公等级 var level = WlyUtilityBiz.GetMainLevel(DMGuid); if (level > m_subAccountInfo.Level) { WlyMainLevelMgr.Upgrade(DMGuid); m_subAccountInfo.Level = level; m_subAccountInfo.Save(); } // 检测银币数量是否到达上限 var result = WlyUtilityBiz.GetPercent(DMGuid, new WxRect(133, 26, 217, 47), "f3f3da-000000", out var percent); if (!result) { throw new InvalidOperationException("Cannot Get Money Amount"); } // 银币超过上限了,想尽办法进行使用 if (percent >= 0.9) { GetEuqipments(); UpgradeEquipments(); } // 如果可以捐国政了,则捐国政 var now = DateTime.Now; var timeNotOK = (now.DayOfWeek == DayOfWeek.Sunday) && (now.Hour >= 4) && (now.Hour < 21); if ((percent >= 0.5) && (m_subAccountInfo.GetBuildingInfo(WlyBuildingType.主城).Level >= 130) && !timeNotOK) { // 捐款2600万获取100政绩 WlyViewMgr.GoTo(DMGuid, WlyViewType.场景_国政); // 点开内政 var wait = FlowLogicHelper.RepeatRun(() => { DMService.Instance.LeftClick(DMGuid, new WxPoint(95, 42)); if (DMService.Instance.FindStr(DMGuid, new WxRect(483, 100, 516, 120), "国政", WlyColor.Normal)) { return(true); } Thread.Sleep(500); return(false); }, TimeSpan.FromSeconds(10)); if (!wait) { throw new InvalidOperationException(); } // 捐款铸造 DMService.Instance.LeftClick(DMGuid, new WxPoint(560, 270)); DMService.Instance.LeftClick(DMGuid, new WxPoint(613, 438)); DMService.Instance.SendString(DMGuid, WndHwnd, "50000000"); wait = FlowLogicHelper.RepeatRun(() => { if (WlyUtilityBiz.GetAmount(DMGuid, new WxRect(577, 429, 671, 447), "e7e7fd-000000", out var amount)) { return(true); } Thread.Sleep(500); return(false); }, TimeSpan.FromSeconds(10)); if (!wait) { throw new InvalidOperationException(); } DMService.Instance.LeftClick(DMGuid, new WxPoint(739, 438)); } // 如果可以进行开发,则马上开发并立刻结束 //if (DevelopTime < DateTime.Now) //{ // WlyUtilityBiz.GetAmount(DMGuid, new WxRect(133, 26, 217, 47), "f3f3da-000000", out var amount); // if (amount > 500000) // { // DevelopCity(); // //Stop(); // } //} }
/// <summary> /// 委派装备 /// </summary> private void GetEuqipments() { var key = true; foreach (var staff in AccountInfo.StaffInfoDict.Values) { var e = staff.GetEquipInfo(WlyEquipType.战法攻击); if (staff.EquipmentRequestDict[e.Type] && (e.EquipLevel < 95)) { key = false; break; } e = staff.GetEquipInfo(WlyEquipType.战法防御); if (staff.EquipmentRequestDict[e.Type] && (e.EquipLevel < 95)) { key = false; break; } e = staff.GetEquipInfo(WlyEquipType.计策防御); if (staff.EquipmentRequestDict[e.Type] && (e.EquipLevel < 95)) { key = false; break; } e = staff.GetEquipInfo(WlyEquipType.计策攻击); if (staff.EquipmentRequestDict[e.Type] && (e.EquipLevel < 95)) { key = false; break; } } if (key) { return; } // 银币十连抽 100次 WlyViewMgr.GoTo(DMGuid, WlyViewType.功能_委派); // 设置自动卖出 DMService.Instance.LeftClick(DMGuid, new WxPoint(251, 473)); DMService.Instance.LeftClick(DMGuid, new WxPoint(442, 341)); DMService.Instance.LeftClick(DMGuid, new WxPoint(493, 395)); DMService.Instance.LeftClick(DMGuid, new WxPoint(352, 370), TimeSpan.FromSeconds(1)); if (DMService.Instance.FindStr(DMGuid, new WxRect(434, 340, 476, 367), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(DMGuid, new WxPoint(462, 316)); DMService.Instance.LeftClick(DMGuid, new WxPoint(457, 354)); } // 进入委派循环 for (var i = 0; i < 20; i++) { // 等待抽取完成 if (DMService.Instance.FindColor(DMGuid, "f3f3da-000000", new WxRect(404, 460, 461, 481))) { DMService.Instance.LeftClick(DMGuid, new WxPoint(390, 472)); } var wait = FlowLogicHelper.RepeatRun(() => { if (DMService.Instance.FindColor(DMGuid, "ffb76f-000000|ffffff-000000", new WxRect(584, 447, 644, 480))) { return(true); } Thread.Sleep(1000); return(false); }, TimeSpan.FromSeconds(10)); if (!wait) { throw new InvalidOperationException(); } DMService.Instance.LeftClick(DMGuid, new WxPoint(612, 467)); } // 退出 Thread.Sleep(2000); DMService.Instance.LeftClick(DMGuid, new WxPoint(727, 477)); }
/// <summary> /// 寻找首攻 /// </summary> private bool FindFirstAttack() { // 处理加入失败,关闭军团战界面,防止被bug消耗军令 var view = WlyViewMgr.GetView(WlyViewType.略_加入失败); if (view.IsCurrentView(DMGuid)) { view.Exit(DMGuid); WlyViewMgr.ExitCurrentView(DMGuid, TimeSpan.FromSeconds(5)); } // 组队框 var teamRect = new WxRect(632, 206, 807, 449); string GetTargetStr() { if (AccountInfo.Point > AccountInfo.PointReserved) { return($"加|区|(首|攻)|不耗|首攻|{AccountInfo.SelectedGroupType.ToString()}"); } return("加|区|(首|攻)|不耗|首攻"); } bool Handler() { // 在聊天框寻找首攻 var chatRect = new WxRect(0, 470, 277, 600); var str = DMService.Instance.FindStrEx(DMGuid, chatRect, GetTargetStr(), "fff71c-000000|fcffa9-000000|00ff00-000000"); if (string.IsNullOrEmpty(str)) { return(false); } // 字符串分析 var sp = str.Split('|'); if (sp.Count(p => p[0] == '0') > 1) { // 加字数量过多,需要关闭聊天窗 return(false); } // 激活 if (sp.Any(p => p[0] == '1')) { KeepAlive(); } // 找到了一次军团副本 if (sp.Any(p => p[0] == '6')) { AccountInfo.Point--; } // 有首攻标识,进行加入 if (sp.Any(p => int.Parse(p[0].ToString()) > 1)) { var join = sp.FirstOrDefault(o => o[0] == '0'); if (!string.IsNullOrEmpty(join)) { var pos = join.Split(','); var point = new WxPoint(int.Parse(pos[1]) + 5, int.Parse(pos[2]) + 5); DMService.Instance.LeftClick(DMGuid, point, TimeSpan.FromSeconds(2)); } } Thread.Sleep(1000); if (DMService.Instance.FindStr(DMGuid, teamRect, "海潮", "e9e7cf-000000")) { return(true); } return(false); } var result = FlowLogicHelper.RepeatRun(Handler, TimeSpan.FromSeconds(5)); if (result) { FlowLogicHelper.RepeatRun(() => { Thread.Sleep(200); return(DMService.Instance.FindStr(DMGuid, teamRect, "海潮", "e9e7cf-000000")); }, TimeSpan.FromSeconds(5)); return(true); } return(false); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; entity.AccountInfo.Credit = WlyUtilityBiz.GetCreditAmount(dmGuid); if (entity.AccountInfo.Credit >= m_amount) { if (m_amount < 2000000) { return(new WlyTaskInfo(ID, true)); } return(new WlyTaskInfo(ID, WlyUtilityBiz.GetRefreshTime())); } // 尝试从竞技场获取 if (entity.AccountInfo.FightPoint >= 300) { WlyViewMgr.GoTo(dmGuid, WlyViewType.场景_竞技场); DMService.Instance.LeftClick(dmGuid, new WxPoint(621, 560)); DMService.Instance.LeftClick(dmGuid, new WxPoint(453, 327)); var wait = FlowLogicHelper.RepeatRun(() => { if (DMService.Instance.FindStr(dmGuid, new WxRect(576, 437, 607, 457), "兑换", "e9e7cf-000000")) { return(true); } DMService.Instance.LeftClick(dmGuid, new WxPoint(686, 559)); return(false); }, TimeSpan.FromSeconds(10)); if (!wait) { throw new InvalidOperationException("无法打开兑换界面"); } // 开始兑换 wait = FlowLogicHelper.RepeatRun(() => { if (DMService.Instance.FindStr(dmGuid, new WxRect(745, 336, 780, 358), "威望", "f3f3da-000000")) { return(true); } DMService.Instance.LeftClick(dmGuid, new WxPoint(389, 229)); return(false); }, TimeSpan.FromSeconds(10)); if (!wait) { throw new InvalidOperationException("无法兑换威望"); } DMService.Instance.LeftClick(dmGuid, new WxPoint(602, 471)); DMService.Instance.LeftClick(dmGuid, new WxPoint(602, 471)); DMService.Instance.LeftClick(dmGuid, new WxPoint(602, 471)); } return(new WlyTaskInfo(ID, WlyUtilityBiz.GetRefreshTime())); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var now = DateTime.Now; if (now.DayOfWeek == DayOfWeek.Sunday && now.Hour >= 4 && now.Hour < 21) { return(new WlyTaskInfo(ID, DateTime.Now.Add(DateTime.Today.AddHours(21) - now))); } var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.场景_国政); // 点开国库 var wait = FlowLogicHelper.RepeatRun(() => { DMService.Instance.LeftClick(dmGuid, new WxPoint(97, 194)); if (DMService.Instance.FindStr(dmGuid, new WxRect(483, 100, 516, 120), "国政", WlyColor.Normal)) { return(true); } Thread.Sleep(500); return(false); }, TimeSpan.FromSeconds(10)); if (!wait) { throw new InvalidOperationException(); } Thread.Sleep(1000); var result = WlyUtilityBiz.GetAmount(dmGuid, new WxRect(635, 433, 672, 450), "ffff99-000000", out var amount); if (!result) { return(new WlyTaskInfo(ID, DateTime.Now.AddHours(1))); } var wish = (WlyUtilityBiz.GetRefreshTime() - DateTime.Now).Hours * 20; var count = Math.Min((1000 - amount - wish) / 2, 10); count = Math.Max(0, count); // 点击加号开始捐献 for (var i = 0; i < count; i++) { DMService.Instance.LeftClick(dmGuid, new WxPoint(653, 470)); if (DMService.Instance.FindStr(dmGuid, new WxRect(531, 278, 562, 304), "不足", "e9e7cf-000000")) { DMService.Instance.LeftClick(dmGuid, new WxPoint(501, 332)); break; } if (DMService.Instance.FindStr(dmGuid, new WxRect(437, 343, 473, 364), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(459, 312)); DMService.Instance.LeftClick(dmGuid, new WxPoint(452, 357)); } } // 领取官职奖励 DMService.Instance.LeftClick(dmGuid, new WxPoint(373, 162)); DMService.Instance.LeftClick(dmGuid, new WxPoint(746, 477)); return(new WlyTaskInfo(ID, true)); }