Advertisement
PMT-Exanity

HudsFunc.h

Nov 20th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.90 KB | None | 0 0
  1. union color_s
  2. {
  3.         struct
  4.         {
  5.                 int8_t r;            
  6.                 int8_t g;            
  7.                 int8_t b;      
  8.                 int8_t a;  
  9.         };
  10.         int32_t rgba;
  11. };
  12.  
  13. struct hudelem_s
  14. {
  15.         int type;
  16.         float X;
  17.         float Y;
  18.         float Z;
  19.         int targetEntNum;
  20.         float fontScale;
  21.         float fromFontScale;
  22.         int fontScaleStartTime;
  23.         int fontScaleTime;
  24.         int font;
  25.         int alignOrg;
  26.         int alignScreen;
  27.         color_s color;
  28.         color_s fromColor;
  29.         int fadeStartTime;
  30.         int fadeTime;
  31.         int label;
  32.         int Width;
  33.         int Height;
  34.         int materialIndex;
  35.         int fromWidth;
  36.         int fromHeight;
  37.         int scaleStartTime;
  38.         int scaleTime;
  39.         float fromX;
  40.         float fromY;
  41.         int fromAlignOrg;
  42.         int fromAlignScreen;
  43.         int moveStartTime;
  44.         int moveTime;
  45.         int time;
  46.         int duration;
  47.         float value;
  48.         int text;
  49.         float sort;
  50.         color_s glowColor;
  51.         int fxBirthTime;
  52.         int fxLetterTime;
  53.         int fxDecayStartTime;
  54.         int fxDecayDuration;
  55.         int soundID;
  56.         int flags;
  57. };
  58.  
  59. struct game_hudelem_s
  60. {
  61.         hudelem_s elem;
  62.         int clientNum;
  63.         int team;
  64.         int archived;
  65. };
  66.  
  67. int G_LocalizedStringIndex(const char* Text)
  68. {
  69.         opd_s Localized = { 0x001BE6CC, TOC };
  70.         int(*LocalizedStringIndex)(const char* Text) = (int(*)(const char*))&Localized;
  71.         return LocalizedStringIndex(Text);
  72. }
  73.  
  74. opd_s GMI = { 0x001BE744, TOC };
  75. int(*GetMaterialIndex)(const char* Material) = (int(*)(const char*))&GMI;
  76.  
  77. game_hudelem_s* HudElem_Alloc()
  78. {
  79.         for (int i = 0; i < 1024; i++)
  80.         {
  81.                 game_hudelem_s* elem = (game_hudelem_s*)(0x00F0E10C + (i * 0xB4));
  82.                 if (!elem->elem.type) return elem;
  83.         }
  84.         return (game_hudelem_s*)-1;
  85. }
  86.  
  87. enum TypewriterTextTypes
  88. {
  89.         Normal = 0x800,
  90.         Classic = 0x4000
  91. };
  92.  
  93. int GetLevelTime()
  94. {
  95.         return *(int*)Offsets::LevelTime;
  96. }
  97.  
  98. game_hudelem_s* setShader(int clientIndex, int Shader, int Width, int Height, float X, float Y, int Allign = 5, unsigned char R = 0, unsigned char G = 0, unsigned char B = 0, unsigned char A = 0)
  99. {
  100.         game_hudelem_s* elem = HudElem_Alloc();
  101.         elem->clientNum = clientIndex;
  102.         elem->elem.type = 4;
  103.         *(int*)0x00F3B198 = 1;
  104.         elem->elem.materialIndex = Shader;
  105.         *(int*)0x00F3B198 = 0;
  106.         elem->elem.Width = Width;
  107.         elem->elem.Height = Height;
  108.         elem->elem.X = X;
  109.         elem->elem.Y = Y;
  110.         elem->elem.alignOrg = Allign;
  111.         elem->elem.color.r = R;
  112.         elem->elem.color.g = G;
  113.         elem->elem.color.b = B;
  114.         elem->elem.color.a = A;
  115.         return elem;
  116. }
  117.  
  118. game_hudelem_s* setText(int clientIndex, const char* Text, int Font, float FontScale, float X, float Y, int Allign, unsigned char R = 0, unsigned char G = 0, unsigned char B = 0, unsigned char A = 0, unsigned char glowR = 0, unsigned char glowG = 0, unsigned char glowB = 0, unsigned char glowA = 0)
  119. {
  120.         game_hudelem_s* Elem = HudElem_Alloc();
  121.         Elem->clientNum = clientIndex;
  122.         Elem->elem.type = 1;
  123.         Elem->elem.text = G_LocalizedStringIndex(Text);
  124.         Elem->elem.font = Font;
  125.         Elem->elem.fontScale = FontScale;
  126.         if (Allign != 0)
  127.         { Elem->elem.alignOrg = 5; Elem->elem.alignScreen = Allign; Elem->elem.X = X; Elem->elem.Y = Y; }
  128.         else
  129.         { Elem->elem.X = X; Elem->elem.Y = Y; }
  130.         Elem->elem.color.r = R;
  131.         Elem->elem.color.g = G;
  132.         Elem->elem.color.b = B;
  133.         Elem->elem.color.a = A;
  134.         Elem->elem.glowColor.r = glowR;
  135.         Elem->elem.glowColor.g = glowG;
  136.         Elem->elem.glowColor.b = glowB;
  137.         Elem->elem.glowColor.a = glowA;
  138.         return Elem;
  139. }
  140.  
  141. void ChangeText(game_hudelem_s* elemIndex, const char* Text)
  142. {
  143.         elemIndex->elem.text = G_LocalizedStringIndex(Text);
  144. }
  145.  
  146. void MoveOverTime(game_hudelem_s* elemIndex, short time, float X, float Y)
  147. {
  148.         elemIndex->elem.fromX = elemIndex->elem.X;
  149.         elemIndex->elem.fromY = elemIndex->elem.Y;
  150.         elemIndex->elem.moveStartTime = GetLevelTime();
  151.         elemIndex->elem.moveTime = time;
  152.         elemIndex->elem.X = X;
  153.         elemIndex->elem.Y = Y;
  154. }
  155.  
  156. void MoveShaderXY(game_hudelem_s* elemIndex, float X, float Y)
  157. {
  158.         elemIndex->elem.X = X;
  159.         elemIndex->elem.Y = Y;
  160. }
  161.  
  162. void ScaleOverTime(game_hudelem_s* elemIndex, short time, short width, short height)
  163. {
  164.         elemIndex->elem.fromHeight = elemIndex->elem.Height;
  165.         elemIndex->elem.fromWidth = elemIndex->elem.Width;
  166.         elemIndex->elem.scaleStartTime = GetLevelTime();
  167.         elemIndex->elem.scaleTime= time;
  168.         elemIndex->elem.Width = width;
  169.         elemIndex->elem.Height = height;
  170. }
  171.  
  172. void FontScaleOverTime(game_hudelem_s* elemIndex, float FontSize, short time)
  173. {
  174.         elemIndex->elem.fromFontScale = elemIndex->elem.fontScale;
  175.         elemIndex->elem.fontScaleStartTime = GetLevelTime();
  176.         elemIndex->elem.fontScaleTime = time;
  177.         elemIndex->elem.fontScale = FontSize;
  178. }
  179.  
  180. void FontScale(game_hudelem_s* elemIndex, float FontSize)
  181. {
  182.         elemIndex->elem.fromFontScale = elemIndex->elem.fontScale;
  183.         elemIndex->elem.fontScale = FontSize;
  184. }
  185.  
  186.  
  187. game_hudelem_s* typewriter;
  188. bool typran;
  189.  
  190. void SetTypewriter(int clientIndex, char* Text, int IconType, int Font, float FontSize, float X, float Y, char align, int WriteType = Normal, short Lettertime = 200, short fxDecayStartTime = 7000, short fxDecayDuration = 1000, char R = 255, char G = 255, char B = 255, char A = 255, char GlowR = 255, char GlowG = 255, char GlowB = 255, char GlowA = 0)
  191. {
  192.         if(!typran)
  193.         {
  194.                 game_hudelem_s* elemIndex = setText(clientIndex, Text, Font, FontSize, X, Y, align, R, G, B, A, GlowR, GlowG, GlowB, GlowA);
  195.                 elemIndex->elem.flags = WriteType;
  196.                 elemIndex->elem.fxBirthTime = GetLevelTime();
  197.                 elemIndex->elem.fxLetterTime = Lettertime;
  198.                 elemIndex->elem.fxDecayStartTime = fxDecayStartTime;
  199.                 elemIndex->elem.fxDecayDuration = fxDecayDuration;
  200.                 typewriter = elemIndex;
  201.                 typran = true;
  202.         }
  203.         else
  204.         {
  205.                 game_hudelem_s* elemIndex = typewriter;
  206.                 elemIndex->clientNum = clientIndex;
  207.                 elemIndex->elem.type = 1;
  208.                 elemIndex->elem.text = G_LocalizedStringIndex(Text);
  209.                 elemIndex->elem.font = Font;
  210.                 elemIndex->elem.fontScale = FontSize;
  211.                 if (align != 0)
  212.                 { elemIndex->elem.alignOrg = 5; elemIndex->elem.alignScreen = align; elemIndex->elem.X = X; elemIndex->elem.Y = Y; }
  213.                 else
  214.                 { elemIndex->elem.X = X; elemIndex->elem.Y = Y; }
  215.                 elemIndex->elem.color.r = R;
  216.                 elemIndex->elem.color.g = G;
  217.                 elemIndex->elem.color.b = B;
  218.                 elemIndex->elem.color.a = A;
  219.                 elemIndex->elem.glowColor.r = GlowR;
  220.                 elemIndex->elem.glowColor.g = GlowG;
  221.                 elemIndex->elem.glowColor.b = GlowB;
  222.                 elemIndex->elem.glowColor.a = GlowA;
  223.                 elemIndex->elem.flags = WriteType;
  224.                 elemIndex->elem.fxBirthTime = GetLevelTime();
  225.                 elemIndex->elem.fxLetterTime = Lettertime;
  226.                 elemIndex->elem.fxDecayStartTime = fxDecayStartTime;
  227.                 elemIndex->elem.fxDecayDuration = fxDecayDuration;
  228.         }
  229. }
  230.  
  231. game_hudelem_s* typewriter1;
  232. bool Message;
  233.  
  234. void SetMessage(int clientIndex, char* Text, char* Text2, int WriteType = Normal, short Lettertime = 200, short fxDecayStartTime = 7000, short fxDecayDuration = 1000, char R = 255, char G = 255, char B = 255, char A = 255, char GlowR = 255, char GlowG = 255, char GlowB = 255, char GlowA = 0)
  235. {
  236.         if(!Message)
  237.         {
  238.                 game_hudelem_s* elemIndex1 = setText(clientIndex, Text, 3, 1.5, 325, 130, 1, R, G, B, A, GlowR, GlowG, GlowB, GlowA);
  239.                 elemIndex1->elem.flags = WriteType;
  240.                 elemIndex1->elem.fxBirthTime = GetLevelTime();
  241.                 elemIndex1->elem.fxLetterTime = Lettertime;
  242.                 elemIndex1->elem.fxDecayStartTime = fxDecayStartTime;
  243.                 elemIndex1->elem.fxDecayDuration = fxDecayDuration;
  244.                 typewriter = elemIndex1;
  245.                 game_hudelem_s* elemIndex = setText(clientIndex, Text2, 3, 1.5, 325, 150, 1, R, G, B, A, GlowR, GlowG, GlowB, GlowA);
  246.                 elemIndex->elem.flags = WriteType;
  247.                 elemIndex->elem.fxBirthTime = GetLevelTime();
  248.                 elemIndex->elem.fxLetterTime = Lettertime;
  249.                 elemIndex->elem.fxDecayStartTime = fxDecayStartTime;
  250.                 elemIndex->elem.fxDecayDuration = fxDecayDuration;
  251.                 typewriter1 = elemIndex;
  252.                 Message = true;
  253.                 typran = true;
  254.         }
  255.         else
  256.         {
  257.                 game_hudelem_s* elemIndex1 = typewriter;
  258.                 elemIndex1->clientNum = clientIndex;
  259.                 elemIndex1->elem.type = 1;
  260.                 elemIndex1->elem.text = G_LocalizedStringIndex(Text);
  261.                 elemIndex1->elem.font = 3;
  262.                 elemIndex1->elem.fontScale = 1.5;
  263.                 elemIndex1->elem.alignOrg = 5; elemIndex1->elem.alignScreen = 1; elemIndex1->elem.X = 325; elemIndex1->elem.Y = 130;
  264.                 elemIndex1->elem.color.r = R;
  265.                 elemIndex1->elem.color.g = G;
  266.                 elemIndex1->elem.color.b = B;
  267.                 elemIndex1->elem.color.a = A;
  268.                 elemIndex1->elem.glowColor.r = GlowR;
  269.                 elemIndex1->elem.glowColor.g = GlowG;
  270.                 elemIndex1->elem.glowColor.b = GlowB;
  271.                 elemIndex1->elem.glowColor.a = GlowA;
  272.                 elemIndex1->elem.flags = WriteType;
  273.                 elemIndex1->elem.fxBirthTime = GetLevelTime();
  274.                 elemIndex1->elem.fxLetterTime = Lettertime;
  275.                 elemIndex1->elem.fxDecayStartTime = fxDecayStartTime;
  276.                 elemIndex1->elem.fxDecayDuration = fxDecayDuration;
  277.                 game_hudelem_s* elemIndex = typewriter1;
  278.                 elemIndex->clientNum = clientIndex;
  279.                 elemIndex->elem.type = 1;
  280.                 elemIndex->elem.text = G_LocalizedStringIndex(Text2);
  281.                 elemIndex->elem.font = 3;
  282.                 elemIndex->elem.fontScale = 1.5;
  283.                 elemIndex->elem.alignOrg = 5; elemIndex->elem.alignScreen = 1; elemIndex->elem.X = 325; elemIndex->elem.Y = 150;
  284.                 elemIndex->elem.color.r = R;
  285.                 elemIndex->elem.color.g = G;
  286.                 elemIndex->elem.color.b = B;
  287.                 elemIndex->elem.color.a = A;
  288.                 elemIndex->elem.glowColor.r = GlowR;
  289.                 elemIndex->elem.glowColor.g = GlowG;
  290.                 elemIndex->elem.glowColor.b = GlowB;
  291.                 elemIndex->elem.glowColor.a = GlowA;
  292.                 elemIndex->elem.flags = WriteType;
  293.                 elemIndex->elem.fxBirthTime = GetLevelTime();
  294.                 elemIndex->elem.fxLetterTime = Lettertime;
  295.                 elemIndex->elem.fxDecayStartTime = fxDecayStartTime;
  296.                 elemIndex->elem.fxDecayDuration = fxDecayDuration;
  297.         }
  298. }
  299.  
  300. void SetGlow(game_hudelem_s* Text, int GlowR, int GlowG, int GlowB, int GlowA)
  301. {
  302.         Text->elem.glowColor.r = GlowR;
  303.         Text->elem.glowColor.g = GlowG;
  304.         Text->elem.glowColor.b = GlowB;
  305.         Text->elem.glowColor.a = GlowA;
  306. }
  307.  
  308. void FadeOverTime(game_hudelem_s* Elem, int Time, int R, int G, int B, int A)
  309. {
  310.         Elem->elem.fromColor = Elem->elem.color;
  311.         Elem->elem.color.r = R;
  312.         Elem->elem.color.g = G;
  313.         Elem->elem.color.b = B;
  314.         Elem->elem.color.a = A;
  315.         Elem->elem.fadeTime = Time;
  316.         Elem->elem.fadeStartTime = GetLevelTime();
  317. }
  318.  
  319. void FadeOverTime2(game_hudelem_s* Elem, int Time, int R, int G, int B, int A)
  320. {
  321.         Elem->elem.fromColor = Elem->elem.color;
  322.         Elem->elem.color.r = R;
  323.         Elem->elem.color.g = G;
  324.         Elem->elem.color.b = B;
  325.         Elem->elem.color.a = A;
  326.         Elem->elem.fadeTime = Time;
  327.         Elem->elem.fadeStartTime = GetLevelTime();
  328. }
  329.  
  330. void FadeOverTimeGlow(game_hudelem_s* Elem, float Time, int glowR, int glowG, int glowB, int glowA)
  331. {
  332.         Elem->elem.fromColor = Elem->elem.color;
  333.         Elem->elem.glowColor.r = glowR;
  334.         Elem->elem.glowColor.g = glowG;
  335.         Elem->elem.glowColor.b = glowB;
  336.         Elem->elem.glowColor.a = glowA;
  337.         Elem->elem.fadeTime = Time;
  338.         Elem->elem.fadeStartTime = GetLevelTime();
  339. };
  340.  
  341. void HudElem_DestroyAll()
  342. {
  343.         opd_s HDA = { 0x001872E8, TOC };
  344.         void(*HudElemDestroyAll)() = (void(*)())&HDA;
  345.         HudElemDestroyAll();
  346. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement