Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Гайд Spread crosshair fatality (INDIGO)

  • Автор темы Автор темы Nixer
  • Дата начала Дата начала
Эксперт
Эксперт
Статус
Оффлайн
Регистрация
1 Июл 2017
Сообщения
1,744
Реакции
1,503
Всем привет дада гайд для индиго

Значит вставляем перед HRESULT WINAPI Hook_Present это дерьмо
//Не обращайте внимания на лишний код, мне лень было вырезать.
Код:
Expand Collapse Copy
        struct CUSTOMVERTEX {
            FLOAT x, y, z;
            FLOAT rhw;
            DWORD color;
            //  FLOAT tu, tv;  
        };

        void CircleFilledDualColor(float x, float y, float rad, float rotate, int type, int resolution, DWORD color, DWORD color2, IDirect3DDevice9* m_device)
        {
            LPDIRECT3DVERTEXBUFFER9 g_pVB2;

            std::vector<CUSTOMVERTEX> circle(resolution + 2);

            float angle = rotate * D3DX_PI / 180, pi = D3DX_PI;

            if (type == 1)
                pi = D3DX_PI; // Full circle
            if (type == 2)
                pi = D3DX_PI / 2; // 1/2 circle
            if (type == 3)
                pi = D3DX_PI / 4; // 1/4 circle

            pi = D3DX_PI / type; // 1/4 circle

            circle[0].x = x;
            circle[0].y = y;
            circle[0].z = 0;
            circle[0].rhw = 1;
            circle[0].color = color2;

            for (int i = 1; i < resolution + 2; i++)
            {
                circle[i].x = (float)(x - rad * cos(pi*((i - 1) / (resolution / 2.0f))));
                circle[i].y = (float)(y - rad * sin(pi*((i - 1) / (resolution / 2.0f))));
                circle[i].z = 0;
                circle[i].rhw = 1;
                circle[i].color = color;
            }

            // Rotate matrix
            int _res = resolution + 2;
            for (int i = 0; i < _res; i++)
            {
                circle[i].x = x + cos(angle)*(circle[i].x - x) - sin(angle)*(circle[i].y - y);
                circle[i].y = y + sin(angle)*(circle[i].x - x) + cos(angle)*(circle[i].y - y);
            }

            m_device->CreateVertexBuffer((resolution + 2) * sizeof(CUSTOMVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_XYZRHW | D3DFVF_DIFFUSE, D3DPOOL_DEFAULT, &g_pVB2, NULL);

            VOID* pVertices;
            g_pVB2->Lock(0, (resolution + 2) * sizeof(CUSTOMVERTEX), (void**)&pVertices, 0);
            memcpy(pVertices, &circle[0], (resolution + 2) * sizeof(CUSTOMVERTEX));
            g_pVB2->Unlock();

            m_device->SetTexture(0, NULL);
            m_device->SetPixelShader(NULL);
            m_device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
            m_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
            m_device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

            m_device->SetStreamSource(0, g_pVB2, 0, sizeof(CUSTOMVERTEX));
            m_device->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);
            m_device->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, resolution);
            if (g_pVB2 != NULL)
                g_pVB2->Release();
        }

        void CircleFilledRainbowColor(float x, float y, float rad, float rotate, int type, int resolution, IDirect3DDevice9* m_device)
        {
            LPDIRECT3DVERTEXBUFFER9 g_pVB2;

            std::vector<CUSTOMVERTEX> circle(resolution + 2);

            float angle = rotate * D3DX_PI / 180, pi = D3DX_PI;

            if (type == 1)
                pi = D3DX_PI; // Full circle
            if (type == 2)
                pi = D3DX_PI / 2; // 1/2 circle
            if (type == 3)
                pi = D3DX_PI / 4; // 1/4 circle

            pi = D3DX_PI / type; // 1/4 circle

            circle[0].x = x;
            circle[0].y = y;
            circle[0].z = 0;
            circle[0].rhw = 1;
            circle[0].color = D3DCOLOR_RGBA(0, 0, 0, 0);

            float hue = 0.f;

            for (int i = 1; i < resolution + 2; i++)
            {
                circle[i].x = (float)(x - rad * cos(pi*((i - 1) / (resolution / 2.0f))));
                circle[i].y = (float)(y - rad * sin(pi*((i - 1) / (resolution / 2.0f))));
                circle[i].z = 0;
                circle[i].rhw = 1;

                auto clr = Color::FromHSB(hue, 1.f, 1.f);
                circle[i].color = D3DCOLOR_RGBA(clr.r(), clr.g(), clr.b(), clr.a());
                hue += 0.02;
            }

            // Rotate matrix
            int _res = resolution + 2;
            for (int i = 0; i < _res; i++)
            {
                float Vx1 = x + (cosf(angle) * (circle[i].x - x) - sinf(angle) * (circle[i].y - y));
                float Vy1 = y + (sinf(angle) * (circle[i].x - x) + cosf(angle) * (circle[i].y - y));

                circle[i].x = Vx1;
                circle[i].y = Vy1;
            }

            m_device->CreateVertexBuffer((resolution + 2) * sizeof(CUSTOMVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_XYZRHW | D3DFVF_DIFFUSE, D3DPOOL_DEFAULT, &g_pVB2, NULL);

            VOID* pVertices;
            g_pVB2->Lock(0, (resolution + 2) * sizeof(CUSTOMVERTEX), (void**)&pVertices, 0);
            memcpy(pVertices, &circle[0], (resolution + 2) * sizeof(CUSTOMVERTEX));
            g_pVB2->Unlock();

            m_device->SetTexture(0, NULL);
            m_device->SetPixelShader(NULL);
            m_device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
            m_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
            m_device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

            m_device->SetStreamSource(0, g_pVB2, 0, sizeof(CUSTOMVERTEX));
            m_device->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);
            m_device->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, resolution);
            if (g_pVB2 != NULL)
                g_pVB2->Release();
        }

        DWORD color = D3DCOLOR_RGBA((int)(0 *255.0f), (int)(0 *255.0f), (int)(0 *255.0f), (int)(1 *255.0f));
        DWORD color2 = D3DCOLOR_RGBA((int)(0 * 255.0f), (int)(0 * 255.0f), (int)(0 * 255.0f), (int)(0 * 255.0f));

        void Crosshair(IDirect3DDevice9* pDevice)
        {
            CBaseEntity* local = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity(Interfaces::Engine()->GetLocalPlayer());

            Color AwpAimColor = Color(int(Settings::Misc::misc_AwpAimColor[0] * 255.f),
                int(Settings::Misc::misc_AwpAimColor[1] * 255.f),
                int(Settings::Misc::misc_AwpAimColor[2] * 255.f));

            if (Settings::Misc::ShowSpread == 2)
            {
                int width, height;
                Interfaces::Engine()->GetScreenSize(width, height);
                if (local && IsLocalAlive())
                {
                    static Vector ViewAngles;
                    Interfaces::Engine()->GetViewAngles(ViewAngles);
                    ViewAngles += (local->GetAimPunchAngle()) * 2.f;

                    static Vector fowardVec;
                    AngleVectors(ViewAngles, fowardVec);
                    fowardVec *= 10000;

                    // Get ray start / end
                    Vector start = local->GetOrigin() + local->GetViewOffset();
                    Vector end = start + fowardVec, endScreen;

                    CBaseWeapon* weaponbase = local->GetBaseWeapon();

                    if (weaponbase->IsGun())
                    {
                        float cone = weaponbase->GetInaccuracy();

                        if (cone > 0.0f)
                        {
                            float size;
                            Vector screen;

                            if (cone < 0.01f) cone = 0.01f;

                            float size1337 = (cone * height) * 0.7f;

                            if (WorldToScreen(end, endScreen))
                            {
                                /*Вот это значит рейнбов круг*/
                                CircleFilledRainbowColor(Client::iScreenWidth / 2, Client::iScreenHeight / 2, size1337, 0, 1, 50/*, color, color2*/, pDevice);
                                /*А это двухцветный круг прямо как в ав*/
                                CircleFilledDualColor(Client::iScreenWidth / 2, Client::iScreenHeight / 2, size1337, 0, 1, 50, color, color2, pDevice);
                            }
                        }
                    }
                }
            }
        }
Упс, забыли аккураси:
Код:
Expand Collapse Copy
    float CBaseWeapon::GetInaccuracy()
    {
        return GetMethod<float(__thiscall*)(void*)>(this, 468)(this);
    }
Ну а потом в самом презенте вызываем вот так:
IAo6UHJ.png


После данных манипуляций мы получим такой результат:
Пожалуйста, авторизуйтесь для просмотра ссылки.
(соре за второй моник)​
Credits: @Nixer (За готовую пасту), @Zidjey (За реинбоу киркл)
Если будете пастить на другие борды, будьте добры, оставляйте кредиты.
Спасибо.​
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
это просто ахуенно
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Возможно это реализовать в интернал Чите?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Исправил,говорю же путаю эти два понятия:FeelsBadMan:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
добавил но ему всё равно что то не нравится....
можешь помочь пожалуйста
24M8lBqd6gA.jpg
Пиздец, ты не можешь добавить проверку на оружие в руке?
Замени на: (localplayer->getweapon)
 
Назад
Сверху Снизу