Исходник DME xy0

Олдфаг
Статус
Оффлайн
Регистрация
6 Мар 2019
Сообщения
2,939
Реакции[?]
1,005
Поинты[?]
0
Чамсы DME которые не будут крашить при смене карты, дебажил, кодил и что-то да вышло.
Здесь я добавил только чамсы врагов, локала, оружия и трупаки челиков (хуй знает что не так, работает через раз)
Нихуя делать не надо просто копипаст отсюда в ваш сорс.

567777.jpg

C++:
void __fastcall Hooks::DrawModelExecute(void* ecx, void* edx, IMatRenderContext* context, const DrawModelState_t& state, const ModelRenderInfo_t& info, matrix3x4_t* matrix)
{
    static auto oDrawModelExecute = g_Hooks.pModelHook->GetOriginal<DrawModelExecute_t>(vtable_indexes::dme);

    if (!Globals::LocalPlayer)
    {
        oDrawModelExecute(ecx, context, state, info, matrix);
        g_pModelRender->ForcedMaterialOverride(NULL);
        return;
    }

    C_BaseEntity* pPlayerEntity = g_pEntityList->GetClientEntity(info.index);
    if (!pPlayerEntity)
    {
        oDrawModelExecute(ecx, context, state, info, matrix);
        g_pModelRender->ForcedMaterialOverride(NULL);
        return;
    }

    //ебучий ноль
    if (pPlayerEntity != nullptr)
    {
        ClientClass* EntityClass = pPlayerEntity->GetClientClass();
        if (!pPlayerEntity || !EntityClass)
        {
            oDrawModelExecute(ecx, context, state, info, matrix);
            g_pModelRender->ForcedMaterialOverride(NULL);
            return;
        }

        //Ебашим здесь, потому что все проверки выше прошли
        static IMaterial* mat_overlay;
        static bool once{ false };
        if (!once)
        {
            std::ofstream("csgo/materials/glowOverlay.vmt") << R"#("VertexLitGeneric" {
            "$additive" "1"
            "$envmap" "models/effects/cube_white"
            "$envmaptint" "[0 0.1 0.2]"
            "$envmapfresnel" "1"
            "$envmapfresnelminmaxexp" "[0 1 2]"
            "$alpha" "0.8"
            "$ignorez" "1"
        })#";

            mat_overlay = g_pMaterialSys->FindMaterial("glowOverlay", nullptr);
            once = true;
        }

        //не юзать флаг IGNOREZ иначе пизда - будет крашить (поэтому заюзал его в создании материала)
        if (mat_overlay != nullptr)
        {
            //Модель игрока
            if (EntityClass->ClassID == (int)EClassIds::CCSPlayer)
            {

                //Враги
                if (Globals::LocalPlayer->GetTeam() != pPlayerEntity->GetTeam())
                {
                    g_pModelRender->ForcedMaterialOverride(mat_overlay);
                    oDrawModelExecute(ecx, context, state, info, matrix);
                }

                //Игрок
                if (pPlayerEntity == Globals::LocalPlayer)
                {
                    g_pModelRender->ForcedMaterialOverride(mat_overlay);
                    oDrawModelExecute(ecx, context, state, info, matrix);
                }

            }
            //оружие в руках
            if (EntityClass->ClassID == (int)EClassIds::CPredictedViewModel)
            {
                g_pModelRender->ForcedMaterialOverride(mat_overlay);
                oDrawModelExecute(ecx, context, state, info, matrix);
            }

            //трупы игроков, хуй знает почему не всегда работает
            if (pPlayerEntity && EntityClass->ClassID == (int)EClassIds::CCSRagdoll)
            {
                g_pModelRender->ForcedMaterialOverride(mat_overlay);
            }
        }
    }

    oDrawModelExecute(ecx, context, state, info, matrix);
    g_pModelRender->ForcedMaterialOverride(NULL);
}
 
Последнее редактирование:
got a brand new bitch
Забаненный
Статус
Оффлайн
Регистрация
28 Дек 2018
Сообщения
544
Реакции[?]
59
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Че в хуки пихать или куда
 
Олдфаг
Статус
Оффлайн
Регистрация
6 Мар 2019
Сообщения
2,939
Реакции[?]
1,005
Поинты[?]
0
флаги типа
SetmaterialVarFlag не юзать,любой флаг крашнет

Вместо этого сразу материал создавайте с этим параметром.

Типа вот - крашнет, впрочем и любой другой флаг.
material->SetMaterialVarFlag(MATERIAL_VAR_IGNOREZ, true);

Вместо этого добавлять флаг при создании материала "$ignorez" "1" - будет виден через стены
"$wireframe" "1" - полигоны


Как и выше.
std::ofstream("csgo/materials/glowOverlay.vmt") << R"#("VertexLitGeneric" {
"$additive" "1"
"$envmap" "models/effects/cube_white"
"$envmaptint" "[0 0.1 0.2]"
"$envmapfresnel" "1"
"$envmapfresnelminmaxexp" "[0 1 2]"
"$alpha" "0.8"
"$ignorez" "1"
 
alive forever
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2017
Сообщения
663
Реакции[?]
400
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
бля ну ты гений
1582378529907.png
и тут тоже отличился
1582378571261.png

пробуй

Код:
#include <mutex>
std::once_flag flag;

void __fastcall Hooks::DrawModelExecute(void* ecx, void* edx, IMatRenderContext* context, const DrawModelState_t& state, const ModelRenderInfo_t& info, matrix3x4_t* matrix)
{
    static auto oDrawModelExecute = g_Hooks.pModelHook->GetOriginal<DrawModelExecute_t>(vtable_indexes::dme);

    static IMaterial* mat_overlay = nullptr;
    std::call_once(flag, []() {

        std::ofstream("csgo/materials/glowOverlay.vmt") << R"#("VertexLitGeneric" {
            "$additive" "1"
            "$envmap" "models/effects/cube_white"
            "$envmaptint" "[0 0.1 0.2]"
            "$envmapfresnel" "1"
            "$envmapfresnelminmaxexp" "[0 1 2]"
            "$alpha" "0.8"
            "$ignorez" "1"
        })#";
        mat_overlay = g_pMaterialSys->FindMaterial("glowOverlay", nullptr);
        });
  
    if (mat_overlay) {
        if (Globals::LocalPlayer) {
            if (auto pPlayerEntity = g_pEntityList->GetClientEntity(info.index)) {
                if (auto EntityClass = pPlayerEntity->GetClientClass()) {

                    switch (EntityClass->ClassID) {
                    case (int)EClassIds::CCSPlayer:
                    case (int)EClassIds::CPredictedViewModel:
                    case(int)EClassIds::CCSRagdoll:
                    {
                        if (Globals::LocalPlayer->GetTeam() != pPlayerEntity->GetTeam() ||
                            pPlayerEntity == Globals::LocalPlayer) {
                            g_pModelRender->ForcedMaterialOverride(mat_overlay);
                            oDrawModelExecute(ecx, context, state, info, matrix);
                        }
                    }break;

                    }
                }
            }
        }
    }

    oDrawModelExecute(ecx, context, state, info, matrix);
    g_pModelRender->ForcedMaterialOverride(NULL);
}
 
Последнее редактирование:
got a brand new bitch
Забаненный
Статус
Оффлайн
Регистрация
28 Дек 2018
Сообщения
544
Реакции[?]
59
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
не работает, очень много ошибок вылетает
 
Олдфаг
Статус
Оффлайн
Регистрация
6 Мар 2019
Сообщения
2,939
Реакции[?]
1,005
Поинты[?]
0
бля ну ты гений
Посмотреть вложение 60383
и тут тоже отличился
Посмотреть вложение 60384

пробуй

Код:
#include <mutex>
std::once_flag flag;

void __fastcall Hooks::DrawModelExecute(void* ecx, void* edx, IMatRenderContext* context, const DrawModelState_t& state, const ModelRenderInfo_t& info, matrix3x4_t* matrix)
{
    static auto oDrawModelExecute = g_Hooks.pModelHook->GetOriginal<DrawModelExecute_t>(vtable_indexes::dme);

    static IMaterial* mat_overlay = nullptr;
    std::call_once(flag, []() {

        std::ofstream("csgo/materials/glowOverlay.vmt") << R"#("VertexLitGeneric" {
            "$additive" "1"
            "$envmap" "models/effects/cube_white"
            "$envmaptint" "[0 0.1 0.2]"
            "$envmapfresnel" "1"
            "$envmapfresnelminmaxexp" "[0 1 2]"
            "$alpha" "0.8"
            "$ignorez" "1"
        })#";
        mat_overlay = g_pMaterialSys->FindMaterial("glowOverlay", nullptr);
        });

    if (mat_overlay) {
        if (Globals::LocalPlayer) {
            if (auto pPlayerEntity = g_pEntityList->GetClientEntity(info.index)) {
                if (auto EntityClass = pPlayerEntity->GetClientClass()) {

                    switch (EntityClass->ClassID) {
                    case (int)EClassIds::CCSPlayer:
                    case (int)EClassIds::CPredictedViewModel:
                    case(int)EClassIds::CCSRagdoll:
                    {
                        if (Globals::LocalPlayer->GetTeam() != pPlayerEntity->GetTeam() ||
                            pPlayerEntity == Globals::LocalPlayer) {
                            g_pModelRender->ForcedMaterialOverride(mat_overlay);
                            oDrawModelExecute(ecx, context, state, info, matrix);
                        }
                    }break;

                    }
                }
            }
        }
    }

    oDrawModelExecute(ecx, context, state, info, matrix);
    g_pModelRender->ForcedMaterialOverride(NULL);
}
И всё равно крашит :roflanzdarova:
Потому что классайди при загрузке выпадает в ноль, а он не должен быть ноль поэтому и проверка идёт - я же по дебагу кодил
А то что внутри после впринципе бесполезная проверка так как классайди уже не ноль и валидный.
if (pPlayerEntity != nullptr)

if (!pPlayerEntity || !EntityClass)
{
oDrawModelExecute(ecx, context, state, info, matrix);
g_pModelRender->ForcedMaterialOverride(NULL);
return;
}

Проверки сверху в принципе похуй, но я их оставил на всякий, лишним не будет.
 
Олдфаг
Статус
Оффлайн
Регистрация
6 Мар 2019
Сообщения
2,939
Реакции[?]
1,005
Поинты[?]
0
if (mat_overlay)
Это вообще похуй на самом деле он всегда будет валидным, можно вообще убрать
 
alive forever
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2017
Сообщения
663
Реакции[?]
400
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
И всё равно крашит :roflanzdarova:
Потому что классайди при загрузке выпадает в ноль, а он не должен быть ноль поэтому и проверка идёт - я же по дебагу кодил
А то что внутри после впринципе бесполезная проверка так как классайди уже не ноль и валидный.
if (pPlayerEntity != nullptr)

if (!pPlayerEntity || !EntityClass)
{
oDrawModelExecute(ecx, context, state, info, matrix);
g_pModelRender->ForcedMaterialOverride(NULL);
return;
}

Проверки сверху в принципе похуй, но я их оставил на всякий, лишним не будет.
int class_id =EntityClass->ClassID;

if(class_id > 0){
switch class_id :
}
 
Олдфаг
Статус
Оффлайн
Регистрация
6 Мар 2019
Сообщения
2,939
Реакции[?]
1,005
Поинты[?]
0
int class_id =EntityClass->ClassID;

if(class_id > 0){
switch class_id :
}
Да похуй кому надо тот исправит, это ж не тема где надо выёбываться методом кода (который делает одно и тоже)
Я понимаю если бы за оптимизацию дело шло, а не стиль, тогда да.
 
alive forever
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2017
Сообщения
663
Реакции[?]
400
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Да похуй кому надо тот исправит, это ж не тема где надо выёбываться методом кода (который делает одно и тоже)
Я понимаю если бы за оптимизацию дело шло, а не стиль, тогда да.
оптимизация? Делаешь на ридпакетинити вектор игроков ,делаешь мутексы и переборы в других потоках по этому вектору-> получаешь буст к фпс.
 
got a brand new bitch
Забаненный
Статус
Оффлайн
Регистрация
28 Дек 2018
Сообщения
544
Реакции[?]
59
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
got a brand new bitch
Забаненный
Статус
Оффлайн
Регистрация
28 Дек 2018
Сообщения
544
Реакции[?]
59
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу