#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <hamsandwich>
#include <xs>

new const gNazwaPluginu[] = "Sklepik COD [ML]";
new const gWersjaPluginu[] = "0.3.5";
new const gAutorPluginu[] = "MisieQ";

#define ADMIN_FLAG_X (1<<23)
#define VIP_UPRAWNIENIA ADMIN_FLAG_X

//#define WYTRZYMALOSC

#if defined WYTRZYMALOSC
native cod_set_perk_durability(id, wytrzymalosc);
native cod_get_perk_durability(id);
#endif

native cod_set_user_coins(id, wartosc);
native cod_get_user_coins(id);

new CFGDir[64];

#include "sklepik/dzialko.inl"
#include "sklepik/rakieta.inl"
#include "sklepik/mina.inl"
#include "sklepik/apteczka.inl"
#include "sklepik/plaszcz.inl"
#include "sklepik/dynamit.inl"
#include "sklepik/menu_kasa.inl"
#include "sklepik/uzycie.inl"

new const g_cmds[][]= { "sklep", "sklepik", "shop", "/sklep", "/sklepik", "/shop" };

public plugin_init()
{
	register_plugin(gNazwaPluginu, gWersjaPluginu, gAutorPluginu);
	
	register_dictionary("sklepik.txt");
	
	/* AMXMODX */
	register_cvar("cod_skelpik_wersja", gWersjaPluginu, FCVAR_SERVER|FCVAR_SPONLY);
	set_cvar_string("cod_skelpik_wersja", gWersjaPluginu);
	/* AMXMODX */
	
	register_clcmd("say", "say_handle");
	register_clcmd("say_team", "say_handle");
	
	initMenuKasa();
	
	initDzialko();

	initRakieta();
	
	initMina();
	
	initApteczka();
	
	initPlaszcz();
	
	register_event("HLTV", "Nowa_Runda", "a", "1=0", "2=0");
	
	get_configsdir(CFGDir, sizeof CFGDir - 1)
	
	server_cmd("exec %s/sklepik_misieq.cfg", CFGDir)
}

public plugin_precache()
{
	precacheDzialko();
	
	precacheRakieta();
	
	precacheMina();
	
	precacheApteczka();
	
	precacheDynamit();
}

/* Wylapanie Say'a */
public say_handle(id)
{  
	new stringsay[192];
	read_args(stringsay, 192);
	remove_quotes(stringsay);
	
	for(new i = 0; i < sizeof g_cmds; i++) 
	{ 
		if(equal(stringsay, g_cmds[i]))
		{
			menu_glowne(id);
			return PLUGIN_HANDLED;
		}
	}
	return PLUGIN_CONTINUE;
}

public client_authorized(id)
{
	/* Dzialko */
	ma_dzialko[id] = false;
	
	/* Rakiety */
	ilosc_rakiet_sklep[id] = 0;
	ma_rakiety[id] = false;
	
	/* Miny */
	ilosc_min_sklep[id] = 0;
	ma_miny[id] = false;
	
	/* Apteczki */
	ilosc_apteczek_sklep[id] = 0;
	ma_apteczki[id] = false;
	
	/* Dynamit */
	ilosc_dynamitow_sklep[id] = 0;
	ma_dynamit[id] = false;
}

public client_disconnect(id)
{
	/* Dzialko */
	ma_dzialko[id] = false;
	
	/* Rakiety */
	new entRakiety = find_ent_by_class(0, "rocket");
	while(entRakiety > 0)
	{
		if(entity_get_edict(entRakiety, EV_ENT_owner) == id)
			remove_entity(entRakiety);
		entRakiety = find_ent_by_class(entRakiety, "rocket");
	}
	ilosc_rakiet_sklep[id] = 0;
	ma_rakiety[id] = false;
	
	/* Miny */
	new entMiny = find_ent_by_class(0, "mine");
	while(entMiny > 0)
	{
		if(entity_get_edict(entMiny, EV_ENT_owner) == id)
			remove_entity(entMiny);
		entMiny = find_ent_by_class(entMiny, "mine");
	}
	ilosc_min_sklep[id] = 0;
	ma_miny[id] = false;
	
	/* Apteczki */
	new entApteczki = find_ent_by_class(0, "medkit");
	while(entApteczki > 0)
	{
		if(entity_get_edict(entApteczki, EV_ENT_owner) == id)
			remove_entity(entApteczki);
		entApteczki = find_ent_by_class(entApteczki, "medkit");
	}
	ma_apteczki[id] = false;
	
	/* Dynamit */
	new entDynamit = find_ent_by_class(0, "dynamite");
	while(entDynamit > 0)
	{
		if(entity_get_edict(entDynamit, EV_ENT_owner) == id)
			remove_entity(entDynamit);
		entDynamit = find_ent_by_class(entDynamit, "dynamite");
	}
	ilosc_dynamitow_sklep[id] = 0;
	ma_dynamit[id] = false;
}

/* Nowa Runda - Do usuwania badziewi ktore zostaly po poprzedniej */
public Nowa_Runda()
{
	/* Miny */
	new entMiny = find_ent_by_class(-1, "mine");
	while(entMiny > 0)
	{
		remove_entity(entMiny);
		entMiny = find_ent_by_class(entMiny, "mine");
	}
	
	/* Dzialko */
	remove_entity_name("sentry_base")
	remove_entity_name("sentry_shot")
	
	/* Dynamit */
	new entDynamit = find_ent_by_class(-1, "dynamite");
	while(entDynamit > 0)
	{
		remove_entity(entDynamit);
		entDynamit = find_ent_by_class(entDynamit, "dynamite");
	}
	
	/* Apteczki */
	new entApteczka = find_ent_by_class(-1, "medkit");
	while(entApteczka > 0)
	{
		remove_entity(entApteczka);
		entApteczka = find_ent_by_class(entApteczka, "medkit");
	}	
}

/* Menu */
public menu_glowne(id)
{
	new szText[256], szText2[256], szText3[256]
	formatex(szText, charsmax(szText), "%L", LANG_SERVER, "SKLEPIK_COD_GLOWNE");
	formatex(szText2, charsmax(szText2), "%L", LANG_SERVER, "SKLEPIK_COD_GLOWNE_0");
	formatex(szText3, charsmax(szText3), "%L", LANG_SERVER, "SKLEPIK_COD_WYJDZ");
	
	new menu = menu_create(szText, "menu_glowne_wybor");
	
	menu_additem(menu, szText2, "0", 0);
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_setprop(menu, MPROP_EXITNAME, szText3);
	
	menu_display(id, menu, 0);
	
	return PLUGIN_CONTINUE;
}

public menu_glowne_wybor(id, menu, item)
{
	
	if (item == MENU_EXIT)
	{
		menu_destroy(menu);    
		return PLUGIN_HANDLED;
	}
	
	new data[6], iName[64]
	new acces, callback
	menu_item_getinfo(menu, item, acces, data,5, iName, 63, callback)	
	
	new key = str_to_num(data)
	
	
	switch(key)
	{         
		case 0:
		{   
			kasa_glowne(id);
		}
	}
	menu_destroy(menu);    
	return PLUGIN_HANDLED;
}
