private void button7_Click(object sender, EventArgs e) { try { var mm = new MemoryWork((Process)comboBox2.SelectedItem); var cfg = (Config)comboBox1.SelectedItem; var t = mm.ReadInt32(HexToInt(cfg.BaseAddr)) + HexToInt(cfg.Coord); var coords = mm.ReadInt32(t); var point = new Point { x = mm.ReadFloat(coords + Convert.ToInt32(cfg.X)), y = mm.ReadFloat(coords + Convert.ToInt32(cfg.Y)), z = mm.ReadFloat(coords + Convert.ToInt32(cfg.Z)) }; dynamic selected; if (tabControl1.SelectedIndex == 0) selected = (Region)listBox1.SelectedItem; else selected = (Transport)listBox1.SelectedItem; var points = ((List<Point>)selected.Points); points[dataGridView1.SelectedCells[0].RowIndex] = point; DataRepaint(); } catch (Exception ex) { dynamic reg; if (tabControl1.SelectedIndex == 0) reg = (Region)listBox1.SelectedItem; else reg = (Transport)listBox1.SelectedItem; reg.Points.Add(new Point()); DataRepaint(); } }
private void button2_Click(object sender, EventArgs e) { MemoryWork mw = new MemoryWork(); }
private void DirectXThread(object sender) { List <PlayerModel> currentPlayerList = new List <PlayerModel>(); MemoryWork memoryHelper = new MemoryWork(); //создаём объект, чтоб постоянно не писать 999 обращений к классу WorkWithMemory //обнуляем координаты, чтоб потом в них записать координаты относительно экрана. Другими словами, тут потом будут числа - "координаты" мест, где рисовать боксы float posX = 0; float posY = 0; float headX = 0; float headY = 0; float height = 0; float width = 0; while (_running) { _device.BeginDraw(); _device.Clear(new RawColor4(Color.Transparent.R, Color.Transparent.G, Color.Transparent.B, Color.Transparent.A)); _device.TextAntialiasMode = SharpDX.Direct2D1.TextAntialiasMode.Aliased; //Начало рисования currentPlayerList = memoryHelper.GetPlayer(); //тут комментарии излишни. Если не знаете, что это, лучше прочитать про указатели и смещения в CheatEngine Int32 localPlayer = memoryHelper.ReadInt32(memoryHelper.ClientModule + signatures.dwLocalPlayer); Int32 localTeam = memoryHelper.ReadInt32(localPlayer + netvars.m_iTeamNum); for (int i = 0; i < 16; i++) { _viewMatrix[i] = memoryHelper.ReadFloat(memoryHelper.ClientModule + signatures.dwViewMatrix + (i * 0x4)); } foreach (var player in currentPlayerList) { Vector3 entityPosition = new Vector3 { X = player.PosX, Y = player.PosY, Z = player.PosZ }; Vector3 booleanVector = new Vector3(); //(не точно) скорее всего, здесь идёт проверка, если существует игрок (не важно, противник или союзник, то идём дальше if (WorldToScreen(entityPosition, booleanVector)) { posX = _worldToScreenPos.X; posY = _worldToScreenPos.Y; Vector3 entityHeadPosition = new Vector3 { X = player.HeadX, Y = player.HeadY, Z = player.HeadZ }; //аналогичная проверка, но на голову. не знаю, для чего if (WorldToScreen(entityHeadPosition, booleanVector)) { headX = _worldToScreenPos.X; headY = _worldToScreenPos.Y - _worldToScreenPos.Y / 64; if (player.Team != localTeam) //если игрок в противоположной команде. Если хочешь, чтобы рисовало обе команды, убери это условие { if (player.Health > 0) //если игрок жив { height = posY - headY; width = height / 2; float[] a = new float[2]; a[0] = 1; a[1] = 2; _boxBrush = new SolidColorBrush(_device, new RawColor4(Variable.Red, Variable.Green, Variable.Blue, Variable.ESPBrightness)); //расстояние между линиями и их толщина. Каждая строка - линия. Рисуем так: точка (X,Y координаты), точка (аналогично), цвет линии, её толщина _device.DrawLine(new RawVector2(posX - width / 2, posY), new RawVector2(posX - width / 2, headY), _boxBrush, Variable.ESPThickness); // Left _device.DrawLine(new RawVector2(posX - width / 2, headY), new RawVector2(headX + width / 2, headY), _boxBrush, Variable.ESPThickness); // Top _device.DrawLine(new RawVector2(headX + width / 2, headY), new RawVector2(posX + width / 2, posY), _boxBrush, Variable.ESPThickness); // Right _device.DrawLine(new RawVector2(posX + width / 2, posY), new RawVector2(posX - width / 2, posY), _boxBrush, Variable.ESPThickness); // Bottom Thread.Sleep(Variable.ESPBoostFPS); } } } } } //Конец рисования _device.EndDraw(); } }