/// <summary> /// 找字并移动左键单击 /// </summary> /// <param name="dm"></param> /// <param name="x1"></param> /// <param name="y1"></param> /// <param name="x2"></param> /// <param name="y2"></param> /// <param name="str">要找的字</param> /// <param name="color_format">字的颜色</param> /// <param name="ran1">随机数X=随机数(0,最大坐标-找到的X坐标)</param> /// <param name="ran2">随机数Y=随机数(0,最大坐标-找到的Y坐标)</param> /// <param name="sim"></param> /// <returns>返回1成功,0失败</returns> public static bool FindStrE_LeftClick(this DmPlugin dm, int x1, int y1, int x2, int y2, string str, string color_format, int ran1 = 0, int ran2 = 0, double sim = 1.0) { string s = ""; string picX, picY; s = dm.FindStrE(x1, y1, x2, y2, str, color_format, sim); if (s != "-1|-1|-1") { string[] picList_Split = s.Split('|'); picX = picList_Split[1]; picY = picList_Split[2]; int x, y; x = int.Parse(picX); y = int.Parse(picY); dm.MoveTo(x + ran1, y + ran2); System.Threading.Thread.Sleep(dm.RanNumber(50, 100)); dm.LeftClick(); dm.MoveTo(0, 0); return(true); } else { Logger.Info("未找到字:" + str); return(false); } }
/// <summary> /// 找图并找到的坐标并左键单击 /// </summary> /// <param name="dm"></param> /// <param name="x1"></param> /// <param name="y1"></param> /// <param name="x2"></param> /// <param name="y2"></param> /// <param name="pic_name"></param> /// <param name="ran1">随机数X=随机数(0,最大坐标-找到的X坐标)</param> /// <param name="ran2">随机数Y=随机数(0,最大坐标-找到的Y坐标)</param> /// <param name="Second">如果true,则1秒扫5次</param> /// <returns>返回1成功,0失败</returns> public static bool FindPicE_LeftClick(this DmPlugin dm, int x1, int y1, int x2, int y2, string pic_name, int ran1 = 0, int ran2 = 0, bool Second = true) { string picList = ""; int index = 0; int PicX = 0; //图片左上角X int PicY = 0; //图片左上角Y if (Second == true) { while (Second == true) { picList = dm.FindPicE(x1, y1, x2, y2, pic_name, "000000", 0.9, 0); if (picList != "-1|-1|-1") { string[] picList_Split = picList.Split('|'); PicX = int.Parse(picList_Split[1]); PicY = int.Parse(picList_Split[2]); dm.MoveTo(PicX + ran1, PicY + ran2); System.Threading.Thread.Sleep(dm.RanNumber(50, 100)); dm.LeftClick(); return(true); } else { System.Threading.Thread.Sleep(200); index = index + 1; if (index == 5) { Logger.Info("未找到图片:" + pic_name); return(false); } else { break; } } } Logger.Info("未找到图片:" + pic_name); return(false); } else { picList = dm.FindPicE(x1, y1, x2, y2, pic_name, "000000", 0.9, 0); if (picList != "-1|-1|-1") { string[] picList_Split = picList.Split('|'); PicX = int.Parse(picList_Split[1]); PicY = int.Parse(picList_Split[2]); dm.MoveTo(PicX + ran1, PicY + ran2); System.Threading.Thread.Sleep(dm.RanNumber(50, 100)); dm.LeftClick(); return(true); } else { Logger.Info("未找到图片:" + pic_name); return(false); } } }
/// <summary> /// 滑动操作 /// </summary> /// <param name="_dm"></param> /// <param name="x1"></param> /// <param name="y1"></param> /// <param name="x2"></param> /// <param name="y2"></param> /// <param name="mousedelay">鼠标每步延时</param> /// <param name="mousestep">鼠标步长</param> public static void Swipe(this DmPlugin _dm, int x1, int y1, int x2, int y2, int mousedelay = 30, int mousestep = 10) { _dm.EnableRealMouse(1, mousedelay, mousestep); _dm.MoveTo(x1, y1); _dm.Delay(50); _dm.LeftDown(); _dm.Delay(50); _dm.MoveTo(x2, y2); _dm.Delay(50); _dm.LeftUp(); _dm.Delay(50); _dm.EnableRealMouse(0, mousedelay, mousestep); }
/// <summary> /// 防封,移动鼠标单击 /// </summary> /// <param name="dm"></param> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public static bool PMoveToClick(this DmPlugin dm, int x, int y) { int flag = dm.MoveTo(x, y); dm.Delay(dm.RanNumber(50, 200)); int a = dm.LeftDown(); dm.Delay(dm.RanNumber(50, 200)); int sjx = dm.RanNumber(1, 5); int sjy = dm.RanNumber(1, 5); int b = dm.MoveTo(x + sjx, y + sjy); int c = dm.LeftUp(); return(a == 1 && b == 1 && c == 1 && flag == 1 ? true : false); }
private TaskResult RunStep1(TaskContext context) { IRole role = context.Role; DmPlugin dm = role.Window.Dm; int hwnd = role.Window.Hwnd; dm.MoveToClick(97, 829); for (int i = 0; i < 50; i++) { dm.MoveTo(512 + i, 416); } //Locator.Teleport.Teleport(new Point() { Name = "进图入口", X = -1356.5f, Y = -1791.6f, Z = 15.5f }); //dm.Delay(2000); //dm.MoveToClick(910, 701); //入场 //dm.Delay(10000); //Locator.Teleport.Teleport(new Point() { Name = "第四关入口", X = 4661.5f, Y = 4338.5f, Z = -110.6f }); //dm.MoveToRightClick(335, 825); //月光碎片 //dm.Delay(14000); //Locator.Teleport.Teleport(new Point() { Name = "Boss输出坐标", X = 1793f, Y = 2434f, Z = -1012f }); //dm.MoveToRightClick(224, 825); //致命劈砍 //dm.Delay(14000); //dm.MoveToRightClick(722, 825); //水月神舞 //dm.Delay(2000); //Locator.Teleport.Teleport(new Point() { Name = "安全坐标", X = 50000f, Y = 50000f, Z = 0f }); //dm.MoveToRightClick(832, 825); //Delegater.WaitTrue(() => dm.FindStr(229, 175, 1103, 511, "箱子1", "ffffff-222222"), () => dm.Delay(1000), 120); //dm.Delay(18000); //Locator.Teleport.Teleport(new Point() { Name = "箱子坐标", X = 1641.3f, Y = 2322.4f, Z = -1012 }); //dm.WriteFloat(hwnd, "440404B4",10f); //dm.LeftClick(); //dm.Delay(5000); return(TaskResult.Finished); }
/// <summary> /// 清理指定页背包 /// </summary> /// <param name="role"></param> /// <param name="page">背包页(1-5)</param> /// <param name="begin">开始格数(1-30)</param> /// <param name="stop">结束格数(1-30)</param> public static void BagCleanup(this IRole role, int page, int begin, int stop) { DmPlugin dm = role.Window.Dm; int hwnd = role.Window.Hwnd; dm.MoveToClick(796 + 65 * (page - 1), 217); //点击背包页 dm.Delay(100); dm.MoveToClick(796 + 65 * (page - 1), 217); //点击背包页 dm.Delay(300); //5-28格 for (int i = begin; i <= stop; i++) { dm.MoveTo(800 + 65 * ((i - 1) % 5), 274 + 65 * ((i - 1) / 5)); dm.Delay(200); int num = dm.ReadInt(hwnd, "[16cbc90]+314", 0); Debug.WriteLine("格子数量为:" + num); if (num == 0) { continue; } Debug.WriteLine(800 + 65 * ((i - 1) % 5) + " " + (274 + 65 * ((i - 1) / 5))); Delegater.WaitTrue(() => { dm.MoveTo(573, 493); dm.Delay(100); string content = dm.ReadString(hwnd, "[16cbc90]+30", 1, 10); // Debug.WriteLine(content); if (content.Contains("是")) { return(true); } else { return(false); } }, () => { dm.MoveToClick(800 + 65 * ((i - 1) % 5), 274 + 65 * ((i - 1) / 5)); //点击格子 dm.MoveToClick(748, 687); //点击丢弃 dm.Delay(300); }); dm.MoveToClick(574, 496); //点击确认 dm.Delay(500); } }
/// <summary> /// 使用系统字库宋体9下划线,查找字符串,并点击 /// </summary> /// <param name="dm"></param> /// <param name="x1"></param> /// <param name="y1"></param> /// <param name="x2"></param> /// <param name="y2"></param> /// <param name="str"></param> /// <param name="color"></param> /// <param name="sim"></param> /// <returns></returns> public static bool FindStrWithFont_LeftClick_St9_(this DmPlugin dm, int x1, int y1, int x2, int y2, string str, string color, int w, int h, double sim = 1.0) { int intX, intY; dm.FindStrWithFont(x1, y1, x2, y2, str, color, sim, "宋体", 9, 4, out intX, out intY); if (intX >= 0 && intY >= 0) { dm.MoveTo(intX + w, intY + h); dm.LeftClick(); return(true); } return(false); }
/// <summary> /// 找字单击至找不到 /// </summary> /// <param name="dm"></param> /// <param name="x1"></param> /// <param name="y1"></param> /// <param name="x2"></param> /// <param name="y2"></param> /// <param name="pic_name"></param> /// <param name="ran1">随机数X=随机数(0,最大坐标-找到的X坐标)</param> /// <param name="ran2">随机数Y=随机数(0,最大坐标-找到的Y坐标)</param> /// <returns>返回1成功,0失败</returns> public static bool FindStrE_LeftClick_Clear(this DmPlugin dm, int x1, int y1, int x2, int y2, string str, string color, int ran1, int ran2, double sim = 1.0) { int strX = 0; int strY = 0; string strList = ""; strList = dm.FindStrE(x1, y1, x2, y2, str, color, sim); if (strList != "-1|-1|-1") { while (true) { strList = dm.FindStrE(x1, y1, x2, y2, str, color, sim); if (strList != "-1|-1|-1") { Logger.Info("找到字" + str); if (strList.Equals("")) { throw new Exception("请先进行注册!"); } string[] picList_Split = strList.Split('|'); strX = int.Parse(picList_Split[1]); strY = int.Parse(picList_Split[2]); dm.MoveTo(strX + ran1, strY + ran2); dm.LeftClick(); dm.MoveTo(1, 1); } else { return(true); } System.Threading.Thread.Sleep(dm.RanNumber(500, 600)); } } else { return(false); } }
/// <summary> /// 找图单击至找不到 /// </summary> /// <param name="dm"></param> /// <param name="x1"></param> /// <param name="y1"></param> /// <param name="x2"></param> /// <param name="y2"></param> /// <param name="pic_name"></param> /// <param name="ran1">随机数X=随机数(0,最大坐标-找到的X坐标)</param> /// <param name="ran2">随机数Y=随机数(0,最大坐标-找到的Y坐标)</param> /// <returns>返回1成功,0失败</returns> public static bool FindPicE_LeftClick_Clear(this DmPlugin dm, int x1, int y1, int x2, int y2, string pic_name, int ran1, int ran2, double sim = 0.9) { int PicX = 0; //图片左上角X int PicY = 0; //图片左上角Y string picList = ""; picList = dm.FindPicE(x1, y1, x2, y2, pic_name, "000000", sim, 0); if (picList != "-1|-1|-1") { while (true) { picList = dm.FindPicE(x1, y1, x2, y2, pic_name, "000000", sim, 0); if (picList != "-1|-1|-1") { Logger.Info("找到图片" + pic_name); if (picList.Equals("")) { throw new Exception("请先进行注册!"); } string[] picList_Split = picList.Split('|'); PicX = int.Parse(picList_Split[1]); PicY = int.Parse(picList_Split[2]); dm.MoveTo(PicX + ran1, PicY + ran2); dm.LeftClick(); dm.MoveTo(1, 1); } else { return(true); } System.Threading.Thread.Sleep(dm.RanNumber(500, 600)); } } else { return(false); } }
/// <summary> /// 鼠标位置是否有指定控件文本 /// </summary> /// <param name="role"></param> /// <param name="x"></param> /// <param name="y"></param> /// <param name="text"></param> /// <param name="isClick"></param> /// <returns></returns> public static bool FindControlTextAndClick(this IRole role, int x, int y, string text, bool isClick = false) { DmPlugin dm = role.Window.Dm; int hwnd = role.Window.Hwnd; dm.MoveTo(x, y); dm.Delay(200); string content = dm.ReadString(hwnd, "[16cbc90]+30", 1, 10); // Debug.WriteLine(content); if (content.Contains(text)) { if (isClick) { dm.LeftClick(); } return(true); } return(false); }