Advertisement
Guest User

Untitled

a guest
Jul 7th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. template< typename Function > Function getvfunc(PVOID Base, DWORD Index)
  2. {
  3. PDWORD* VTablePointer = (PDWORD*)Base;
  4. PDWORD VTableFunctionBase = *VTablePointer;
  5. DWORD dwAddress = VTableFunctionBase[Index];
  6. return (Function)(dwAddress);
  7. }
  8.  
  9. class ConVar
  10. {
  11. public:
  12. void SetValue(const char* value)
  13. {
  14. typedef void(__thiscall* OriginalFn)(void*, const char*); //typedef void(__thiscall* OriginalFn)(void*, const char*);
  15. return getvfunc<OriginalFn>(this, 14)(this, value); //return getvfunc<OriginalFn>(this, 14)(this, value);
  16.  
  17. }
  18.  
  19. void SetValue(float value)
  20. {
  21. typedef void(__thiscall* OriginalFn)(void*, float);
  22. return getvfunc<OriginalFn>(this, 15)(this, value);
  23. }
  24.  
  25. void SetValue(int value)
  26. {
  27. typedef void(__thiscall* OriginalFn)(void*, int);
  28. return getvfunc<OriginalFn>(this, 16)(this, value);
  29. }
  30.  
  31. void SetValue(Color value)
  32. {
  33. typedef void(__thiscall* OriginalFn)(void*, Color);
  34. return getvfunc<OriginalFn>(this, 17)(this, value);
  35. }
  36.  
  37. char* GetName()
  38. {
  39. typedef char*(__thiscall* OriginalFn)(void*);
  40. return getvfunc<OriginalFn>(this, 5)(this);
  41. }
  42.  
  43. char* GetDefault()
  44. {
  45. return pszDefaultValue;
  46. }
  47.  
  48. char pad_0x0000[0x4]; //0x0000
  49. ConVar* pNext; //0x0004
  50. __int32 bRegistered; //0x0008
  51. char* pszName; //0x000C
  52. char* pszHelpString; //0x0010
  53. __int32 nFlags; //0x0014
  54. char pad_0x0018[0x4]; //0x0018
  55. ConVar* pParent; //0x001C
  56. char* pszDefaultValue; //0x0020
  57. char* strString; //0x0024
  58. __int32 StringLength; //0x0028
  59. float fValue; //0x002C
  60. __int32 nValue; //0x0030
  61. __int32 bHasMin; //0x0034
  62. float fMinVal; //0x0038
  63. __int32 bHasMax; //0x003C
  64. float fMaxVal; //0x0040
  65. void* fnChangeCallback; //0x0044
  66. };//Size=0x0048
  67.  
  68.  
  69. class ICVar
  70. {
  71. public:
  72. void RegisterConCommand(ConVar *pCvar)
  73. {
  74. typedef void(__thiscall* OriginalFn)(void*, ConVar*);
  75. return getvfunc<OriginalFn>(this, 1)(this, pCvar);
  76. }
  77.  
  78. ConVar* FindVar(const char *var_name)
  79. {
  80. typedef ConVar*(__thiscall* OriginalFn)(void*, const char*);
  81. return getvfunc<OriginalFn>(this, 15)(this, var_name);
  82. }
  83. };
  84.  
  85.  
  86. bool Misc15(CUserCmd* pCmd, CPlayer* pLocal )
  87. {
  88. ConVar* name = ICVar->FindVar("name");
  89. *(int*)((DWORD)&name->fnChangeCallback + 0xC) = NULL;
  90. if (name) {
  91. name->SetValue("\n");
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement