Пример #1
0
        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();
            }

        }
Пример #2
0
 private void button2_Click(object sender, EventArgs e)
 {
     MemoryWork mw = new MemoryWork();
 }
Пример #3
0
        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();
            }
        }