Advertisement
Guest User

Untitled

a guest
Sep 28th, 2015
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.67 KB | None | 0 0
  1. /*
  2. # CODE BY SIMON #
  3. # MADE FOR CS:GO ONLY #
  4. # #
  5. # Please do not edit and distribute any part of this code #
  6. # without my permission. #
  7. # CONSOLE CVARS: #
  8. # sm_hud_health_version #
  9. # sm_hud_health_team -> 4 #
  10. # sm_hud_health_mode -> 1 #
  11. # sm_hud_health_flag -> d #
  12. # sm_hud_health_ad -> 1 #
  13. # CLIENT COMMANDS: #
  14. # !hudhealth #
  15. # #
  16. # Thanks! #
  17. # Give suggestions/requests at yash1441@yahoo.com #
  18. # #
  19. # Credits to Graffiti for his Show nickname in HUD plugin #
  20. # #
  21. # CHANGELOG: #
  22. - 2015-09-25 ~ Fixed issues after the new CS:GO update v3.0
  23. -
  24. - 2015-08-22 ~ Minor Fixes v2.7
  25. -
  26. - 2015-08-21 ~ Minor Fixes v2.6
  27. -
  28. - 2015-08-20 ~ Added sm_hud_health_mode, !hudhealth(sm_hudhealth), sm_hud_health_team 5 for spectators/dead & Advertisement v2.5
  29. -
  30. - 2015-08-18 ~ Initial Release v1.0
  31. -
  32. */
  33.  
  34. #include <sourcemod>
  35. #include <sdktools>
  36. #include <cstrike>
  37.  
  38. #define PLUGIN_VERSION "3.0"
  39. #define DEFAULT_FLAGS FCVAR_PLUGIN|FCVAR_NOTIFY
  40.  
  41. new target_health;
  42. new Handle:g_Cvar_Team = INVALID_HANDLE;
  43. new Handle:g_Cvar_Flag = INVALID_HANDLE;
  44. new Handle:g_Cvar_Ad = INVALID_HANDLE;
  45. new Handle:g_Cvar_Mode = INVALID_HANDLE;
  46. new String:g_sCharAdminFlag[32];
  47.  
  48. public Plugin:myinfo =
  49. {
  50. name = "HUD Health",
  51. author = "Simon",
  52. description = "Show health on HUD for CSGO",
  53. version = PLUGIN_VERSION,
  54. url = "yash1441@yahoo.com"
  55. };
  56.  
  57. new bool:g_Hud_Check[MAXPLAYERS+1] = {false,...};
  58.  
  59. public OnPluginStart()
  60. {
  61. LoadTranslations("common.phrases");
  62. CreateConVar("sm_hud_health_version", PLUGIN_VERSION, "Show health on HUD", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_DONTRECORD | FCVAR_NOTIFY);
  63. g_Cvar_Team = CreateConVar("sm_hud_health_team", "3", "Show health to players in which team. (0 = No One, 1 = Terrorists, 2 = Counter-Terrorists, 3 = Both, 4 = Admin Only, 5 = Dead/Spectators Only)", DEFAULT_FLAGS);
  64. g_Cvar_Mode = CreateConVar("sm_hud_health_mode", "1", "Show health of players in which team. (0 = All, 1 = Enemy, 2 = Teammate)", DEFAULT_FLAGS);
  65. g_Cvar_Flag = CreateConVar("sm_hud_health_flag", "d", "Admin flag(s) to use if admin only.", DEFAULT_FLAGS);
  66. g_Cvar_Ad = CreateConVar("sm_hud_health_ad", "1", "Enable/disable the display of the help message at the start of each round.", DEFAULT_FLAGS, true, 0.0, true, 1.0);
  67. CreateTimer(0.5, Timer, _, TIMER_REPEAT);
  68. HookEvent("round_start", Event_RoundStart);
  69. RegConsoleCmd("sm_hudhealth", Command_toggleHUD);
  70.  
  71. for (new i = 1; i<= MaxClients; i++)
  72. {
  73. g_Hud_Check[i] = false;
  74. }
  75. }
  76.  
  77. stock TraceClientViewEntity(client)
  78. {
  79. new Float:m_vecOrigin[3];
  80. new Float:m_angRotation[3];
  81.  
  82. GetClientEyePosition(client, m_vecOrigin);
  83. GetClientEyeAngles(client, m_angRotation);
  84.  
  85. new Handle:tr = TR_TraceRayFilterEx(m_vecOrigin, m_angRotation, MASK_VISIBLE, RayType_Infinite, TRDontHitSelf, client);
  86. new pEntity = -1;
  87.  
  88. if (TR_DidHit(tr))
  89. {
  90. pEntity = TR_GetEntityIndex(tr);
  91. CloseHandle(tr);
  92. return pEntity;
  93. }
  94.  
  95. if(tr != INVALID_HANDLE)
  96. {
  97. CloseHandle(tr);
  98. }
  99.  
  100. return -1;
  101. }
  102.  
  103. public Action:Timer(Handle:timer)
  104. {
  105. for(new i = 1; i <= MaxClients; i++)
  106. {
  107.  
  108. switch(g_Cvar_Team) {
  109. case 0:
  110. {
  111. return Plugin_Handled;
  112. }
  113. case 1: // T Team Alive -> sm_hud_health_team 1
  114. {
  115. if (IsClientInGame(i) && GetClientTeam(i) == CS_TEAM_T && IsPlayerAlive(i) && g_Hud_Check[i])
  116. {
  117. new target = TraceClientViewEntity(i);
  118. if(target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
  119. {
  120. switch(g_Cvar_Mode) {
  121. case 1: // enemy
  122. {
  123. if (GetClientTeam(target) == CS_TEAM_CT) {
  124. target_health = GetClientHealth(target);
  125. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  126. }
  127. break;
  128. }
  129. case 2: // team-mate
  130. {
  131. if (GetClientTeam(target) == CS_TEAM_T) {
  132. target_health = GetClientHealth(target);
  133. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  134. }
  135. break;
  136. }
  137. default: // both
  138. {
  139. target_health = GetClientHealth(target);
  140. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  141. }
  142. }
  143. }
  144. }
  145. break;
  146. }
  147. case 2: // CT Team Alive -> sm_hud_health_team 2
  148. {
  149. if (IsClientInGame(i) && GetClientTeam(i) == CS_TEAM_CT && IsPlayerAlive(i) && g_Hud_Check[i])
  150. {
  151. new target = TraceClientViewEntity(i);
  152. if(target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
  153. {
  154. switch(g_Cvar_Mode) {
  155. case 1: // enemy
  156. {
  157. if (GetClientTeam(target) == CS_TEAM_T) {
  158. target_health = GetClientHealth(target);
  159. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  160. }
  161. break;
  162. }
  163. case 2: // team-mate
  164. {
  165. if (GetClientTeam(target) == CS_TEAM_CT) {
  166. target_health = GetClientHealth(target);
  167. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  168. }
  169. break;
  170. }
  171. default: // both
  172. {
  173. target_health = GetClientHealth(target);
  174. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  175. }
  176. }
  177. }
  178. }
  179. break;
  180. }
  181. case 3: // Both Teams Alive -> sm_hud_health_team 3
  182. {
  183. if (IsClientInGame(i) && GetClientTeam(i) != CS_TEAM_SPECTATOR && IsPlayerAlive(i) && g_Hud_Check[i])
  184. {
  185. new target = TraceClientViewEntity(i);
  186. if(target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
  187. {
  188. switch(g_Cvar_Mode) {
  189. case 1: // enemy
  190. {
  191. if (GetClientTeam(i) != GetClientTeam(target)){
  192. target_health = GetClientHealth(target);
  193. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  194. }
  195. break;
  196. }
  197. case 2: // team-mate
  198. {
  199. if (GetClientTeam(i) == GetClientTeam(target)){
  200. target_health = GetClientHealth(target);
  201. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  202. }
  203. break;
  204. }
  205. default:
  206. {
  207. target_health = GetClientHealth(target);
  208. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  209. }
  210. }
  211. }
  212. }
  213. break;
  214. }
  215. case 4: // Admins -> sm_hud_health_team 4; not affected by sm_hud_health_mode
  216. {
  217. GetConVarString(g_Cvar_Flag, g_sCharAdminFlag, sizeof(g_sCharAdminFlag));
  218. if (IsClientInGame(i) && IsValidAdmin(i, g_sCharAdminFlag) && g_Hud_Check[i])
  219. {
  220. new target = TraceClientViewEntity(i);
  221. if(target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
  222. {
  223. target_health = GetClientHealth(target);
  224. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  225. }
  226. }
  227. else if (!IsValidAdmin(i, g_sCharAdminFlag)) {
  228. PrintToChat(i, "You do not have permission to use this.");
  229. }
  230. break;
  231. }
  232. case 5: // Both Teams Dead or Spectators -> sm_hud_health_team 5; not affected by sm_hud_health_mode
  233. {
  234. if (IsClientInGame(i) && g_Hud_Check[i])
  235. {
  236. if (!IsPlayerAlive(i) || GetClientTeam(i) == CS_TEAM_SPECTATOR) {
  237. new target = TraceClientViewEntity(i);
  238. if(target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
  239. {
  240. target_health = GetClientHealth(target);
  241. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  242. }
  243. }
  244. }
  245. break;
  246. }
  247. default: // Everyone -> sm_hud_health_team x; x < 0 or x > 4
  248. {
  249. if (IsClientInGame(i) && g_Hud_Check[i])
  250. {
  251. new target = TraceClientViewEntity(i);
  252. if(target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
  253. {
  254. switch(g_Cvar_Mode) {
  255. case 1:
  256. {
  257. if (GetClientTeam(target) == CS_TEAM_T) {
  258. target_health = GetClientHealth(target);
  259. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  260. }
  261. break;
  262. }
  263. case 2:
  264. {
  265. if (GetClientTeam(target) == CS_TEAM_CT) {
  266. target_health = GetClientHealth(target);
  267. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  268. }
  269. break;
  270. }
  271. default:
  272. {
  273. target_health = GetClientHealth(target);
  274. PrintHintText(i, "Name: \"%N\" \n HP: \"%i\"", target, target_health);
  275. }
  276. }
  277. }
  278. }
  279. break;
  280. }
  281. }
  282. }
  283. return Plugin_Continue;
  284. }
  285.  
  286. stock bool:IsValidAdmin(client, const String:flags[]) // Checks if admin has sm_hud_health_flag flag
  287. {
  288. new ibFlags = ReadFlagString(flags);
  289. if ((GetUserFlagBits(client) & ibFlags) == ibFlags)
  290. {
  291. return true;
  292. }
  293. if (GetUserFlagBits(client) & ADMFLAG_ROOT)
  294. {
  295. return true;
  296. }
  297. return false;
  298. }
  299.  
  300. public bool:TRDontHitSelf(entity, mask, any:data) // Don't ray trace ourselves -_-"
  301. {
  302. return (1 <= entity <= MaxClients) && (entity != data);
  303. }
  304.  
  305. public Action:Command_toggleHUD(client, args)
  306. {
  307. if (g_Hud_Check[client]) {
  308. g_Hud_Check[client] = false;
  309. PrintToChat(client, "HUD Health is now turned OFF.");
  310. }
  311. else if (!g_Hud_Check[client]) {
  312. g_Hud_Check[client] = true;
  313. PrintToChat(client, "HUD Health is now turned ON.");
  314. }
  315. }
  316.  
  317. public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast) // Advertisement of the client command
  318. {
  319. if (GetConVarInt(g_Cvar_Ad))
  320. {
  321. PrintToChatAll("Type !hudhealth to see other players' health on your HUD.");
  322. }
  323. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement