//конструктор public My_Windows(IntPtr handle) { this.handle = handle; //получаем id процесса по хендлу WinApi.GetWindowThreadProcessId(handle, out processID); //запускаем процесс и получаем его дескриптор oph = WinApi.OpenProcess(WinApi.ProcessAccessFlags.All, false, ProcessID); //создаем класс для отправки пакетов packetSend = new Packets(oph); //получаем имя персонажа для данного клиента name = CalcMethods.ReadString(oph, Offsets.BaseAdress, Offsets.OffsetsName); //узнаем wid wid = CalcMethods.ReadInt(oph, Offsets.BaseAdress, Offsets.OffsetsWid); //узнаем класс нашего персонажа classID = CalcMethods.ReadInt(oph, Offsets.BaseAdress, Offsets.OffsetsClassId); //читаем доступные скиллы-бафы int skillCount = CalcMethods.ReadInt(oph, Offsets.BaseAdress, Offsets.OffsetsSkillsCount); for (int s = 0; s < skillCount; s++) { int id = CalcMethods.ReadInt(oph, Offsets.BaseAdress, Offsets.OffsetsToIdSkill(s)); if (skills_for_buf.Contains(id)) { if (id == 112 || id == 518 || id == 519 || id == 1980 || id == 1981 || //танк id == 312 || id == 656 || id == 657 || id == 1984 || id == 1985 || //друид id == 1811 || id == 1869) //прист { changeForm = new Skill(id, s); continue; } if (id == 1824) { shamansCall = new Skill(id, s); continue; } my_skills_for_buf.Add(new Skill(id, s)); } } //узнаем координаты x = CalcMethods.ReadFloat(oph, Offsets.BaseAdress, Offsets.OffsetsX) / 10 + 400; y = CalcMethods.ReadFloat(oph, Offsets.BaseAdress, Offsets.OffsetsY) / 10 + 550; z = CalcMethods.ReadFloat(oph, Offsets.BaseAdress, Offsets.OffsetsZ) / 10; //выбираем картинку для нашего персонажа Select_Image(classID); //указываем состояние stateThread = StateEnum.stop; //создаем поток для окна this.BackgroundWorker5 = new BackgroundWorker(); this.BackgroundWorker5.WorkerSupportsCancellation = true; this.BackgroundWorker5.DoWork += new DoWorkEventHandler(this.backgroundWorker5_DoWork); }