-
Автор темы
- #1
При включенных атачментах и выключенных чамсах на игроков, модели заливаются цветом атачментов. Как пофиксить? Вот код
Вот сам баг:
То есть сами атачменты работают, но кроме них почему то и модель красит. Как пофиксить?
C++:
void Chams::OnDrawModelExecute(IMatRenderContext* ctx, const DrawModelState_t& state, const ModelRenderInfo_t& info, matrix3x4_t* matrix)
{
static auto fnDME = Hooks::mdlrender_hook.get_original<decltype(&Hooks::hkDrawModelExecute)>(index::DrawModelExecute);
const auto mdl = info.pModel;
bool is_player = strstr(mdl->szName, "models/player") != nullptr;
bool is_weapon_on_back = strstr(mdl->szName, "_dropped.mdl") != nullptr && strstr(mdl->szName, "models/weapons/w") != nullptr && !strstr(mdl->szName, "arms") && !strstr(mdl->szName, "ied_dropped") && !strstr(mdl->szName, "models/player");
bool is_weapon_enemy_hands = strstr(mdl->szName, "models/weapons/w") != nullptr && !strstr(mdl->szName, "arms") && !strstr(mdl->szName, "ied_dropped") && !strstr(mdl->szName, "models/player");
bool is_defuse_kit = strstr(mdl->szName, "defuser") != nullptr && !strstr(mdl->szName, "arms") && !strstr(mdl->szName, "ied_dropped") && !strstr(mdl->szName, "models/player");
if ((is_weapon_on_back || is_weapon_enemy_hands || is_defuse_kit) && g_Configurations.chams_attachment_enabled)
{
auto material = g_MatSystem->FindMaterial(mdl->szName, TEXTURE_GROUP_MODEL);
if (!material)
return;
if (strstr(mdl->szName, "player"))
return;
if (g_Configurations.chams_attachment_ignorez)
{
OverrideMaterial(g_Configurations.chams_attachment_material_num, true, g_Configurations.chams_attachment_wireframe, g_Configurations.attachment_chams_invisible);
fnDME(g_MdlRender, 0, ctx, state, info, matrix);
OverrideMaterial(g_Configurations.chams_attachment_material_num, false, g_Configurations.chams_attachment_wireframe, g_Configurations.attachment_chams_visible);
}
else
{
OverrideMaterial(g_Configurations.chams_attachment_material_num, false, g_Configurations.chams_attachment_wireframe, g_Configurations.attachment_chams_visible);
}
}
else if (is_player && g_Configurations.chams_player_enabled)
{
auto ent = C_BasePlayer::GetPlayerByIndex(info.entity_index);
if (ent && g_LocalPlayer && ent->IsAlive())
{
if (g_Configurations.chams_player_enabled)
{
const auto enemy = ent->m_iTeamNum() != g_LocalPlayer->m_iTeamNum();
if (!enemy && g_Configurations.chams_player_enemies_only)
return;
const auto clr_front = enemy ? g_Configurations.color_chams_player_enemy_visible : g_Configurations.color_chams_player_ally_visible;
const auto clr_back = enemy ? g_Configurations.color_chams_player_enemy_occluded : g_Configurations.color_chams_player_ally_occluded;
if (g_Configurations.chams_player_ignorez)
{
OverrideMaterial(g_Configurations.chams_players_material_num_invisible, true, g_Configurations.chams_player_wireframe_invisible, clr_back);
fnDME(g_MdlRender, 0, ctx, state, info, matrix);
OverrideMaterial(g_Configurations.chams_players_material_num_visible, false, g_Configurations.chams_player_wireframe_visible, clr_front);
}
else
{
OverrideMaterial(g_Configurations.chams_players_material_num_visible, false, g_Configurations.chams_player_wireframe_visible, clr_front);
}
}
}
}
}
То есть сами атачменты работают, но кроме них почему то и модель красит. Как пофиксить?