/// <summary> /// 获取军令数量 /// </summary> /// <param name="dmGuid"></param> /// <returns></returns> public static int GetPoint(string dmGuid) { // 首先跳转到主界面 WlyViewMgr.GoTo(dmGuid, WlyViewType.场景_主界面); var pointRect = new WxRect(119, 106, 163, 123); var words = string.Empty; var wait = FlowLogicHelper.RepeatRun(() => { words = DMService.Instance.GetWords(dmGuid, pointRect, "f3f3da-202020"); return(!string.IsNullOrEmpty(words)); }, TimeSpan.FromSeconds(20)); if (!wait) { throw new InvalidOperationException("无法获取军令信息"); } var result = int.TryParse(words.Split('/')[0], out var point); if (!result) { WxLog.Debug($"WlyUtilityBiz.GetPoint <{words}>"); return(0); } return(point); }
/// <summary> /// 获取占比 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <param name="color"></param> /// <param name="percent"></param> /// <returns></returns> public static bool GetPercent(string dmGuid, WxRect rect, string color, out double percent) { percent = 0; var amountStr = DMService.Instance.GetWords(dmGuid, rect, color); string currentStr; string totalStr; if (amountStr.Contains("/")) { var index = amountStr.IndexOf("/", StringComparison.Ordinal); currentStr = amountStr.Substring(0, index); totalStr = amountStr.Substring(index + 1, amountStr.Length - index - 1); } else { return(false); } var result = WordToAmount(currentStr, out var current); if (!result) { return(false); } result = WordToAmount(totalStr, out var total); if (!result) { return(false); } percent = current / (double)total; return(true); }
/// <summary> /// 获取指定矩形中时间 /// </summary> /// <param name="dmGuid"></param> /// <param name="timeRect"></param> /// <param name="color"></param> /// <returns></returns> public static TimeSpan GetTime(string dmGuid, WxRect timeRect, string color) { var timeStr = DMService.Instance.GetWords(dmGuid, timeRect, color); var result = TimeSpan.TryParseExact(timeStr, new[] { @"hh\:mm\:ss", @"mm\:ss", @"h\:mm\:ss" }, null, out var time); return(result ? time : TimeSpan.Zero); }
/// <summary> /// 在指定范围内寻找图片 /// </summary> /// <param name="dmGuid"></param> /// <param name="key">资源键值</param> /// <param name="rect"></param> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public bool FindPic(string dmGuid, object key, WxRect rect, out int x, out int y) { if (!m_picResources.ContainsKey(key)) { x = -1; y = -1; WxLog.Debug($"DMService.FindPic No Pic Resource With Key <{key}>"); return(false); } var dm = GetDM(dmGuid); var resource = m_picResources[key]; var result = dm.FindPicMem(rect.Left, rect.Top, rect.Right, rect.Bottom, resource.Info, "202020", 0.8, 0, out var xx, out var yy); if (result > -1) { x = (int)xx; y = (int)yy; return(true); } x = -1; y = -1; return(false); }
/// <summary> /// 截图 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <param name="filePath"></param> /// <returns></returns> public bool Capture(string dmGuid, WxRect rect, string filePath) { var dm = GetDM(dmGuid); var result = dm.Capture(rect.Left, rect.Top, rect.Right, rect.Bottom, filePath); return(result == 1); }
/// <summary> /// 获取威望数量 /// </summary> /// <param name="dmGuid"></param> /// <returns></returns> public static int GetCreditAmount(string dmGuid) { // 首先跳转到主界面 WlyViewMgr.GoTo(dmGuid, WlyViewType.场景_主界面); var rect = new WxRect(276, 73, 323, 90); var result = GetAmount(dmGuid, rect, "e9e7cf-000000", out var amount); return(amount); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var endTime = new DateTime(2018, 7, 16, 4, 0, 0); if (DateTime.Now > endTime) { return(new WlyTaskInfo(ID, true)); } var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_厉兵秣马); // 领取两个大包厢 DMService.Instance.LeftClick(dmGuid, new WxPoint(228, 227)); DMService.Instance.LeftClick(dmGuid, new WxPoint(227, 328)); // 循环领取七天的奖励 var start = new WxPoint(375, 177); for (var i = 0; i < 7; i++) { DMService.Instance.LeftClick(dmGuid, start.Shift(70 * i, 0), TimeSpan.FromSeconds(1)); FlowLogicHelper.RepeatRun(() => { var rect = new WxRect(733, 290, 790, 312); var point = new WxPoint(761, 299); Thread.Sleep(1000); if (DMService.Instance.FindStr(dmGuid, new WxRect(357, 300, 436, 320), "打猎", "fffdd4-000000")) { rect = new WxRect(732, 378, 792, 400); point = new WxPoint(759, 388); } if (DMService.Instance.FindStr(dmGuid, rect, "领取奖励", WlyColor.Normal, WlyColor.White)) { DMService.Instance.LeftClick(dmGuid, point); return(false); } if (DMService.Instance.FindStr(dmGuid, rect, "前往", WlyColor.Normal)) { return(true); } if (DMService.Instance.FindStr(dmGuid, new WxRect(485, 317, 518, 342), "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(495, 330)); } return(false); }, TimeSpan.FromSeconds(10)); } 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(400); // 获取剩余次数 var countRect = new WxRect(614, 424, 634, 442); if (WlyUtilityBiz.GetAmount(dmGuid, countRect, WlyColor.Normal, out var count) && (count == 0)) { WlyViewMgr.ExitCurrentView(dmGuid, TimeSpan.FromSeconds(30)); return(new WlyTaskInfo(ID, true)); } // 开始一键探险 DMService.Instance.LeftClick(dmGuid, new WxPoint(567, 392)); var wait = SpinWait.SpinUntil(() => { Thread.Sleep(1000); return(DMService.Instance.FindStr(dmGuid, new WxRect(549, 487, 587, 513), "扫荡", WlyColor.Normal)); }, TimeSpan.FromSeconds(10)); if (!wait) { return(new WlyTaskInfo(ID, DateTime.Now.AddMinutes(1))); } // 勾上选项 DMService.Instance.LeftClick(dmGuid, new WxPoint(422, 214)); DMService.Instance.LeftClick(dmGuid, new WxPoint(439, 237)); DMService.Instance.LeftClick(dmGuid, new WxPoint(423, 420)); //DMService.Instance.LeftClick(dmGuid, new WxPoint(421, 444)); // 开始扫荡 DMService.Instance.LeftClick(dmGuid, new WxPoint(557, 501)); // 等待扫荡结束 wait = SpinWait.SpinUntil(() => { Thread.Sleep(1000); return(DMService.Instance.FindStr(dmGuid, new WxRect(447, 477, 515, 501), "已完成全部", "ff3300-000000")); }, TimeSpan.FromSeconds(60)); if (!wait) { return(new WlyTaskInfo(ID, DateTime.Now.AddMinutes(1))); } // 完成古城探秘 DMService.Instance.LeftClick(dmGuid, new WxPoint(763, 126)); Thread.Sleep(400); WlyViewMgr.ExitCurrentView(dmGuid, TimeSpan.FromSeconds(30)); return(new WlyTaskInfo(ID, DateTime.Now)); }
/// <summary> /// 获取指定矩形块中的数字 /// </summary> /// <param name="dmGuid"></param> /// <param name="amountRect"></param> /// <param name="color"></param> /// <param name="amount"></param> /// <returns></returns> public static bool GetAmount(string dmGuid, WxRect amountRect, string color, out int amount) { var amountStr = DMService.Instance.GetWords(dmGuid, amountRect, color); if (amountStr.Contains("/")) { amountStr = amountStr.Substring(0, amountStr.IndexOf("/", StringComparison.Ordinal)); } return(WordToAmount(amountStr, out amount)); }
/// <summary> /// 获取指定范围内指定颜色的字 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <param name="color"></param> /// <param name="index"></param> /// <returns></returns> public string GetWords(string dmGuid, WxRect rect, string color, int index = 0) { var dm = GetDM(dmGuid); var resultStr = dm.GetWords(rect.Left, rect.Top, rect.Right, rect.Bottom, color, 1); if (!string.IsNullOrEmpty(resultStr)) { return(dm.GetWordResultStr(resultStr, index)); } return(string.Empty); }
/// <summary> /// 获取指定区域中文字所属的品质 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <returns></returns> public static WlyQualityType GetQuality(string dmGuid, WxRect rect) { foreach (var pair in _qualityMap) { if (DMService.Instance.FindColor(dmGuid, pair.Value, rect)) { return(pair.Key); } } return(WlyQualityType.Unknow); }
/// <summary> /// 判断是否为当前界面 /// </summary> /// <param name="dmGuid"></param> /// <returns></returns> public override bool IsCurrentView(string dmGuid) { var rect = new WxRect(436, 563, 566, 594); var word = DMService.Instance.GetWords(dmGuid, rect, "ffffcc-000000"); if (word.Contains("Wly副本")) { return(true); } return(DMService.Instance.FindStr(dmGuid, rect, "势力", "ffffcc-000000")); }
/// <summary> /// 抓取指定的文字 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <param name="color"></param> /// <param name="word"></param> /// <param name="index"></param> /// <param name="filePath"></param> /// <returns></returns> public bool FetchWords(string dmGuid, WxRect rect, string color, string word, int index, string filePath) { var dm = GetDM(dmGuid); var info = dm.FetchWord(rect.Left, rect.Top, rect.Right, rect.Bottom, color, word); var result = dm.AddDict(index, info); if (result == 1) { return(dm.SaveDict(index, filePath) == 1); } return(false); }
/// <summary> /// 获取兵种类型 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <returns></returns> public static WlySoldierType GetStaffType(string dmGuid, WxRect rect) { var str = DMService.Instance.GetWords(dmGuid, rect, "ffffff-000000|b3ad9d-000000"); if (string.IsNullOrEmpty(str)) { return(WlySoldierType.Unkonwn); } var result = Enum.TryParse <WlySoldierType>(str, out var type); return(result ? type : WlySoldierType.Unkonwn); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_卖粮); // 读取粮价 var priceRect = new WxRect(386, 211, 479, 232); var priceStr = string.Empty; var wait = FlowLogicHelper.RepeatRun(() => { priceStr = DMService.Instance.GetWords(dmGuid, priceRect, "e9e7cf-000000"); return(!string.IsNullOrEmpty(priceStr)); }, TimeSpan.FromSeconds(10)); if (!wait) { throw new InvalidOperationException("无法读取当前粮价"); } var info = WlyUtilityBiz.SystemInfo; info.FoodPriceDescription = $"{priceStr} [{DateTime.Now:yyyy-MM-dd HH:mm:ss}]"; if (double.TryParse(priceStr.Split('(')[0], out var price)) { info.FoodPrice = price; } // 如果达到最高价则卖粮 if (price >= 1.8) { DMService.Instance.LeftClick(dmGuid, new WxPoint(760, 343)); DMService.Instance.LeftClick(dmGuid, new WxPoint(762, 377)); } if (price <= 0.65) { DMService.Instance.LeftClick(dmGuid, new WxPoint(759, 421)); DMService.Instance.LeftClick(dmGuid, new WxPoint(761, 454)); return(new WlyTaskInfo(ID, DateTime.Now.AddMinutes(9))); } var now = DateTime.Now; var flag = DateTime.Today.AddHours(now.Hour).AddMinutes(30); var nextTime = now < flag?flag.AddMinutes(1) : flag.AddMinutes(31); info.NextFoodTime = nextTime; return(new WlyTaskInfo(ID, nextTime)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected override WlyTaskInfo InternalRun(WlyEntity entity) { var dmGuid = entity.DMGuid; WlyViewMgr.GoTo(dmGuid, WlyViewType.场景_主界面); var rect = new WxRect(99, 253, 134, 275); if (!FlowLogicHelper.RepeatRun(() => { DMService.Instance.LeftDown(dmGuid, new WxPoint(89, 225)); return(DMService.Instance.FindStr(dmGuid, rect, "开通", "ff8c00-000000") || DMService.Instance.FindStr(dmGuid, rect, "空闲", "1fed4a-000000")); }, TimeSpan.FromSeconds(10))) { throw new InvalidOperationException("无法开通"); } if (DMService.Instance.FindStr(dmGuid, rect, "开通", "ff8c00-000000")) { DMService.Instance.LeftClick(dmGuid, new WxPoint(116, 263)); DMService.Instance.LeftClick(dmGuid, new WxPoint(455, 355)); DMService.Instance.LeftUp(dmGuid, new WxPoint(89, 225)); } Thread.Sleep(2000); rect = new WxRect(99, 273, 134, 299); if (!FlowLogicHelper.RepeatRun(() => { DMService.Instance.LeftDown(dmGuid, new WxPoint(89, 225)); return(DMService.Instance.FindStr(dmGuid, rect, "开通", "ff8c00-000000") || DMService.Instance.FindStr(dmGuid, rect, "空闲", "1fed4a-000000")); }, TimeSpan.FromSeconds(10))) { throw new InvalidOperationException("无法开通"); } if (DMService.Instance.FindStr(dmGuid, rect, "开通", "ff8c00-000000")) { DMService.Instance.LeftClick(dmGuid, new WxPoint(118, 285)); DMService.Instance.LeftClick(dmGuid, new WxPoint(455, 355)); DMService.Instance.LeftUp(dmGuid, new WxPoint(89, 225)); } return(new WlyTaskInfo(ID, true)); }
/// <summary> /// 寻找指定颜色的字 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <param name="target"></param> /// <param name="color"></param> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public bool FindStr(string dmGuid, WxRect rect, string target, string color, out int x, out int y) { var dm = GetDM(dmGuid); var find = dm.FindStr(rect.Left, rect.Top, rect.Right, rect.Bottom, target, color, 1, out var xx, out var yy); if (find > -1) { x = (int)xx; y = (int)yy; return(true); } x = -1; y = -1; return(false); }
/// <summary> /// 找寻指定的颜色 /// </summary> /// <param name="color"></param> /// <param name="rect"></param> /// <param name="dmGuid"></param> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public bool FindColor(string color, WxRect rect, string dmGuid, out int x, out int y) { var dm = GetDM(dmGuid); var result = dm.FindColor(rect.Left, rect.Top, rect.Right, rect.Bottom, color, 1, 1, out var xx, out var yy); if (result > 0) { x = (int)xx; y = (int)yy; return(true); } x = -1; y = -1; return(false); }
/// <summary> /// 在指定范围内找寻所有符合条件的图片 /// </summary> /// <param name="dmGuid"></param> /// <param name="key"></param> /// <param name="rect"></param> /// <returns></returns> public IEnumerable <WxPoint> FindPics(string dmGuid, object key, WxRect rect) { var dm = GetDM(dmGuid); var result = dm.FindPicMemEx(rect.Left, rect.Top, rect.Right, rect.Bottom, m_picResources[key].Info, "202020", 0.8, 0); if (string.IsNullOrEmpty(result)) { return(Enumerable.Empty <WxPoint>()); } IList <WxPoint> list = new List <WxPoint>(); foreach (var p in result.Split('|')) { var ps = p.Split(','); list.Add(new WxPoint(int.Parse(ps[1]), int.Parse(ps[2]))); } return(list); }
/// <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.功能_巡查); 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.日常_海盗); if (DMService.Instance.FindStr(dmGuid, new WxRect(523, 280, 559, 299), "海战", "e9e7cf-000000")) { DMService.Instance.LeftClick(dmGuid, new WxPoint(500, 331)); return(new WlyTaskInfo(ID, true)); } // 等待活动开始 var startRect = new WxRect(7, 223, 65, 244); var wait = FlowLogicHelper.RepeatRun(() => { Thread.Sleep(400); return(DMService.Instance.FindStr(dmGuid, startRect, "剩余时间", "ffff00-101010")); }, TimeSpan.FromMinutes(1)); if (!wait) { throw new InvalidOperationException("海盗活动未正常开始"); } // 剩余时间 var lastTimeRect = new WxRect(66, 226, 105, 245); // 冷却时间 var coolTimeRect = new WxRect(65, 205, 105, 224); // 得到的分数 var pointRect = new WxRect(972, 94, 994, 113); // 活动结束 var finalRect = new WxRect(488, 416, 522, 438); // 攻击 void Attack() { var fr = DMService.Instance.FindPic(dmGuid, WlyPicType.超强炮舰, WlyUtilityBiz.GameWndRect, out var xx, out var yy); if (fr) { var p = new WxPoint(xx, yy); DMService.Instance.LeftClick(dmGuid, p); } Thread.Sleep(100); // 如果需要金币进行冷却,则确定 var r = new WxRect(436, 342, 472, 365); if (DMService.Instance.FindStr(dmGuid, r, "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(454, 354)); } } // 活动运行 bool Run() { var lt = WlyUtilityBiz.GetTime(dmGuid, lastTimeRect, "ffffff-000000"); var ct = WlyUtilityBiz.GetTime(dmGuid, coolTimeRect, "ffffff-000000"); // 冷却时间到,开始攻击 if (ct == TimeSpan.Zero) { Attack(); } else { // 计算已经得到的分数,确定是否需要进行强攻 WlyUtilityBiz.GetAmount(dmGuid, pointRect, "ffffff-000000", out var point); var times = point / 33; // 需要在1分30秒之前完成10次攻打 if (lt.Add(TimeSpan.FromSeconds(30 * times)) < TimeSpan.FromMinutes(6).Add(TimeSpan.FromSeconds(30))) { Attack(); } else { // 等待冷却完成 Thread.Sleep(ct.Add(TimeSpan.FromMilliseconds(100))); } } // 检测活动是否结束 if (DMService.Instance.FindStr(dmGuid, finalRect, "确定", WlyColor.Normal)) { DMService.Instance.LeftClick(dmGuid, new WxPoint(505, 430)); return(true); } return(false); } // 开始攻打海盗 FlowLogicHelper.RepeatRun(Run, TimeSpan.FromMinutes(7)); return(new WlyTaskInfo(ID, true)); }
/// <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="dmGuid"></param> /// <param name="rect"></param> /// <returns></returns> private static WlyEquipType GetEquipTypeCore(string dmGuid, WxRect rect) { var index = DMService.Instance.FindStrEx(dmGuid, rect, _equipStr, "f3f3da-000000"); return((WlyEquipType)int.Parse(index[0].ToString())); }
/// <summary> /// 判断是否为一件装备 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <returns></returns> public static bool IsEquipment(string dmGuid, WxRect rect) { return(DMService.Instance.FindStr(dmGuid, rect, _equipStr, "f3f3da-000000")); }
/// <summary> /// 找寻指定的颜色 /// </summary> /// <param name="dmGuid"></param> /// <param name="color"></param> /// <param name="rect"></param> /// <returns></returns> public bool FindColor(string dmGuid, string color, WxRect rect) { return(FindColor(color, rect, dmGuid, out var _, out var _)); }
/// <summary> /// 寻找指定颜色的字 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <param name="target"></param> /// <param name="colors"></param> /// <returns></returns> public bool FindStr(string dmGuid, WxRect rect, string target, params string[] colors) { var color = string.Join("|", colors); return(FindStr(dmGuid, rect, target, color, out var _, out var _)); }
/// <summary> /// 找字扩展 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <param name="target"></param> /// <param name="color"></param> /// <returns></returns> public string FindStrEx(string dmGuid, WxRect rect, string target, string color) { var dm = GetDM(dmGuid); return(dm.FindStrEx(rect.Left, rect.Top, rect.Right, rect.Bottom, target, color, 1)); }
/// <summary> /// 寻找指定颜色的字 /// </summary> /// <param name="dmGuid"></param> /// <param name="rect"></param> /// <param name="target"></param> /// <param name="color"></param> /// <returns></returns> public bool FindStr(string dmGuid, WxRect rect, string target, string color) { return(FindStr(dmGuid, rect, target, color, out var _, out var _)); }
/// <summary> /// 在指定范围内寻找图片 /// </summary> /// <param name="dmGuid"></param> /// <param name="key"></param> /// <param name="rect"></param> /// <returns></returns> public bool FindPic(string dmGuid, object key, WxRect rect) { return(FindPic(dmGuid, key, rect, out var _, out var _)); }