Код:
]#include <amxmodx>
#include <hamsandwich>
#include <fun>
#define VERSION "1.1"
// macros
#define MAX_PLAYERS 32
#define get_killer_class(%1) (%1 / 3 - 1)
// const
new const killer_class[ 3 ][ ] = { "asesino", "demoledor", "especialista" }
// player
new g_frags[ MAX_PLAYERS + 1 ]
// global
new g_record
// cvars
new cvar_sound
// resources
new const s_scream[ ] = "scientist/c1a0_sci_catscream.wav"
public plugin_precache( )
{
precache_sound( s_scream )
}
public plugin_init()
{
register_plugin( "Consecutive frags counter", VERSION, "Milashkasiya" )
RegisterHam( Ham_Killed, "player", "player_killed" )
RegisterHam( Ham_Spawn , "player", "player_spawn" )
cvar_sound = register_cvar( "cfc_sound", "1" )
}
public player_killed( victim, killer )
{
static szName[ 32 ]
static szHudmessage[ 128 ]
// default hud color
new iColor[ 3 ] = { 0, 255, 0 }
new bool:bPriority
new bool:bShowhud
// victim frags
new iFrags = g_frags[ victim ]
if( iFrags > 1 && iFrags > g_record )
{
if( get_pcvar_num(cvar_sound) )
{
client_cmd( 0, "spk ^"%s^"", s_scream )
}
get_user_name( victim, szName, charsmax(szName) )
formatex( szHudmessage, charsmax(szHudmessage), "^"%s^" supero el record de la ronda^n%i frags consecutivos", szName, iFrags )
g_record = iFrags
bPriority = true
bShowhud = true
iColor[ 0 ] = 255 // red
iColor[ 1 ] = 0 // green
iColor[ 2 ] = 0 // blue
}
else if( iFrags > 9 )
{
get_user_name( victim, szName, charsmax(szName) )
formatex( szHudmessage, charsmax(szHudmessage), "^"%s^" perdio su racha^n%i frags consecutivos", szName, iFrags )
bPriority = true
bShowhud = true
iColor[ 0 ] = 255 // red
iColor[ 1 ] = 0 // green
iColor[ 2 ] = 0 // blue
}
if( killer != victim && is_user_connected(killer) )
{
// killer frags
iFrags = ++g_frags[ killer ]
if( !bPriority )
{
if( iFrags > 9 )
{
get_user_name( killer, szName, charsmax(szName) )
formatex( szHudmessage, charsmax(szHudmessage), "¡Que alguien pare a ^"%s^"^n%i frags consecutivos", szName, iFrags )
bShowhud = true
}
else if( !(iFrags % 3) )
{
switch( iFrags )
{
case 3:
{
set_user_health( killer, min( get_user_health(killer) + 25, 100 ) )
}
case 6:
{
set_user_health( killer, min( get_user_health(killer) + 50, 100 ) )
set_user_armor ( killer, min( get_user_armor (killer) + 50, 100 ) )
}
case 9:
{
set_user_health( killer, 100 )
set_user_armor ( killer, 100 )
}
}
get_user_name( killer, szName, charsmax(szName) )
formatex( szHudmessage, charsmax(szHudmessage), "^"%s^" es %s^n%i frags consecutivos", szName, killer_class[ get_killer_class(iFrags) ], iFrags )
bShowhud = true
}
}
}
if( bShowhud )
{
set_hudmessage( iColor[0], iColor[1], iColor[2], -1.0, 0.13, _, _, 5.0, .channel = -1 )
show_hudmessage( 0, szHudmessage )
}
}
public player_spawn( const id )
{
g_frags[ id ] = 0
}