-
Автор темы
- #1
Чамсы DME которые не будут крашить при смене карты, дебажил, кодил и что-то да вышло.
Здесь я добавил только чамсы врагов, локала, оружия и трупаки челиков (хуй знает что не так, работает через раз)
Нихуя делать не надо просто копипаст отсюда в ваш сорс.
Здесь я добавил только чамсы врагов, локала, оружия и трупаки челиков (хуй знает что не так, работает через раз)
Нихуя делать не надо просто копипаст отсюда в ваш сорс.
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);
}
Последнее редактирование: