/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <codmod>

#define PLUGIN "Beltownik"
#define VERSION "1.0"
#define AUTHOR "CheQ"

new bool:ma_kusze[32];
new ilosc_beltow[32];

new bool:ma_klase[32];


new const nazwa_klasy[] = "Kusznik";
new const opis[] = "Zamiast noza ma kusze i 6 beltow";
new const bronie = 1<<CSW_UMP45;
new const zdrowie = 8;
new const kondycja = 4;
new const inteligencja = 0;
new const wytrzymalosc = 1;



public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	cod_register_class(PLUGIN, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	
	register_event("CurWeapon","CurWeapon","be", "1=1");
	register_touch("Belt", "*" , "DotykBeltu");
	RegisterHam(Ham_Spawn, "player", "Res", 1);
	register_forward(FM_PlayerPreThink, "PokazInfo");
	
}
public cod_class_enabled(id)
{
	ma_klase[id] = true;
	ilosc_beltow[id] = 6;
}
public cod_class_disabled(id)
{
	ma_klase[id] = false;
}
public PokazInfo(id)
{
	if(!is_user_alive(id) || get_user_weapon(id) != CSW_KNIFE)
		return PLUGIN_CONTINUE;
	
	new text[512]
	format(text,511,"Ilosc Beltow: %d",ilosc_beltow[id])
	message_begin(MSG_ONE,get_user_msgid("StatusText"),{0,0,0}, id)
	write_byte(0)
	write_string(text)
	message_end() 
	
	return PLUGIN_CONTINUE;
}


public Res(id)
{
	ilosc_beltow[id] = 6;
}
public plugin_precache()
{
	precache_model("models/QTM_CodMod/v_crossbow.mdl")
	precache_model("models/QTM_CodMod/belt.mdl")
}
public CurWeapon(id)
{
	new weapon = read_data(2)
	
	if(weapon == CSW_KNIFE && ma_klase[id])
	{
		entity_set_string(id, EV_SZ_viewmodel, "models/QTM_CodMod/v_crossbow.mdl")
		ma_kusze[id] = true;
	}
	else
		ma_kusze[id] = false;
}
public client_PreThink(id)
{
	if((pev(id,pev_button) & IN_ATTACK) && !(pev(id,pev_oldbuttons) & IN_ATTACK) && (ma_kusze[id]))
	{
		StworzBelt(id)
	}
	return PLUGIN_CONTINUE;
}
public StworzBelt(id)
{
	
	if (!is_user_alive(id) || !ilosc_beltow[id])
		return PLUGIN_CONTINUE
	
	ilosc_beltow[id]--;
	new Float: Origin[3], Float: vAngle[3], Float: Velocity[3];		
	entity_get_vector(id, EV_VEC_v_angle, vAngle);
	entity_get_vector(id, EV_VEC_origin , Origin);
	
	new Ent = create_entity("info_target");
	
	entity_set_string(Ent, EV_SZ_classname, "Belt");
	entity_set_model(Ent, "models/QTM_CodMod/belt.mdl");
	
	vAngle[0] *= -1.0;
	
	entity_set_origin(Ent, Origin);
	entity_set_vector(Ent, EV_VEC_angles, vAngle);
	
	entity_set_int(Ent, EV_INT_effects, 2);
	entity_set_int(Ent, EV_INT_solid, SOLID_BBOX);
	entity_set_int(Ent, EV_INT_movetype, MOVETYPE_FLY);
	entity_set_edict(Ent, EV_ENT_owner, id);
	
	VelocityByAim(id, 1000 , Velocity);
	entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
	
	return PLUGIN_CONTINUE;
}


public DotykBeltu(ent)
{
	if ( !is_valid_ent(ent))
		return;
	
	new attacker = entity_get_edict(ent, EV_ENT_owner);
	new entlist[33];
	new numfound = find_sphere_class(ent, "player", 10.0, entlist, 32);
	
	for (new i=0; i < numfound; i++)
	{		
		new pid = entlist[i];
		
		if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid))
			continue;
		
		new hp = get_user_health(pid)
		
		ExecuteHam(Ham_TakeDamage, pid, ent, attacker, float(hp), 1);
	}
	remove_entity(ent);
}

