Beispiel #1
0
 //Воюем
 public void Fight(EsoWindow esoWindow, IntPtr hWnd)
 {
     esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYDOWN, new IntPtr((ushort)Keys.D1), new IntPtr(0));
     Thread.Sleep(random.Next(70, 100));
     esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)Keys.D1), new IntPtr(0));
     Thread.Sleep(2000);
     //Пока в бое, жмем клавишу 1 раз в 2 секунды
     while (isFight())
     {
         esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYDOWN, new IntPtr((ushort)Keys.D1), new IntPtr(0));
         Thread.Sleep(random.Next(70, 100));
         esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)Keys.D1), new IntPtr(0));
         Thread.Sleep(2000);
     }
 }
Beispiel #2
0
        //Рыбачим
        public void Fishing(EsoWindow esoWindow, IntPtr hWnd)
        {
            bool stopFish = false;

            while (!stopFish)
            {
                if (Form1.stopAction)
                {
                    return;
                }
                graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size); // Задаем первыми двумя цифрами координаты начала (верхний левый угол) считываемого прямоугольника

                //Рассчитываем хэш код картинки
                rawImageData = converter.ConvertTo(bitmap, typeof(byte[])) as byte[];
                hash         = md5.ComputeHash(rawImageData);
                //конвертируем в строку
                actualHash = BitConverter.ToString(hash);
                switch (actualHash)
                {
                case fishHole:
                    esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYDOWN, new IntPtr((ushort)System.Windows.Forms.Keys.E), new IntPtr(0));
                    Thread.Sleep(random.Next(70, 100));
                    esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)System.Windows.Forms.Keys.E), new IntPtr(0));
                    break;

                case waitFish:
                    break;

                case catchFish:
                    Thread.Sleep(random.Next(500, 1000));
                    esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYDOWN, new IntPtr((ushort)System.Windows.Forms.Keys.E), new IntPtr(0));
                    Thread.Sleep(random.Next(70, 100));
                    esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)System.Windows.Forms.Keys.E), new IntPtr(0));
                    Thread.Sleep(random.Next(3000, 4000));
                    break;

                case fightStatus:
                    Fight(esoWindow, hWnd);
                    esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYDOWN, new IntPtr((ushort)System.Windows.Forms.Keys.S), new IntPtr(0));
                    Thread.Sleep(random.Next(2000));
                    esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)System.Windows.Forms.Keys.S), new IntPtr(0));
                    Thread.Sleep(random.Next(70, 100));
                    esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYDOWN, new IntPtr((ushort)System.Windows.Forms.Keys.W), new IntPtr(0));
                    Thread.Sleep(random.Next(1500));
                    esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)System.Windows.Forms.Keys.W), new IntPtr(0));
                    break;

                default:
                    stopFish = true;
                    break;
                }

                Thread.Sleep(random.Next(500, 1000));
            }
        }
Beispiel #3
0
 //Собираем ресурс
 public void GatheringResources(EsoWindow esoWindow, IntPtr hWnd)
 {
     esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYDOWN, new IntPtr((ushort)Keys.E), new IntPtr(0));
     Thread.Sleep(random.Next(70, 100));
     esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)Keys.E), new IntPtr(0));
 }
Beispiel #4
0
        //Заготовка под бег
        public void Run(EsoWindow esoWindow, IntPtr processHandle, IntPtr hWnd, String xAddress, String yAdress, String cAdress, String xTarget, String yTarget, String cTarget)
        {
            if (Form1.stopAction)
            {
                return;                   //Прекращаем функцию, если нажато F12
            }
            int              timeCount = 0;
            IntPtr           bytesRead;
            NumberFormatInfo nfi = new NumberFormatInfo();

            nfi.NumberDecimalSeparator = ","; //Задаем запятую, как разделитель между числом и дробной частью

            //Создаем массивы, куда будут считываться данные из памяти
            var bufferX = new byte[8];
            var bufferY = new byte[8];
            var bufferC = new byte[8];
            //Переводим адреса памяти из String в Hex
            var addrX = long.Parse(xAddress, System.Globalization.NumberStyles.HexNumber);
            var addrY = long.Parse(yAdress, System.Globalization.NumberStyles.HexNumber);
            var addrC = long.Parse(cAdress, System.Globalization.NumberStyles.HexNumber);
            //Читаем текущие значения X, Y, Corner
            var resultX = esoWindow.ReadProcessMemory(processHandle, new IntPtr(addrX), bufferX, (uint)bufferX.Length, out bytesRead);
            var resultY = esoWindow.ReadProcessMemory(processHandle, new IntPtr(addrY), bufferY, (uint)bufferY.Length, out bytesRead);
            var resultC = esoWindow.ReadProcessMemory(processHandle, new IntPtr(addrC), bufferC, (uint)bufferC.Length, out bytesRead);
            //Переводим текущие значения X, Y, Corner в Double
            double actualX = BitConverter.ToDouble(bufferX, 0);
            double actualY = BitConverter.ToDouble(bufferY, 0);
            double actualC = BitConverter.ToDouble(bufferC, 0);

            Console.WriteLine("Целевые координаты: " + "X: " + xTarget + " Y: " + yTarget + " C: " + cTarget);
            Console.WriteLine("Текущие координаты: " + "X: " + Convert.ToString(actualX) + " Y: " + Convert.ToString(actualY) + " C: " + Convert.ToString(actualC));

            //Переводим целевые значения из String в Double с использованием заданного
            double targetX = Convert.ToDouble(xTarget, nfi);
            double targetY = Convert.ToDouble(yTarget, nfi);
            //Расчет катетов прямоугольного треугольника
            double katetX = Math.Abs(targetX - actualX);
            double katetY = Math.Abs(targetY - actualY);
            //Находим тангенс угла и угол а
            double cornerA = Math.Atan(katetY / katetX) * 180 / Math.PI;

            //Поворачиваем к цели
            if ((targetX > actualX) && (targetY > actualY)) //Если оба целевых значения больше текущих
            {
                turnCornerVer3(esoWindow, cAdress, processHandle, Convert.ToString(270 - cornerA));
                tStatus = TargetStatus.X_bigger_Y_bigger;
            }

            if ((targetX < actualX) && (targetY < actualY)) //Если оба целевых значения меньше текущих
            {
                turnCornerVer3(esoWindow, cAdress, processHandle, Convert.ToString(90 - cornerA));
                tStatus = TargetStatus.X_less_Y_less;
            }

            if ((targetX > actualX) && (targetY < actualY)) //Если целевой X больше, а Y - меньше
            {
                turnCornerVer3(esoWindow, cAdress, processHandle, Convert.ToString(270 + cornerA));
                tStatus = TargetStatus.X_bigger_Y_less;
            }

            if ((targetX < actualX) && (targetY > actualY)) //Если целевой X меньше, а Y - больше
            {
                turnCornerVer3(esoWindow, cAdress, processHandle, Convert.ToString(90 + cornerA));
                tStatus = TargetStatus.X_less_Y_bigger;
            }

            //Бежим к цели
            while (ReachTarget(targetX, actualX, targetY, actualY))
            {
                if (Form1.stopAction)
                {
                    break;
                }
                if (timeCount > 30000)
                {
                    Form1.stopAction = true;
                    break;
                }
                if (isFight())
                {
                    esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)Keys.W), new IntPtr(0));
                    Fight(esoWindow, hWnd); //Если в бою, то воюем.
                }
                esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYDOWN, new IntPtr((ushort)System.Windows.Forms.Keys.W), new IntPtr(0));
                Thread.Sleep(150);
                timeCount = timeCount + 150;
                resultX   = esoWindow.ReadProcessMemory(processHandle, new IntPtr(addrX), bufferX, (uint)bufferX.Length, out bytesRead);
                resultY   = esoWindow.ReadProcessMemory(processHandle, new IntPtr(addrY), bufferY, (uint)bufferY.Length, out bytesRead);
                actualX   = BitConverter.ToDouble(bufferX, 0);
                actualY   = BitConverter.ToDouble(bufferY, 0);
            }

            esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)Keys.W), new IntPtr(0));
            if (!Form1.stopAction && cTarget != null)
            {
                if (!cTarget.Equals(""))
                {
                    turnCornerVer3(esoWindow, cAdress, processHandle, cTarget);
                }
            }
        }