#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <colorchat>
 
#pragma tabsize 0
 
new const PLUGIN[] = "Global Unison"
new const VERSION[] = "2.0"
new const AUTHOR[] = "GudDevil" 
 
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] == 100)
        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 1: Skin[0][id] = 0
        case 2: Skin[0][id] = 1
        case 3: Skin[0][id] = 2
        case 4: Skin[0][id] = 3
        case 5: Skin[0][id] = 4
        case 6: Skin[0][id] = 5
        case 7: Skin[0][id] = 6
        case 8: Skin[0][id] = 7
        case 9: Skin[0][id] = 8
        case 10: Skin[0][id] = 9
        case 11: Skin[0][id] = 10
    }
}
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;
}
 
public client_putinserver(id)
{
Skin[0][id] = -1
}