milutinke

[ByM] Damage Indicator

Dec 24th, 2017
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  1. #include < sourcemod >
  2. #include < sdktools >
  3. #include < sdkhooks >
  4.  
  5. #pragma semicolon 1
  6. #pragma newdecls required
  7.  
  8. #define IsValidClient(%0) ( 1 <= %0 <= MaxClients )
  9.  
  10. public Plugin myinfo = {
  11. name = "[ByM] Damage Indicator",
  12. author = "Milutinke (ByM)",
  13. description = "",
  14. version = "0.0.1",
  15. url = ""
  16. };
  17.  
  18.  
  19. float fYVictim[ 33 ];
  20. float fXVictim[ 33 ];
  21. float fYAttacker[ 33 ];
  22. float fXAttacker[ 33 ];
  23.  
  24. int g_iDamage[ 33 ];
  25.  
  26. public void OnPluginStart( ) {
  27. HookEvent( "player_hurt", Event_PlayerHurt, EventHookMode_Post );
  28. }
  29.  
  30. public Action Event_PlayerHurt( Event hEvent, const char[ ] szName, bool bDontBroadcast ) {
  31. int iVictim = GetClientOfUserId( hEvent.GetInt( "userid" ) );
  32. int iAttacker = GetClientOfUserId( hEvent.GetInt( "attacker" ) );
  33. int iDamage = hEvent.GetInt( "dmg_health" );
  34.  
  35. if( IsFakeClient( iAttacker ) || !IsPlayerAlive( iAttacker ) )
  36. return;
  37.  
  38. if( iAttacker != iVictim && ( GetClientTeam( iAttacker ) != GetClientTeam( iVictim ) ) ) {
  39. ShowClientValue( iVictim, iDamage, 0 );
  40. ShowClientValue( iAttacker, iDamage, 1 );
  41.  
  42. CheckPosition( iVictim, 0 );
  43. CheckPosition( iAttacker, 1 );
  44.  
  45. g_iDamage[ iAttacker ] += iDamage;
  46.  
  47. CreateTimer( 5.0, ResetDamage, GetClientSerial( iAttacker ) );
  48. }
  49. }
  50.  
  51. public Action ResetDamage( Handle hTimer, any aSerial ) {
  52. int iPlayer = GetClientFromSerial( aSerial );
  53.  
  54. if( !iPlayer )
  55. return Plugin_Stop;
  56.  
  57. g_iDamage[ iPlayer ] = 0;
  58.  
  59. return Plugin_Continue;
  60. }
  61.  
  62. public void OnClientConnected( int iPlayer ) {
  63. RefreshHudPosition( iPlayer );
  64. g_iDamage[ iPlayer ] = 0;
  65. }
  66.  
  67. stock void ShowClientValue( int iPlayer, int iDamage, int iAttacker ) {
  68. float fX, fY;
  69. int iR, iG, iB;
  70.  
  71. if( iAttacker ) { // Attacker
  72. fX = fXAttacker[ iPlayer ];
  73. fY = fYAttacker[ iPlayer ];
  74.  
  75. iR = 0;
  76. iG = 255;
  77. iB = 0;
  78. } else { // Victim
  79. fX = fXVictim[ iPlayer ];
  80. fY = fYVictim[ iPlayer ];
  81.  
  82. iR = 255;
  83. iG = 0;
  84. iB = 0;
  85. }
  86.  
  87. SetHudTextParams( fX, fY, 1.0, iR, iG, iB, 255, 0, 0.2, 0.2, 0.2 );
  88. ShowHudText( iPlayer, 1, "%d", iDamage );
  89. }
  90.  
  91. stock void RefreshHudPosition( int iPlayer ) {
  92. fYAttacker[ iPlayer ] = -0.50;
  93. fXAttacker[ iPlayer ] = -0.70;
  94.  
  95. fYVictim[ iPlayer ] = -0.45;
  96. fXVictim[ iPlayer ] = -0.30;
  97. }
  98.  
  99. stock void CheckPosition( int iPlayer, int iAttacker ) {
  100. if( iAttacker ) {
  101. switch( fXAttacker[ iPlayer ] ) {
  102. case -0.70: { // First attack
  103. fXAttacker[ iPlayer ] = -0.575;
  104. fYAttacker[ iPlayer ] = -0.60;
  105. }
  106.  
  107. case -0.575: { // Second attack
  108. fXAttacker[ iPlayer ] = -0.50;
  109. fYAttacker[ iPlayer ] = -0.625;
  110. }
  111.  
  112. case -0.50: { // Third attack
  113. fXAttacker[ iPlayer ] = -0.425;
  114. fYAttacker[ iPlayer ] = -0.60;
  115. }
  116.  
  117. case -0.425: { // Fourth attack
  118. fXAttacker[ iPlayer ] = -0.30;
  119. fYAttacker[ iPlayer ] = -0.50;
  120. }
  121.  
  122. case -0.30: { // Last attack
  123. fXAttacker[ iPlayer ] = -0.70;
  124. }
  125.  
  126. default: RefreshHudPosition( iPlayer );
  127. }
  128. } else {
  129. switch( fXVictim[ iPlayer ] ) {
  130. case -0.30: { // First attack
  131. fXVictim[ iPlayer ] = -0.425;
  132. fYVictim[ iPlayer ] = -0.35;
  133. }
  134.  
  135. case -0.425: { // Second attack
  136. fXVictim[ iPlayer ] = -0.50;
  137. fYVictim[ iPlayer ] = -0.30;
  138. }
  139.  
  140. case -0.50: { // Third attack
  141. fXVictim[ iPlayer ] = -0.575;
  142. fYVictim[ iPlayer ] = -0.35;
  143. }
  144.  
  145. case -0.575: { // Fourth attack
  146. fXVictim[ iPlayer ] = -0.70;
  147. fYVictim[ iPlayer ] = -0.45;
  148. }
  149.  
  150. case -0.70: { // Last attack
  151. fXVictim[ iPlayer ] = -0.30;
  152. }
  153.  
  154. default: RefreshHudPosition( iPlayer );
  155. }
  156. }
  157. }
Add Comment
Please, Sign In to add comment