Advertisement
slownessCollapse

Untitled

Jul 28th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.25 KB | None | 0 0
  1. void __fastcall Hooks::DrawModelExecute(void* ecx, void* edx, IMatRenderContext* context, const DrawModelState_t& state, const ModelRenderInfo_t& info, matrix3x4_t* matrix)
  2. {
  3.  
  4. static auto oDrawModelExecute = g_Hooks.pModelHook->GetOriginal<DrawModelExecute_t>(vtable_indexes::dme);
  5.  
  6. const char* ModelName = g_pModelInfo->GetModelName((model_t*)info.pModel);
  7.  
  8. C_BaseEntity* pPlayerEntity = g_pEntityList->GetClientEntity(info.index);
  9. C_BaseEntity* pLocal = Globals::LocalPlayer;
  10.  
  11. float hand_chams[3] = { c_config::get().hand_chams_color_r / 255.f, c_config::get().hand_chams_color_g / 255.f, c_config::get().hand_chams_color_b / 255.f };
  12. float vis_color[3] = { c_config::get().chams_esp_color_r / 255.f, c_config::get().chams_esp_color_g / 255.f, c_config::get().chams_esp_color_b / 255.f };
  13. float hid_color[3] = { c_config::get().chams_xqz_esp_color_r / 255.f, c_config::get().chams_xqz_esp_color_g / 255.f, c_config::get().chams_xqz_esp_color_b / 255.f };
  14. float local_color[3] = { c_config::get().local_chams_color_r / 255.f, c_config::get().local_chams_color_g / 255.f, c_config::get().local_chams_color_b / 255.f };
  15.  
  16. static std::vector< IMaterial* > materials;
  17. static std::vector< IMaterial* > materialsWireframe;
  18. static std::vector< IMaterial*> materialsTestModels;
  19. static std::vector< IMaterial*> materialsTestHands;
  20.  
  21. static bool once{ false };
  22. if (!once) {
  23. materials.push_back(create_material(false, false, false, 0)); // flat.
  24. materials.push_back(create_material(true, false, false)); // material.
  25. materials.push_back(g_pMaterialSys->FindMaterial("simple_regular_reflective", TEXTURE_GROUP_MODEL, true));
  26. //materials.push_back(create_material_metallic(false, false, false)); // metallic
  27.  
  28. materialsTestModels.push_back(g_pMaterialSys->FindMaterial("models/inventory_items/dogtags/dogtags_outline", TEXTURE_GROUP_MODEL, true)); //pulsing shit from onetap
  29. materialsTestModels.push_back(g_pMaterialSys->FindMaterial("debug/debugambientcube", TEXTURE_GROUP_MODEL, true)); //some estrogenhook shit idk
  30. materialsTestModels.push_back(g_pMaterialSys->FindMaterial("debug/debugdrawflat", TEXTURE_GROUP_MODEL, true)); //idk what this is tbh
  31. materialsTestModels.push_back(g_pMaterialSys->FindMaterial("models/inventory_items/trophy_majors/gloss", TEXTURE_GROUP_MODEL, true)); //glass, This looks sick tbh. https://gyazo.com/62e5d52fc3730a1d9e3a442c5c15242f
  32. materialsTestModels.push_back(g_pMaterialSys->FindMaterial("models/inventory_items/trophy_majors/crystal_clear", TEXTURE_GROUP_MODEL, true)); // crystal
  33. materialsTestModels.push_back(g_pMaterialSys->FindMaterial("models/gibs/glass/glass", TEXTURE_GROUP_MODEL, true)); // dark chrome
  34.  
  35. materialsTestHands.push_back(g_pMaterialSys->FindMaterial("models/inventory_items/dogtags/dogtags_outline", TEXTURE_GROUP_MODEL, true)); //pulsing shit from onetap
  36. materialsTestHands.push_back(g_pMaterialSys->FindMaterial("debug/debugambientcube", TEXTURE_GROUP_MODEL, true)); //some estrogenhook shit idk
  37. materialsTestHands.push_back(g_pMaterialSys->FindMaterial("debug/debugdrawflat", TEXTURE_GROUP_MODEL, true)); //idk what this is tbh
  38. materialsTestHands.push_back(g_pMaterialSys->FindMaterial("models/inventory_items/trophy_majors/gloss", TEXTURE_GROUP_MODEL, true)); //glass, This looks sick tbh. https://gyazo.com/62e5d52fc3730a1d9e3a442c5c15242f
  39. materialsTestHands.push_back(g_pMaterialSys->FindMaterial("models/inventory_items/trophy_majors/crystal_clear", TEXTURE_GROUP_MODEL, true)); // crystal
  40. materialsTestHands.push_back(g_pMaterialSys->FindMaterial("models/gibs/glass/glass", TEXTURE_GROUP_MODEL, true)); // dark chrome
  41.  
  42. materialsWireframe.push_back(create_material(false, true, false, 0)); // flat.
  43. materialsWireframe.push_back(create_material(true, true, false)); // material.
  44. //materialsWireframe.push_back(create_material_metallic(false, false, true)); // metallic
  45. once = true;
  46. }
  47.  
  48. IMaterial* chamsType;
  49. IMaterial* chamsTypeLocal;
  50. IMaterial* chamsTypeHands;
  51.  
  52. //switch for enemy chams type
  53. switch (c_config::get().chams_enemies) {
  54. default:
  55. break;
  56.  
  57. case 1: {
  58. if (!c_config::get().chams_enemies_wireframe)
  59. chamsType = materials.at(0);
  60. else
  61. chamsType = materialsWireframe.at(0);
  62. break;
  63. }
  64.  
  65. case 2: {
  66. if (!c_config::get().chams_enemies_wireframe)
  67. chamsType = materials.at(1);
  68. else
  69. chamsType = materialsWireframe.at(1);
  70. break;
  71. }
  72.  
  73. case 3: {
  74. /*if (!c_config::get().chams_enemies_wireframe)
  75. chamsType = materials.at(2);
  76. else*/
  77. chamsType = materials.at(2);
  78. break;
  79. }
  80. }
  81.  
  82. //switch for local chams type
  83. switch (c_config::get().local_chams) {
  84. default:
  85. break;
  86.  
  87. case 1: {
  88. if (!c_config::get().chams_local_wireframe)
  89. chamsTypeLocal = materials.at(0);
  90. else
  91. chamsTypeLocal = materialsWireframe.at(0);
  92. break;
  93. }
  94.  
  95. case 2: {
  96. if (!c_config::get().chams_local_wireframe)
  97. chamsTypeLocal = materials.at(1);
  98. else
  99. chamsTypeLocal = materialsWireframe.at(1);
  100. break;
  101. }
  102.  
  103. case 3: {
  104. /*if (!c_config::get().chams_local_wireframe)
  105. chamsTypeLocal = materials.at(2);
  106. else*/
  107. chamsTypeLocal = materials.at(2);
  108. break;
  109. }
  110.  
  111. case 5: {
  112. chamsTypeLocal = materialsTestModels.at(0);
  113. }
  114.  
  115. }
  116.  
  117. switch (c_config::get().hand_chams) {
  118. default:
  119. break;
  120.  
  121. case 1: {
  122. if (!c_config::get().hand_chams_wireframe)
  123. chamsTypeHands = materials.at(0);
  124. else
  125. chamsTypeHands = materialsWireframe.at(0);
  126. break;
  127. }
  128.  
  129. case 2: {
  130. if (!c_config::get().hand_chams_wireframe)
  131. chamsTypeHands = materials.at(1);
  132. else
  133. chamsTypeHands = materialsWireframe.at(1);
  134. break;
  135. }
  136.  
  137. case 3: {
  138. /*if (!c_config::get().hand_chams_wireframe)
  139. chamsTypeHands = materials.at(2);
  140. else*/
  141. chamsTypeHands = materials.at(2);
  142. break;
  143. }
  144.  
  145. case 5: {
  146. chamsTypeHands = materialsTestHands.at(0);
  147. }
  148. }
  149.  
  150. if (pPlayerEntity && pPlayerEntity->IsAlive() && !pPlayerEntity->IsDormant() && strstr(ModelName, "models/player") && Globals::LocalPlayer && pPlayerEntity == Globals::LocalPlayer) {
  151. if (Globals::LocalPlayer->IsScoped())
  152. {
  153. g_pRenderView->SetBlend(0.4f);
  154. }
  155. else if (c_config::get().local_chams != 0) {
  156.  
  157. if (c_config::get().local_chams == 4) {
  158. g_pRenderView->SetBlend(0.f);
  159. }
  160. else {
  161. g_pRenderView->SetColorModulation(local_color);
  162. g_pRenderView->SetBlend(c_config::get().local_chams_color_a / 100.f);
  163. g_pModelRender->ForcedMaterialOverride(chamsTypeLocal);
  164. }
  165. }
  166. oDrawModelExecute(ecx, context, state, info, matrix);
  167. }
  168.  
  169. if (strstr(ModelName, "models/player") && pPlayerEntity && pLocal && !pPlayerEntity->IsDormant() && pPlayerEntity->IsAlive()) {
  170.  
  171. if (c_config::get().chams_enemies != 0) {
  172.  
  173. if (pPlayerEntity->GetTeam() != pLocal->GetTeam() && !pPlayerEntity->IsDormant() && pLocal && pPlayerEntity != pLocal) {
  174. if (!c_config::get().chams_xqz_enemies) {
  175.  
  176. if (!chamsType || chamsType->IsErrorMaterial())
  177. return;
  178.  
  179. g_pRenderView->SetColorModulation(vis_color);
  180. g_pRenderView->SetBlend(c_config::get().chams_esp_color_a / 100.f);
  181. g_pModelRender->ForcedMaterialOverride(chamsType);
  182. }
  183. else {
  184.  
  185. if (!chamsType || chamsType->IsErrorMaterial())
  186. return;
  187.  
  188. if (pLocal->IsAlive())
  189. {
  190. g_pRenderView->SetColorModulation(hid_color);
  191. g_pRenderView->SetBlend(c_config::get().chams_esp_color_a / 100.f);
  192. g_pModelRender->ForcedMaterialOverride(chamsType);
  193. chamsType->SetMaterialVarFlag(MATERIAL_VAR_IGNOREZ, true);
  194. oDrawModelExecute(ecx, context, state, info, matrix);
  195. }
  196.  
  197. chamsType->SetMaterialVarFlag(MATERIAL_VAR_IGNOREZ, false);
  198. g_pRenderView->SetColorModulation(vis_color);
  199. g_pRenderView->SetBlend(c_config::get().chams_xqz_esp_color_a / 100.f);
  200. g_pModelRender->ForcedMaterialOverride(chamsType);
  201. }
  202. }
  203. }
  204. }
  205.  
  206. auto HandChams = c_config::get().hand_chams;
  207.  
  208. if (strstr(ModelName, "arms") && c_config::get().hand_chams > 0) {
  209.  
  210. if (HandChams == 4) {
  211. g_pRenderView->SetBlend(0.f);
  212. }
  213. else {
  214. g_pRenderView->SetBlend(c_config::get().hand_chams_color_a / 100.f);
  215. g_pRenderView->SetColorModulation(hand_chams);
  216. g_pModelRender->ForcedMaterialOverride(chamsTypeHands);
  217. }
  218. oDrawModelExecute(ecx, context, state, info, matrix);
  219. }
  220. oDrawModelExecute(ecx, context, state, info, matrix);
  221. g_pModelRender->ForcedMaterialOverride(NULL);
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement