public Point FindStr(int x1, int y1, int x2, int y2, string str, string color, double sim = 0.9) { object x; object y; dm.FindStr(x1, y1, x2, y2, str, color, sim, out x, out y); return(new Point((int)x, (int)y)); }
/// <summary> /// 在屏幕范围(x1,y1,x2,y2)内,查找string(可以是任意个字符串的组合),并返回符合color_format的坐标位置,相似度sim同Ocr接口描述. // (多色, 差色查找类似于Ocr接口, 不再重述) /// </summary> /// <param name="dmsoft"></param> /// <param name="findStr"></param> /// <returns></returns> public static Point FindStr(this dmsoft dmsoft, FindStr findStr) { int x, y; var res = dmsoft.FindStr(findStr.X1, findStr.Y1, findStr.X2, findStr.Y2, findStr.String, findStr.ColorFormat, findStr.Sim, out x, out y); if (res == -1) { return(new Point()); } else { return(new Point(x, y)); } }
public int FindStr(int x1, int y1, int x2, int y2, string str, string color, double sim, out object x, out object y) { return(dm.FindStr(x1, y1, x2, y2, str, color, sim, out x, out y)); }
/// <summary> /// 寻找首攻 /// </summary> private void FindFirstAttack() { var startTime = DateTime.Now; while (true) { if (DateTime.Now - startTime > TimeSpan.FromMinutes(2)) { return; } var findResult = m_dm.FindStr(100, 470, 277, 550, "(首", "fff71c-000000|fcffa9-000000", 1, out var _, out var _); if (findResult == -1) { Thread.Sleep(100); continue; } // 寻找到首攻,加入队伍 WxLog.Debug($"MainEntity.FindFirstAttack Find First Attack {findResult}"); findResult = m_dm.FindStr(100, 470, 277, 550, "加", "00ff00-000000", 1, out var x, out var y); if (findResult == -1) { Thread.Sleep(100); continue; } // 点击加入队伍 WxLog.Debug($"MainEntity.FindFirstAttack Click:{x},{y}"); m_dm.MoveTo((int)x + 5, (int)y + 5); m_dm.LeftClick(); findResult = -1; var retry = 0; while (findResult == -1) { // 确认自己在队伍中 findResult = m_dm.FindStr(370, 198, 517, 219, "(首攻)", "ffffb0-000000", 1, out var _, out var _); if (findResult == -1) { retry++; if (retry > 30) { break; } Thread.Sleep(100); } } findResult = m_dm.FindStr(632, 206, 807, 449, "海潮", "e9e7cf-000000", 1, out var _, out var _); if (findResult == -1) { Thread.Sleep(100); continue; } // 给首攻五秒钟时间 Thread.Sleep(5000); return; } }