#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <colorchat>

#pragma tabsize 0

new const PLUGIN[] = "Global Unison"
new const VERSION[] = "2.0"
new const AUTHOR[] = "Joci :3" 

new const PREFIX[] = "[Global Unison]"
new const Chat_Prefix[] = "[Információ]";

new const Fegyverek[11][] =
{
{"Terepmintás M4A1 \w| \r+5A +5I +5E"},
{"Sivatagi M4A1 \w| \r+10A +10I +10E"},
{"Tűz M4A1 \w| \r+15A +15I +15E"},
{"Modern M4A1 \w| \r+30A +30I +30E"},
{"Nuclear M4A1 \w| \r+45A +45I +25E"},
{"Howl M4A1 \w| \r+20A +12I +35E"},
{"Asiimov M4A1 \w| \r+35A +5I +55E"},
{"DragonKing M4A1 \w| \r+20A +20I +40E"},
{"TöltényZápor M4A1 \w| \r+20A +12I +35E"},
{"Magma M4A1 \w| \r+5A +5I +50E"},
{"Sugárveszély M4A1 \w| \r+45A +5I +45E"}
}

new const PiacFegyverek[11][] =
{
{"Terepmintás M4A1"},
{"Sivatagi M4A1"},
{"Tűz M4A1"},
{"Modern M4A1"},
{"Nuclear M4A1"},
{"Howl M4A1"},
{"Asiimov M4A1"},
{"DragonKing M4A1"},
{"TöltényZápor M4A1"},
{"Magma M4A1"},
{"Sugárveszély M4A1"}
}

new const KukaFegyverek[3][] =
{
{"Terepmintás M4A1"},
{"Sivatagi M4A1"},
{"Tűz M4A1"}
}

//Kellékek
new g_arany[33]
//Skinek
new OsszesSkin[11][33], Skin[0][33], Fegyo[33];
//Piac
new Erteke[33], kicucc[33], kirakva[33], pido;

public plugin_init() 
{
register_plugin(PLUGIN,VERSION,AUTHOR);

register_impulse(201, "Fomenu");
register_clcmd("say /menu", "Fomenu");
register_clcmd("say /add", "Addolas");

register_clcmd("ARANY", "lekeres");

register_event("CurWeapon", "FegyverCsere", "be", "1=1");

}
//--------------------------------------------------------------------------------------------------
public Addolas(id)
{
	for(new i;i < 11; i++)
		OsszesSkin[i][id]++;
                g_arany[id] += 500
}


new const M4A1_Modelek[][] = 
{
"models/globalunisonmode/terepm4.mdl",
"models/globalunisonmode/sivatagim4.mdl",
"models/globalunisonmode/tuzm4.mdl",
"models/globalunisonmode/modernm4.mdl",
"models/globalunisonmode/nucim4.mdl",
"models/globalunisonmode/howlm4.mdl",
"models/globalunisonmode/asiim4.mdl",
"models/globalunisonmode/dragonkingm4.mdl",
"models/globalunisonmode/toltenyzm4.mdl",
"models/globalunisonmode/magmam4.mdl",
"models/globalunisonmode/sugim4.mdl"
}


public plugin_precache()
{
	for(new i;i < sizeof(M4A1_Modelek); i++)
	{
        precache_model(M4A1_Modelek[i]);
}
}

public FegyverCsere(id)
{
    if(Fegyo[id] == 0)
        return;
 
    new fegyo = get_user_weapon(id);
   
    if(fegyo == CSW_M4A1)
    {
        for(new i;i < sizeof(M4A1_Modelek); i++)
            if(Skin[0][id] == i)
                set_pev(id, pev_viewmodel2, M4A1_Modelek[i]);
    }
}
public Fomenu(id)
{
new String[121]
formatex(String, charsmax(String), "%s \r- \dFőmenü^n\yArany: \d%d", PREFIX, g_arany[id])
new menu = menu_create(String, "Fomenu_h")

menu_additem(menu, "\wRaktár", "1", 0)
menu_additem(menu, "\wPiac", "2", 0)
menu_additem(menu, "\wKuka", "3", 0)

menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public Fomenu_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}

new data[9], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);

switch(key) 
	{
		case 1: Raktar(id);
		case 2: Piac(id);
		case 3: Kuka(id);
	}
}
public Raktar(id)
{
new String[121];
formatex(String, charsmax(String), "%s \r- \dRaktár",PREFIX);
new menu = menu_create(String, "Raktar_h");

for(new i;i < sizeof(Fegyverek); i++)
{
	if(OsszesSkin[i][id] > 0)
	{
		new Sor[6]; num_to_str(i, Sor, 5);
		formatex(String, charsmax(String), "\w%s \w[\y%d \rDB\w]", Fegyverek[i][0], OsszesSkin[i][id]);
		menu_additem(menu, String, Sor);
	}
}
menu_display(id, menu, 0);
}
public Raktar_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}

new data[9], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);

switch(key) 
	{
		case 0: Skin[0][id] = 0
		case 1: Skin[0][id] = 1
		case 2: Skin[0][id] = 2
		case 3: Skin[0][id] = 3
		case 4: Skin[0][id] = 4
		case 5: Skin[0][id] = 5
		case 6: Skin[0][id] = 6
		case 7: Skin[0][id] = 7
		case 8: Skin[0][id] = 8
		case 9: Skin[0][id] = 9
		case 10: Skin[0][id] = 10
		case 11: Skin[0][id] = 11
	}
}
public Kuka(id)
{
	new cim[121];
	formatex(cim, charsmax(cim), "%s \r- \dKuka",PREFIX);
	new menu = menu_create(cim, "Kuka_h");
	
	for(new i;i < sizeof(KukaFegyverek); i++)
	{
		if(OsszesSkin[i][id] > 0)
		{
			new Sor[6]; num_to_str(i, Sor, 5);
			formatex(cim, charsmax(cim), "\w%s \w[\y%d \rDB\w]", KukaFegyverek[i][0], OsszesSkin[i][id]);
			menu_additem(menu, cim, Sor);
		}
	}
	menu_display(id, menu, 0);
}
public Kuka_h(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return;
	}
	
	new data[9], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	OsszesSkin[key][id] --;
	ColorChat(id, GREEN, "%s^1Sikeresen törölted a ^4%s ^1-Skint.", Chat_Prefix, KukaFegyverek[key][0]);
}
public Piac(id)
{
	new cim[121];
	format(cim, charsmax(cim), "%s \r- \dPiac^n\yArany: \d(%d)", PREFIX, g_arany[id]);
	new menu = menu_create(cim, "Piac_h");
	
	menu_additem(menu, "Eladás", "1", 0);
	menu_additem(menu, "Vásárlás", "2", 0);
	
	menu_display(id, menu, 0);
}
public Piac_h(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return;
	}
	
	new data[9], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1: Eladas(id);
		case 2: Vasarlas(id);
	}
}
public Eladas(id) {
	new cim[121], ks1[121], ks2[121];
	format(cim, charsmax(cim), "%s \r- \dEladás", PREFIX);
	new menu = menu_create(cim, "eladas_h" );
	
	if(kirakva[id] == 0)
	{
		for(new i=0; i < 12; i++) 
		{
			if(kicucc[id] == 0) format(ks1, charsmax(ks1), "Válaszd ki a Tárgyat!");
			else if(kicucc[id] == i) format(ks1, charsmax(ks1), "Tárgy: \r%s", PiacFegyverek[i-1][0]);
		}
		menu_additem(menu, ks1 ,"0",0);
	}
	if(kirakva[id] == 0){
		format(ks2, charsmax(ks2), "\dÁra: \r%d \yArany", Erteke[id]);
		menu_additem(menu,ks2,"1",0);
	}
	if(Erteke[id] != 0 && kirakva[id] == 0)
	{
		menu_additem(menu,"Mehet a piacra!","2",0);
	}
	if(Erteke[id] != 0 && kirakva[id] == 1)
	{
		menu_additem(menu,"\wVisszavonás","-2",0);
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
}
public eladas_h(id, menu, item){
	if( item == MENU_EXIT )
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[9], szName[64], name[32];
	get_user_name(id, name, charsmax(name));
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case -2:
		{
			kirakva[id] = 0;
			kicucc[id] = 0;
			Erteke[id] = 0;
		}
		case 0:
		{
			fvalaszt(id);
		}
		case 1:
		{
			client_cmd(id, "messagemode ARANY");
		}
		case 2:
		{
			for(new i=0; i < 12; i++) 
			{
				if(kicucc[id] == i && OsszesSkin[i-1][id] >= 1) 
				{
					ColorChat(0, GREEN, "%s ^3%s ^1Kirakott egy ^4%s-^1t %d Aranyért",Chat_Prefix, name, PiacFegyverek[i-1][0], Erteke[id]);
					kirakva[id] = 1;
				}
			}
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public fvalaszt(id) {
	new szMenuTitle[ 121 ],cim[121];
	format( szMenuTitle, charsmax( szMenuTitle ), "%s \r- \dFegyver Válasz", PREFIX);
	new menu = menu_create( szMenuTitle, "fvalaszt_h" );
	
	for(new i=0; i < 11; i++) 
	{
		if(OsszesSkin[i][id] > 0) 
		{
			new Num[6];
			num_to_str(i, Num, 5);
			formatex(cim, charsmax(cim), "\w%s \w[\y%d \rDB\w]", PiacFegyverek[i][0], OsszesSkin[i][id]);
			menu_additem(menu, cim, Num);
		}
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
}
public fvalaszt_h(id, menu, item){
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return;
	}
	new data[9], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	
	kicucc[id] = key+1;
	Eladas(id);
}
public lekeres(id) {
	new ertek, adatok[32];
	read_args(adatok, charsmax(adatok));
	remove_quotes(adatok);
	
	ertek = str_to_num(adatok);
	
	new hossz = strlen(adatok);
	
	if(hossz > 7)
	{
		client_cmd(id, "messagemode ARANY");
	}
	else if(ertek < 300)
	{
		ColorChat(id, GREEN, "%s ^1Nem tudsz eladni fegyver^3 300 Arany alatt.", Chat_Prefix);
		Eladas(id);
	}
	else
	{
		Erteke[id] = ertek;
		Eladas(id);
	}
}
public Vasarlas(id)
{      
	new mpont[512], menu, cim[121];
	
	static players[32],temp[10],pnum;  
	get_players(players,pnum,"c");
	
	format(cim, charsmax(cim), "%s \r- \dVásárlás", PREFIX);
	menu = menu_create(cim, "vasarlas_h" );
	
	for (new i; i < pnum; i++)
	{
		if(kirakva[players[i]] == 1 && Erteke[players[i]] > 0)
		{
			for(new a=0; a < 125; a++) 
			{
				if(kicucc[players[i]] == a)
				{
					formatex(mpont,256,"\y%s\d(\wEladó: \r%s \d| \wÁra: \r%d\d)", PiacFegyverek[a-1][0], get_player_name(players[i]), Erteke[players[i]]);
				}
			}
			
			num_to_str(players[i],temp,charsmax(temp));
			menu_additem(menu, mpont, temp);
		}
	}
	menu_setprop(menu, MPROP_PERPAGE, 6);
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL );
	menu_display(id, menu);
	return PLUGIN_HANDLED;
}
public vasarlas_h(id,menu, item){
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return;
	}
	if(pido != 0){
		Vasarlas(id);
		return;
	}
	new data[6] ,szName[64],access,callback;
	new name[32], name2[32];
	get_user_name(id, name, charsmax(name));
	
	menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
	
	new player = str_to_num(data);
	get_user_name(player, name2, charsmax(name2));
	pido = 2;
	set_task(2.0, "vido");
	
	for(new i=0; i < 125; i++) 
	{
		if(g_arany[id] >= Erteke[player] && kicucc[player] == i && kirakva[player] == 1)
		{
			kirakva[player] = 0;
			ColorChat(0, GREEN, "%s ^3%s ^1vett egy ^4%s ^1%s-tól %d Aranyért!",Chat_Prefix, name, PiacFegyverek[i-1][0], name2, Erteke[player]);
			g_arany[player] += Erteke[player];
			g_arany[id] -= Erteke[player];
			OsszesSkin[i-1][id] ++;
			OsszesSkin[i-1][player] --;
			kicucc[player] = 0;
			Erteke[player] = 0;
		}
	}
}
public vido()
{
	pido = 0;
}

stock get_player_name(id){
static Nev[32];
get_user_name(id, Nev,31);
return Nev;
}
