Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < sourcemod >
- #include < sdktools >
- #include < sdkhooks >
- #pragma semicolon 1
- #pragma newdecls required
- #define IsValidClient(%0) ( 1 <= %0 <= MaxClients )
- public Plugin myinfo = {
- name = "[ByM] Damage Indicator",
- author = "Milutinke (ByM)",
- description = "",
- version = "0.0.1",
- url = ""
- };
- float fYVictim[ 33 ];
- float fXVictim[ 33 ];
- float fYAttacker[ 33 ];
- float fXAttacker[ 33 ];
- int g_iDamage[ 33 ];
- public void OnPluginStart( ) {
- HookEvent( "player_hurt", Event_PlayerHurt, EventHookMode_Post );
- }
- public Action Event_PlayerHurt( Event hEvent, const char[ ] szName, bool bDontBroadcast ) {
- int iVictim = GetClientOfUserId( hEvent.GetInt( "userid" ) );
- int iAttacker = GetClientOfUserId( hEvent.GetInt( "attacker" ) );
- int iDamage = hEvent.GetInt( "dmg_health" );
- if( IsFakeClient( iAttacker ) || !IsPlayerAlive( iAttacker ) )
- return;
- if( iAttacker != iVictim && ( GetClientTeam( iAttacker ) != GetClientTeam( iVictim ) ) ) {
- ShowClientValue( iVictim, iDamage, 0 );
- ShowClientValue( iAttacker, iDamage, 1 );
- CheckPosition( iVictim, 0 );
- CheckPosition( iAttacker, 1 );
- g_iDamage[ iAttacker ] += iDamage;
- CreateTimer( 5.0, ResetDamage, GetClientSerial( iAttacker ) );
- }
- }
- public Action ResetDamage( Handle hTimer, any aSerial ) {
- int iPlayer = GetClientFromSerial( aSerial );
- if( !iPlayer )
- return Plugin_Stop;
- g_iDamage[ iPlayer ] = 0;
- return Plugin_Continue;
- }
- public void OnClientConnected( int iPlayer ) {
- RefreshHudPosition( iPlayer );
- g_iDamage[ iPlayer ] = 0;
- }
- stock void ShowClientValue( int iPlayer, int iDamage, int iAttacker ) {
- float fX, fY;
- int iR, iG, iB;
- if( iAttacker ) { // Attacker
- fX = fXAttacker[ iPlayer ];
- fY = fYAttacker[ iPlayer ];
- iR = 0;
- iG = 255;
- iB = 0;
- } else { // Victim
- fX = fXVictim[ iPlayer ];
- fY = fYVictim[ iPlayer ];
- iR = 255;
- iG = 0;
- iB = 0;
- }
- SetHudTextParams( fX, fY, 1.0, iR, iG, iB, 255, 0, 0.2, 0.2, 0.2 );
- ShowHudText( iPlayer, 1, "%d", iDamage );
- }
- stock void RefreshHudPosition( int iPlayer ) {
- fYAttacker[ iPlayer ] = -0.50;
- fXAttacker[ iPlayer ] = -0.70;
- fYVictim[ iPlayer ] = -0.45;
- fXVictim[ iPlayer ] = -0.30;
- }
- stock void CheckPosition( int iPlayer, int iAttacker ) {
- if( iAttacker ) {
- switch( fXAttacker[ iPlayer ] ) {
- case -0.70: { // First attack
- fXAttacker[ iPlayer ] = -0.575;
- fYAttacker[ iPlayer ] = -0.60;
- }
- case -0.575: { // Second attack
- fXAttacker[ iPlayer ] = -0.50;
- fYAttacker[ iPlayer ] = -0.625;
- }
- case -0.50: { // Third attack
- fXAttacker[ iPlayer ] = -0.425;
- fYAttacker[ iPlayer ] = -0.60;
- }
- case -0.425: { // Fourth attack
- fXAttacker[ iPlayer ] = -0.30;
- fYAttacker[ iPlayer ] = -0.50;
- }
- case -0.30: { // Last attack
- fXAttacker[ iPlayer ] = -0.70;
- }
- default: RefreshHudPosition( iPlayer );
- }
- } else {
- switch( fXVictim[ iPlayer ] ) {
- case -0.30: { // First attack
- fXVictim[ iPlayer ] = -0.425;
- fYVictim[ iPlayer ] = -0.35;
- }
- case -0.425: { // Second attack
- fXVictim[ iPlayer ] = -0.50;
- fYVictim[ iPlayer ] = -0.30;
- }
- case -0.50: { // Third attack
- fXVictim[ iPlayer ] = -0.575;
- fYVictim[ iPlayer ] = -0.35;
- }
- case -0.575: { // Fourth attack
- fXVictim[ iPlayer ] = -0.70;
- fYVictim[ iPlayer ] = -0.45;
- }
- case -0.70: { // Last attack
- fXVictim[ iPlayer ] = -0.30;
- }
- default: RefreshHudPosition( iPlayer );
- }
- }
- }
Add Comment
Please, Sign In to add comment