Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. void c_visuals::chams() noexcept {
  2. if (!config_system.item.visuals_enabled || (!config_system.item.vis_chams_vis && !config_system.item.vis_chams_invis))
  3. return;
  4.  
  5. for (int i = 1; i <= interfaces::globals->max_clients; i++) {
  6. auto entity = reinterpret_cast<player_t*>(interfaces::entity_list->get_client_entity(i));
  7. auto local_player = reinterpret_cast<player_t*>(interfaces::entity_list->get_client_entity(interfaces::engine->get_local_player()));
  8.  
  9. if (!entity || !entity->is_alive() || entity->dormant() || !local_player)
  10. continue;
  11.  
  12. bool is_teammate = entity->team() == local_player->team();
  13. bool is_enemy = entity->team() != local_player->team();
  14.  
  15. static i_material* mat = nullptr;
  16. auto textured = interfaces::material_system->find_material("aristois_material", TEXTURE_GROUP_MODEL, true, nullptr);
  17. auto flat = interfaces::material_system->find_material("debug/debugdrawflat", TEXTURE_GROUP_MODEL, true, nullptr);
  18. textured->increment_reference_count();
  19. flat->increment_reference_count();
  20.  
  21. switch (config_system.item.vis_chams_type) {
  22. case 0:
  23. mat = textured;
  24. break;
  25. case 1:
  26. mat = flat;
  27. break;
  28. }
  29.  
  30. static i_material* shd = nullptr; //shader
  31. auto outline = interfaces::material_system->find_material("dev/glow_armsrace.vmt", TEXTURE_GROUP_MODEL, true, nullptr);
  32. auto metallic = interfaces::material_system->find_material("simple_regular_reflective", TEXTURE_GROUP_MODEL, true, nullptr);
  33. auto shaded = interfaces::material_system->find_material("material_shaded", TEXTURE_GROUP_MODEL, true, nullptr);
  34. auto glow = interfaces::material_system->find_material("glowOverlay", TEXTURE_GROUP_MODEL, true, nullptr);
  35. auto bubble = interfaces::material_system->find_material("material_shine_glow", TEXTURE_GROUP_MODEL, true, nullptr);
  36. metallic->increment_reference_count();
  37. shaded->increment_reference_count();
  38. glow->increment_reference_count();
  39. bubble->increment_reference_count();
  40.  
  41. switch (config_system.item.vis_chams_shader) {
  42. case 0:
  43. shd = outline;
  44. break;
  45. case 1:
  46. shd = metallic;
  47. break;
  48. case 2:
  49. shd = shaded;
  50. break;
  51. case 3:
  52. shd = glow;
  53. break;
  54. case 4:
  55. shd = bubble;
  56. break;
  57. }
  58.  
  59. if (is_enemy) {
  60. if (config_system.item.vis_chams_invis) { //invisible
  61. if (utilities::is_behind_smoke(local_player->get_eye_pos(), entity->get_hitbox_position(entity, hitbox_head)) && config_system.item.vis_chams_smoke_check)
  62. return;
  63. interfaces::render_view->modulate_color(config_system.item.clr_chams_invis);
  64. interfaces::render_view->set_blend(config_system.item.clr_chams_invis[3]);
  65. mat->set_material_var_flag(MATERIAL_VAR_IGNOREZ, true);
  66.  
  67. interfaces::model_render->override_material(mat);
  68. entity->draw_model(1, 255);
  69. }
  70. if (config_system.item.vis_chams_vis) { //visible
  71. if (utilities::is_behind_smoke(local_player->get_eye_pos(), entity->get_hitbox_position(entity, hitbox_head)) && config_system.item.vis_chams_smoke_check)
  72. return;
  73.  
  74. interfaces::render_view->modulate_color(config_system.item.clr_chams_vis);
  75. interfaces::render_view->set_blend(config_system.item.clr_chams_vis[3]);
  76. mat->set_material_var_flag(MATERIAL_VAR_IGNOREZ, false);
  77.  
  78. interfaces::model_render->override_material(mat);
  79. entity->draw_model(1, 255);
  80.  
  81. interfaces::model_render->override_material(nullptr);
  82. }
  83. if (config_system.item.vis_chams_vis) { //shader
  84. if (utilities::is_behind_smoke(local_player->get_eye_pos(), entity->get_hitbox_position(entity, hitbox_head)) && config_system.item.vis_chams_smoke_check)
  85. return;
  86.  
  87. interfaces::render_view->modulate_color(config_system.item.clr_chams_shader);
  88. interfaces::render_view->set_blend(config_system.item.clr_chams_shader[3]);
  89.  
  90. auto red = config_system.item.clr_chams_shader[0] * 255;
  91. auto green = config_system.item.clr_chams_shader[1] * 255;
  92. auto blue = config_system.item.clr_chams_shader[2] * 255;
  93.  
  94. if (config_system.item.vis_chams_shader == 4 || config_system.item.vis_chams_shader == 0) {
  95. shd->set_material_var_flag(MATERIAL_VAR_IGNOREZ, true);
  96. }
  97. else {
  98. shd->set_material_var_flag(MATERIAL_VAR_IGNOREZ, false);
  99. }
  100.  
  101. bool bFound = false;
  102. auto pVar = shd->find_var("$envmaptint", &bFound);
  103. if (bFound)
  104. (*(void(__thiscall**)(int, float, float, float))(*(DWORD*)pVar + 44))((uintptr_t)pVar, red / 255.f, green / 255.f, blue / 255.f);
  105.  
  106. interfaces::model_render->override_material(shd);
  107. entity->draw_model(1, 255);
  108. }
  109. }
  110.  
  111. if (is_teammate) {
  112. if (config_system.item.vis_chams_invis_teammate) {
  113. interfaces::render_view->modulate_color(config_system.item.clr_chams_invis_teammate);
  114. interfaces::render_view->set_blend(config_system.item.clr_chams_invis_teammate[3]);
  115. mat->set_material_var_flag(MATERIAL_VAR_IGNOREZ, true);
  116.  
  117. interfaces::model_render->override_material(mat);
  118. entity->draw_model(1, 255);
  119. }
  120. if (config_system.item.vis_chams_vis_teammate) {
  121. interfaces::render_view->modulate_color(config_system.item.clr_chams_vis_teammate);
  122. interfaces::render_view->set_blend(config_system.item.clr_chams_vis_teammate[3]);
  123. mat->set_material_var_flag(MATERIAL_VAR_IGNOREZ, false);
  124.  
  125. interfaces::model_render->override_material(mat);
  126. entity->draw_model(1, 255);
  127. }
  128. }
  129.  
  130. interfaces::model_render->override_material(nullptr);
  131. }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement