/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <codmod>
#include <amxmisc>
#include <ColorChat>
#include <engine>
#include <fun>

#define MAX 32

new opcja, gracz_id[33], wybrany;
new ilosc[33], name[33], nazwa_perku[256];
new nick[32]

enum eConfig
{
	bool:noClip,
	bool:GodMode,
	bool:Invisible
}


new iConfig[MAX+1][eConfig]
new szTmp[192]	

native cod_get_user_Ordery(id)
native cod_set_user_Ordery(id, wartosc)
	
	
public plugin_init()
{
	register_plugin("Admin Menu", "1.0", "Play");
	
	register_clcmd("say /admin", "AdminMenu", ADMIN_IMMUNITY);
	register_clcmd("ile","pobierz");
	
}
	
public AdminMenu(id)
{
	if(!(get_user_flags(id) & ADMIN_IMMUNITY))
		return PLUGIN_HANDLED;

	new tytul[64];
	format(tytul, 63, "Menu Admina - COD Elite");
	new menu = menu_create(tytul, "Admin_Handler");
	
	menu_additem(menu, "Dodaj \yEXP");
	menu_additem(menu, "Ustaw \yPoziom");
	menu_additem(menu, "Daj \yPerk");
	menu_additem(menu, "Dodaj Ordery");
	menu_additem(menu, "Zawansowane Opcje");
	
	menu_display(id, menu);
	
	return PLUGIN_HANDLED;
}

public Admin_Handler(id, menu, item, page)
{
	if(!is_user_connected(id))
		return PLUGIN_CONTINUE;
		
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	
	switch(item)
	{
		case 0:
		{
			Gracz(id);
			opcja = 1;
		}
		case 1:	
		{
			Gracz(id);
			opcja = 2;
		}
		case 2:	
		{
			Gracz(id);
			opcja = 3;
		}
		case 3:{
		
			Gracz(id)
			opcja = 4;
		}
		case 4:
		{
			MenuZawansowane(id,page)
		}
	}
	
	return PLUGIN_CONTINUE;
}

public Gracz(id)
{
	new menu = menu_create("Wybierz gracza:", "Gracz_handler");
	
	for(new i=0, n=0; i<=32; i++)
	{
		if(!is_user_connected(i))
			continue;
		gracz_id[n++] = i;
		new nazwa_gracza[64];
		get_user_name(i, nazwa_gracza, 63)
		menu_additem(menu, nazwa_gracza, "0", 0);
	}
	menu_display(id, menu);
}

public Gracz_handler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	
	wybrany = gracz_id[item];
	get_user_name(wybrany, name, 32);
	
	if(opcja == 3)
		wybierz_perk(id);
	else
		console_cmd(id, "messagemode ile");
		
	return PLUGIN_HANDLED;
}


public pobierz(id)
{
	new text[192]
	read_argv(1,text,191)
	format(ilosc, charsmax(ilosc), "%s", text);
	dawaj(id)
}
	
public dawaj(id)
{
	if(opcja == 1)
	{
		cod_set_user_xp(wybrany, cod_get_user_xp(wybrany)+str_to_num(ilosc));
		ColorChat(id, TEAM_COLOR, "[COD Elite]^x01 Dales graczowi^x04 %s^x03 %i^x01 exp'a", name, str_to_num(ilosc));
		get_user_name(id, nick, 31);
		ColorChat(wybrany, TEAM_COLOR,"[COD Elite]^x01 Gracz^x04 %s^x01 Dal Ci^x03 %i^x01 exp'a", nick, str_to_num(ilosc));			
	}
	if(opcja == 2)
	{
		new potrzeba;
		potrzeba = cod_get_level_xp(str_to_num(ilosc)-1);
		cod_set_user_xp(wybrany, potrzeba);		
		ColorChat(id, TEAM_COLOR, "[COD Elite]^x01 Ustawiles graczowi^x04 %s^x03 %i^x01 Poziom", name, str_to_num(ilosc));
		get_user_name(id, nick, 31);
		ColorChat(wybrany, TEAM_COLOR,"[COD Elite]^x01 Gracz^x04 %s^x01 Ustawil Ci^x03 %i^x01 Poziom", nick, str_to_num(ilosc));		
	}
	if(opcja == 4)
	{		
		if(str_to_num(ilosc) > 0)
		{		
			cod_set_user_Ordery(wybrany, cod_get_user_Ordery(wybrany) + str_to_num(ilosc))
			ColorChat(0, TEAM_COLOR, "[COD Elite]^x01 Admin^x03 %s^x01 dodal graczowi^x03 %s^x03 %i^x01 orderow!", nick, name, str_to_num(ilosc));
		}
		else if(cod_get_user_Ordery(id) >= str_to_num(ilosc) <= 0)
		{
			ColorChat(wybrany, TEAM_COLOR,"[COD Elite]^x01 Bledna wartosc");
		}
	}	
}

public wybierz_perk(id)
{
	new tytul[64];
	format(tytul, 63, "\rWybierz perk :");
	new menu = menu_create(tytul, "wybierz_perk_handler");
	for(new i=1; i<=cod_get_perks_num(); i++)
	{
		cod_get_perk_name(i, nazwa_perku, 255)
		menu_additem(menu, nazwa_perku);
	}
	
	menu_display(id, menu);
}

public wybierz_perk_handler(id, menu, item)
{
	if(item++ == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	
	cod_set_user_perk(wybrany, item, -1, 0);
	cod_get_perk_name(item++, nazwa_perku, 255);
	
	ColorChat(id, TEAM_COLOR, "[COD Elite]^x01 Dales graczowi^x04 %s^x01 perk^x03 %s", name, nazwa_perku);
	get_user_name(id, nick, 31);
	ColorChat(wybrany, TEAM_COLOR,"[COD Elite]^x01 Dostales Perk^x03 %s^x01 od^x04 %s", nazwa_perku, nick);
	
	return PLUGIN_HANDLED;
}
public MenuZawansowane(id,page)
{
	new menu = menu_create("Zawansowane Opcje | COD Elite","Zawansowane_Handler")
	
	formatex(szTmp,charsmax(szTmp),"No Clip %s", iConfig[id][noClip] ? "\yON":"\rOFF");
	menu_additem(menu,szTmp,"1")
	
	formatex(szTmp,charsmax(szTmp),"God Mode %s",iConfig[id][GodMode] ? "\yON":"\rOFF");
	menu_additem(menu,szTmp,"2")	
	
	formatex(szTmp,charsmax(szTmp),"Niewidzialny %s",iConfig[id][Invisible] ? "\yON":"\rOFF");
	menu_additem(menu,szTmp,"3")	
	
	menu_display(id,menu,page)
	
	return PLUGIN_HANDLED;
}	
public Zawansowane_Handler(id,menu,item)
{
	if(item == MENU_EXIT){
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new data[6], iName[64]
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
	new key = str_to_num(data)
	
	switch(key)
	{
		case 1:{
			iConfig[id][noClip] = !iConfig[id][noClip];
			
			if(!iConfig[id][noClip])
				set_user_noclip(id,0);
			else
				set_user_noclip(id,1);
		}
		case 2:{
			iConfig[id][GodMode] = !iConfig[id][GodMode];
			
			if(!iConfig[id][GodMode])
				set_user_godmode(id,0);
			else
				set_user_godmode(id,1);
		}
		case 3:{
			iConfig[id][Invisible] =!iConfig[id][Invisible];
			
			if(iConfig[id][Invisible])
				set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0);
			
			else
				set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
		}
				
	}
	menu_destroy(menu);
	
	MenuZawansowane(id,item/7)
	
	return PLUGIN_HANDLED;
}			
		
