This could be made more efficiently but it works.
PHP Code:
#include <amxmodx>
#define PLUGIN "Frag Rank HUD"
#define VERSION "1.0"
#define AUTHOR "bugsy"
new g_PlayerFrags[ 33 ][ 2 ];
enum _:Team
{
CS_TERRORIST = 1,
CS_CT
};
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event( "ScoreInfo" , "fw_EvScoreInfo" , "a" );
set_task( 0.5 , "DisplayHUD" , _, _, _, "b" );
}
public client_disconnect( id )
{
g_PlayerFrags[ id ][ 0 ] = 0;
g_PlayerFrags[ id ][ 1 ] = 0;
}
public fw_EvScoreInfo()
{
static id; id = read_data( 1 );
g_PlayerFrags[ id ][ 0 ] = id;
g_PlayerFrags[ id ][ 1 ] = read_data( 2 );
}
public DisplayHUD( id )
{
static iPlayers[ 32 ] , iNum;
static iPlayer , iFrags , iTeam , szName[ 33 ];
static iPlayerFrags[ 33 ][ 2 ];
static sz_T_HUD[ 512 ] , i_T_Pos;
static sz_CT_HUD[ 512 ] , i_CT_Pos;
static i_T_Rank , i_CT_Rank;
iPlayerFrags = g_PlayerFrags;
SortCustom2D( iPlayerFrags , 33 , "fn_StatsCompare" );
i_T_Pos = 0;
i_CT_Pos = 0;
i_T_Rank = 0;
i_CT_Rank = 0;
for ( new i = 0 ; i < sizeof( g_PlayerFrags ) ; i++ )
{
iPlayer = iPlayerFrags[ i ][ 0 ];
iFrags = iPlayerFrags[ i ][ 1 ];
iTeam = get_user_team( iPlayer );
if ( is_user_connected( iPlayer ) && iFrags )
{
get_user_name( iPlayer , szName , 32 );
if ( iTeam == CS_TERRORIST )
{
if ( !i_T_Pos )
i_T_Pos = formatex( sz_T_HUD[ i_T_Pos ] , 512-i_T_Pos , "Terrorist Ranks^n^n" );
i_T_Pos += formatex( sz_T_HUD[ i_T_Pos ] , 512-i_T_Pos , "%s - Rank: %d - Frags: %d^n" , szName , ++i_T_Rank , iFrags );
}
else if ( iTeam == CS_CT )
{
if ( !i_CT_Pos )
i_CT_Pos = formatex( sz_CT_HUD[ i_CT_Pos ] , 512-i_CT_Pos , "Counter-Terrorist Ranks^n^n" );
i_CT_Pos += formatex( sz_CT_HUD[ i_CT_Pos ] , 512-i_CT_Pos , "%s - Rank: %d - Frags: %d^n" , szName , ++i_CT_Rank , iFrags );
}
}
}
set_hudmessage( 0 , 85 , 255 , 0.05 , 0.15 , 0 , 0.0 , 1.0 )
if ( i_T_Pos )
{
sz_T_HUD[ i_T_Pos ] = 0;
get_players( iPlayers , iNum , "e" , "TERRORIST" );
if ( iNum )
for ( new i = 0 ; i < iNum ; i++ )
show_hudmessage( iPlayers[ i ] , sz_T_HUD );
}
if ( i_CT_Pos )
{
sz_CT_HUD[ i_CT_Pos ] = 0;
get_players( iPlayers , iNum , "e" , "CT" );
if ( iNum )
for ( new i = 0 ; i < iNum ; i++ )
show_hudmessage( iPlayers[ i ] , sz_CT_HUD );
}
}
public fn_StatsCompare( elem1[] , elem2[] )
{
if( elem1[1] > elem2[1] )
return -1;
else if( elem1[1] < elem2[1] )
return 1;
return 0;
}