#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <fun>
#include <fakemeta>
#include <sqlx>

#define PLUGIN  "New Plugin"
#define AUTHOR  "Unknown"
#define VERSION "1.0"

#define MAXPLAYERS 33
#define TULAJ ADMIN_IMMUNITY
#define ADMIN ADMIN_BAN
#define VIP ADMIN_LEVEL_H

new const SQL_INFO[][] = {"","","",""};

enum eCvar{eCpref,eMpref,};
new cvarS[eCvar];
enum ePlayer{eKills, eUnclockedSkin};
new Player[ePlayer][MAXPLAYERS];
enum _:eWData {eWName[64],eWFile[64],eWKill,eWType[64],};
new iActiveSkin[13][33], iWeaponKills[13][33], iLoadedSkins, iTempID, iMaxPlayers, iChoosedMode, gSteamID[128], SyncHud;
new Handle:SqlTuple;
new Array: aWSkins;

public plugin_init(){
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_impulse(201, "main_menu");
	register_clcmd("say /menu", "main_menu");
	
	cvarS[eCpref] = register_cvar("C_Pref", "^4[.:White*_*Fire:.]^3");
	cvarS[eMpref] = register_cvar("M_Pref", "\y[.:White*_*Fire:.]\y");
	
	register_clcmd("type_itemremoveoradd", "type_itemammount");
	
	RegisterHam(Ham_Killed, "player", "PlayerKilled_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_m4a1", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_ak47", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_awp", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_scout", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_famas", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_galil", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_aug", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_m3", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_xm1014", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_knife", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_deagle", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_usp", "WeaponChange_p", 1);
	RegisterHam(Ham_Item_Deploy, "weapon_glock18", "WeaponChange_p", 1);
	
	register_clcmd("say", "sayhook");
	register_clcmd("say_team", "sayteamhook");
	
	iMaxPlayers = get_maxplayers();
	SyncHud = CreateHudSyncObj();
}
public InfoHud(id)
{
	new eData[eWData];
	new idT;
	new Target = pev(id, pev_iuser1) == 4 ? pev(id, pev_iuser2) : id;
	idT = is_user_alive(id) ? id:Target;
	new iWeapon = get_user_weapon(idT);
	set_hudmessage(0, 255, 0, -1.0, 0.80, 0, 6.0, 1.1, 0.1, 0.2, -1);
	
	set_task(1.0, "InfoHud", id);
	
	switch(iWeapon){
		case CSW_M4A1: {if(iActiveSkin[0][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;} ArrayGetArray(aWSkins, iActiveSkin[0][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[0][id]);}
		case CSW_AK47: {if(iActiveSkin[1][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[1][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[1][id]);}
		case CSW_AWP: {if(iActiveSkin[2][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[2][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[2][id]);}
		case CSW_SCOUT: {if(iActiveSkin[3][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[3][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[3][id]);}
		case CSW_FAMAS: {if(iActiveSkin[4][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[4][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[4][id]);}
		case CSW_GALIL: {if(iActiveSkin[5][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[5][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[5][id]);}
		case CSW_AUG: {if(iActiveSkin[6][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[6][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[6][id]);}
		case CSW_M3: {if(iActiveSkin[7][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[7][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[7][id]);}
		case CSW_XM1014: {if(iActiveSkin[8][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[8][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[8][id]);}
		case CSW_KNIFE: {if(iActiveSkin[9][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[9][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[9][id]);}
		case CSW_DEAGLE: {if(iActiveSkin[10][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[10][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[10][id]);}
		case CSW_USP: {if(iActiveSkin[11][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[11][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[11][id]);}
		case CSW_GLOCK18:{if(iActiveSkin[12][id] == -1){ShowSyncHudMsg(id, SyncHud, "--");return;}ArrayGetArray(aWSkins, iActiveSkin[12][id], eData);ShowSyncHudMsg(id, SyncHud, "Fegyver neve: %s, Ölések: %d", eData[eWName], iWeaponKills[12][id]);}
	}
}
public plugin_precache(){
	LoadSkins();
}
public LoadSkins(){
	aWSkins = ArrayCreate(eWData);
	new sPath[40];
	get_configsdir(sPath, charsmax(sPath));
	format(sPath, charsmax(sPath), "%s/skins.ini", sPath);
	
	if(!file_exists(sPath)){
		log_amx("[HIBA]: Ez a f??jl nem l??tezik: (%s).", sPath);
		return;
	}
	
	if(file_exists(sPath)){
		enum aDatas{eName[64],eFile[64],eKill2[64],eType[64],};
		new sData[aDatas];
		
		new sLineData[512], iLine;
		new iFile = fopen(sPath, "rt");
		
		while(!feof(iFile)){
			fgets(iFile, sLineData, charsmax(sLineData));
			replace(sLineData, charsmax(sLineData), "^n", "");
			
			if(sLineData[0] == ';' || !sLineData[0]) continue;
			
			parse(sLineData, sData[eName], charsmax(sData), sData[eFile], charsmax(sData), sData[eKill2], charsmax(sData),
			sData[eType], charsmax(sData));
			
			remove_quotes(sData[eName]);remove_quotes(sData[eFile]);
			remove_quotes(sData[eKill2]);remove_quotes(sData[eType]);
			
			new eData[eWData];
			copy(eData[eWName], sizeof(eData[eWName]) - 1, sData[eName]);
			copy(eData[eWFile], sizeof(eData[eWFile]) - 1, sData[eFile]);
			eData[eWKill] = str_to_num(sData[eKill2]);        
			copy(eData[eWType], sizeof(sData[eWType])- 1, sData[eType]);
			
			ArrayPushArray(aWSkins, eData);
			precache_model(eData[eWFile]);
			iLine++;
		}
		fclose(iFile);
		iLoadedSkins = iLine;
	}
}
public WeaponChange_p(iEnt){
	if(!pev_valid(iEnt))
		return HAM_IGNORED
	
	new id = get_pdata_cbase(iEnt, 41, 4);
	
	if(!is_user_alive(id) || !is_user_connected(id))
		return HAM_IGNORED;
	
	new eData[eWData];
	new iWeapon = cs_get_weapon_id(iEnt);
	switch(iWeapon){
		case CSW_M4A1: {if(iActiveSkin[0][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[0][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_AK47: {if(iActiveSkin[1][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[1][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_AWP: {if(iActiveSkin[2][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[2][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_SCOUT: {if(iActiveSkin[3][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[3][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_FAMAS: {if(iActiveSkin[4][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[4][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_GALIL: {if(iActiveSkin[5][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[5][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_AUG: {if(iActiveSkin[6][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[6][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_M3: {if(iActiveSkin[7][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[7][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_XM1014: {if(iActiveSkin[8][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[8][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_KNIFE: {if(iActiveSkin[9][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[9][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_DEAGLE: {if(iActiveSkin[10][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[10][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_USP: {if(iActiveSkin[11][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[11][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
		case CSW_GLOCK18: {if(iActiveSkin[12][id] == -1)return HAM_IGNORED;ArrayGetArray(aWSkins, iActiveSkin[12][id], eData);entity_set_string(id, EV_SZ_viewmodel, eData[eWFile]);}
	}
	return HAM_IGNORED;
}
public PlayerKilled_p(iVictim, iKiller){
	if(iVictim == iKiller || !iKiller || !iVictim)
		return PLUGIN_HANDLED;
	
	new iWeapon = get_user_weapon(iKiller);
	
	Player[eKills][iKiller]++;
	hp_up(iKiller);
	
	switch(iWeapon){
		case CSW_M4A1:{
			iWeaponKills[0][iKiller] += 2;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[M4a1 fegyver]^1 Jutalom ^3[ +2 M4a1 Pont]", get_prefix(0));
		}
		case CSW_AK47:{
			iWeaponKills[1][iKiller] += 2;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[AK47 fegyver]^1 Jutalom ^3[ +2 AK47 Pont]", get_prefix(0));
		}
		case CSW_AWP:{
			iWeaponKills[2][iKiller] += 2;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[AWP fegyver]^1 Jutalom ^3[ +2 AWP Pont]", get_prefix(0));
		}
		case CSW_SCOUT:{
			iWeaponKills[3][iKiller] += 2;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[SCOUT fegyver]^1 Jutalom ^3[ +2 SCOUT Pont]", get_prefix(0));
		}
		case CSW_FAMAS:{
			iWeaponKills[4][iKiller] += 2;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[FAMAS fegyver]^1 Jutalom ^3[ +2 FAMAS Pont]", get_prefix(0));
		}
		case CSW_GALIL:{
			iWeaponKills[5][iKiller] += 3;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[GALIL fegyver]^1 Jutalom ^3[ +2 GALIL Pont]", get_prefix(0));
		}
		case CSW_AUG:{
			iWeaponKills[6][iKiller] += 3;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[AUG fegyver]^1 Jutalom ^3[ +2 AUG Pont]", get_prefix(0));
		}
		case CSW_M3:{
			iWeaponKills[7][iKiller] += 3;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[M3 fegyver]^1 Jutalom ^3[ +2 M3 Pont]", get_prefix(0));
		}
		case CSW_XM1014:{
			iWeaponKills[8][iKiller] += 2;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[XM1014 fegyver]^1 Jutalom ^3[ +2 XM1014 Pont]", get_prefix(0));
		}
		case CSW_KNIFE:{
			iWeaponKills[9][iKiller] += 3;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[KNIFE fegyver]^1 Jutalom ^3[ +2 KNIFE Pont]", get_prefix(0));
		}
		case CSW_DEAGLE:{
			iWeaponKills[10][iKiller] += 2;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[DEAGLE fegyver]^1 Jutalom ^3[ +2 DEAGLE Pont]", get_prefix(0));
		}
		case CSW_USP:{
			iWeaponKills[11][iKiller] += 2;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[USP fegyver]^1 Jutalom ^3[ +2 USP Pont]", get_prefix(0));
		}
		case CSW_GLOCK18:{
			iWeaponKills[12][iKiller] += 3;
			client_print_color(iKiller, print_team_default, "%s ^1 Fegyver :^3[GLOCK18 fegyver]^1 Jutalom ^3[ +2 GLOCK18 Pont]", get_prefix(0));
		}
	}
	return PLUGIN_HANDLED;
}
public hp_up(id)
{
	new iHealth = get_user_health(id);
	
	if(iHealth < 100)
		set_user_health(id, iHealth + 5);
	if(iHealth > 100)
		set_user_health(id, 110);
}
public main_menu(id){
	new sTitle[128];
	format(sTitle, charsmax(sTitle), "%s \dFőmenü", get_prefix(1));
	new iMenu = menu_create(sTitle, "menu_main_h");
	
	formatex(sTitle, charsmax(sTitle), "\wFegyver Skinek");
	menu_additem(iMenu, sTitle, "1", 0);
	menu_additem(iMenu, "\wAdatkezelő", "2", 0);
	
	menu_setprop(iMenu, MPROP_EXITNAME, "Kilépés");
	menu_display(id, iMenu, 0);
}
public menu_main_h(id, iMenu, iItem){
	if(iItem == MENU_EXIT){menu_destroy(iMenu);return;}
	
	new sData[10], sName[64];
	new iAccess, iCallback;
	menu_item_getinfo(iMenu, iItem, iAccess, sData, charsmax(sData), sName, charsmax(sName), iCallback);
	new iKey = str_to_num(sData);
	
	switch(iKey)
	{
		case 1:  menu_storage(id);
			case 2: adminmenuopen(id);
		}
	playspk(id);
}
public menu_storage(id){
	new sTitle[128];
	format(sTitle, charsmax(sTitle), "%s \dVálassz fegyvert", get_prefix(1));
	new iMenu = menu_create(sTitle, "menu_storage_h");
	
	menu_additem(iMenu, "\rM4A1 \ySkinek", "0", 0);
	menu_additem(iMenu, "\rAK47 \ySkinek", "1", 0);
	menu_additem(iMenu, "\rAWP \ySkinek", "2", 0);
	menu_additem(iMenu, "\rSCOUT \ySkinek", "3", 0);
	menu_additem(iMenu, "\rFAMAS \ySkinek", "4", 0);
	menu_additem(iMenu, "\rGALIL  \ySkinek", "5", 0);
	menu_additem(iMenu, "\rAUG \ySkinek", "6", 0);
	menu_additem(iMenu, "\rM3 \ySkinek", "7", 0);
	menu_additem(iMenu, "\rXM1014 \ySkinek", "8", 0);
	menu_additem(iMenu, "\rKNIFE \ySkinek", "9", 0);
	menu_additem(iMenu, "\rDEAGLE \ySkinek", "10", 0);
	menu_additem(iMenu, "\rUSP \ySkinek", "11", 0);
	menu_additem(iMenu, "\rGLOCK18 \ySkinek", "12", 0);
	
	menu_setprop(iMenu, MPROP_EXITNAME, "Kilepes");
	menu_setprop(iMenu, MPROP_BACKNAME, "Vissza");
	menu_setprop(iMenu, MPROP_NEXTNAME, "Tovabb");
	menu_display(id, iMenu, 0);
}
public menu_storage_h(id, iMenu, iItem){
	if(iItem == MENU_EXIT){menu_destroy(iMenu);return;}
	
	new sData[10], sName[64];
	new iAccess, iCallback;
	menu_item_getinfo(iMenu, iItem, iAccess, sData, charsmax(sData), sName, charsmax(sName), iCallback);
	new iKey = str_to_num(sData);
	
	switch(iKey){
		case 0..12:  WeaponSkins(id, iKey);
		}
	playspk(id);
}
public WeaponSkins(id, iWhich){
	new sTitle[128], sRow[8];
	new eData[eWData];
	format(sTitle, charsmax(sTitle), "%s \dFegyver Skinek", get_prefix(1));
	new iMenu = menu_create(sTitle, "WeaponSkins_h");
	
	switch(iWhich){
		case 0:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "M4A1")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 1:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "AK47")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 2:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "AWP")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 3:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "SCOUT")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 4:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "FAMAS")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 5:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "GALIL")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 6:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "AUG")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 7:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "M3")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 8:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "XM1014")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 9:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "KNIFE")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 10:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "DEAGLE")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 11:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "USP")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
		case 12:{
			for(new i; i < iLoadedSkins; i++)
			{
				ArrayGetArray(aWSkins, i, eData);
				if(equali(eData[eWType], "GLOCK18")){
					num_to_str(i, sRow, 7);
					if(Player[eKills][id] < eData[eWKill])
						formatex(sTitle, charsmax(sTitle), "\w%s\d - \w%d\r Pont", eData[eWName], eData[eWKill]);
					else
						formatex(sTitle, charsmax(sTitle), "\w%s", eData[eWName]);
					menu_additem(iMenu, sTitle, sRow);
				}
			}
		}
	}
	menu_setprop(iMenu, MPROP_EXITNAME, "Kil??p??s");
	menu_setprop(iMenu, MPROP_BACKNAME, "Vissza");
	menu_setprop(iMenu, MPROP_NEXTNAME, "Tov??bb");
	menu_display(id, iMenu, 0);
}
public WeaponSkins_h(id, iMenu, iItem){
	if(iItem == MENU_EXIT){menu_destroy(iMenu);return;}
	
	new sData[10], sName[64];
	new iAccess, iCallback;
	new eData[eWData];
	menu_item_getinfo(iMenu, iItem, iAccess, sData, charsmax(sData), sName, charsmax(sName), iCallback);
	new iKey = str_to_num(sData);
	
	ArrayGetArray(aWSkins, iKey, eData);
	
	if(equali(eData[eWType], "M4A1")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[0][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "Ak47")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[1][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "AWP")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[2][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "SCOUT")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[3][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "FAMAS")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[4][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "GALIL")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[5][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "AUG")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[6][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "M3")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[7][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "XM1014")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[8][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "KNIFE")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[9][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "DEAGLE")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[10][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "USP")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[11][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	else if(equali(eData[eWType], "GLOCK18")){
		if(Player[eKills][id] < eData[eWKill])
			client_print_color(id, print_team_default, "%s^1Nincs elegendő ölésed a skinhez.", get_prefix(0));
		else{
			iActiveSkin[12][id] = iKey;
			client_print_color(id, print_team_default, "%s^1Kiválasztottad a(z) %s skint.", get_prefix(0), eData[eWName]);
		}
	}
	playspk(id);
}
public adminmenuopen(id){
	new sTitle[128];
	format(sTitle, charsmax(sTitle), "%s \dJátékosok kezelése", get_prefix(1));
	new iMenu = menu_create(sTitle, "adminmenuopen_h");
	
	menu_additem(iMenu, "\wPont adás", "1", 0);
	menu_additem(iMenu, "\wPont elvétel", "2", 0);
	
	menu_setprop(iMenu, MPROP_EXITNAME, "Kil??p??s");
	menu_display(id, iMenu, 0);
}
public adminmenuopen_h(id, iMenu, iItem){
	if(iItem == MENU_EXIT){menu_destroy(iMenu);return;}
	
	new sData[10], sName[64];
	new iAccess, iCallback;
	menu_item_getinfo(iMenu, iItem, iAccess, sData, charsmax(sData), sName, charsmax(sName), iCallback);
	new iKey = str_to_num(sData);
	
	switch(iKey){
		case 1:  {menu_chooseplayer(id); iChoosedMode = 0;}
		case 2: {menu_chooseplayer(id); iChoosedMode = 1;}
	}
	playspk(id);
}
public menu_chooseplayer(id){
	new sTitle[128], iPlayers[32], iPNum, iId, sName[64], sId[10];
	format(sTitle, charsmax(sTitle), "%s \dVálassz játékost", get_prefix(1));
	new iMenu = menu_create(sTitle, "menu_chooseplayer_h");
	
	get_players(iPlayers, iPNum);
	
	for(new i; i < iPNum; i++)
	{
		iId = iPlayers[i];
		if(is_user_bot(iId) || !is_user_connected(iId))
			continue;
		
		get_user_name(iId, sName, charsmax(sName));
		num_to_str(iId, sId, charsmax(sId));    
		menu_additem(iMenu, sName, sId, 0);          
	}
	
	menu_setprop(iMenu, MPROP_EXITNAME, "Kilépés");
	menu_display(id, iMenu, 0);
}
public menu_chooseplayer_h(id, iMenu, iItem){
	if(iItem == MENU_EXIT){menu_destroy(iMenu);return;}
	
	new sData[10], sName[64];
	new iAccess, iCallback;
	menu_item_getinfo(iMenu, iItem, iAccess, sData, charsmax(sData), sName, charsmax(sName), iCallback);
	iTempID = str_to_num(sData);
	
	client_cmd(id, "messagemode type_itemremoveoradd");
	playspk(id);
}
public type_itemammount(id){
	new sItem[128], iItemAmmount, sSenderName[64], sTargetName[64];
	read_args(sItem, charsmax(sItem));
	remove_quotes(sItem);
	
	get_user_name(id, sSenderName, charsmax(sSenderName));
	get_user_name(iTempID, sTargetName, charsmax(sTargetName));
	
	iItemAmmount = str_to_num(sItem);
	
	if(iItemAmmount < 0){
		client_print_color(id, print_team_blue, "%s ^1Nem írhasz nulla értéket!.", get_prefix(0));
		return PLUGIN_HANDLED;
	}
	
	switch(iChoosedMode){
		case 0:{
			
			for(new i = 0; i < 13; i++)
				iWeaponKills[i][iTempID] += iItemAmmount;
			
			client_print_color(id, print_team_blue, "%s ^1Sikeresen jóváírtak:^4 %d ^1t, neki:^4 %s", get_prefix(0), iItemAmmount, sTargetName);
			client_print_color(iTempID, print_team_blue, "%s ^1Jóváírtak neked^4 %d ^1pontot! BY:^4 %s", get_prefix(0), iItemAmmount, sTargetName);
			client_print_color(id, print_team_blue, "^3 Admin: %s | Játékos: %s | összeg: %d | Tíus: pont jóváírás", sSenderName, sTargetName, iItemAmmount);
			return PLUGIN_HANDLED;
		}
		case 1:{
			for(new i = 0; i < 13; i++)
				iWeaponKills[i][iTempID] -= iItemAmmount;
			
			client_print_color(id, print_team_blue, "%s ^1Sikeresen elvettek:^4 %d ^1, t?e:^4 %s", get_prefix(0), iItemAmmount, sTargetName);
			client_print_color(iTempID, print_team_blue, "%s ^1Elvettek tőled^4 %d ^1pontot! BY:^4 %s", get_prefix(0), iItemAmmount, sTargetName);
			client_print_color(id, print_team_blue, "^3 Admin: %s | Játékos: %s | összeg: %d | Tius: Pont elvétel", sSenderName, sTargetName, iItemAmmount);
			return PLUGIN_HANDLED;
		}
	}  
	return PLUGIN_HANDLED;
}
public client_disconnected(id){
	if(is_user_bot(id))
		return;
	
	Update(id);
	
	Player[eKills][id] = 0;
	Player[eUnclockedSkin][id] = 0;
	
	for(new i = 0; i < 13; i++)
		iActiveSkin[i][id] = -1;
	for(new i = 0; i < 13; i++)
		iWeaponKills[i][id] = 0;
}
public client_putinserver(id){
	if(is_user_bot(id))
		return;
	
	for(new i = 0; i < 13; i++)
		iActiveSkin[i][id] = -1;
	for(new i = 0; i < 13; i++)
		iWeaponKills[i][id] = 0;
	
	SQL_load(id);
	InfoHud(id);
}
public plugin_cfg(){
	new iLen, sQuery[2048];
	SqlTuple = SQL_MakeDbTuple(SQL_INFO[0], SQL_INFO[1], SQL_INFO[2], SQL_INFO[3])
	iLen += formatex(sQuery[iLen], charsmax(sQuery), "CREATE TABLE IF NOT EXISTS `SkinMenu`")
	iLen += formatex(sQuery[iLen], charsmax(sQuery)-iLen, "(`Steamid` varchar(128) NOT NULL, ")
	iLen += formatex(sQuery[iLen], charsmax(sQuery)-iLen, "`UnlockedSkin` int(11) NOT NULL,");
	
	for(new i = 0; i < 13; i++)
		iLen += formatex(sQuery[iLen], charsmax(sQuery)-iLen, "`WK%d` int(11) NOT NULL,", i);
	
	for(new i = 0; i < 13; i++)
		iLen += formatex(sQuery[iLen], charsmax(sQuery)-iLen, "`MentettSkin_%d` int(11) NOT NULL,", i);
	
	iLen += formatex(sQuery[iLen], charsmax(sQuery)-iLen, "`Olesek` int(11) NOT NULL, `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)");
	SQL_ThreadQuery(SqlTuple, "createTableThread", sQuery);
}
public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime){
	if(FailState == TQUERY_CONNECT_FAILED)
		set_fail_state("[HIBA*] NEM TUDTAM CSATLAKOZNI AZ ADATBAZISHOZ!");
	else if(FailState == TQUERY_QUERY_FAILED)
		set_fail_state("Query Error");
	if(Errcode)
		log_amx("[HIBA*] HIBAT DOBTAM: %s", Error);
}
public SQL_load(id){
	new Data[1], sQuery[2048];
	Data[0] = id;
	get_user_authid(id, gSteamID, charsmax(gSteamID))
	
	formatex(sQuery, charsmax(sQuery), "SELECT * FROM `SkinMenu` WHERE Steamid = ^"%s^";", gSteamID);
	SQL_ThreadQuery(SqlTuple, "SQL_load_thr", sQuery, Data, 1)
}
public SQL_load_thr(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime){
	if(FailState == TQUERY_CONNECT_FAILED)
		set_fail_state("[*HIBA*] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!");
	else if(FailState == TQUERY_QUERY_FAILED)
		set_fail_state("[*HIBA*] A LEKERDEZES MEGSZAKADT!");
	if(Errcode)
		log_amx("[*HIBA*] PROBLEMA A LEKERDEZESNEL! ( %s )",Error);
	
	new id = Data[0];
	
	if(SQL_NumRows(Query) > 0){
		Player[eUnclockedSkin][id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "UnlockedSkin"));
		for(new i = 0; i < 13; i++){
			new sString[64];
			formatex(sString, charsmax(sString), "WK%d", i);
			iWeaponKills[i][id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, sString));
		}
		for(new i = 0; i < 13; i++){
			new sString[64];
			formatex(sString, charsmax(sString), "MentettSkin_%d", i);
			iActiveSkin[i][id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, sString));
		}
		Player[eKills][id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Olesek"));
	}
	else
		SQL_Save(id);
}
public Update(id){
	new iLen, sQuery[2048];
	get_user_authid(id, gSteamID, charsmax(gSteamID))
	
	iLen += formatex(sQuery[iLen], charsmax(sQuery), "UPDATE `SkinMenu` SET UnlockedSkin = ^"%i^", ", Player[eUnclockedSkin][id]);
	
	for(new i = 0; i < 13; i++)
		iLen += formatex(sQuery[iLen], charsmax(sQuery)-iLen, "WK%d = ^"%i^", ", i, iWeaponKills[i][id]);
	
	for(new i = 0; i < 13; i++)
		iLen += formatex(sQuery[iLen], charsmax(sQuery)-iLen, "MentettSkin_%d = ^"%i^", ", i, iActiveSkin[i][id]);
	
	iLen += formatex(sQuery[iLen], charsmax(sQuery)-iLen, "Olesek = ^"%i^" WHERE Steamid = ^"%s^";", Player[eKills][id], gSteamID);
	
	SQL_ThreadQuery(SqlTuple, "QuerySetData", sQuery)
}
public SQL_Save(id){
	new sQuery[2048]
	get_user_authid(id, gSteamID, charsmax(gSteamID))
	
	formatex(sQuery, charsmax(sQuery), "INSERT INTO `SkinMenu` (`Steamid`) VALUES (^"%s^");", gSteamID);
	SQL_ThreadQuery(SqlTuple, "QuerySetData", sQuery);
}
public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime){
	if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED){
		log_amx("%s", Error);
		return;
	}
}
public plugin_end(){
	SQL_FreeHandle(SqlTuple);
}
public sayhook(id){
	new Message[192];
	read_args(Message, charsmax(Message))
	remove_quotes(Message)
	
	if(strlen(Message) == 0 || Message[0] == '/')
		return PLUGIN_HANDLED_MAIN;
	
	new Death[16], sName[MAX_NAME_LENGTH];
	get_user_name(id, sName, charsmax(sName));
	
	new sRank[64], sColor[16];
	
	switch(get_user_flags(id)){
		case TULAJ:{ sRank = "^4[^3Tulajdonos^4]"; sColor = "^4";}
		case ADMIN:{ sRank = "^4[^3Admin^4]"; sColor = "^4";}
		case VIP:{ sRank = "^4[^3VIP^4]"; sColor = "^3";}
		default:{ sRank = "^4[^3Játékos^4]"; sColor = "^1";}
	}
	for(new i = 1; i <= iMaxPlayers; i++){
		if(is_user_connected(i) && !is_user_bot(i)){
			formatex(Death, charsmax(Death), is_user_alive(id) ? "":"*Halott*");
			client_print_color(i, print_team_default, "%s%s^3%s: %s%s", Death, sRank, sName, sColor, Message);
		}
	}
	return PLUGIN_HANDLED_MAIN;
}
public sayteamhook(id){
	new Message[192];
	read_args(Message, charsmax(Message))
	remove_quotes(Message)
	
	if(strlen(Message) == 0 || Message[0] == '/')
		return PLUGIN_HANDLED_MAIN;
	
	new Death[16], sName[MAX_NAME_LENGTH];
	get_user_name(id, sName, charsmax(sName));
	
	new iTeam, sTeam[32];
	iTeam = get_user_team(id, sTeam, charsmax(sTeam));
	
	switch(iTeam){
		case CS_TEAM_CT: sTeam = "CT";
			case CS_TEAM_T: sTeam = "T";
			case CS_TEAM_SPECTATOR: sTeam = "SPEC";
		}
	for(new i = 1; i <=  iMaxPlayers; i++){
		if(is_user_connected(i) && !is_user_bot(i) || get_user_flags(id) & ADMIN_BAN){
			formatex(Death, charsmax(Death), is_user_alive(id) ? "":"*Halott*");
			client_print_color(i, print_team_default, "%s^3(%s)^1%s: ^3%s", Death, sTeam, sName, Message);
		}
	}
	return PLUGIN_HANDLED_MAIN;
}
stock get_prefix(which){
	new sPrefix[32];
	if(which == 0)
		get_pcvar_string(cvarS[eCpref], sPrefix, charsmax(sPrefix));
	else if(which == 1)
		get_pcvar_string(cvarS[eMpref], sPrefix, charsmax(sPrefix));
	
	return sPrefix;
}
public playspk(id){
	client_cmd(id, "spk buttons/lightswitch2");
}
