I don't know if this is correct, but i think i'll give you a start.
Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#define MAX_PLAYERS 32
#define TOP 3
new Array:g_storeplayers, g_maxplayers;
new Float:g_fDamage[ MAX_PLAYERS+1 ][ MAX_PLAYERS+1 ];
public plugin_init()
{
RegisterHam( Ham_TakeDamage, "player", "ham_player_takedamage", 1 );
RegisterHam( Ham_Killed, "player", "ham_player_killed", 1 );
g_storeplayers = ArrayCreate( 1 );
g_maxplayers = get_maxplayers();
}
public ham_player_takedamage( victim, inflictor, attacker, Float:damage, damagebits )
{
if( victim == attacker )
return HAM_IGNORED;
static Float:f_Damage;
pev( victim, pev_dmg_take, f_Damage );
g_fDamage[ attacker ][ victim ] += f_Damage;
return HAM_IGNORED;
}
public ham_player_killed( victim, killer, shouldgib )
{
static
Float:f_kDamage,
Float:f_MinDamage,
Float:f_MaxDamage,
i_Positon;
i_Positon = ArrayGetSlot( killer );
f_kDamage = g_fDamage[ killer ][ victim ];
f_MinDamage = 25.0;
for( new i; i <= g_maxplayers; i++ )
{
if( !is_user_connected( i ) )
continue;
if( f_kDamage >= f_MinDamage )
{
if( i_Positon != -1 )
ArrayDeleteItem( g_storeplayers, i );
ArrayPushCell( g_storeplayers, i );
}
if( ArraySize( g_storeplayers ) >= TOP )
ArrayDeleteItem( g_storeplayers, i-1 );
if( f_kDamage > f_MaxDamage )
f_MaxDamage = f_kDamage;
}
}
// eXo jNr
public ArrayGetSlot( index )
{
for( new i; i < TOP; i++ )
if( ArrayGetCell( g_storeplayers, i ) == index )
return i;
return -1;
}
__________________