Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void c_visuals::chams() noexcept {
- if (!config_system.item.visuals_enabled || (!config_system.item.vis_chams_vis && !config_system.item.vis_chams_invis))
- return;
- for (int i = 1; i <= interfaces::globals->max_clients; i++) {
- auto entity = reinterpret_cast<player_t*>(interfaces::entity_list->get_client_entity(i));
- auto local_player = reinterpret_cast<player_t*>(interfaces::entity_list->get_client_entity(interfaces::engine->get_local_player()));
- if (!entity || !entity->is_alive() || entity->dormant() || !local_player)
- continue;
- bool is_teammate = entity->team() == local_player->team();
- bool is_enemy = entity->team() != local_player->team();
- static i_material* mat = nullptr;
- auto textured = interfaces::material_system->find_material("aristois_material", TEXTURE_GROUP_MODEL, true, nullptr);
- auto flat = interfaces::material_system->find_material("debug/debugdrawflat", TEXTURE_GROUP_MODEL, true, nullptr);
- textured->increment_reference_count();
- flat->increment_reference_count();
- switch (config_system.item.vis_chams_type) {
- case 0:
- mat = textured;
- break;
- case 1:
- mat = flat;
- break;
- }
- static i_material* shd = nullptr; //shader
- auto outline = interfaces::material_system->find_material("dev/glow_armsrace.vmt", TEXTURE_GROUP_MODEL, true, nullptr);
- auto metallic = interfaces::material_system->find_material("simple_regular_reflective", TEXTURE_GROUP_MODEL, true, nullptr);
- auto shaded = interfaces::material_system->find_material("material_shaded", TEXTURE_GROUP_MODEL, true, nullptr);
- auto glow = interfaces::material_system->find_material("glowOverlay", TEXTURE_GROUP_MODEL, true, nullptr);
- auto bubble = interfaces::material_system->find_material("material_shine_glow", TEXTURE_GROUP_MODEL, true, nullptr);
- metallic->increment_reference_count();
- shaded->increment_reference_count();
- glow->increment_reference_count();
- bubble->increment_reference_count();
- switch (config_system.item.vis_chams_shader) {
- case 0:
- shd = outline;
- break;
- case 1:
- shd = metallic;
- break;
- case 2:
- shd = shaded;
- break;
- case 3:
- shd = glow;
- break;
- case 4:
- shd = bubble;
- break;
- }
- if (is_enemy) {
- if (config_system.item.vis_chams_invis) { //invisible
- if (utilities::is_behind_smoke(local_player->get_eye_pos(), entity->get_hitbox_position(entity, hitbox_head)) && config_system.item.vis_chams_smoke_check)
- return;
- interfaces::render_view->modulate_color(config_system.item.clr_chams_invis);
- interfaces::render_view->set_blend(config_system.item.clr_chams_invis[3]);
- mat->set_material_var_flag(MATERIAL_VAR_IGNOREZ, true);
- interfaces::model_render->override_material(mat);
- entity->draw_model(1, 255);
- }
- if (config_system.item.vis_chams_vis) { //visible
- if (utilities::is_behind_smoke(local_player->get_eye_pos(), entity->get_hitbox_position(entity, hitbox_head)) && config_system.item.vis_chams_smoke_check)
- return;
- interfaces::render_view->modulate_color(config_system.item.clr_chams_vis);
- interfaces::render_view->set_blend(config_system.item.clr_chams_vis[3]);
- mat->set_material_var_flag(MATERIAL_VAR_IGNOREZ, false);
- interfaces::model_render->override_material(mat);
- entity->draw_model(1, 255);
- interfaces::model_render->override_material(nullptr);
- }
- if (config_system.item.vis_chams_vis) { //shader
- if (utilities::is_behind_smoke(local_player->get_eye_pos(), entity->get_hitbox_position(entity, hitbox_head)) && config_system.item.vis_chams_smoke_check)
- return;
- interfaces::render_view->modulate_color(config_system.item.clr_chams_shader);
- interfaces::render_view->set_blend(config_system.item.clr_chams_shader[3]);
- auto red = config_system.item.clr_chams_shader[0] * 255;
- auto green = config_system.item.clr_chams_shader[1] * 255;
- auto blue = config_system.item.clr_chams_shader[2] * 255;
- if (config_system.item.vis_chams_shader == 4 || config_system.item.vis_chams_shader == 0) {
- shd->set_material_var_flag(MATERIAL_VAR_IGNOREZ, true);
- }
- else {
- shd->set_material_var_flag(MATERIAL_VAR_IGNOREZ, false);
- }
- bool bFound = false;
- auto pVar = shd->find_var("$envmaptint", &bFound);
- if (bFound)
- (*(void(__thiscall**)(int, float, float, float))(*(DWORD*)pVar + 44))((uintptr_t)pVar, red / 255.f, green / 255.f, blue / 255.f);
- interfaces::model_render->override_material(shd);
- entity->draw_model(1, 255);
- }
- }
- if (is_teammate) {
- if (config_system.item.vis_chams_invis_teammate) {
- interfaces::render_view->modulate_color(config_system.item.clr_chams_invis_teammate);
- interfaces::render_view->set_blend(config_system.item.clr_chams_invis_teammate[3]);
- mat->set_material_var_flag(MATERIAL_VAR_IGNOREZ, true);
- interfaces::model_render->override_material(mat);
- entity->draw_model(1, 255);
- }
- if (config_system.item.vis_chams_vis_teammate) {
- interfaces::render_view->modulate_color(config_system.item.clr_chams_vis_teammate);
- interfaces::render_view->set_blend(config_system.item.clr_chams_vis_teammate[3]);
- mat->set_material_var_flag(MATERIAL_VAR_IGNOREZ, false);
- interfaces::model_render->override_material(mat);
- entity->draw_model(1, 255);
- }
- }
- interfaces::model_render->override_material(nullptr);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement