Перейти к содержанию

[CS:GO] вылет игры при использовании view matrix


Рекомендуемые сообщения

Всем привет! уже неделю бьюсь над загадкой, у меня есть старый код, но рабочий на всех играх с которыми я работал)) код рисует боксы, линии и  тд на оверлее, рисую с помощью SharpDx на C#. Проблема заключается в том, что когда в поле зрения попадает враг, то игра вылетает, если провернуть тоже самое, но с ботами, то вылет произойдет через некоторое время, не пойму почему вылетает игра, а не чит, ведь я не пишу ничего в игру, а только читаю координаты, номер команды и матрицу.

 

функция W2S

Скрытый текст

private ScreenVector WorldToScreen(float x, float y, float z)
        {
            float w;
            float sx;
            float sy;

            sx = VMatrix.M11 * x +
                VMatrix.M12 * y +
                VMatrix.M13 * z +
                VMatrix.M14;

            sy = VMatrix.M21 * x +
                VMatrix.M22 * y +
                VMatrix.M23 * z +
                VMatrix.M24;


            w = VMatrix.M41 * x +
                VMatrix.M42 * y +
                VMatrix.M43 * z +
                VMatrix.M44;

            if (w < 0.01f)
                return new ScreenVector()
                {
                    Result = false,
                    X = 0,
                    Y = 0
                };

            float invw = 1f / w;
            sx *= invw;
            sy *= invw;

            int width = WHwindow.Width;
            int height = WHwindow.Height;

            float xt = width / 2;
            float yt = height / 2;

            xt += 0.5f * sx * width + 0.5f;
            yt -= 0.5f * sy * height + 0.5f;

            sx = xt;
            sy = yt;


            return new ScreenVector()
            {
                Result = true,
                X = sx,
                Y = sy
            };
        }

 

функция выполняющееся в таймере

Скрытый текст

 private void Loop()
        {
            while (true)
            {
               // GC.Collect();
                gfx.BeginScene();
                gfx.ClearScene();


                for (int i = 0; i < 100; i++)
                {
                    MyBaseAdr = mem.Read<int>(CheatData.bClient + Offsets.dwLocalPlayer);
                    mteam = mem.Read<int>(MyBaseAdr + Offsets.m_iTeamNum);
                    mycoords = mem.Read<Vector3>(MyBaseAdr + Offsets.m_vecOrigin);
                    eBaseAdr = mem.Read<int>(CheatData.bClient + Offsets.dwEntityList + (i * Offsets.Loop_offset));
                    eteam = mem.Read<int>(eBaseAdr + Offsets.m_iTeamNum);
                    dormant = mem.Read<bool>(eBaseAdr + Offsets.m_bDormant);
                    // glowind = mem.Read<int>(eBaseAdr + Offsets.m_iGlowIndex);
                    hp = mem.Read<int>(eBaseAdr + Offsets.m_iHealth);
                    coords = mem.Read<Vector3>(eBaseAdr + Offsets.m_vecOrigin);
                    head = CalcEnemyHead(eBaseAdr, 8);
                    Gres = mem.Read<int>(CheatData.bClient + Offsets.dwPlayerResource);
                    rank = mem.Read<int>(Gres + Offsets.m_iCompetitiveRanking + i * 4);
                    //
                    //    angles = mem.Read<Vector2>(eBaseAdr + Offsets.m_angEyeAngles);

                    mt = mteam;
                    et = eteam;

                    if (MyBaseAdr == 0x0) { continue; }


                    VMatrix = mem.Read<Matrix4x4>(CheatData.bClient + Offsets.dwViewMatrix);
                    ScreenVector sv = WorldToScreen(coords.X, coords.Y, coords.Z);
                    ScreenVector svh = WorldToScreen(head.X, head.Y, head.Z);
                    if (dormant) { continue; }
                    if (hp == 0) { continue; }

                    if (!sv.Result)
                    {
                        continue;
                    }
                    int ex = (int)sv.X;
                    int ey = (int)sv.Y;
                    int sx = WHwindow.Width / 2;
                    int sy = WHwindow.Height;

                    float h = (svh.Y - sv.Y);
                    float w =  18500/(float)Vector3.Distance(mycoords, coords);
                    float x = (int)(sv.X - w / 2);
                    float y = (sv.Y);

                    if ((eteam != mteam) &&mteam!=1)
                   
                    {
                        if (CheatData.lines_wh)
                            gfx.DrawLine(sx, sy, ex, ey, 2,new Direct2DColor(pen[0],pen[1],pen[2]));
                        if (CheatData.hp_wh)

                        gfx.DrawHorizontalBar(hp, x, y, 2, h, 1, new Direct2DColor(255,0 ,0 ), new Direct2DColor(0, 0, 0));

                        if (CheatData.box)
                        {
                            double d = Vector3.Distance(mycoords, coords);
                            if (d == 0) continue;
                              Drawbox(sv.X, sv.Y, (int)d);
                        }
                        if (CheatData.ranks)
                        {
                            gfx.DrawText(Ranks[rank], ex, ey, new Direct2DFont(new SharpDX.DirectWrite.Factory(), "Arial", 12), new Direct2DColor(255, 0, 0));
                        }

                    }

                }


                gfx.EndScene();
                
                Thread.Sleep(5);
            }
            
        }

 

 

Ссылка на комментарий
Поделиться на другие сайты

  • ReWanet изменил название на [CS:GO] вылет игры при использовании view matrix

Чего ты хочешь от созданной тобой темы, если в теме нет никакой информации об ошибке, нет отладочной информации?

давай тогда призывать духов геймхакеров. они мне подсказывают, что у тебя выход за пределы списка игроков и нет никакой проверки, вдруг там какой-то мусор попался и ты его рисуешь.

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

20 часов назад, kiwipapayamongoose сказал:

Чего ты хочешь от созданной тобой темы, если в теме нет никакой информации об ошибке, нет отладочной информации?

хорошо, допустим попался мусор, но тогда вылетел бы чит, а не игра. Я не понимаю как игра может вылететь, если в нее ничего не пишется. Я пробовал рисовать просто текст в левом верхнем углу, все удачно, как только поставив координаты игрока- краш, через некоторое время. Предоставлю любую инфу какую скажешь, только скажи

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, barsuuk сказал:

Я не понимаю как игра может вылететь, если в нее ничего не пишется.

Вот поэтому и мы не можем ничего тебе сказать. Если хендл открыт с полными правами, случится может все что угодно.

 

2 часа назад, barsuuk сказал:

Предоставлю любую инфу какую скажешь, только скажи

Информацию из дампов игры, при краше кс генерирует их. Анализируй дампы и смотри из-за чего и где краш.
Попробуй отлаживать код во время отрисовки координат.

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, kiwipapayamongoose сказал:

Информацию из дампов игры, при краше кс генерирует их. Анализируй дампы и смотри из-за чего и где краш.

спасибо) про логи игры я что-то забыл))

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.