Исходник Draw any model full code

Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
C++:
auto misc_interface::get_flex_create_fn()->CreateClientClassFn {

    auto clazz = CInterfaces::Get().Client->GetAllClasses();

    while (fnv::hash_runtime(clazz->m_pNetworkName) != FNV("CBaseFlex"))//CBaseFlex

        clazz = clazz->m_pNext;

    return clazz->m_pCreateFn;

}



auto misc_interface::make_flex(int entry, int serial)->CBaseEntity* {

    static auto flex_create_fn = get_flex_create_fn();

    if (flex_create_fn) {

        flex_create_fn(entry, serial);

        const auto flex = static_cast<CBaseAttributableItem*>(CInterfaces::Get().EntityList->GetClientEntity(entry));

        flex->InitializeAsClientEntity("models/player/custom_player/legacy/ctm_sas_varianta.mdl", RenderGroup_t::RENDER_GROUP_OPAQUE_ENTITY);

        flex->AddEffects(0x20);

        auto mod = CInterfaces::Get().ModelInfo->GetModel(flex->GetModelIndex());

        if (mod)

            calculate_frame_distance(mod);

        return flex;

    }

    return nullptr;

}



auto misc_interface::calculate_frame_distance(const model_t* model) -> void {

    Vector vecMin, vecMax;

    CInterfaces::Get().ModelInfo->GetModelRenderBounds(model, vecMin, vecMax);

    Vector vecCenter = (vecMax + vecMin) * 0.5f;

    vecMin -= vecCenter;

    vecMax -= vecCenter;



    // Get the bounds points and transform them by the desired model panel rotation.

    Vector aBoundsPoints[8];

    aBoundsPoints[0].Init(vecMax.x, vecMax.y, vecMax.z);

    aBoundsPoints[1].Init(vecMin.x, vecMax.y, vecMax.z);

    aBoundsPoints[2].Init(vecMax.x, vecMin.y, vecMax.z);

    aBoundsPoints[3].Init(vecMin.x, vecMin.y, vecMax.z);

    aBoundsPoints[4].Init(vecMax.x, vecMax.y, vecMin.z);

    aBoundsPoints[5].Init(vecMin.x, vecMax.y, vecMin.z);

    aBoundsPoints[6].Init(vecMax.x, vecMin.y, vecMin.z);

    aBoundsPoints[7].Init(vecMin.x, vecMin.y, vecMin.z);



    // Translated center point (offset from camera center).

    Vector vecTranslateCenter = -vecCenter;



    // Build the rotation matrix.

    QAngle angPanelAngles(0,0,0);

    matrix3x4_t matRotation;

    math::angle_matrix(angPanelAngles, matRotation);



    Vector aXFormPoints[8];

    for (int iPoint = 0; iPoint < 8; ++iPoint)

    {

        math::vector_transform(aBoundsPoints[iPoint], matRotation, aXFormPoints[iPoint]);

    }



    Vector vecXFormCenter;

    math::vector_transform(-vecTranslateCenter, matRotation, vecXFormCenter);



    int w = 1000, h = 1000;

    float flW = (float)w;

    float flH = (float)h;



    float flFOVx = DEG2RAD(54 * 0.5f);

    auto fovx = flFOVx;

    if (fovx < 1 || fovx > 179)

        fovx = 90;

    float val = atan(tan(DEG2RAD(fovx) * 0.5f) / flW / flH);

    float flFOVy = RAD2DEG(val) * 2.0f;



    flFOVy = DEG2RAD(flFOVy);



    float flTanFOVx = tan(flFOVx);

    float flTanFOVy = tan(flFOVy);



    // Find the max value of x, y, or z

    float flDist = 0.0f;

    for (int iPoint = 0; iPoint < 8; ++iPoint)

    {

        float flDistZ = fabs(aXFormPoints[iPoint].z / flTanFOVy - aXFormPoints[iPoint].x);

        float flDistY = fabs(aXFormPoints[iPoint].y / flTanFOVx - aXFormPoints[iPoint].x);

        float flTestDist = std::max(flDistZ, flDistY);

        flDist = std::max(flDist, flTestDist);

    }



    // Scale the object down by 10%.

    flDist *= 1.10f;



    // Add the framing offset.

    vecXFormCenter += Vector(110,5,5);



    m_vecOriginOffset.x = flDist - vecXFormCenter.x;

    m_vecOriginOffset.y = -vecXFormCenter.y;

    m_vecOriginOffset.z = -vecXFormCenter.z;



    // Screen space points.

    Vector2D aScreenPoints[8];

    Vector aCameraPoints[8];

    for (int iPoint = 0; iPoint < 8; ++iPoint)

    {

        aCameraPoints[iPoint] = aXFormPoints[iPoint];

        aCameraPoints[iPoint].x += flDist;



        aScreenPoints[iPoint].x = aCameraPoints[iPoint].y / (flTanFOVx * aCameraPoints[iPoint].x);

        aScreenPoints[iPoint].y = aCameraPoints[iPoint].z / (flTanFOVy * aCameraPoints[iPoint].x);



        aScreenPoints[iPoint].x = (aScreenPoints[iPoint].x * 0.5f + 0.5f) * flW;

        aScreenPoints[iPoint].y = (aScreenPoints[iPoint].y * 0.5f + 0.5f) * flH;

    }



    // Find the min/max and center of the 2D bounding box of the object.

    Vector2D vecScreenMin(99999.0f, 99999.0f), vecScreenMax(-99999.0f, -99999.0f);

    for (int iPoint = 0; iPoint < 8; ++iPoint)

    {

        vecScreenMin.x = std::min(vecScreenMin.x, aScreenPoints[iPoint].x);

        vecScreenMin.y = std::min(vecScreenMin.y, aScreenPoints[iPoint].y);

        vecScreenMax.x = std::max(vecScreenMax.x, aScreenPoints[iPoint].x);

        vecScreenMax.y = std::max(vecScreenMax.y, aScreenPoints[iPoint].y);

    }



    vecScreenMin.x = clamp(vecScreenMin.x, 0.0f, flW);

    vecScreenMin.y = clamp(vecScreenMin.y, 0.0f, flH);

    vecScreenMax.x = clamp(vecScreenMax.x, 0.0f, flW);

    vecScreenMax.y = clamp(vecScreenMax.y, 0.0f, flH);



    Vector2D vecScreenCenter = (vecScreenMax + vecScreenMin) * 0.5f;

    m_vecViewportOffset.x = -((flW * 0.5f) - vecScreenCenter.x);

    m_vecViewportOffset.y = -((flH * 0.5f) - vecScreenCenter.y);

}



auto misc_interface::paint_model() -> void {

    static auto set_abs_origin_addr = utils::memory::find_pattern("client_panorama.dll", "55 8B EC 83 E4 F8 51 53 56 57 8B F1", 0);

    const auto set_abs_origin_fn = reinterpret_cast<void(__thiscall*)(void*, const Vector&)>(set_abs_origin_addr);

    typedef void(__thiscall * SetAbsAngleFn)(void*, const QAngle&);

    static SetAbsAngleFn SetAbsAngles = (SetAbsAngleFn)((DWORD)utils::memory::find_pattern("client_panorama.dll", "55 8B EC 83 E4 F8 83 EC 64 53 56 57 8B F1 E8", 0));



    if (!buffer)

        buffer = CInterfaces::Get().MaterialSystem->CreateRenderTargetFF("esp_preview");



    if (!flex_ent.Get()) {

        const auto entry = GLOBAL_INTERFACES.EntityList->GetHighestEntityIndex() + 1;

        const auto serial = rand() % 0x1000;

        make_flex(entry, serial);

        flex_ent = CHandle<CBaseEntity>(CBaseHandle(entry | serial << 16));

    }

    float flWidthRatio = ((float)1000.f / (float)1000.f) / (4.0f / 3.0f);



    Vector vecExtraModelOffset(15, 0, 0);

    set_abs_origin_fn(flex_ent.Get(), m_vecOriginOffset + vecExtraModelOffset);

    SetAbsAngles(flex_ent.Get(), QAngle(0, 0, 0));



    CMatRenderContextPtr pRenderContext(CInterfaces::Get().MaterialSystem);



    int viewportX, viewportY, viewportWidth, viewportHeight;

    pRenderContext->GetViewport(viewportX, viewportY, viewportWidth, viewportHeight);



    CViewSetup view;

    memset(&view, 0, sizeof(view));

    view.x = /*x + */m_vecViewportOffset.x + viewportX; // we actually want to offset by the

    view.y =/* y + */m_vecViewportOffset.y + viewportY; // viewport origin here because Push3DView expects global coords below

    view.width = 1000;

    view.height = 1000;



    view.m_bOrtho = false;



    {

        float halfAngleRadians = 54 * (0.5f * M_PI / 180.0f);

        float t = tan(halfAngleRadians);

        t *= flWidthRatio;

        float retDegrees = (180.0f / M_PI) * atan(t);

        view.fov = retDegrees * 2.0f;

    }

    view.origin.Init(0,0,0);

    view.angles.Init();

    view.zNear = 7;

    view.zFar = 1000;

    static auto pCubemapTexture = CInterfaces::Get().MaterialSystem->FindTexture("editor/cubemap.hdr", NULL, true);



    pRenderContext->BindLocalCubemap( pCubemapTexture );



    pRenderContext->SetLightingOrigin(0, 0, 0);



    static Vector white[6] =

    {

        Vector(0.4, 0.4, 0.4),

        Vector(0.4, 0.4, 0.4),

        Vector(0.4, 0.4, 0.4),

        Vector(0.4, 0.4, 0.4),

        Vector(0.4, 0.4, 0.4),

        Vector(0.4, 0.4, 0.4),

    };



    CInterfaces::Get().StudioRender->SetAmbientLightColors(white);

    CInterfaces::Get().StudioRender->SetLocalLights(0, NULL);



    Frustum dummyFrustum;

    CInterfaces::Get().RenderView->Push3DView(pRenderContext,view, 0, NULL, dummyFrustum);

    CInterfaces::Get().ModelRender->SuppressEngineLighting(true);



    float color[3] = { 1.0f, 1.0f, 1.0f };

    CInterfaces::Get().RenderView->SetColorModulation(color);

    CInterfaces::Get().RenderView->SetBlend(1.0f);



    flex_ent->DrawModel(1, 255);

    CInterfaces::Get().ModelRender->SuppressEngineLighting(false);

    CInterfaces::Get().RenderView->PopView(pRenderContext,dummyFrustum);



    pRenderContext->BindLocalCubemap(NULL);

}
Умным людям пригодится, а я пошел :)
Всем говнофорумам желаю сдохнуть ( куда репостнут без кредитов и джексону )
 

Вложения

Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
19 Дек 2018
Сообщения
2,957
Реакции[?]
491
Поинты[?]
1K
jackson4800, взлом жопы, получается?)) пастебин помнит всё.. (хотя код 19 года и тебе уже похуй)
Hidden content
Пожалуйста, авторизуйтесь для просмотра ссылки.

Hidden content
НИКОМУ ПОМОГАТЬ ПАСТИТЬ Я НЕ БУДУ И НЕ БУДУ НИКОМУ ДАВАТЬ ЛИЧНЫЕ! С ВОПРОСАМИ - ИДИТЕ НА 3 БУКВЫ
Умным людям пригодится, а я пошел :)
Всем говнофорумам желаю сдохнуть ( куда репостнут без кредиктов мне и джексону )
Ору у лайноута украл
 
Разработчик
Статус
Оффлайн
Регистрация
1 Сен 2018
Сообщения
1,598
Реакции[?]
880
Поинты[?]
114K
jackson4800, взлом жопы, получается?)) пастебин помнит всё.. (хотя код 19 года и тебе уже похуй)
Скрытое содержимое
Пожалуйста, авторизуйтесь для просмотра ссылки.

Скрытое содержимое
НИКОМУ ПОМОГАТЬ ПАСТИТЬ Я НЕ БУДУ И НЕ БУДУ НИКОМУ ДАВАТЬ ЛИЧНЫЕ! С ВОПРОСАМИ - ИДИТЕ НА 3 БУКВЫ
Умным людям пригодится, а я пошел :)
Всем говнофорумам желаю сдохнуть ( куда репостнут без кредиктов мне и джексону )
Спасибо за код с uc.
 
Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
что оно делает
Вбей в поиск "draw any model site:unknowncheats.me" там пример можешь глянуть ( в пабе онли обрезанный код есть, а я слил фулл) , а код отвечает за рендер модельки которую используют для esp preview
 
Забаненный
Статус
Оффлайн
Регистрация
22 Апр 2020
Сообщения
731
Реакции[?]
752
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
11 Окт 2016
Сообщения
19
Реакции[?]
49
Поинты[?]
0
Вроде как он ещё и не заводится
Ну пушто код за 17-е число неспроста за 17-е. Версия на юц, не смотря на свою урезанность, является более корректным РоС с минимумом антипасты и кучей инфы постами ниже.
 
Забаненный
Статус
Оффлайн
Регистрация
22 Апр 2020
Сообщения
731
Реакции[?]
752
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну пушто код за 17-е число неспроста за 17-е. Версия на юц, не смотря на свою урезанность, является более корректным РоС с минимумом антипасты и кучей инфы постами ниже.
я знаю. я завёл с уц
 
Забаненный
Статус
Оффлайн
Регистрация
22 Апр 2020
Сообщения
731
Реакции[?]
752
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ЧВК EB_LAN
Эксперт
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
1,553
Реакции[?]
519
Поинты[?]
189K
Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
ЧВК EB_LAN
Эксперт
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
1,553
Реакции[?]
519
Поинты[?]
189K
только в версии на юц он не юзается и я кинул не все под хайд в 15 реакций
я сделаю не переживай
я js-ки пишу на кряк и думаешь я тут не справлюсь с моим гавнокодом? :roflanEbalo:
 
Забаненный
Статус
Оффлайн
Регистрация
18 Окт 2020
Сообщения
458
Реакции[?]
55
Поинты[?]
2K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
че она делает вообще
 
Сверху Снизу