/* Plugin generated by AMXX-Studio */
 
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <colorchat>
#include <fun>
#include <nvault>
#include <fakemeta>
#include <engine>
 
#define PLUGIN "BaseBuilder Shop"
#define VERSION "1.0"
#define AUTHOR "N*Joy^^"
 
#define VIPJOG ADMIN_RESERVATION
 
//T�rol�
new pont[33]
new g_vault
new name[33][32]
new x_tempid
 
//Arany fegyverek
new bool:aranyak[33]
new bool:aranym4[33]
 
//Bolt itemek
new bool:orokloszer[33]
new bool:sebesseg[33]
new bool:gravitacio[33]
new hasznalta[33]
 
//Bolt cvarok
new killp
new killhsp
new vipkillp
new vipkillhsp
new g_lehetmeg
 
//�r�kl�szer
// weapons offsets
#define OFFSET_CLIPAMMO        51
#define OFFSET_LINUX_WEAPONS    4
#define fm_cs_set_weapon_ammo(%1,%2)    set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
 
// players offsets
#define m_pActiveItem 373
 
const NOCLIP_WPN_BS    = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
 
new const g_MaxClipAmmo[] = 
{
    0,
    13, //CSW_P228
    0,
    10, //CSW_SCOUT
    0,  //CSW_HEGRENADE
    7,  //CSW_XM1014
    0,  //CSW_C4
    30,//CSW_MAC10
    30, //CSW_AUG
    0,  //CSW_SMOKEGRENADE
    15,//CSW_ELITE
    20,//CSW_FIVESEVEN
    25,//CSW_UMP45
    30, //CSW_SG550
    35, //CSW_GALIL
    25, //CSW_FAMAS
    12,//CSW_USP
    20,//CSW_GLOCK18
    10, //CSW_AWP
    30,//CSW_MP5NAVY
    100,//CSW_M249
    8,  //CSW_M3
    30, //CSW_M4A1
    30,//CSW_TMP
    20, //CSW_G3SG1
    0,  //CSW_FLASHBANG
    7,  //CSW_DEAGLE
    30, //CSW_SG552
    30, //CSW_AK47
    0,  //CSW_KNIFE
    50//CSW_P90
}
 
 
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
 
    register_clcmd("say /bolt", "fomenu")
    register_clcmd("say /shop", "fomenu")
 
    register_clcmd("say /netudjadallitsdat", "kuldesmenu")
 
    RegisterHam(Ham_TakeDamage , "player" , "PlayerHurt", 0);
    RegisterHam(Ham_Killed, "player", "fw_player_killed", 1)
 
    register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
    register_event("ResetHUD", "newRound", "b")  
 
    killp = register_cvar("pont_kill", "5")
    killhsp = register_cvar("pont_killhs", "8")
 
    vipkillp = register_cvar("pont_killvip", "10")
    vipkillhsp = register_cvar("pont_killhsvip", "12")
 
    g_lehetmeg = register_cvar("amx_lehetvenni", "2")
 
    register_clcmd("MENNYISEG", "ponts")
 
    g_vault = nvault_open("BasebuilderPont")
}
//Hud �zenet
public client_PreThink(id)
{
    set_hudmessage(0, 255, 0, 0.0, 0.16, 0, 6.0, 1.0)
    show_hudmessage(id, "  Pontjaid: %d", pont[id])
 
}
//�l�s pontok�rt
public fw_player_killed(victim, attacker, shouldgib)
{
    if(get_user_flags(attacker) & VIPJOG && attacker != victim)
    {
        if(get_pdata_int(victim, 75) == HIT_HEAD)
        {
            pont[attacker] += get_pcvar_num(vipkillhsp)
            set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
            show_hudmessage(attacker, "[+%d pont - Fejloves]", get_pcvar_num(vipkillhsp))
        }
        else
        {
            pont[attacker] += get_pcvar_num(vipkillp)
            set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
            show_hudmessage(attacker, "[+%d pont]", get_pcvar_num(vipkillp))
        }
    }
    else if(attacker != victim) 
    {
        if(get_pdata_int(victim, 75) == HIT_HEAD)
        {
            pont[attacker] += get_pcvar_num(killhsp)
            set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
            show_hudmessage(attacker, "[+%d pont - Fejloves]", get_pcvar_num(killhsp))
        }
        else
        {
            pont[attacker] += get_pcvar_num(killp)
            set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
            show_hudmessage(attacker, "[+%d pont]", get_pcvar_num(killp))
        }
    }
    return PLUGIN_CONTINUE
}
//�j k�r
public newRound()
{
    new players[32], num
    get_players(players, num)
    for(new i; i<get_maxplayers(); i++)
    {
        new id = players[i]
        orokloszer[id] = false
        sebesseg[id] = false
        gravitacio[id] = false
        aranym4[id] = false
        aranyak[id] = false
        hasznalta[id] = 0
    }
}   
//Let�lt�sek
public plugin_precache()
{
    precache_model("models/aranyak.mdl")
    precache_model("models/p_aranyak.mdl")
 
    precache_model("models/aranym4.mdl")
    precache_model("models/p_aranym4.mdl")
 
}
//Fomenu
public fomenu(id)
{
    static CsTeams: team ; team = cs_get_user_team(id)
    if (team == CS_TEAM_T)
    {   
        new menu = menu_create("\yBaseBuilder [T] Bolt \w[By: N*Joy^^]", "fomenut_handler");
 
        new szoveg[192]
        formatex(szoveg, 191, "1000 HP [20 pont] \w[%d/%d]",hasznalta[id],get_pcvar_num(g_lehetmeg))
        menu_additem(menu, szoveg, "", 0); // case 0
        menu_additem(menu, "Kisebb gravitacio [20 pont]", "", 0); // case 1
        menu_additem(menu, "Gyorsasag [15 pont]", "", 0); // case 2
 
        menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
 
        menu_display(id, menu, 0);
 
        return PLUGIN_HANDLED;
    }
    else
    { 
        new menu = menu_create("\yBaseBuilder [CT] Bolt \w[By: N*Joy^^`]", "fomenuct_handler");
 
        menu_additem(menu, "+50 HP [20 pont]", "", 0); // case 0
        menu_additem(menu, "Gyorsasag [15 pont]", "", 0); // case 1
        menu_additem(menu, "Kisebb gravitacio [20 pont]", "", 0); // case 2
        menu_additem(menu, "Orok tolteny [120 pont]", "", 0); // case 3
        menu_additem(menu, "\rArany M4A1 [120 pont]", "", 0); // case 4
        menu_additem(menu, "\rArany AK47 [120 pont]", "", 0); // case 5
        menu_additem(menu, "Minigun [65 pont]", "", 0); // case 6
        menu_additem(menu, "CT magozo [45 pont]", "", 0); // case 7
        menu_additem(menu, "T magozo [45 pont]", "", 0); // case 8
 
        menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
 
        menu_display(id, menu, 0);
 
    }
    return PLUGIN_HANDLED;
}
public fomenut_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_cancel(id);
        return PLUGIN_HANDLED;
    }
 
    new command[6], name[64], access, callback;
 
    menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
 
    switch(item)
    {
        case 0: {
            if(pont[id] >= 20)
            {
                if(hasznalta[id] < get_pcvar_num(g_lehetmeg))
                {
                    hasznalta[id]++
                    set_user_health(id, get_user_health(id)+1000)
                    pont[id] -= 20
                    ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                    fomenu(id)
                }
                else 
                {
                    ColorChat(id, GREEN, "[Bolt]^1 Csak %dx hasznalhatod ezt a menupontot!",get_pcvar_num(g_lehetmeg))
                }
                fomenu(id)
            }
            else
            {
                ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
            }
            fomenu(id)
        }
        case 1: {
            if(pont[id] >= 20)
            {
                set_user_gravity(id, 0.5)
                gravitacio[id] = true
                pont[id] -= 20
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
        }
        case 2: {
            if(pont[id] >= 20)
            {
                set_user_maxspeed(id, 550.0)
                sebesseg[id] = true
                pont[id] -= 15
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
        }
 
    }
 
    menu_destroy(menu);
 
    return PLUGIN_HANDLED;
}
public fomenuct_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_cancel(id);
        return PLUGIN_HANDLED;
    }
 
    new command[6], name[64], access, callback;
 
    menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
 
    switch(item)
    {
        case 0: {
            if(pont[id] >= 20)
            {
                set_user_health(id, get_user_health(id)+50)
                pont[id] -= 20
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
        }
        case 1: {
            if(pont[id] >= 15)
            {
                set_user_maxspeed(id, 700.0)
                sebesseg[id] = true
                pont[id] -= 15
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
        }
        case 2: {
            if(pont[id] >= 20)
            {
                set_user_gravity(id, 0.5)
                gravitacio[id] = true
                pont[id] -= 20
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
        }
        case 3: {
            if(pont[id] >= 120)
            {
                orokloszer[id] = true
                pont[id] -= 120
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
        }
        case 4: {
            if(pont[id] >= 120)
            {
                pont[id] -= 120
                give_item(id, "weapon_m4a1")
                cs_set_user_bpammo(id, CSW_M4A1, 90)
                aranym4[id] = true
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
        }
        case 5: {
            if(pont[id] >= 120)
            {
                give_item(id, "weapon_ak47")
                cs_set_user_bpammo(id, CSW_AK47, 90)
                aranyak[id] = true
                pont[id] -= 120
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
        }
        case 6:{
            if(pont[id] >= 65)
            {
                give_item(id,"weapon_m249")
                cs_set_user_bpammo(id, CSW_M249, 200)
                pont[id] -= 65
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
        }
        case 7: {
            if(pont[id] >= 45)
            {
                give_item(id, "weapon_g3sg1")
                cs_set_user_bpammo(id, CSW_G3SG1, 90)
                pont[id] -= 45
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^n Sajnos nincs eleg pontod")
        }
        case 8: {
            if(pont[id] >= 45)
            {
                give_item(id, "weapon_sg550")
                cs_set_user_bpammo(id, CSW_SG550, 90)
                pont[id] -= 45
                ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
                fomenu(id)
            }
            else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
        }
    }
 
    menu_destroy(menu);
 
    return PLUGIN_HANDLED;
}
//Modellek
public Event_CurWeapon(id)
{
    new weap = get_user_weapon(id)
    if(weap == CSW_AK47 && aranyak[id] == true)
    {
        entity_set_string(id, EV_SZ_viewmodel, "models/redak.mdl")
        entity_set_string(id, EV_SZ_weaponmodel, "models/p_aranyak.mdl")
    }
    else if(weap == CSW_M4A1 && aranym4[id] == true)
    {
        entity_set_string(id, EV_SZ_viewmodel, "models/redm4.mdl")
        entity_set_string(id, EV_SZ_weaponmodel, "models/p_aranym4.mdl")    
    }
    if(orokloszer[id] == true)
    {
        fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ weap ] )
    }
}
//sebz�s
public PlayerHurt( victim,inflictor,attacker,Float:damage, DamageBits )
{
    new weap = get_user_weapon(attacker)
    if(weap == CSW_AK47 && aranyak[attacker] == true || weap == CSW_M4A1 && aranym4[attacker] == true)
    {
        SetHamParamFloat(4, damage * 2.0);
    }   
    return HAM_IGNORED; 
}  
//Nvault, ment�s
public mentes(id) 
{
    new vaultkey[64],vaultdata[256]
 
    format(vaultkey,63,"%s-PONTOK", name[id])
    format(vaultdata,255,"%d", pont[id])
 
    nvault_set(g_vault,vaultkey,vaultdata)
    return PLUGIN_CONTINUE
}
public betoltes(id) 
{ 
    new vaultkey[64],vaultdata[256]
 
    format(vaultkey,63,"%s-PONTOK", name[id])
 
    nvault_get(g_vault,vaultkey,vaultdata,255)
 
    pont[id] = str_to_num(vaultdata)
    return PLUGIN_CONTINUE;
}
public client_disconnect(id)
{
    mentes(id);
    remove_task(id);
    pont[id] = 0;
    orokloszer[id] = false
    sebesseg[id] = false
    gravitacio[id] = false
    aranym4[id] = false
    aranyak[id] = false
    hasznalta[id] = 0
}
 
public client_connect(id)
{
    get_user_name(id, name[id], 31)
    betoltes(id);
}
public kuldesmenu(id)
{
        new menu = menu_create("\y[Pont Kuldes]", "kuldes_handler");
        new players[32], pnum, tempid;
        new szName[32], szTempid[10];
        get_players(players, pnum);
        for( new i; i<pnum; i++ )
        {
            tempid = players[i];
            {
                get_user_name(tempid, szName, charsmax(szName));
                num_to_str(tempid, szTempid, charsmax(szTempid));
                menu_additem(menu, szName, szTempid, 0);
            }
            menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
            menu_display(id, menu, 0);
    }
 
} 
public kuldes_handler(id, menu, item)
{
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
    x_tempid = str_to_num(data);
    client_cmd(id, "messagemode MENNYISEG");
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}
public ponts(id)
{        
    new uzenet[121];
    new kuldoneve[32], tempname[32]
    read_args(uzenet, charsmax(uzenet)) 
    remove_quotes(uzenet)
    get_user_name(id, kuldoneve, 31)
    get_user_name(x_tempid, tempname, 31)
 
    pont[x_tempid] += str_to_num(uzenet)
    ColorChat(0, GREEN, "[Pontrendszer] ^3%s ^1adott ^4%d ^1pontot ^3%s^1-nek!", kuldoneve,str_to_num(uzenet),tempname)
 
}