Beispiel #1
0
        static void Main()
        {
            /* Ищем процесс арчейджа, получаем его TITLE для того чтобы использовать в CaptureScreen */
            Process[] processlist = Process.GetProcesses();

            foreach (Process process in processlist)
            {
                if (process.ProcessName == "archeage")
                {
                    Program.ArcheageWindowTitle  = process.MainWindowTitle;
                    Program.ArcheageWindowHandle = process.MainWindowHandle;
                }
            }

            Program.Archeage = User32.FindWindow(null, Program.ArcheageWindowTitle);

            /* Загружаем элементы интерфейса для распознавания */

            VisionHeroLocation.LoadHeroCircle();
            VisionTarget.LoadTargetBars();
            VisionEnemy.LoadEnemyBars();
            VisionHero.LoadHeroBars();
            VisionAlliance.LoadAllianceBars();
            VisionAlliance.LoadManaBars();
            VisionEnemy.LoadEnemyTooltips();
            VisionNumbers.LoadDistanceNumbers();
            VisionGame.LoadButtonF();
            VisionGame.LoadButtonG();

            Route.LoadGrindRoute("D:\\CurrentRoute.txt");

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
Beispiel #2
0
        static void Main()
        {
            /* Ищем процесс арчейджа, получаем его TITLE для того чтобы использовать в CaptureScreen */
            Process[] processlist = Process.GetProcesses();

            foreach (Process process in processlist)
            {
                if (process.ProcessName == "archeage")
                {
                    Program.ArcheageWindowTitle  = process.MainWindowTitle;
                    Program.ArcheageWindowHandle = process.MainWindowHandle;
                }
            }
            /////////////////////////
            WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
            bool             hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);

            if (hasAdministrativeRight == false)
            {
                ProcessStartInfo processInfo = new ProcessStartInfo(); //создаем новый процесс
                processInfo.Verb     = "runas";                        //в данном случае указываем, что процесс должен быть запущен с правами администратора
                processInfo.FileName = Application.ExecutablePath;     //указываем исполняемый файл (программу) для запуска
                try
                {
                    Process.Start(processInfo); //пытаемся запустить процесс
                }
                catch (System.ComponentModel.Win32Exception)
                {
                    //Ничего не делаем, потому что пользователь, возможно, нажал кнопку "Нет" в ответ на вопрос о запуске программы в окне предупреждения UAC (для Windows 7)
                }
                Application.Exit(); //закрываем текущую копию программы (в любом случае, даже если пользователь отменил запуск с правами администратора в окне UAC)
            }
            else //имеем права администратора, значит, стартуем
            {
                ////////////////////////
                Program.Archeage = User32.FindWindow(null, Program.ArcheageWindowTitle);

                /* Загружаем элементы интерфейса для распознавания */

                VisionHeroLocation.LoadHeroCircle();
                VisionTarget.LoadTargetBars();
                VisionEnemy.LoadEnemyBars();
                VisionHero.LoadHeroBars();
                VisionAlliance.LoadAllianceBars();
                VisionAlliance.LoadManaBars();
                VisionEnemy.LoadEnemyTooltips();
                VisionNumbers.LoadDistanceNumbers();
                VisionGame.LoadButtonF();
                VisionGame.LoadButtonG();

                // Route.LoadGrindRoute("RecordRoute.txt");

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form3());
            }
        }
Beispiel #3
0
        private void ViewDirectionTimer_Tick(object sender, EventArgs e)
        {
            bool FastFind1 = false;
            bool FastFind2 = false;
            bool FastFind3 = false;

            /* Для начала попробуем найти кружочек примерно рядом с последними координатами */
            if (
                ((Hero.PositionX - 5 > 0) && (Hero.PositionY - 5 > 0)) &&
                ((Hero.PositionX + 5 < ScreenCapture.LockBitmap.Screen.Width) && (Hero.PositionY + 5 < ScreenCapture.LockBitmap.Screen.Height))

                )
            {
                bool FindForm = false;
                for (int y = Hero.PositionY - 5; y < Hero.PositionY + 5; y++)
                {
                    if (FindForm == true)
                    {
                        break;
                    }
                    for (int x = Hero.PositionX - 5; x < Hero.PositionX + 5; x++)
                    {
                        if (FindForm == true)
                        {
                            break;
                        }

                        int?HeroCircleForm = VisionForm.FindForm(VisionHeroLocation.HeroCircles, x, y);
                        if (HeroCircleForm != null)
                        {
                            FastFind1 = true;
                            FindForm  = true;
                            int HeroCircleFormNumber = HeroCircleForm ?? default(int);
                            Hero.PositionX = x + VisionHeroLocation.HeroCirclesOffsetsX[HeroCircleFormNumber];
                            Hero.PositionY = y + VisionHeroLocation.HeroCirclesOffsetsY[HeroCircleFormNumber];
                            Hero.Direction = VisionHeroLocation.GetCurrentDirection(HeroCircleFormNumber, x, y);
                        }
                    }
                }
            }


            if (FastFind1 == false)
            {
                /* Для начала попробуем найти кружочек примерно рядом с последними координатами */
                if (
                    ((Hero.PositionX - 10 > 0) && (Hero.PositionY - 10 > 0)) &&
                    ((Hero.PositionX + 10 < ScreenCapture.LockBitmap.Screen.Width) && (Hero.PositionY + 10 < ScreenCapture.LockBitmap.Screen.Height))

                    )
                {
                    bool FindForm = false;
                    for (int y = Hero.PositionY - 10; y < Hero.PositionY + 10; y++)
                    {
                        if (FindForm == true)
                        {
                            break;
                        }
                        for (int x = Hero.PositionX - 10; x < Hero.PositionX + 10; x++)
                        {
                            if (FindForm == true)
                            {
                                break;
                            }

                            int?HeroCircleForm = VisionForm.FindForm(VisionHeroLocation.HeroCircles, x, y);
                            if (HeroCircleForm != null)
                            {
                                FastFind2 = true;
                                FindForm  = true;
                                int HeroCircleFormNumber = HeroCircleForm ?? default(int);
                                Hero.PositionX = x + VisionHeroLocation.HeroCirclesOffsetsX[HeroCircleFormNumber];
                                Hero.PositionY = y + VisionHeroLocation.HeroCirclesOffsetsY[HeroCircleFormNumber];
                                Hero.Direction = VisionHeroLocation.GetCurrentDirection(HeroCircleFormNumber, x, y);
                            }
                        }
                    }
                }
            }

            if ((FastFind1 == false) && (FastFind2 == false))
            {
                /* Для начала попробуем найти кружочек примерно рядом с последними координатами */
                if (
                    ((Hero.PositionX - 20 > 0) && (Hero.PositionY - 20 > 0)) &&
                    ((Hero.PositionX + 20 < ScreenCapture.LockBitmap.Screen.Width) && (Hero.PositionY + 20 < ScreenCapture.LockBitmap.Screen.Height))

                    )
                {
                    bool FindForm = false;
                    for (int y = Hero.PositionY - 20; y < Hero.PositionY + 20; y++)
                    {
                        if (FindForm == true)
                        {
                            break;
                        }
                        for (int x = Hero.PositionX - 20; x < Hero.PositionX + 20; x++)
                        {
                            if (FindForm == true)
                            {
                                break;
                            }

                            int?HeroCircleForm = VisionForm.FindForm(VisionHeroLocation.HeroCircles, x, y);
                            if (HeroCircleForm != null)
                            {
                                FastFind3 = true;
                                FindForm  = true;
                                int HeroCircleFormNumber = HeroCircleForm ?? default(int);
                                Hero.PositionX = x + VisionHeroLocation.HeroCirclesOffsetsX[HeroCircleFormNumber];
                                Hero.PositionY = y + VisionHeroLocation.HeroCirclesOffsetsY[HeroCircleFormNumber];
                                Hero.Direction = VisionHeroLocation.GetCurrentDirection(HeroCircleFormNumber, x, y);
                            }
                        }
                    }
                }
            }

            /* Если не получилось быстро найти кружочек - ищем по всей карте */
            if ((FastFind1 == false) && (FastFind2 == false) && (FastFind3 == false))
            {
                bool FindForm = false;
                for (int y = 50; y < ScreenCapture.LockBitmap.Screen.Height - 300; y++)
                {
                    if (FindForm == true)
                    {
                        break;
                    }
                    for (int x = 250; x < ScreenCapture.LockBitmap.Screen.Width - 50; x++)
                    {
                        if (FindForm == true)
                        {
                            break;
                        }

                        int?HeroCircleForm = VisionForm.FindForm(VisionHeroLocation.HeroCircles, x, y);
                        if (HeroCircleForm != null)
                        {
                            FindForm = true;
                            int HeroCircleFormNumber = HeroCircleForm ?? default(int);
                            Hero.PositionX = x + VisionHeroLocation.HeroCirclesOffsetsX[HeroCircleFormNumber];
                            Hero.PositionY = y + VisionHeroLocation.HeroCirclesOffsetsY[HeroCircleFormNumber];
                            Hero.Direction = VisionHeroLocation.GetCurrentDirection(HeroCircleFormNumber, x, y);
                        }
                    }
                }
            }
        }