/* Plugin generated by AMXX-Studio */
 
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <xs>
 
#define PLUGIN "Kill effect"
#define VERSION "1.0"
#define AUTHOR "Dias , fear_ezmegmi"
 
new Float:g_iTask[33];
new g_iKills[33];
new g_effect_id[33], g_had_effect[33]
 
new const effect_model[] = "sprites/kill_1.spr"
new const effect_model2[] = "sprites/kill_2.spr"
new const effect_model3[] = "sprites/kill_3.spr"
new const effect_model4[] = "sprites/kill_4.spr"
new const effect_model5[] = "sprites/kill_5.spr"
new const effect_model6[] = "sprites/kill_6.spr"
new const effect_model7[] = "sprites/kill_7.spr"
new const effect_model8[] = "sprites/kill_8.spr"
new const effect_model9[] = "sprites/kill_knife.spr"
new const effect_model10[] = "sprites/kill_headshot.spr"
new const effect_model11[] = "sprites/kill_he.spr"
new cvar_scale, cvar_showtime, cvar_lightlevel
 
public plugin_init()
{ 
	RegisterHam(Ham_Spawn, "player", "fw_spawn_post", 1)
	register_event("DeathMsg", "Player_Killed_Post", "a");
	register_forward(FM_AddToFullPack, "fw_WhatTheFuck_Post", 1)
	register_logevent("korveg",2,"1=Round_End")	
 
	cvar_scale = register_cvar("in-ef_scale", "0.035")
	cvar_showtime = register_cvar("in-ef_showtime", "4.0")
	cvar_lightlevel = register_cvar("in-ef_lightlevel", "1.0")
 
}
public Player_Killed_Post()
{
	new victim = read_data(2);
	new attacker = read_data(1);
	new hs = read_data(3);
	new fegyo[32];
	read_data(4, fegyo, 31);
 
 
	if(!is_user_connected(attacker))
		return;
 
	if(victim == attacker)
		return;
 
	if(get_user_weapon(attacker) == CSW_KNIFE)
	{
		show_knife(attacker)
		set_task(2.0,"show_kills")
	}
	else
	{
		show_kills(victim, attacker)
	}
	if(hs)
	{
		show_headshot(attacker)
		set_task(2.0,"show_kills")
	}
	if(equal(fegyo, "grenade"))
	{
		show_grenade(attacker)
		set_task(2.0,"show_kills")
	}
}
public show_kills(victim, attacker)
{
	g_iKills[attacker]++;
	g_iTask[attacker] = get_gametime();
	g_iKills[victim] = 0;
	g_iTask[victim] = 0.0;
 
	if (g_iKills[attacker] == 1)
	{
		show_effect(attacker)
	}
	if (g_iKills[attacker] == 2)
	{
		show_effect2(attacker)
	}
	if (g_iKills[attacker] == 3)
	{
		show_effect3(attacker)
	}
	if (g_iKills[attacker] == 4)
	{
		show_effect4(attacker)
	}
	if (g_iKills[attacker] == 5)
	{
		show_effect5(attacker)
	}
	if (g_iKills[attacker] == 6)
	{
		show_effect6(attacker)
	}
	if (g_iKills[attacker] == 7)
	{
		show_effect7(attacker)
	}
	if (g_iKills[attacker] == 8)
	{
		show_effect8(attacker)
	}
}
public plugin_precache()
{
	precache_model(effect_model)
	precache_model(effect_model2)
	precache_model(effect_model3)
	precache_model(effect_model4)
	precache_model(effect_model5)
	precache_model(effect_model6)
	precache_model(effect_model7)
	precache_model(effect_model8)
	precache_model(effect_model9)
	precache_model(effect_model10)
	precache_model(effect_model11)
}
public fw_spawn_post(id)
{
	if(g_had_effect[id])
		remove_effect(id)
}
public show_knife(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model9)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(2.0, "remove_effect", g_effect_id[id])
}
public show_headshot(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model10)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(2.0, "remove_effect", g_effect_id[id])
}
public show_grenade(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model11)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(2.0, "remove_effect", g_effect_id[id])
}
public show_effect(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(get_pcvar_float(cvar_showtime), "remove_effect", g_effect_id[id])
}
public show_effect2(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model2)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(get_pcvar_float(cvar_showtime), "remove_effect", g_effect_id[id])
}
public show_effect3(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model3)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(get_pcvar_float(cvar_showtime), "remove_effect", g_effect_id[id])
}
public show_effect4(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model4)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(get_pcvar_float(cvar_showtime), "remove_effect", g_effect_id[id])
}
public show_effect5(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model5)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(get_pcvar_float(cvar_showtime), "remove_effect", g_effect_id[id])
}
public show_effect6(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model6)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(get_pcvar_float(cvar_showtime), "remove_effect", g_effect_id[id])
}
public show_effect7(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model7)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(get_pcvar_float(cvar_showtime), "remove_effect", g_effect_id[id])
}
public show_effect8(id)
{
	g_effect_id[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
 
	if (!pev_valid(g_effect_id[id]))
		return
 
	g_had_effect[id] = 1
 
	set_pev(g_effect_id[id], pev_solid, SOLID_NOT)
	set_pev(g_effect_id[id], pev_movetype, MOVETYPE_NONE)
 
	engfunc(EngFunc_SetModel, g_effect_id[id], effect_model8)
 
	set_pev(g_effect_id[id], pev_rendermode, kRenderTransAlpha)
	set_pev(g_effect_id[id], pev_renderamt, 0.0)
	set_pev(g_effect_id[id], pev_owner, id)
	set_pev(g_effect_id[id], pev_scale, get_pcvar_float(cvar_scale))
	set_pev(g_effect_id[id], pev_light_level, get_pcvar_float(cvar_lightlevel))
 
	set_task(get_pcvar_float(cvar_showtime), "remove_effect", g_effect_id[id])
}
public fw_WhatTheFuck_Post(es, e, ent, host, host_flags, player, p_set)
{
	if(!(0 < host < 33))
		return FMRES_IGNORED
 
	if(ent != g_effect_id[host] || !pev_valid(ent))
		return FMRES_IGNORED
 
	if(pev(ent, pev_owner) != host)
		return FMRES_IGNORED
 
	if(!is_user_alive(host))
		return FMRES_IGNORED
 
	static Float:origin[3], Float:forvec[3], Float:voffsets[3], Float:Angles[3]
 
	pev(host, pev_origin, origin)
	pev(host, pev_view_ofs, voffsets)
	pev(host, pev_angles, Angles)
 
	xs_vec_add(origin, voffsets, origin)
 
	// Get a forward vector in the direction of player's aim
	velocity_by_aim(host, 10, forvec)
 
	// Set the sprite on the new origin
	xs_vec_add(origin, forvec, origin)
 
	engfunc(EngFunc_SetOrigin, ent, origin)
	set_es(es, ES_Origin, origin)
	set_es(es, ES_Angles, Angles)
 
	// Make the sprite visible
	set_es(es, ES_RenderMode, kRenderTransAdd)
	set_es(es, ES_RenderAmt, 200)
 
	return FMRES_HANDLED
}
 
public remove_effect(ent)
{
	g_had_effect[pev(ent, pev_owner)] = 0
 
	if(pev_valid(ent))
		engfunc(EngFunc_RemoveEntity, ent)
}
public korveg(id)
{
	g_iKills[id] = 0;
}