Добро пожаловать

Для полноценного пользования форумом и общения с его участниками, пройдите регистрацию ниже
Регистрация

Плагин Shop

Тема в разделе "Свалка", создана пользователем Hellboy, 17 авг 2015.

  1. Hellboy

    Hellboy Пользователь

    3
    0
    5
    Привет народ. Пытаюсь сделать ограничение на покупку хп. Но не получается, много ошибок, да и почьти ничего не понимаю, помогите. Хотелось бы чтоб maxhp было 1050 и потом в следуюшей покупке было типа вы больше не можете покупать. а еще чтоб больше лимита не покупалось и денег не снимало, пардон за ошибки. Короче мне нужно чтобы больше 1050 хп не устанавливалось

    Код:
    // Uncomment this to enable Unlimited Money support by Ramono
    //#define UL_COMPAT
    
    #include <amxmodx>
    #include <cstrike>
    #include <fakemeta>
    #include <hamsandwich>
    #include <fun>
    
    #if defined UL_COMPAT
       #include <money_ul>
    #endif
    
    /*================================================================================
    [Defines & Variables]
    =================================================================================*/
    
    // Plugin Info
    #define PLUGIN_NAME "CS Shop"
    #define PLUGIN_VERS "5.0"
    #define PLUGIN_AUTH "iNeedHelp" // Old Name :(
    
    // Weapons BitSum (drop stocks)
    #define PRIMARY_WEAPONS_BITSUM ((1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90))
    
    // Max Players
    #define MAX_PLAYERS   32
    
    // Compatibility with Unlimited Money
    #if defined UL_COMPAT
       #define get_user_money(%1) cs_get_user_money_ul(%1)
       #define set_user_money(%1,%2) cs_set_user_money_ul(%1,%2)
    #else
       #define set_user_money(%1,%2) cs_set_user_money(%1,%2)
       #define get_user_money(%1) cs_get_user_money(%1)
    #endif
    
    // Pointers
    new g_pGravityCvarPointer
    
    // Main Cvars
    new g_pCvarEnable
    new g_pCvarMessage
    new g_pCvarPrefix
    
    // Menu Cvars
    new g_pMenuEnableCvars[7]
    
    new g_pCtGunsMenuCvars[6]
    new g_pTeGunsMenuCvars[5]
    
    new g_pInvisibilityMenuCvars[3]
    new g_pGravityMenuCvars[4]
    new g_pHealthMenuCvars[4]
    new g_pSpeedMenuCvars[5]
    new g_pSkinsMenuCvars[2]
    
    // Menu vars
    new g_iHasSpeed[MAX_PLAYERS+1] = { -1, ... }        
    new bool:g_bHasCustomModel[MAX_PLAYERS+1] = { false, ... }  
    
    // Menus Items
    new g_szMainShopMenu[][] =
    {
       "Меню оружия CT",
       "Меню оружия Т",
       "Меню невидимости",
       "Меню гравитации",
       "Меню здоровья",
       "Меню скорости",
       "Меню скинов"
    }
    
    new g_szCTGunsMenu[][] =
    {
       "M4A1",
       "Bullpup",
       "TMP",
       "Five Seven",
       "Famas",
       "Shield"
    }
    
    new g_szTGunsMenu[][] =
    {
       "Ak 47",
       "Krieg 552",
       "Mac 10",
       "Dual Elites",
       "Galil"
    }
    
    new g_szInvisibilityMenu[][] =
    {
       "Слабая",
       "Средняя",
       "Высокая"
    }
    
    new g_szGravityMenu[][] =
    {
       "Грав. 500",
       "Грав.400",
       "Грав. 300",
       "Грав. 200"
    }
    
    new g_szHealthMenu[][] =
    {
       "Здоровье +15",
       "Здоровье +35",
       "Здоровье +65",
       "Здоровье +95"
    }
    
    new g_szSpeedMenu[][] =
    {
       "Скорость 260",
       "Скорость 300",
       "Скорость 340",
       "Скорость 380",
       "Скорость 420"
    }
    
    new g_szSkinsMenu[][] =
    {
       "Скин Т",
       "Скин CT"
    }
    
    // Menus Data
    new g_szCTGunsWeapons[][] =
    {
       "weapon_m4a1",
       "weapon_aug",
       "weapon_tmp",
       "weapon_fiveseven",
       "weapon_famas",
       "weapon_shield"
    }
    
    new g_szTGunsWeapons[][] =
    {
       "weapon_ak47",
       "weapon_sg552",
       "weapon_mac10",
       "weapon_elite",
       "weapon_galil"
    }
    
    new g_szCTGunsAmmo[][] = { "556nato", "556nato", "9mm", "57mm", "556nato" }
    new g_szTGunsAmmo[][] = { "762nato", "556nato", "45acp", "9mm", "556nato" }
    
    new g_iCTGunsLoad[] = { 90, 90, 120, 100, 90 }
    new g_iTGunsLoad[] = { 90, 90, 100, 120, 90 }
    
    new g_iCTGunsMaxAmmo[] = { 90, 90, 120, 100, 90 }
    new g_iTGunsMaxAmmo[] = { 90, 90, 100, 120, 90 }
    
    new g_iInvisibilityLevel[] = { 150, 100, 25 }
    new g_iHealthLevel[] = { 15, 35, 65, 95 }
    
    new Float:g_flGravityLevel[] = { 500.0, 400.0, 300.0, 200.0 }
    new Float:g_flSpeedLevel[] = { 260.0, 300.0, 340.0, 380.0, 420.0 }
    
    new g_szSkinsName[][] = { "gign", "leet" }
    
    // Message Hooks
    new g_iMsgSayText
    
    // Others
    new const g_szShopFile[] = "shop.cfg";   // Shop file
    
    /*================================================================================
    [Init]
    =================================================================================*/
    
    public plugin_init()
    {
       register_plugin(PLUGIN_NAME, PLUGIN_VERS, PLUGIN_AUTH)
      
       // Multi-Lingual
       register_dictionary("shop.txt")
      
       // Commands
       register_clcmd("say /shop", "ClCmd_Say")
       register_clcmd("say_team /shop", "ClCmd_Say")
      
       // Ham Forwards
       RegisterHam(Ham_Spawn, "player", "Fwd_PlayerSpawn_Post", 1)
      
       // FM Forwards
       register_forward(FM_SetClientKeyValue, "Fwd_SetClientKeyValue")
      
       // Events
       register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
      
       // Variables....
      
       // Messages Hooks
       g_iMsgSayText         = get_user_msgid("SayText")
      
       // Cvars
       g_pGravityCvarPointer      = get_cvar_pointer("sv_gravity")
      
       g_pCvarEnable          = register_cvar("amx_shop_enable", "1")
       g_pCvarMessage          = register_cvar("amx_shop_msg", "1")
       g_pCvarPrefix         = register_cvar("amx_shop_prefix", "[CS Shop]")
      
       g_pMenuEnableCvars[0]       = register_cvar("amx_shop_ct", "1")
       g_pCtGunsMenuCvars[0]       = register_cvar("amx_shop_m4a1", "3100")
       g_pCtGunsMenuCvars[1]       = register_cvar("amx_shop_bullpup", "3500")
       g_pCtGunsMenuCvars[2]       = register_cvar("amx_shop_tmp", "1250")
       g_pCtGunsMenuCvars[3]       = register_cvar("amx_shop_fiveseven", "750")
       g_pCtGunsMenuCvars[4]       = register_cvar("amx_shop_famas", "2250")
       g_pCtGunsMenuCvars[5]       = register_cvar("amx_shop_shield", "2200")
      
       g_pMenuEnableCvars[1]       = register_cvar("amx_shop_t", "1")
       g_pTeGunsMenuCvars[0]       = register_cvar("amx_shop_ak47", "2500")
       g_pTeGunsMenuCvars[1]       = register_cvar("amx_shop_sg552", "3500")
       g_pTeGunsMenuCvars[2]       = register_cvar("amx_shop_mac10", "1400")
       g_pTeGunsMenuCvars[3]       = register_cvar("amx_shop_elites", "800")
       g_pTeGunsMenuCvars[4]       = register_cvar("amx_shop_galil", "2000")
      
       g_pMenuEnableCvars[2]       = register_cvar("amx_shop_invis", "1")
       g_pInvisibilityMenuCvars[0]    = register_cvar("amx_shop_low", "3000")
       g_pInvisibilityMenuCvars[1]    = register_cvar("amx_shop_medium", "6000")
       g_pInvisibilityMenuCvars[2]    = register_cvar("amx_shop_high", "12000")
      
       g_pMenuEnableCvars[3]       = register_cvar("amx_shop_grav", "1")
       g_pGravityMenuCvars[0]       = register_cvar("amx_shop_g500", "1500")
       g_pGravityMenuCvars[1]       = register_cvar("amx_shop_g400", "3000")
       g_pGravityMenuCvars[2]       = register_cvar("amx_shop_g300", "4500")
       g_pGravityMenuCvars[3]       = register_cvar("amx_shop_g200", "6000")
      
       g_pMenuEnableCvars[4]       = register_cvar("amx_shop_hp", "1")
       g_pHealthMenuCvars[0]       = register_cvar("amx_shop_15hp", "1500")
       g_pHealthMenuCvars[1]       = register_cvar("amx_shop_35hp", "3000")
       g_pHealthMenuCvars[2]       = register_cvar("amx_shop_65hp", "6000")
       g_pHealthMenuCvars[3]       = register_cvar("amx_shop_95hp", "7500")
         
       g_pMenuEnableCvars[5]       = register_cvar("amx_shop_speed", "1")
       g_pSpeedMenuCvars[0]       = register_cvar("amx_shop_260speed", "3000")
       g_pSpeedMenuCvars[1]       = register_cvar("amx_shop_300speed", "6000")
       g_pSpeedMenuCvars[2]       = register_cvar("amx_shop_340speed", "9000")
       g_pSpeedMenuCvars[3]       = register_cvar("amx_shop_380speed", "12000")
       g_pSpeedMenuCvars[4]       = register_cvar("amx_shop_420speed", "15000")
      
       g_pMenuEnableCvars[6]       = register_cvar("amx_shop_skins", "1")
       g_pSkinsMenuCvars[0]       = register_cvar("amx_shop_tskin", "9000")
       g_pSkinsMenuCvars[1]       = register_cvar("amx_shop_ctskin", "9000")
    }
    
    public plugin_precache()
    {
       new sModels[128]
      
       for (new i = 0; i < sizeof(g_szSkinsName); i++)
       {
          format(sModels, sizeof(sModels)-1, "models/player/%s/%s.mdl", g_szSkinsName[i], g_szSkinsName[i])
          precache_model(sModels)
       }
    }
         
    public plugin_cfg()
    {
       new ConfigsDir[64]
       get_localinfo("amxx_configsdir", ConfigsDir, charsmax(ConfigsDir))
       format(ConfigsDir, charsmax(ConfigsDir), "%s/%s", ConfigsDir, g_szShopFile)
      
       if (!file_exists(ConfigsDir))
       {
          server_print("CS Shop файл [%s] не найден!", ConfigsDir)
          return;
       }
       server_cmd("exec ^"%s^"", ConfigsDir)
    }
    
    /*================================================================================
    [Menus]
    =================================================================================*/
    
    public ClCmd_Say(id)
    {
       if (!is_user_alive(id))
       {
          client_print_c(id, "%L", id, "SHOP_DEAD")
          return PLUGIN_HANDLED
       }
         
       if (!get_pcvar_num(g_pCvarEnable))
       {
          client_print_c(id, "%L", id, "SHOP_DISABLED")
          return PLUGIN_HANDLED
     
  2. Hellboy

    Hellboy Пользователь

    3
    0
    5
    Код:
    }
       Create_Menu(id)
       return PLUGIN_HANDLED
    }
    
    Create_Menu(id)
    {
       new Menu = menu_create("\rCS Shop меню", "MainMenu_Handler")
       new Items[32], Position[3]
      
       for (new i = 0; i < sizeof(g_szMainShopMenu); i++)
       {
          formatex(Items, charsmax(Items), "%s%s",  get_pcvar_num(g_pMenuEnableCvars[i]) ? "\w" : "\d", g_szMainShopMenu[i])
          num_to_str(i, Position, charsmax(Position))
         
          menu_additem(Menu, Items, Position)
       }
       menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL)
       menu_display(id, Menu, 0)     
    }
    
    public MainMenu_Handler(id, Menu, item)
    {
       if (item == MENU_EXIT)
       {
          menu_destroy(Menu)
          return PLUGIN_HANDLED
       }
      
       new Data[6], Name[64];
       new Access, Callback;
       menu_item_getinfo(Menu, item, Access, Data, 5, Name, 63, Callback)
      
       new Key = str_to_num(Data);
      
       switch (Key)
       {
          case 0:
          {
             new Cts_Menu = menu_create("\rОружие CT", "CtMenu_Handler")
             new Items[32], PriceString[32], Position[3]
            
             for (new i = 0; i < sizeof(g_szCTGunsMenu); i++)
             {
                formatex(PriceString, charsmax(PriceString), "- $%d", get_pcvar_num(g_pCtGunsMenuCvars[i]))
                formatex(Items, charsmax(Items), "%s%s %s", get_pcvar_num(g_pCtGunsMenuCvars[i]) > 0 ? "\w" : "\d", g_szCTGunsMenu[i], get_pcvar_num(g_pCtGunsMenuCvars[i]) > 0 ? PriceString : "")
               
                num_to_str(i, Position, charsmax(Position))
               
                menu_additem(Cts_Menu, Items, Position)
             }
               
             menu_setprop(Cts_Menu, MPROP_EXIT, MEXIT_ALL)
            
             if (!get_pcvar_num(g_pMenuEnableCvars[0]))
             {
                client_print_c(id, "%L", id, "SHOP_CT_OFF")
                return PLUGIN_HANDLED;
             }
             else  
                menu_display(id, Cts_Menu, 0)  
          }
         
          case 1:
          {
             new Ts_Menu = menu_create("\rОружие Т", "TeMenu_Handler")
             new Items[32], PriceString[32], Position[3]
            
             for (new i = 0; i < sizeof(g_szTGunsMenu); i++)
             {
                formatex(PriceString, charsmax(PriceString), "- $%d", get_pcvar_num(g_pTeGunsMenuCvars[i]))
                formatex(Items, charsmax(Items), "%s%s %s", get_pcvar_num(g_pTeGunsMenuCvars[i]) > 0 ? "\w" : "\d", g_szTGunsMenu[i], get_pcvar_num(g_pTeGunsMenuCvars[i]) > 0 ? PriceString : "")
               
                num_to_str(i, Position, charsmax(Position))
               
                menu_additem(Ts_Menu, Items, Position)
             }
               
             menu_setprop(Ts_Menu, MPROP_EXIT, MEXIT_ALL)
    
             if (!get_pcvar_num(g_pMenuEnableCvars[1]))
             {
                client_print_c(id, "%L", id, "SHOP_T_OFF")
                return PLUGIN_HANDLED
             }
             else
                menu_display(id, Ts_Menu, 0)
               
          }
         
          case 2:
          {
             new Inv_Menu = menu_create("\rМеню невидимости", "InvisibilityMenu_Handler")
             new Items[32], PriceString[32], Position[3]
            
             for (new i = 0; i < sizeof(g_szInvisibilityMenu); i++)
             {
                formatex(PriceString, charsmax(PriceString), "- $%d", get_pcvar_num(g_pInvisibilityMenuCvars[i]))
                formatex(Items, charsmax(Items), "%s%s %s", get_pcvar_num(g_pInvisibilityMenuCvars[i]) > 0 ? "\w" : "\d", g_szInvisibilityMenu[i], get_pcvar_num(g_pInvisibilityMenuCvars[i]) > 0 ? PriceString : "")
               
                num_to_str(i, Position, charsmax(Position))
               
                menu_additem(Inv_Menu, Items, Position)
             }
               
             menu_setprop(Inv_Menu, MPROP_EXIT, MEXIT_ALL)
         
             if (!get_pcvar_num(g_pMenuEnableCvars[2]))
             {
                client_print_c(id, "%L", id, "SHOP_INVIS_OFF")
                return PLUGIN_HANDLED
             }
             else
                menu_display(id, Inv_Menu, 0)  
          }
         
          case 3:
          {
             new Grav_Menu = menu_create("\rМеню гравитации", "GravityMenu_Handler")
             new Items[32], PriceString[32], Position[3]
            
             for (new i = 0; i < sizeof(g_szGravityMenu); i++)
             {
                formatex(PriceString, charsmax(PriceString), "- $%d", get_pcvar_num(g_pGravityMenuCvars[i]))
                formatex(Items, charsmax(Items), "%s%s %s", get_pcvar_num(g_pGravityMenuCvars[i]) > 0 ? "\w" : "\d", g_szGravityMenu[i], get_pcvar_num(g_pGravityMenuCvars[i]) > 0 ? PriceString : "")
               
                num_to_str(i, Position, charsmax(Position))
               
                menu_additem(Grav_Menu, Items, Position)
             }
               
             menu_setprop(Grav_Menu, MPROP_EXIT, MEXIT_ALL)
            
             if (!get_pcvar_num(g_pMenuEnableCvars[3]))
             {
                client_print_c(id, "%L", id, "SHOP_GRAV_OFF")
                return PLUGIN_HANDLED
             }
             else
                menu_display(id, Grav_Menu, 0)  
          }
         
          case 4:
          {
             new Hp_Menu = menu_create("\rМеню здоровья", "HealthMenu_Handler")
             new Items[32], PriceString[32], Position[3]
            
             for (new i = 0; i < sizeof(g_szHealthMenu); i++)
             {
                formatex(PriceString, charsmax(PriceString), "- $%d", get_pcvar_num(g_pHealthMenuCvars[i]))
                formatex(Items, charsmax(Items), "%s%s %s", get_pcvar_num(g_pHealthMenuCvars[i]) > 0 ? "\w" : "\d", g_szHealthMenu[i], get_pcvar_num(g_pHealthMenuCvars[i]) > 0 ? PriceString : "")
               
                num_to_str(i, Position, charsmax(Position))
               
                menu_additem(Hp_Menu, Items, Position)
             }
               
             menu_setprop(Hp_Menu, MPROP_EXIT, MEXIT_ALL)
            
             if (!get_pcvar_num(g_pMenuEnableCvars[4]))
             {
                client_print_c(id, "%L", id, "SHOP_HEALTH_OFF")
                return PLUGIN_HANDLED
             }  
             else
                menu_display(id, Hp_Menu, 0)  
          }
    
          case 5:
          {
             new Speed_Menu = menu_create("\rМеню скорости", "SpeedMenu_Handler")
             new Items[32], PriceString[32], Position[3]
            
             for (new i = 0; i < sizeof(g_szSpeedMenu); i++)
             {
                formatex(PriceString, charsmax(PriceString), "- $%d", get_pcvar_num(g_pSpeedMenuCvars[i]))
                formatex(Items, charsmax(Items), "%s%s %s", get_pcvar_num(g_pSpeedMenuCvars[i]) > 0 ? "\w" : "\d", g_szSpeedMenu[i], get_pcvar_num(g_pSpeedMenuCvars[i]) > 0 ? PriceString : "")
               
                num_to_str(i, Position, charsmax(Position))
               
                menu_additem(Speed_Menu, Items, Position)
             }     
            
             menu_setprop(Speed_Menu, MPROP_EXIT, MEXIT_ALL)
         
             if (!get_pcvar_num(g_pMenuEnableCvars[5]))
             {
                client_print_c(id, "%L", id, "SHOP_SPEED_OFF")
                return PLUGIN_HANDLED
             }  
             else
                menu_display(id, Speed_Menu, 0)  
          }
         
          case 6:
          {
             new Skins_Menu = menu_create("\yМеню скоростей", "SkinsMenu_Handler")
             new Items[32], PriceString[32], Position[3]
            
             for (new i = 0; i < sizeof(g_szSkinsMenu); i++)
             {
                formatex(PriceString, charsmax(PriceString), "- $%d", get_pcvar_num(g_pSkinsMenuCvars[i]))
                formatex(Items, charsmax(Items), "%s%s %s", get_pcvar_num(g_pSkinsMenuCvars[i]) > 0 ? "\w" : "\d", g_szSkinsMenu[i], get_pcvar_num(g_pSkinsMenuCvars[i]) > 0 ? PriceString : "")
               
                num_to_str(i, Position, charsmax(Position))
               
                menu_additem(Skins_Menu, Items, Position)
             }     
            
             menu_setprop(Skins_Menu, MPROP_EXIT, MEXIT_ALL)
         
             if (!get_pcvar_num(g_pMenuEnableCvars[6]))
             {
                client_print_c(id, "%L", id, "SHOP_SKINS_OFF")
                return PLUGIN_HANDLED
             }
             else
                menu_display(id, Skins_Menu, 0)
          }
       }
       menu_destroy(Menu)
       return PLUGIN_HANDLED
    }
    
    public CtMenu_Handler(id, Cts_Menu, item)
    {
       if (item == MENU_EXIT)
       {
          menu_destroy(Cts_Menu)
          return PLUGIN_HANDLED
       }
      
       new Data[6], Name[64]
       new Access, Callback;
       menu_item_getinfo(Cts_Menu, item, Access, Data, 5, Name, 63, Callback)
      
       new Key = str_to_num(Data)
      
       new Money = get_user_money(id)
       new Pcvar = get_pcvar_num(g_pCtGunsMenuCvars[Key])
            
       if (!Pcvar)
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_DISABLED")
          return PLUGIN_HANDLED
       }
            
       if (Money < Pcvar)
          client_print_c(id, "%L", id, "SHOP_ITEM_MONEY")
       else
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_BUY", g_szCTGunsMenu[Key])
               
          set_user_money(id, Money-Pcvar)
         
          if (equali(g_szCTGunsMenu[Key], "Five Seven"))
             secondary_wpn_drop(id)
          else
             primary_wpn_drop(id)
         
          give_item(id, g_szCTGunsWeapons[Key])  
         
          if (!equali(g_szCTGunsMenu[Key], "Shield"))
             ExecuteHamB(Ham_GiveAmmo, id, g_iCTGunsLoad[Key], g_szCTGunsAmmo[Key], g_iCTGunsMaxAmmo[Key])
       }
       menu_destroy(Cts_Menu)
       return PLUGIN_HANDLED
    }
    
    public TeMenu_Handler(id, Tts_Menu, item)
    {
       if (item == MENU_EXIT)
       {
          menu_destroy(Tts_Menu)
          return PLUGIN_HANDLED
       }
      
       new Data[6], Name[64]
       new Access, Callback;
       menu_item_getinfo(Tts_Menu, item, Access, Data, 5, Name, 63, Callback)
      
       new Key = str_to_num(Data)
      
       new Money = get_user_money(id)
       new Pcvar = get_pcvar_num(g_pTeGunsMenuCvars[Key])
      
       if (!Pcvar)
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_DISABLED")
          return PLUGIN_HANDLED
       }
      
       if (Money < Pcvar)
          client_print_c(id, "%L", id, "SHOP_ITEM_MONEY")
       else
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_BUY", g_szTGunsMenu[Key])
         
          set_user_money(id, Money-Pcvar)
         
          if (equali(g_szTGunsMenu[Key], "Dual Elites"))
             secondary_wpn_drop(id)
          else
             primary_wpn_drop(id)
         
          give_item(id, g_szTGunsWeapons[Key])
     
  3. Hellboy

    Hellboy Пользователь

    3
    0
    5
    Код:
    ExecuteHamB(Ham_GiveAmmo, id, g_iTGunsLoad[Key], g_szTGunsAmmo[Key], g_iTGunsMaxAmmo[Key])
       }
       menu_destroy(Tts_Menu)
       return PLUGIN_HANDLED
    }
    
    public InvisibilityMenu_Handler(id, Inv_Menu, item)
    {
       if (item == MENU_EXIT)
       {
          menu_destroy(Inv_Menu)
          return PLUGIN_HANDLED
       }
      
       new Data[6], Name[64]
       new Access, Callback;
       menu_item_getinfo(Inv_Menu, item, Access, Data, 5, Name, 63, Callback)
      
       new Key = str_to_num(Data)
      
       new Money = get_user_money(id)
       new Pcvar = get_pcvar_num(g_pInvisibilityMenuCvars[Key])
            
       if (!Pcvar)
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_DISABLED")
          return PLUGIN_HANDLED
       }
         
       if (Money < Pcvar)
          client_print_c(id, "%L", id, "SHOP_ITEM_MONEY")
       else
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_BUY", g_szInvisibilityMenu[Key])
         
          set_user_money(id, Money-Pcvar)
          set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, g_iInvisibilityLevel[Key])
       }
       menu_destroy(Inv_Menu)
       return PLUGIN_HANDLED
    }
    
    public GravityMenu_Handler(id, Grav_Menu, item)
    {
       if (item == MENU_EXIT)
       {
          menu_destroy(Grav_Menu)
          return PLUGIN_HANDLED
       }
      
       new Data[6], Name[64]
       new Access, Callback;
       menu_item_getinfo(Grav_Menu, item, Access, Data, 5, Name, 63, Callback)
    
       new Key = str_to_num(Data)
      
       new Money = get_user_money(id)
       new Pcvar = get_pcvar_num(g_pGravityMenuCvars[Key])
            
       if (!Pcvar)
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_DISABLED")
          return PLUGIN_HANDLED
       }
            
       if (Money < Pcvar)
          client_print_c(id, "%L", id, "SHOP_ITEM_MONEY")
       else
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_BUY", g_szGravityMenu[Key])
               
          set_user_money(id, Money-Pcvar)
          set_user_gravity(id, (g_flGravityLevel[Key] / get_pcvar_float(g_pGravityCvarPointer)))
       }
       menu_destroy(Grav_Menu)
       return PLUGIN_HANDLED
    }               
    
    public HealthMenu_Handler(id, Hp_Menu, item)
    {
       if (item == MENU_EXIT)
       {
          menu_destroy(Hp_Menu)
          return PLUGIN_HANDLED
       }
      
       new Data[6], Name[64]
       new Access, Callback
       menu_item_getinfo(Hp_Menu, item, Access, Data, 5, Name, 63, Callback)
      
       new Key = str_to_num(Data)
      
       new Money = get_user_money(id)
       new Pcvar = get_pcvar_num(g_pHealthMenuCvars[Key])
       new Health = get_user_health(id)
            
       if (!Pcvar)
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_DISABLED")
          return PLUGIN_HANDLED
       }
            
       if (Money < Pcvar)
          client_print_c(id, "%L", id, "SHOP_ITEM_MONEY")
       else
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_BUY", g_szHealthMenu[Key])
               
          set_user_money(id, Money-Pcvar)
          set_user_health(id, Health+g_iHealthLevel[Key])  
       }
       menu_destroy(Hp_Menu)
       return PLUGIN_HANDLED
    }                           
    
    public SpeedMenu_Handler(id, Speed_Menu, item)
    {
       if (item == MENU_EXIT)
       {
          menu_destroy(Speed_Menu)
          return PLUGIN_HANDLED
       }
      
       new Data[6], Name[64]
       new Access, Callback;
       menu_item_getinfo(Speed_Menu, item, Access, Data, 5, Name, 63, Callback)
      
       new Key = str_to_num(Data)
      
       new Money = get_user_money(id)
       new Pcvar = get_pcvar_num(g_pSpeedMenuCvars[Key])
            
       if (!Pcvar)
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_DISABLED")
          return PLUGIN_HANDLED
       }
            
       if (Money < Pcvar)
          client_print_c(id, "%L", id, "SHOP_ITEM_MONEY")
       else
       {
          g_iHasSpeed[id] = Key
               
          client_print_c(id, "%L", id, "SHOP_ITEM_BUY", g_szSpeedMenu[Key])
               
          set_user_money(id, Money-Pcvar)
          set_user_maxspeed(id, g_flSpeedLevel[Key])
       }
       menu_destroy(Speed_Menu)
       return PLUGIN_HANDLED
    }                          
    
    public SkinsMenu_Handler(id, Mdl_Menu, item)
    {
       if (item == MENU_EXIT)
       {
          menu_destroy(Mdl_Menu)
          return PLUGIN_HANDLED
       }
      
       new Data[6], Name[64]
       new Access, Callback
       menu_item_getinfo(Mdl_Menu, item, Access, Data, 5, Name, 63, Callback)
      
       new Key = str_to_num(Data)
      
       new Money = get_user_money(id)
       new Pcvar = get_pcvar_num(g_pSkinsMenuCvars[Key])
      
       new CsTeams:Team = cs_get_user_team(id)
            
       if (!Pcvar)
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_DISABLED")
          return PLUGIN_HANDLED
       }  
            
       switch (Team)
       {
          case CS_TEAM_T:
          {
             if (Key == 0)
             {
                client_print_c(id, "%L", id, "SHOP_ITEM_NOT")
                return PLUGIN_HANDLED
             }
          }
         
          case CS_TEAM_CT:
          {
             if (Key == 1)
             {
                client_print_c(id, "%L", id, "SHOP_ITEM_NOCT")
                return PLUGIN_HANDLED
             }
          }
       }
               
       if (Money < Pcvar)
          client_print_c(id, "%L", id, "SHOP_ITEM_MONEY")
       else
       {
          client_print_c(id, "%L", id, "SHOP_ITEM_BUY", g_szSkinsMenu[Key])
               
          set_user_money(id, Money-Pcvar)
          fm_set_user_model(id, g_szSkinsName[Key])
       }        
       menu_destroy(Mdl_Menu)
       return PLUGIN_HANDLED
    }  
      
    /*================================================================================
    [Forwards]
    =================================================================================*/
    
    public Fwd_PlayerSpawn_Post(id)
    {
       if (is_user_alive(id))
       {
          set_user_rendering(id)
          set_user_gravity(id, 1.0)
      
          if (g_bHasCustomModel[id])
             fm_reset_user_model(id)
      
          if (g_iHasSpeed[id])
          {
             set_user_maxspeed(id, 250.0)
             g_iHasSpeed[id] = -1
          }
         
          if (get_pcvar_num(g_pCvarEnable))
             if (get_pcvar_num(g_pCvarMessage))
                client_print_c(id, "%L", id, "SHOP_PRINT")
       }
    }
    
    public Fwd_SetClientKeyValue(id, const infobuffer[], const key[])
    {  
       if (g_bHasCustomModel[id] && equal(key, "model"))
          return FMRES_SUPERCEDE
           
       return FMRES_IGNORED
    }
    
    public Event_CurWeapon(id)
    {
       if (!is_user_alive(id))
          return
      
       switch (g_iHasSpeed[id])
       {
          case 0: set_user_maxspeed(id, 260.0)
          case 1: set_user_maxspeed(id, 300.0)
          case 2: set_user_maxspeed(id, 340.0)
          case 3: set_user_maxspeed(id, 380.0)
          case 4: set_user_maxspeed(id, 420.0)
       }
    }
    
    /*================================================================================
    [Stocks]
    =================================================================================*/  
      
    stock primary_wpn_drop(index)
    {
       new weapons[32], num, Weapon
       get_user_weapons(index, weapons, num)
      
       for (new i = 0; i < num; i++)
       {
          Weapon = weapons[i]
         
          if (PRIMARY_WEAPONS_BITSUM & (1<<Weapon))
          {
             static wname[32]
             get_weaponname(Weapon, wname, sizeof wname - 1)
            
             engclient_cmd(index, "drop", wname)
          }
       }
    }
    
    stock secondary_wpn_drop(index)
    {
       new weapons[32], num, Weapon
       get_user_weapons(index, weapons, num)
      
       for (new i = 0; i < num; i++)
       {
          Weapon = weapons[i]
         
          if (!(PRIMARY_WEAPONS_BITSUM & (1<<Weapon)))
          {
             static wname[32]
             get_weaponname(Weapon, wname, sizeof wname - 1)
            
             engclient_cmd(index, "drop", wname)
          }
       }
    }   
    
    stock fm_set_user_model(index, const mdl[])
    {
       engfunc(EngFunc_SetClientKeyValue, index, engfunc(EngFunc_GetInfoKeyBuffer, index), "model", mdl)
       g_bHasCustomModel[index] = true
    }
    
    stock fm_reset_user_model(index)
    {
       g_bHasCustomModel[index] = false
       dllfunc(DLLFunc_ClientUserInfoChanged, index, engfunc(EngFunc_GetInfoKeyBuffer, index))
    }
    
    stock client_print_c(index, const Msg[], {Float, Sql, Result,_}:...)
    {
       if (!is_user_connected(index))
          return;
      
       new Buffer[512], Buffer2[512], Prefix[32]
       get_pcvar_string(g_pCvarPrefix, Prefix, charsmax(Prefix))
       formatex(Buffer2, charsmax(Buffer2), "^x04%s ^x01%s", Prefix, Msg);
       vformat(Buffer, charsmax(Buffer), Buffer2, 3);
      
       message_begin(MSG_ONE_UNRELIABLE, g_iMsgSayText, _, index);
       write_byte(index);
       write_string(Buffer);
       message_end();
    }