Advertisement
Smi-ChetDev

memes

Aug 19th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.04 KB | None | 0 0
  1. IMaterial* create_material(bool shade, bool wireframe, bool ignorez, int rimlight_boost = 0) {
  2. static const std::string material_name = "game_material.vmt";
  3. const std::string material_type = shade ? "VertexLitGeneric" : "UnlitGeneric";
  4.  
  5. std::string material_data;
  6.  
  7. material_data += "\"" + material_type + "\"\n{\n";
  8. material_data += "\t\"$basetexture\" \"vgui/white_additive\"\n";
  9. material_data += "\t\"$envmap\" \"\"\n";
  10. material_data += "\t\"$model\" \"1\"\n";
  11. material_data += "\t\"$flat\" \"1\"\n";
  12. material_data += "\t\"$nocull\" \"0\"\n";
  13. material_data += "\t\"$selfillum\" \"1\"\n";
  14. material_data += "\t\"$halflambert\" \"1\"\n";
  15. material_data += "\t\"$znearer\" \"0\"\n";
  16. material_data += "\t\"$rimlightboost\" \"" + std::to_string(rimlight_boost) + "\"\n";
  17. material_data += "\t\"$rimlightexponent\" \"" + std::to_string(4) + "\"\n";
  18. material_data += "\t\"$ambientreflectionboost\" \"0.2\"\n";
  19. material_data += "\t\"$envmaplightscale\" \"" + std::to_string(0.1) + "\"\n";
  20. material_data += "\t\"$wireframe\" \"" + std::to_string(wireframe) + "\"\n";
  21. material_data += "\t\"$ignorez\" \"" + std::to_string(ignorez) + "\"\n";
  22. material_data += "}\n";
  23.  
  24. auto init_key_values = [](KeyValuesv2* keyvalues, const char* key_name) -> void {
  25. using InitKeyValues_t = void(__thiscall*)(void*, const char*);
  26. static InitKeyValues_t InitKeyValuesEx = nullptr;
  27. static auto pThis = *reinterpret_cast<DWORD * *>(Utils::FindSignature("client_panorama.dll", "B9 ? ? ? ? E8 ? ? ? ? 8B 5D 08") + 1);
  28. if (!InitKeyValuesEx)
  29. InitKeyValuesEx = *reinterpret_cast<InitKeyValues_t>(Utils::FindSignature("client_panorama.dll", "55 8B EC 51 33 C0 C7 45"));
  30.  
  31. InitKeyValuesEx(keyvalues, key_name);
  32. };
  33. auto load_from_buffer = [](KeyValuesv2* key_values, const char* resource_name, const char* buf, void* file_sys = nullptr, const char* path_id = nullptr, void* eval_sym_proc = nullptr, void* unk = nullptr) -> void {
  34. using LoadFromBuffer_t = void(__thiscall*)(void*, const char*, const char*, void*, const char*, void*, void*);
  35. static LoadFromBuffer_t LoadFromBufferEx = nullptr;
  36.  
  37. if (!LoadFromBufferEx)
  38. LoadFromBufferEx = *reinterpret_cast<LoadFromBuffer_t>(Utils::FindSignature("client_panorama.dll", "55 8B EC 83 E4 F8 83 EC 34 53 8B 5D 0C 89"));
  39.  
  40. LoadFromBufferEx(key_values, resource_name, buf, file_sys, path_id, eval_sym_proc, unk);
  41. };
  42.  
  43. auto* key_values = new KeyValuesv2();
  44. init_key_values(key_values, material_type.c_str());
  45. load_from_buffer(key_values, material_name.c_str(), material_data.c_str());
  46.  
  47. return g_pMaterialSys->CreateMaterial1(material_name.c_str(), key_values);
  48. }
  49.  
  50. void NewVis::start_chams()
  51. {
  52. if (!g_pEngine->IsInGame() || !g_pEngine->IsConnected())
  53. return;
  54.  
  55.  
  56. for (int i = 1; i < g_pEngine->GetMaxClients(); ++i)
  57. {
  58. C_BaseEntity* pPlayerEntity = g_pEntityList->GetClientEntity(i);
  59.  
  60. if (!pPlayerEntity
  61. || !pPlayerEntity->IsAlive()
  62. || pPlayerEntity->IsDormant()
  63. || !g::pLocalEntity)
  64. continue;
  65.  
  66. bool IsTeammate = pPlayerEntity->GetTeam() == g::pLocalEntity->GetTeam();
  67. bool IsEnemy = pPlayerEntity->GetTeam() != g::pLocalEntity->GetTeam();
  68. bool IsLocal = pPlayerEntity == g::pLocalEntity;
  69.  
  70.  
  71. static std::vector< IMaterial* > materials;
  72.  
  73. static bool once{ false };
  74. if (!once)
  75. {
  76. materials.push_back(create_material(true, false, false));
  77. materials.push_back(create_material(false, false, false, 0));
  78. materials.push_back(create_material(true, false, true));
  79. materials.push_back(create_material(false, false, true, 0));
  80. once = true;
  81. }
  82.  
  83. float vis_color[3] = { options::menu.VisualsTab.ChamsEnemyVis.color[0] / 255.0f, options::menu.VisualsTab.ChamsEnemyVis.color[1] / 255.0f,options::menu.VisualsTab.ChamsEnemyVis.color[2] / 255.0f };
  84. float hid_color[3] = { options::menu.VisualsTab.ChamsEnemyNotVis.color[0] / 255.0f,options::menu.VisualsTab.ChamsEnemyNotVis.color[1] / 255.0f, options::menu.VisualsTab.ChamsEnemyNotVis.color[2] / 255.0f };
  85. float local_color[3] = { options::menu.VisualsTab.ChamsColor.color[0] / 255.0f,options::menu.VisualsTab.ChamsColor.color[1] / 255.0f,options::menu.VisualsTab.ChamsColor.color[2] / 255.0f };
  86. if (IsEnemy)
  87. {
  88. {
  89. g_pRenderView->SetBlend(1.0f);
  90.  
  91. switch (options::menu.VisualsTab.visible_chams_type.GetIndex())
  92. {
  93. case 0:
  94. g_pModelRender->ForcedMaterialOverride(materials.at(2)); break;
  95. case 1:
  96. g_pModelRender->ForcedMaterialOverride(materials.at(3)); break;
  97. }
  98.  
  99. g_pRenderView->SetColorModulation(vis_color);
  100. pPlayerEntity->DrawModel(0x00000001, 255);
  101. }
  102. }
  103. else if (IsLocal && options::menu.VisualsTab.chamslocal.GetState())
  104. {
  105. g_pRenderView->SetBlend(1.0f);
  106.  
  107. switch (options::menu.VisualsTab.local_chams_type.GetIndex())
  108. {
  109. case 0:
  110. g_pModelRender->ForcedMaterialOverride(materials.at(0)); break;
  111. case 1:
  112. g_pModelRender->ForcedMaterialOverride(materials.at(1)); break;
  113. }
  114.  
  115. g_pRenderView->SetColorModulation(local_color);
  116. pPlayerEntity->DrawModel(0x00000001, 255);
  117.  
  118.  
  119. }
  120. g_pModelRender->ForcedMaterialOverride(nullptr);
  121. }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement