#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
 
 
#define PLUGIN "C4 felrobbanto"
#define VERSION "0.2"
#define AUTHOR "Alka & regalis & Geri094 forditotta"
 
 
new Float:g_C4Origin[3];
new g_C4Entity;
new shake;
new bool:is_planted;
new bomb_sprite;
 
 
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_cvar(PLUGIN, VERSION, FCVAR_SERVER);
	register_concmd("amx_boom","make_fake", ADMIN_BAN,"<A C4 robban!! BOooOM!>");
 
	register_logevent("bombisplanted", 3, "2=Planted_The_Bomb");
	register_forward(FM_SetModel, "SetModel");
 
	shake = get_user_msgid("ScreenShake");
	bomb_sprite = get_user_msgid("StatusIcon");
}
 
public SetModel(entity, const model[])
{
	if(equal(model, "models/w_c4.mdl"))
	{
		g_C4Entity = entity;
		return FMRES_IGNORED;
	}
	return FMRES_IGNORED;
}
 
public bombisplanted()
{
	is_planted = true;
	new player[80], pname[32];
	read_logargv(0, player, 79);
	parse_loguser(player, pname, 31);
	new id = get_user_index(pname);
 
	pev(id, pev_origin, g_C4Origin);
}
 
public make_fake(id,level,cid)
{
	if(!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED;
 
	new name[32], ctime[64];
	get_user_name(id,name,31);
	get_time("%m/%d/%Y - %H:%M:%S", ctime, 63);
 
	log_amx("Command : 'amx_forceboom' frissitve %s a'ltal. - [%s]",name,ctime);
 
	if(pev_valid(g_C4Entity) && is_planted)
	{
		show_sprite();
		set_pdata_float(g_C4Entity, 100, 0.0);
		player_shake(g_C4Origin, 1<<14 , 1000.0);
		is_planted = false;
	}
	return PLUGIN_HANDLED;
}
 
player_shake(Float:origin[3], shpower, Float:range)
{
	new Float:pOrigin[3];
	new Float:dist;
	new players[32], player, num;
	get_players(players, num, "ach");
	for(new i; i < num; i++)
	{
		player = players[i];
		pev(player,pev_origin,pOrigin);
		dist = get_distance_f(origin,pOrigin);
 
		if(dist <= range)
		{
			message_begin(MSG_ONE,shake,{0,0,0},player);
			write_short(shpower);
			write_short(shpower);
			write_short(shpower);
			message_end();
		}
	}
}
 
show_sprite()
{
	new players[32], player, num;
	get_players(players, num, "ach");
	for(new i; i < num; i++)
	{
		player = players[i];
 
		message_begin(MSG_ONE,bomb_sprite,{0,0,0},player);
		write_byte(2);
		write_string("bombticking");
		write_byte(0);
		write_byte(0);
		write_byte(255);
		message_end();
	}
}