#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
 
#define PLUGIN "Eletcsomag a halott testeken"
#define AUTHOR "BREST"
#define VERSION "3.1beta"
 
#define MEDKIT_MINSZ Float:{ -23.160000, -13.660000, -0.050000 }
#define MEDKIT_MAXSZ Float:{ 11.470000, 12.780000, 6.720000 }
#define MODEL_KIT "models/zold.mdl"
#define SOUND_KIT "items/eletcsomag.wav" 
#define FFADE_IN 0x0000
 
new gToggleKitEnable;
new gToggleGlowShow;
new gGMsgFade;
new gToggleFadeEnable;
new gToggleRemoveAtRstart;
new gKitHealthCvar;
new gLimitHealthCvar;
 
new const gMedKitClassname[] = "medkit_entity";
 
public plugin_init()
{	
	register_plugin( PLUGIN, VERSION, AUTHOR );
	register_cvar( "kit_on_body", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
	register_event( "DeathMsg","drop_kit","a" );
	register_logevent( "logevent_round_start", 2, "1=Round_Start" );
	register_forward( FM_Touch,"ForwardTouch" );
 
	gToggleKitEnable = register_cvar( "kit_enable", "1" );
	gToggleGlowShow = register_cvar( "kit_glow", "0" );
	gToggleFadeEnable = register_cvar( "kit_fade", "0" );
	gToggleRemoveAtRstart = register_cvar( "kit_remove", "1" );
	gKitHealthCvar = register_cvar( "kit_health", "20" );
	gLimitHealthCvar = register_cvar( "kit_limit_health", "100" );
 
	gGMsgFade = get_user_msgid( "ScreenFade" );
}
public plugin_precache()
{
	precache_model( MODEL_KIT );
	precache_sound( SOUND_KIT );
}
public drop_kit()
{
	if( get_pcvar_num( gToggleKitEnable ) == 0 )
	{
		return PLUGIN_HANDLED;
	}	
 
	new victim = read_data( 2 );
 
	static Float:origin[ 3 ];
	pev( victim, pev_origin, origin );
 
	new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
	origin[ 2 ] -= 36; 
	engfunc( EngFunc_SetOrigin, ent, origin );
 
	if( !pev_valid( ent ) )
	{
		return PLUGIN_HANDLED;
	}
 
	set_pev( ent, pev_classname, gMedKitClassname );
	engfunc( EngFunc_SetModel, ent, MODEL_KIT );
	dllfunc( DLLFunc_Spawn, ent );
	set_pev( ent, pev_solid, SOLID_BBOX );
	set_pev( ent, pev_movetype, MOVETYPE_NONE );
	engfunc( EngFunc_SetSize, ent, MEDKIT_MINSZ, MEDKIT_MAXSZ );
	engfunc( EngFunc_DropToFloor, ent );
 
	if( get_pcvar_num( gToggleGlowShow ) == 1 )
	{
		fm_set_rendering( ent, kRenderFxGlowShell, 255, 255, 255, kRenderFxNone, 27 );
	}
 
	return PLUGIN_HANDLED;
}
public ForwardTouch( ent, id )
{
	if( !pev_valid( ent ) || get_pcvar_num( gToggleKitEnable ) == 0 )
	{
		return FMRES_IGNORED;
	}
 
	new classname[ 32 ];
	pev( ent, pev_classname, classname, charsmax( classname ) );
 
	if( !equal( classname, gMedKitClassname ) )
	{
		return FMRES_IGNORED;
	}
 
	new health = get_user_health( id );
	new cvarhealth = get_pcvar_num( gKitHealthCvar );
	new maxhealth = get_pcvar_num( gLimitHealthCvar );
 
	if( health >= maxhealth )
	{
		client_print( id, print_center, "Bocsi, de neked van mar %d eletpontod. Nemtudod hasznalni ezt a csomagot! El kell vesztened: %d eletpontot, hogy fel tudd hasznalni ezt a csomagot.", health, maxhealth ); 
		return FMRES_IGNORED;
	}
 
 
	ColorChat( id, GREEN, "[Hyper NoVa] ^3Kaptal ^4%d ^3eletpontot!", cvarhealth );
 
	fm_set_user_health( id, health + cvarhealth );
	emit_sound( id, CHAN_ITEM, SOUND_KIT, VOL_NORM, ATTN_NORM ,0 , PITCH_NORM );
 
	if( get_pcvar_num( gToggleFadeEnable ) == 1 )
	{
 
		message_begin( MSG_ONE_UNRELIABLE, gGMsgFade , {0,0,0}, id );
		write_short( 1<<10 );
		write_short( 1<<10 );
		write_short( FFADE_IN );
		write_byte( 255 );
		write_byte( 0 );
		write_byte( 0 ); 
		write_byte( 75 );
		message_end();
	}
	engfunc( EngFunc_RemoveEntity, ent );
	return FMRES_IGNORED;
}
public logevent_round_start()
{
	if( get_pcvar_num( gToggleRemoveAtRstart ) == 1 )
	{
		new hkit = FM_NULLENT;
		while ( ( hkit = fm_find_ent_by_class( hkit, gMedKitClassname ) ) )
		{
			engfunc( EngFunc_RemoveEntity, hkit );
		}
	}	
}