Ejemplo n.º 1
0
        public static PwClient Pw_CLient_Search(String name, PwClient pw)
        {
            //Задаем начало отсчета
            IntPtr hwnd = IntPtr.Zero;
            //Задаем временное хранилище запущенных клиентов
            List <PwClient> temp_coll = new List <PwClient>();

            //В бесконечном цикле перебираем все запущенные окна с классом ElementClient Window
            while (true)
            {
                //очищаем коллекцию клиентов и начинаем заполнять заново
                //получаем следующее окно с классом ElementClient Window.
                hwnd = WinApi.FindWindowEx(IntPtr.Zero, hwnd, "ElementClient Window", null);
                //Если наткнулись на ноль - значит выходим
                if (hwnd == IntPtr.Zero)
                {
                    break;
                }
                //задаем временную ссылку на объект нашего клиента
                PwClient temp_client = new PwClient(hwnd);
                //если персонаж запущен (удалось прочесть имя), то добавляем наш объект во временное хранилище
                if (temp_client.Name == name)
                {
                    if (pw?.ProcessID != temp_client.ProcessID)
                    {
                        return(temp_client);
                    }
                    break;
                }
            }
            return(pw);
        }
Ejemplo n.º 2
0
 private static Int32 SearchIndexInCollection(PwClient pw, List <PwClient> coll)
 {
     //пробегаемся по коллекции и ищем индекс нужного элемента
     for (Int32 i = 0; i < coll.Count; i++)
     {
         if (pw == coll[i])
         {
             return(i);
         }
     }
     return(-1);
 }
Ejemplo n.º 3
0
        public override bool Equals(Object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            PwClient p = obj as PwClient;

            if ((Object)p == null)
            {
                return(false);
            }

            return((ProcessID == p.ProcessID) && (Name == p.Name));
        }
Ejemplo n.º 4
0
 public static void GetCords(PwClient pw, out double x, out double y, out double z)
 {
     x = Math.Round(CalcMethods.ReadFloat(pw.Handle, OfsPresenter.getInstance("BA")[0], OfsPresenter.getInstance("GA+Player+X")), 1);
     y = Math.Round(CalcMethods.ReadFloat(pw.Handle, OfsPresenter.getInstance("BA")[0], OfsPresenter.getInstance("GA+Player+Y")), 1);
     z = Math.Round(CalcMethods.ReadFloat(pw.Handle, OfsPresenter.getInstance("BA")[0], OfsPresenter.getInstance("GA+Player+Z")), 1);
 }
Ejemplo n.º 5
0
 public static void CheckMoney(PwClient pw)
 {
     pw.Money = CalcMethods.ReadInt(pw.Handle, OfsPresenter.getInstance("BA")[0], OfsPresenter.getInstance("GA+Player+Money"));
 }
Ejemplo n.º 6
0
        private static void Pw_CLient_Search()
        {
            //Задаем начало отсчета
            IntPtr hwnd = IntPtr.Zero;
            //Задаем временное хранилище запущенных клиентов
            List <PwClient> temp_coll = new List <PwClient>();

            //В бесконечном цикле перебираем все запущенные окна с классом ElementClient Window
            while (true)
            {
                //очищаем коллекцию клиентов и начинаем заполнять заново
                //получаем следующее окно с классом ElementClient Window.
                hwnd = WinApi.FindWindowEx(IntPtr.Zero, hwnd, "ElementClient Window", null);
                //Если наткнулись на ноль - значит выходим
                if (hwnd == IntPtr.Zero)
                {
                    break;
                }
                //задаем временную ссылку на объект нашего клиента
                PwClient temp_client = new PwClient(hwnd);
                //если персонаж запущен (удалось прочесть имя), то добавляем наш объект во временное хранилище
                if (temp_client.Name.Length > 0)
                {
                    temp_coll.Add(temp_client);
                }
            }
            //цикл для удаления из комбобокса и хэштаблицы неактуальных объектов
            for (int i = coll.Count - 1; i > -1; i--)
            {
                if (!temp_coll.Contains(coll[i]))
                {
                    {
                        ht.Remove(((PwClient)coll[i]).Name);
                        coll.Remove((PwClient)coll[i]);
                    }
                }
            }

            //цикл для удаления из временного хранилища уже запущенных клиентов
            for (int i = coll.Count - 1; i > -1; i--)
            {
                //если временное хранилище имеет элемент, которое уже есть в комбобоксе
                //то ищем индекс этого объекта во временном хранилище и удаляем по индексу
                PwClient temp = (PwClient)coll[i];
                if (temp_coll.Contains(temp))
                {
                    Int32 iter = SearchIndexInCollection((PwClient)coll[i], temp_coll);
                    if (iter > -1)
                    {
                        temp_coll.RemoveAt(iter);
                    }
                }
            }


            //добавляем оставшиеся во временном хранилище объекты (новые)
            //в комбобокс и хэш-таблицу
            foreach (PwClient pw in temp_coll)
            {
                coll.Add(pw);
                ht.Add(pw.Name, pw);
            }
        }