Advertisement
Smi-ChetDev

dd

Aug 19th, 2019
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.51 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.  
  51.  
  52.  
  53.  
  54. void NewVis::start_chams()
  55. {
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64. //static IMaterial* Material = nullptr;
  65. //static IMaterial* GlowMat = nullptr;
  66. if (!g_pEngine->IsInGame() || !g_pEngine->IsConnected())
  67. return;
  68. if (!g_Menu.Config.defchams) return;
  69.  
  70. for (int i = 1; i < g_pEngine->GetMaxClients(); ++i)
  71. {
  72. C_BaseEntity* pPlayerEntity = g_pEntityList->GetClientEntity(i);
  73.  
  74. if (!pPlayerEntity
  75. || !pPlayerEntity->IsAlive()
  76. || pPlayerEntity->IsDormant()
  77. || !g::pLocalEntity)
  78. continue;
  79.  
  80. bool IsTeammate = pPlayerEntity->GetTeam() == g::pLocalEntity->GetTeam();
  81. bool IsEnemy = pPlayerEntity->GetTeam() != g::pLocalEntity->GetTeam();
  82. bool IsLocal = pPlayerEntity == g::pLocalEntity;
  83.  
  84.  
  85. static std::vector< IMaterial* > materials;
  86.  
  87. static bool once{ false };
  88. if (!once)
  89. {
  90. materials.push_back(create_material(true, false, false));
  91. materials.push_back(create_material(false, false, false, 0));
  92. materials.push_back(create_material(true, false, true));
  93. materials.push_back(create_material(false, false, true, 0));
  94. once = true;
  95. }
  96. float vis_color[3] = { g_Menu.Config.chamsvisible[0], g_Menu.Config.chamsvisible[1], g_Menu.Config.chamsvisible[2] };
  97. float hid_color[3] = { g_Menu.Config.chamsinvisible[0], g_Menu.Config.chamsinvisible[1], g_Menu.Config.chamsinvisible[2] };
  98. float local_color[3] = { g_Menu.Config.ChamsColor[0], g_Menu.Config.ChamsColor[1], g_Menu.Config.ChamsColor[2] };
  99. //float desync_color[3] = { g_Menu.Config.fakeAngleColor.red / 255.f, g_Menu.Config.fakeAngleColor.green / 255.f, g_Menu.Config.fakeAngleColor.blue / 255.f };
  100. float flag[3] = { g_Menu.Config.fakeLagColor[0], g_Menu.Config.fakeLagColor[1], g_Menu.Config.fakeLagColor[2] };
  101. if (IsEnemy)
  102. {
  103. //if (g_Menu.Config.chamsvisible)
  104. {
  105. //if (g_Menu.Config.chamsinvisible)
  106. {
  107. g_pRenderView->SetBlend(g_Menu.Config.chamsinvisible[3]);
  108.  
  109. switch (g_Menu.Config.chams_type)
  110. {
  111. case 0:
  112. g_pModelRender->ForcedMaterialOverride(materials.at(2)); break;
  113. case 1:
  114. g_pModelRender->ForcedMaterialOverride(materials.at(3)); break;
  115. }
  116.  
  117. g_pRenderView->SetColorModulation(hid_color);
  118. pPlayerEntity->DrawModel(0x00000001, 255);
  119. }
  120.  
  121. g_pRenderView->SetBlend(g_Menu.Config.chamsvisible[3]);
  122.  
  123. switch (g_Menu.Config.chams_type)
  124. {
  125. case 0:
  126. g_pModelRender->ForcedMaterialOverride(materials.at(0)); break;
  127. case 1:
  128. g_pModelRender->ForcedMaterialOverride(materials.at(1)); break;
  129. }
  130.  
  131. g_pRenderView->SetColorModulation(vis_color);
  132. pPlayerEntity->DrawModel(0x00000001, 255);
  133. }
  134. }
  135. else if (IsLocal /*&& !g::pLocalEntity->IsScoped()*/ && g_Menu.Config.chamslocal)
  136. {
  137. g_pRenderView->SetBlend(g_Menu.Config.ChamsColor[3]);
  138.  
  139. switch (g_Menu.Config.chamslocaltype)
  140. {
  141. case 0:
  142. g_pModelRender->ForcedMaterialOverride(materials.at(0)); break;
  143. case 1:
  144. g_pModelRender->ForcedMaterialOverride(materials.at(1)); break;
  145. }
  146.  
  147. g_pRenderView->SetColorModulation(local_color);
  148. pPlayerEntity->DrawModel(0x00000001, 255);
  149.  
  150.  
  151. }
  152. if (IsLocal && g_Menu.Config.visualizeFakeLag && g::pLocalEntity->GetVelocity().Length2D() > 5)
  153. {
  154. static IMaterial* material = nullptr;
  155. material = g_pMaterialSys->FindMaterial("models\\inventory_items\\dogtags\\dogtags_outline", "Other textures"); // defining it as dogtags_outline
  156. static auto last_networked_origin = Vector(0, 0, 0);
  157. if (g::bSendPacket) last_networked_origin = g::pLocalEntity->GetAbsOrigin();
  158. g::pLocalEntity->SetAbsOrigin(last_networked_origin);
  159. g_pModelRender->ForcedMaterialOverride(material);
  160. g_pRenderView->SetBlend(g_Menu.Config.fakeLagColor[3]);
  161. g_pRenderView->SetColorModulation(flag);
  162. g::pLocalEntity->DrawModel(0x00000001, 255);
  163. g::pLocalEntity->SetAbsOrigin(g::pLocalEntity->GetAbsOrigin());
  164.  
  165. }
  166. g_pModelRender->ForcedMaterialOverride(nullptr);
  167. }
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181. /*
  182. if (!pLocalEntity)
  183. {
  184. Material = g_pMaterialSys->FindMaterial("FlatChams", "Model textures");
  185. GlowMat = g_pMaterialSys->FindMaterial("dev/glow_armsrace.vmt", nullptr, false, 0);
  186. return;
  187. }
  188.  
  189. if (g::resetMaterials)
  190. {
  191. Material = g_pMaterialSys->FindMaterial("FlatChams", "Model textures");
  192. GlowMat = g_pMaterialSys->FindMaterial("dev/glow_armsrace.vmt", nullptr, false, 0);
  193. g::resetMaterials = false;
  194. return;
  195. }
  196.  
  197. if (Material && g_Menu.Config.defchams)
  198. {
  199. for (int i = 1; i <= g_pEngine->GetMaxClients(); ++i)
  200. {
  201. C_BaseEntity* pPlayerEntity = g_pEntityList->GetClientEntity(i);
  202.  
  203. if (!pPlayerEntity
  204. || !pPlayerEntity->IsPlayer()
  205. || !pPlayerEntity->IsAlive()
  206. || pPlayerEntity->IsDormant()
  207. || pPlayerEntity->GetTeam() == pLocalEntity->GetTeam())
  208. continue;
  209.  
  210.  
  211. if (g_Menu.Config.chams_type == 0)
  212. {
  213. Material->SetMaterialVarFlag(MATERIAL_VAR_IGNOREZ, true);
  214. Material->AlphaModulate(g_Menu.Config.chamsvisible[3]); Material->ColorModulate(g_Menu.Config.chamsvisible[0] , g_Menu.Config.chamsvisible[1] , g_Menu.Config.chamsvisible[2] );
  215. g_pModelRender->ForcedMaterialOverride(Material);
  216. }
  217. if (g_Menu.Config.chams_type == 1)
  218. {
  219. //g::Metallic->SetMaterialVarFlag(MATERIAL_VAR_IGNOREZ, true);
  220. //g::Metallic->AlphaModulate(g_Menu.Config.chamsvisible[3]); Material->ColorModulate(g_Menu.Config.chamsvisible[0], g_Menu.Config.chamsvisible[1], g_Menu.Config.chamsvisible[2]);
  221. //g_pModelRender->ForcedMaterialOverride(g::Metallic);
  222. //i see black models who knows xd
  223. }
  224. if (g_Menu.Config.chams_type == 2)
  225. {
  226. GlowMat->SetMaterialVarFlag(MATERIAL_VAR_IGNOREZ, true);
  227. GlowMat->AlphaModulate(g_Menu.Config.chamsvisible[3]); GlowMat->ColorModulate(g_Menu.Config.chamsvisible[0], g_Menu.Config.chamsvisible[1], g_Menu.Config.chamsvisible[2]);
  228. g_pModelRender->ForcedMaterialOverride(GlowMat);
  229. }
  230. pPlayerEntity->DrawModel(0x1, pPlayerEntity->GetModelInstance());
  231. g_pModelRender->ForcedMaterialOverride(nullptr);
  232. }
  233. }
  234. */
  235. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement