#include <amxmodx>
#include <reapi>
#include <nvault>

new const PLUGIN[] = "CTMarket";
new const VERSION[] = "1.0";
new const AUTHOR[] = "KayraLYNCH";

new bool:m_canver[MAX_CLIENTS+1],sinirsiz_mermi[MAX_CLIENTS+1],bool:m_astro[MAX_CLIENTS+1],para[MAX_CLIENTS+1],cvar_ayarlari[6],bool:canyeniye[MAX_CLIENTS+1],bool:kullandin[MAX_CLIENTS+1],bool:kullandin2[MAX_CLIENTS+1],bool:kullandin3[MAX_CLIENTS+1],bool:kullandin5[MAX_CLIENTS+1],bool:kullandin4[MAX_CLIENTS+1];

new const g_maxclipammo[] = { 0,13,0,10,0,7,0,30,30,0,15,20,25,30,35,25,12,20,10,30,100,8,30,30,20,0,7,30,30,0,50 }

new const TAG[] = "WebAilesi";
new const KISA_TAG[] = "WebAilesi";

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_clcmd("say /ctmarket","KayraMenu");
    //register_clcmd("say /paraver","paraver");
    register_clcmd("say /para","paramkac");
    RegisterHookChain(RG_CBasePlayer_Spawn, "OyuncuDogunca",1);
    register_event("CurWeapon", "silahdegisince", "be", "1=1");
    RegisterHookChain(RG_CBasePlayer_Killed, "oyuncuoldu", 1);

    cvar_ayarlari[1] = register_cvar("ct_hp","100");
    cvar_ayarlari[2] = register_cvar("ct_unammo","100");
    cvar_ayarlari[3] = register_cvar("ct_gravity","100");
    cvar_ayarlari[4] = register_cvar("ct_canyenileme","100");
    cvar_ayarlari[5] = register_cvar("ct_godal","100");
}

public client_putinserver(ID){
    para[ID]=20
    kullandin[ID] = false;
    kullandin2[ID] = false;
    kullandin3[ID] = false;
    kullandin4[ID] = false;
    m_canver[ID] = false;
    sinirsiz_mermi[ID] = false;
    m_astro[ID] = false;
    canyeniye[ID] = false;
    set_task(600.0,"suredoldu",ID)
}

public paramkac(ID){
    client_print_color(ID,ID,"^4[%s] - ^1Cebinizdeki para miktari : ^3 %i",TAG,para[ID]);
}

public suredoldu(ID){
    if(get_member(ID, m_iTeam) == TEAM_CT)
    {
        para[ID]+=50
        client_print_color(ID,ID,"^4[%s] - ^1Sunucuda ^3 10 ^1Dakika Durdugunuz Icin 50 TL!",TAG);
    }
}

public paraver(ID){
    if(get_member(ID,m_iTeam) == TEAM_CT) {
    para[ID]+=1000;
    client_print_color(ID,ID,"^4[%s] - ^1Bankaniza ^3 1000TL Transfer Edildi!",TAG);
    }
}

public oyuncuoldu(const olen, const olduren){
        if(get_member(olen,m_iTeam) == TEAM_TERRORIST && get_member(olduren,m_iTeam) == TEAM_CT) {
            para[olduren]+=5
        }
    }

public OyuncuDogunca(ID) 
{
    if(m_canver[ID] && get_member(ID,m_iTeam) == TEAM_CT) set_entvar(ID,var_health,300.0);
    else if(m_astro[ID] && get_member(ID,m_iTeam) == TEAM_CT) set_entvar(ID,var_gravity,0.5);
    else if(canyeniye[ID] && get_member(ID,m_iTeam) == TEAM_CT) CanEkleme(ID);
    set_task(1.0,"hud",ID);
}

public silahdegisince(const ID) 
{
	if(sinirsiz_mermi[ID])
        {
		new silah=read_data(2);
		if(g_maxclipammo[silah] < 0) return PLUGIN_CONTINUE;
		set_member(get_member(ID, m_pActiveItem), m_Weapon_iClip, g_maxclipammo[silah]);
        }
        return PLUGIN_CONTINUE;
}

public KayraMenu(ID)
{
    if(get_member(ID,m_iTeam) != TEAM_CT) client_print_color(ID,ID,"^4[%s] - ^1Bu menuyu sadece ^3gardiyanlar ^1kullanabilir.",TAG);
    else if(!is_user_alive(ID)) client_print_color(ID,ID,"^4[%s] - ^1Bu menuyu sadece ^3yasayanlar ^1kullanabilir.",TAG);
    else {
    static Item[128];
    
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yCt Market Menu^n Coded By : Kayra", TAG);
    new Menu = menu_create(Item, "KayraMenu_Handler");
    
    if(kullandin[ID]) {
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yHer El 300 HP \r[ %i TL ] \d[ Kullandin ]", KISA_TAG,get_pcvar_num(cvar_ayarlari[1]));
    menu_additem(Menu, Item, "1"); 
    } else {
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yHer El 300 HP \r[ %i TL ]", KISA_TAG,get_pcvar_num(cvar_ayarlari[1]));
    menu_additem(Menu, Item, "1"); }

    if(kullandin2[ID]) {
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yHer El Unammo \r[ %i TL ] \d[ Kullandin ]", KISA_TAG,get_pcvar_num(cvar_ayarlari[2]));
    menu_additem(Menu, Item, "2"); 
    } else {
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yHer El Unammo \r[ %i TL ]", KISA_TAG,get_pcvar_num(cvar_ayarlari[2]));
    menu_additem(Menu, Item, "2"); }

    if(kullandin3[ID]) {
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \y500 Gravity \r[ %i TL ] \d[ Kullandin ]", KISA_TAG,get_pcvar_num(cvar_ayarlari[3]));
    menu_additem(Menu, Item, "3");
    } else {
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \y500 Gravity \r[ %i TL ]", KISA_TAG,get_pcvar_num(cvar_ayarlari[3]));
    menu_additem(Menu, Item, "3");
    }

    if(kullandin4[ID]) {
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yCan Yenilemesi \r[ %i TL ] \d[ Kullandin ]", KISA_TAG,get_pcvar_num(cvar_ayarlari[4]));
    menu_additem(Menu, Item, "4"); 
    } else {
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yCan Yenilemesi \r[ %i TL ]", KISA_TAG,get_pcvar_num(cvar_ayarlari[4]));
    menu_additem(Menu, Item, "4"); 
    }

    if(kullandin5[ID]) {
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yGod Al \r[ %i TL ] \d[ Kullandin ]", KISA_TAG,get_pcvar_num(cvar_ayarlari[5]));
    menu_additem(Menu, Item, "5"); 
    } else {
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yGod Al \r[ %i TL ]", KISA_TAG,get_pcvar_num(cvar_ayarlari[5]));
    menu_additem(Menu, Item, "5"); 
    }
    
    menu_setprop(Menu, MPROP_NUMBER_COLOR, "\r");
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yGeri", KISA_TAG);
    menu_setprop(Menu, MPROP_BACKNAME, Item);
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yIleri", KISA_TAG);
    menu_setprop(Menu, MPROP_NEXTNAME, Item);
    formatex(Item, charsmax(Item), "\d[\r%s\d] \w| \yCikis", KISA_TAG);
    menu_setprop(Menu, MPROP_EXITNAME, Item);
    menu_display(ID, Menu, 0);
    
    }

    return PLUGIN_HANDLED;
}

public KayraMenu_Handler(ID, Menu, Item)
{
    if(Item == MENU_EXIT)
    {
        menu_destroy(Menu);
        return PLUGIN_HANDLED;
    }
    
    new Access, Data[6], Menu_Name[64], Call_Back;
    menu_item_getinfo(Menu, Item, Access, Data, 5, Menu_Name, 63, Call_Back);
    new Key = str_to_num(Data);
    
    switch(Key)
    {
        case 1 :
        {
            if(para[ID] >= get_pcvar_num(cvar_ayarlari[1])){ m_canver[ID] = true; kullandin[ID] = true; KayraMenu(ID), para[ID]-=get_pcvar_num(cvar_ayarlari[1]), set_entvar(ID,var_health,300.0), client_cmd(ID,"spk ^"events/enemy_died^""); }
            else client_cmd(ID,"spk ^"events/friend_died^""), KayraMenu(ID), client_print_color(ID,ID,"^4[%s] - ^1Yeterli ^3TL'niz ^1Yok!",TAG);
        }
        case 2 :
        {
            if(para[ID] >= get_pcvar_num(cvar_ayarlari[2])){ sinirsiz_mermi[ID] = true; kullandin2[ID] = true; KayraMenu(ID), para[ID]-=get_pcvar_num(cvar_ayarlari[2]), client_cmd(ID,"spk ^"events/enemy_died^""); }
            else client_cmd(ID,"spk ^"events/friend_died^""), KayraMenu(ID), client_print_color(ID,ID,"^4[%s] - ^1Yeterli ^3TL'niz ^1Yok!",TAG);
        }
        case 3 :
        {
            if(para[ID] >= get_pcvar_num(cvar_ayarlari[3])){ m_astro[ID] = true; kullandin3[ID] = true; set_entvar(ID,var_gravity,0.5), KayraMenu(ID), para[ID]-=get_pcvar_num(cvar_ayarlari[3]), client_cmd(ID,"spk ^"events/enemy_died^""); }
            else client_cmd(ID,"spk ^"events/friend_died^""), KayraMenu(ID), client_print_color(ID,ID,"^4[%s] - ^1Yeterli ^3TL'niz ^1Yok!",TAG);
        }
        case 4 :
        {
            if(para[ID] >= get_pcvar_num(cvar_ayarlari[4])){ CanEkleme(ID); kullandin4[ID] = true; canyeniye[ID] = true; para[ID]-=get_pcvar_num(cvar_ayarlari[4]); KayraMenu(ID), client_cmd(ID,"spk ^"events/enemy_died^""); }
            else client_cmd(ID,"spk ^"events/friend_died^""), KayraMenu(ID), client_print_color(ID,ID,"^4[%s] - ^1Yeterli ^3TL'niz ^1Yok!",TAG);
        }
        case 5 :
        {
            if(para[ID] >= get_pcvar_num(cvar_ayarlari[5])){ kullandin5[ID] = true; godver(); para[ID]-=get_pcvar_num(cvar_ayarlari[5]); KayraMenu(ID), client_cmd(ID,"spk ^"events/enemy_died^""); }
            else client_cmd(ID,"spk ^"events/friend_died^""), KayraMenu(ID), client_print_color(ID,ID,"^4[%s] - ^1Yeterli ^3TL'niz ^1Yok!",TAG);
        }
    }

    SaveVault(ID);
    return PLUGIN_HANDLED;
} 

public godver() {
new Players[32], Num_Alive_CT, New_ID; get_players(Players, Num_Alive_CT, "aceh", "CT");
for(new i; i < Num_Alive_CT; i++)
{
New_ID = Players[i];
set_entvar(New_ID, var_takedamage, DAMAGE_NO);
set_entvar(New_ID, var_health, Float:10000.0);
}
}

public CanEkleme(ID)
{
	if(get_entvar(ID, var_health) < 300)
	{
		set_entvar(ID, var_health, Float: get_entvar(ID, var_health) + 1.0);
		set_task(1.0, "CanEkleme", ID);
	}
}

public hud(ID) {
    if(is_user_alive(ID) && get_member(ID,m_iTeam)==TEAM_CT) { 
        set_task(1.0,"hud",ID);
        set_hudmessage(124, 252, 0, 0.44, 0.70, 0, 6.0, 1.1);
        show_hudmessage(ID, "Cebinizdeki CT Money [ %i ]",para[ID]);
    }
}

/********* Nvault ***********/

new g_vault;

public plugin_cfg()
{
	g_vault = nvault_open("CTMarketCoins");

	if(g_vault == INVALID_HANDLE) 
    {
		set_fail_state("Unknown nvault for CTMarketCoins");
	}
}

public plugin_end() 
{
	nvault_close(g_vault);
}

public client_authorized(id, const authid[]) 
{
	para[id] = nvault_get(g_vault, fmt("%s_ctmarketpara", authid));
}

public client_disconnected(id) 
{
    SaveVault(id);
}

public SaveVault(const id)
{
	new authid[MAX_AUTHID_LENGTH], data[MAX_AUTHID_LENGTH+10];
	get_user_authid(id, authid, charsmax(authid));

	num_to_str(para[id], data, charsmax(data));
	nvault_set(g_vault, fmt("%s_ctmarketpara", authid), data);
}