#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Cypis"
new const NO_RELOAD = (1<<2)|(1<<CSW_KNIFE)|(1<<CSW_C4)|(1<<CSW_M3)|(1<<CSW_XM1014)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE);
new const Float:wpn_reload_delay[CSW_P90+1] = {0.00, 2.70, 0.00, 2.00, 0.00, 0.55, 0.00, 3.15, 3.30, 0.00, 4.50, 2.70, 3.50, 3.35, 2.45, 3.30, 2.70, 2.20, 2.50, 2.63, 4.70, 0.55, 3.05, 2.12, 3.50, 0.00, 2.20, 3.00, 2.45, 0.00, 3.40}
new przeladownie_broni[33]
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	for(new i = CSW_P228; i <= CSW_P90; i++){
		if(NO_RELOAD & (1<<i))
			continue;
   
		new WeaponName[24];
		get_weaponname(i, WeaponName, 23);
		RegisterHam(Ham_Weapon_Reload, WeaponName, "fw_reload_post", 1)
	}
}
public PrzydzielPunkty(id)
{
	new inteligencja[65];
	new zdrowie[60];
	new wytrzymalosc[60];
	new kondycja[60];
	new przeladownie[65]
	new tytul[25];
	format(inteligencja, 64, "Inteligencja: \r%i \y(Zwieksza obrazenia zadawane przedmiotami)", inteligencja_gracza[id]);
	format(zdrowie, 59, "Zycie: \r%i \y(Zwieksza zycie)", zdrowie_gracza[id]);
	format(wytrzymalosc, 59, "Wytrzymalosc: \r%i \y(Zmniejsza obrazenia)", wytrzymalosc_gracza[id]);
	format(kondycja, 59, "Kondycja: \r%i \y(Zwieksza tempo chodu)", kondycja_gracza[id]);
	format(przeladownie, 64, "Przeladownie: \r%i \y(Zwieksza szybkosc przeladowania)", przeladownie_broni[id]);
	format(tytul, 24, "Przydziel Punkty(%i):", punkty_gracza[id]);
	new menu = menu_create(tytul, "PrzydzielPunkty_Handler");
	menu_additem(menu, inteligencja);
	menu_additem(menu, zdrowie);
	menu_additem(menu, wytrzymalosc);
	menu_additem(menu, kondycja);
	menu_additem(menu, przeladownie);
	menu_display(id, menu);
}
public PrzydzielPunkty_Handler(id, menu, item)
{
	client_cmd(id, "spk QTM_CodMod/select");
	
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	switch(item) 
	{ 
		case 0: 
		{	
			if(inteligencja_gracza[id] < 100)
			{
				inteligencja_gracza[id]++;
				punkty_gracza[id]--;
			}
			else 
				client_print(id, print_chat, "[COD:MW] Maxymalny poziom inteligencji osiagniety");
		}
		case 1: 
		{	
			if(zdrowie_gracza[id] < 100)
			{
				zdrowie_gracza[id]++;
				punkty_gracza[id]--;
			}
			else 
				client_print(id, print_chat, "[COD:MW] Maxymalny poziom sily osiagniety");
		}
		case 2: 
		{	
			if(wytrzymalosc_gracza[id] < 100)
			{
				wytrzymalosc_gracza[id]++;
				punkty_gracza[id]--;
			}
			else 
				client_print(id, print_chat, "[COD:MW] Maxymalny poziom zrecznosci osiagniety");
		}
		case 3: 
		{	
			if(kondycja_gracza[id] < 100)
			{
				kondycja_gracza[id]++;
				punkty_gracza[id]--;
			}
			else
				client_print(id, print_chat, "[COD:MW] Maxymalny poziom kondycji osiagniety");
		}
		case 4: 
		{	
			if(przeladownie_broni[id] < 100)
			{
				przeladownie_broni[id]++;
				punkty_gracza[id]--;
			}
			else
				client_print(id, print_chat, "[COD:MW] Maxymalny poziom przeladowania osiagniety");
		}
	}
	
	if(punkty_gracza[id] > 0)
		PrzydzielPunkty(id);
		
	return PLUGIN_CONTINUE;
}
public fw_reload_post(ent)
{
	if(get_pdata_int(ent, 54, 4))
	{
		new id = get_pdata_cbase(ent, 41, 4)
		
		if(przeladownie_broni[id] > 0)
		{
			new Float:delay = wpn_reload_delay[get_pdata_int(ent, 43, 4)] * (1.0 - (przeladownie_broni[id]/100.0));
			
			set_pdata_float(id, 83, delay, 5)
			set_pdata_float(ent, 48, delay + 0.5, 4)
		}
			
	}
	return HAM_IGNORED
}