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); }
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); }
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)); }
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); }
public static void CheckMoney(PwClient pw) { pw.Money = CalcMethods.ReadInt(pw.Handle, OfsPresenter.getInstance("BA")[0], OfsPresenter.getInstance("GA+Player+Money")); }
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); } }