Advertisement
Botch

HUD.h (Part 1)

Sep 2nd, 2014
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.17 KB | None | 0 0
  1. //ok guys, this is literally the exact HUD.h from the video. You won't know what some of the stuff is for (yet), and there will likely be an updated version in the next video.
  2. //Stay classy.
  3.  
  4. typedef unsigned char byte;
  5.  
  6. int* CL_Ingame = (int*)0x83609214;
  7. int* LevelTime = (int*)0x8310A12C;
  8.  
  9. typedef const char * (__cdecl * Dvar_GetString_t)(const char *dvarName);
  10. Dvar_GetString_t DGS = (Dvar_GetString_t)0x8229F118;
  11.  
  12. typedef bool (*Dvar_GetBool_t)(const char *dvarName);
  13. Dvar_GetBool_t DGB = (Dvar_GetBool_t)0x8229EF58;
  14.  
  15. typedef int (*G_GetClientState)(int clientNum);
  16. G_GetClientState gClientState = (G_GetClientState)0x821E66A8;
  17.  
  18. typedef void (*SV_GameSendServerCommand_t)(int clientNum, int type, const char *text);
  19. SV_GameSendServerCommand_t SV = (SV_GameSendServerCommand_t)0x82254940;
  20.  
  21. typedef int (__cdecl * G_LocalizedStringIndex_t)(const char * string);
  22. G_LocalizedStringIndex_t StringIndex = (G_LocalizedStringIndex_t)0x8220C838;
  23.  
  24. typedef int (__cdecl * G_MaterialIndex_t)(const char * name);
  25. G_MaterialIndex_t getMaterialIndex = (G_MaterialIndex_t)0x8220C9F8;
  26.  
  27.  
  28. //Actual HUD Elements Structs + Functions - thanks Droseum20
  29. //derp - x, y, z
  30. //derp.x = whatever
  31.  
  32. struct hudelem_color_t
  33. {
  34.     byte r;
  35.     byte g;
  36.     byte b;
  37.     byte a;
  38. };
  39.  
  40. struct hudelem_s
  41. {
  42. int type;                    // 0x00-0x04
  43. float y;                      // 0x04-0x08
  44. float x;                      // 0x08-0x0C
  45. float z;                      // 0x0C-0x10
  46. int targetEntNum;            // 0x10-0x14
  47. float fontScale;              // 0x14-0x18
  48. float fromFontScale;          // 0x18-0x1C
  49. int fontScaleStartTime;      // 0x1C-0x20
  50. int fontScaleTime;            // 0x20-0x24
  51. int label;                    // 0x24-0x28
  52. int font;                    // 0x28-0x2C
  53. int alignOrg;                // 0x2C-0x30
  54. int alignScreen;              // 0x30-0x34
  55. hudelem_color_t color;        // 0x34-0x38
  56. hudelem_color_t fromColor;    // 0x38-0x3C
  57. int fadeStartTime;            // 0x3C-0x40
  58. int fadeTime;                // 0x40-0x44
  59. int height;                  // 0x44-0x48
  60. int width;                    // 0x48-0x4C
  61. int materialIndex;            // 0x4C-0x50
  62. int fromHeight;              // 0x50-0x54
  63. int fromWidth;                // 0x54-0x58
  64. int scaleStartTime;          // 0x58-0x5C
  65. int scaleTime;                // 0x5C-0x60
  66. float fromY;                  // 0x60-0x64
  67. float fromX;                  // 0x64-0x68
  68. int fromAlignOrg;            // 0x68-0x6C
  69. int fromAlignScreen;          // 0x6C-0x70
  70. int moveStartTime;            // 0x70-0x74
  71. int moveTime;                // 0x74-0x78
  72. float value;                  // 0x78-0x7C
  73. int time;                    // 0x7C-0x80
  74. int duration;                // 0x80-0x84
  75. int text;                    // 0x84-0x88
  76. float sort;                  // 0x88-0x8C
  77. hudelem_color_t glowColor;    // 0x8C-0x90
  78. int fxBirthTime;              // 0x90-0x94
  79. int fxLetterTime;            // 0x94-0x98
  80. int fxDecayStartTime;        // 0x98-0x9C
  81. int fxDecayDuration;          // 0x9C-0xA0
  82. int soundID;                  // 0xA0-0xA4
  83. int flags;                    // 0xA4-0xA8
  84. };
  85.  
  86. struct game_hudelem_s
  87. {
  88. hudelem_s elem;              // 0x00-0xA8
  89. int clientNum;                // 0xA8-0xAC
  90. int teamNum;                  // 0xAC-0xB0
  91. int archived;                // 0xB0-0xB4
  92. };
  93.  
  94. typedef game_hudelem_s * (__cdecl * HudElem_Alloc_t)(int clientNum, int teamNum);
  95. HudElem_Alloc_t CacheElem = (HudElem_Alloc_t)0x821DF9C0;
  96.  
  97. game_hudelem_s * spawnElem(int clientNum)
  98. {
  99.     game_hudelem_s * elem = CacheElem(0, 0);
  100.     elem->clientNum = clientNum;
  101.     return elem;
  102. }
  103. void setText(game_hudelem_s * elem, const char * text, int font, float fontScale, float x, float y, int alignOrg, int alignScreen, BYTE r = 255, BYTE g = 255, BYTE b = 255, BYTE a = 255, float sort = 1)
  104. {
  105.     elem->elem.type = 0x01; //TEXT
  106.     elem->elem.alignOrg = alignOrg;
  107.     elem->elem.alignScreen = alignScreen;
  108.     elem->elem.font = font;
  109.     elem->elem.fontScale = fontScale;
  110.     elem->elem.x = x;
  111.     elem->elem.y = y;
  112.     elem->elem.color.r = r;
  113.     elem->elem.color.g = g;
  114.     elem->elem.color.b = b;
  115.     elem->elem.color.a = a;
  116.     elem->elem.sort = sort;
  117.     elem->elem.text = StringIndex(text);
  118. }
  119. void setShader(game_hudelem_s * elem, const char * materialName, float x, float y, int width, int height, int alignOrg, int alignScreen, float sort = 0, char r = 255, char g = 255, char b = 255, char a = 255)
  120. {
  121.     elem->elem.type = 0x04; //MATERIAL
  122.     elem->elem.alignOrg = alignOrg;
  123.     elem->elem.alignScreen = alignScreen;
  124.     elem->elem.x = x;
  125.     elem->elem.y = y;
  126.     elem->elem.color.r = r;
  127.     elem->elem.color.g = g;
  128.     elem->elem.color.b = b;
  129.     elem->elem.color.a = a;
  130.     elem->elem.width = width;
  131.     elem->elem.height = height;
  132.     elem->elem.sort = sort;
  133.     elem->elem.materialIndex = getMaterialIndex(materialName);
  134. }
  135.  
  136. void MoveOverTime(game_hudelem_s *elem, int time, float x, float y)
  137. {
  138.     elem->elem.fromX = elem->elem.x;
  139.     elem->elem.fromY = elem->elem.y;
  140.     elem->elem.fromAlignOrg = elem->elem.alignOrg;
  141.     elem->elem.fromAlignScreen = elem->elem.alignScreen;
  142.     elem->elem.moveStartTime = LevelTime[0];
  143.     elem->elem.moveTime = time;
  144.     elem->elem.x = x;
  145.     elem->elem.y = y;
  146. }
  147.  
  148. void ScaleOverTime(game_hudelem_s *elem, int time, float width, float height)
  149. {
  150.     elem->elem.fromHeight = elem->elem.height;
  151.     elem->elem.fromWidth = elem->elem.width;
  152.     elem->elem.scaleStartTime = LevelTime[0];
  153.     elem->elem.scaleTime = time;
  154.     elem->elem.height = height;
  155.     elem->elem.width = width;
  156. }
  157. void SizeOverTime(game_hudelem_s * elem, int time, float fontscale)
  158. {
  159.     elem->elem.fontScaleStartTime = LevelTime[0];
  160.     elem->elem.fromFontScale = elem->elem.fontScale;
  161.     elem->elem.fontScaleTime = time;
  162.     elem->elem.fontScale = fontscale;
  163. }
  164.  
  165. void FadeOverTime(game_hudelem_s *elem, int time, int r, int g, int b, int a)
  166. {
  167.     elem->elem.fromColor.r = elem->elem.color.r;
  168.     elem->elem.fromColor.g = elem->elem.color.g;
  169.     elem->elem.fromColor.b = elem->elem.color.b;
  170.     elem->elem.fromColor.a = elem->elem.color.a;
  171.     elem->elem.fadeStartTime = LevelTime[0];
  172.     elem->elem.fadeTime = time;
  173.     elem->elem.color.r = (BYTE)r;
  174.     elem->elem.color.g = (BYTE)g;
  175.     elem->elem.color.b = (BYTE)b;
  176.     elem->elem.color.a = (BYTE)a;
  177. }
  178. void FadeAlphaTime(game_hudelem_s *elem, int time, int alpha)
  179. {
  180.     elem->elem.fromColor.a = elem->elem.color.a;
  181.     elem->elem.fadeStartTime = LevelTime[0];
  182.     elem->elem.fadeTime = time;
  183.     elem->elem.color.a = (BYTE)alpha;
  184. }
  185.  
  186. //Thanks Ari
  187.  
  188. void (__cdecl* HudElem_Free)(game_hudelem_s* Elem) = (void(__cdecl*)(game_hudelem_s*))0x821DFA58;
  189.  
  190. void freeElem(game_hudelem_s * Elem)
  191. {
  192.     //Elem->clientNum = 123;
  193.     HudElem_Free(Elem);
  194. }
  195.  
  196. //Hook Shit
  197. void PatchInJump(DWORD* Address, DWORD Destination, BOOL Linked)
  198. {
  199.     if (Destination & 0x8000)
  200.         Address[0] = 0x3D600000 + (((Destination >> 16) & 0xFFFF) + 1);
  201.     else
  202.         Address[0] = 0x3D600000 + ((Destination >> 16) & 0xFFFF);
  203.  
  204.     Address[1] = 0x396B0000 + (Destination & 0xFFFF);
  205.     Address[2] = 0x7D6903A6;
  206.  
  207.     if (Linked)
  208.         Address[3] = 0x4E800421;
  209.     else
  210.         Address[3] = 0x4E800420;
  211. }
  212.  
  213. void (WINAPIV* SV_Cmd_TokenizeString)(const char* text_in) = (void(WINAPIV*)(const char*))0x82225348;
  214. void (WINAPIV* ClientCommand)(DWORD clientIndex) = (void(WINAPIV*)(DWORD))0x821DC638;
  215. void (WINAPIV* SV_Cmd_EndTokenizedString)() = (void(WINAPIV*)())0x82225368;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement