#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");
}