Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
        /// <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);
                }
            }
        }
Exemple #3
0
 /// <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);
 }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        /// <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);
            }
        }
Exemple #7
0
        /// <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);
        }
Exemple #8
0
        /// <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);
            }
        }
Exemple #9
0
        /// <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);
            }
        }
Exemple #10
0
        /// <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);
        }