vip menu

Musamuhamed

Заблокированные
Пользователь
Регистрация
24 Июл 2017
Сообщения
135
Симпатии
18
Пол
Мужской
#1
есть плагин вип меню
там есть авто выдача диглга вкл/выкл
по дефолту выключена
как сделать что бы по дефолту включить
сохранение по nvault
чтобы автоматический вкл после игрок что бы мог отключить
Код:
#define PLUGIN      "VIP Account Additions"

#define AUTHOR      "ill(+wopox)"

#define VERSION     "2.23a4"


/*  14.03.16

    v.2.2 (by wopox)

        - Добавлена настройка дефайнов моделей оружия, выдача бонусов в виде денег, и подробные настройки к ним. (всё опционально) ;

        - G3/SG-1 в вип меню заменено на GALIL ;

        - Добавлена настройка информирования: Сообщение при коннекте, и его звук можно отключить ;

        - Использован правильный метод выставления VIP флага в таблице счёта (thx to Safety1st) ;

        - Добавлена настройка на отображение VIP в таблице счёта ;

        - Добавлена настройка использования Автоответичиков MOTD (/vipka, /adminka) ;

        - Добавлена настройка VAMPIRE - отключение\включение функции прибавления HP при убийстве ;

        - Добавлена настройка на использование конфига для плагина, и настройка его имени ;

        - Добавлено удаление некоторых оружий (G3/SG-1, AWP), выкинутых VIP-игроком ;

        - Исправлено сообщение о запрете выдачи Снайперских винтовок (ранее при вводе в чат /awp писало, что !автоматы вы уже брали) ;

        - Добавлена DHUD визаулизация к функции VAMPIRE ;

        - Добавлена настройка "с какого раунда доступна VIP меню" ;

    v.2.21

        - Исправлен баг с показом полученного дамага, даже при отключении дамагера в меню;

        - Исправлен баг с не рабочим exec vip.cfg;

        - Добавлена команда в чат /galil - выдача Galil;

        - #include <dhudmessage> исключён, если отключена дефайном функция VAMPIRE;

    v.2.22

        - Фикс дропа, для чат команд, если он уже есть (say /dgl,ak47,awp);

        - Убраны магические числа из функций выдачи оружия;

        - Добавлена настройка с какого раунда разрешить выдачу AWP, M249 (AWPM249MINROUND);

        - Добавлены дефайны на начальные раунды для фукнций меню и выдачи оружия;

    v.2.22f1

        - Пофикшена функция показа урона. (!!!);

        - Добавлена возможность показа меню на функцию включения фонарика;

        - Не большая оптимизация кода (сообщения о запрете оружий);

    v.2.23

        - Убран квар макс. количества получения снайперских винтовок из меню;

        - Добавлена возможность установки количества выдаваемых FB гранат;

        - Добавлена возможность установить количество брони, выдаваемое VIP игроку;

        - Не значительная оптимизация VAMPIRE;

        - Добавлены квары: vip_money_bonus, vip_maxmoney_bonus, vip_maxbonushp;

        - Добавлена команда в чат /m249 - выдача пулемёта;

    v.2.23a2

        - Добавлена команда подгрузки конфига плагина;

        - Добавлено информирование в консоль сервера при отсутствии конфига;

        - Добавлена функция выдачи девушкам повышенной брони (дефайн);

        - Добавлен квар, отображающий версию плагина;

        - Фикс выдачи бонус денег в первом раунде при VIPSTARTROUND = 1;

        - Изменён метод добавки денег.

       

    v.2.23.a3

        - По дефу выдаётся дигл.

        - Добавлен срок окончания услуги в меню випки ( совместная работа с плагином adminload https://goldsrc.ru/topic/760/ )

        - Компиляция с инклудом от плагина adminload (#include <adminload>)

*/


#include <amxmodx>

#include <amxmisc>

#include <hamsandwich>

#include <fakemeta>

#include <fun>

#include <cstrike>

#include <nvault>

#include <adminload>


#if AMXX_VERSION_NUM >= 183

    #define client_disconnect client_disconnected

#endif


/* НАСТРОЙКА ПЛАГИНА **********************/       


#define VIP_LEVEL       ADMIN_LEVEL_H

#define ADMIN_LEVEL     ADMIN_BAN  

#define GIRL_LEVEL      ADMIN_LEVEL_G

       

#define CONNECTVIPNOTICE                    // Оповещение, при заходе VIP игрока

#if defined CONNECTVIPNOTICE

    #define SOUND_CONNECT                   // Использоват ли звук при оповещении. Закомментируйте, если не нужно.

#endif


//#define MONEY_BONUS                       // Выдача денежного бонуса VIP игрокам. Закомментируйте, если не нужно.


#define VIPSTARTROUND   1                   // С какого раунда начнёт работать меню и действовать выдача VIP дополнений (Броня, гранаты, щипцы)

#define AUTOMINROUND    2                   // С какого раунда можно брать автоматы

#define AWPM249MINROUND 3                   // С какого раунда можно брать AWP, M249

#define OPENMENUROUND   2                   // С какого раунда открывать меню


#define INFORMERS                           // Автоответичики MOTD (/vipka, /adminka)

#define TABVIPSHOW                          // Включить показ VIP флага в таблице счёта (TAB)

#define DELETEDROP                          // Удаление дропа (скорострелки, AWP) от VIP игроков

#define VAMPIRE                             // Прибавление HP при убийстве противника

#if defined VAMPIRE

    #define VAMPIRE_MESSAGE_POS         1.0, 0.8                // Позиция сообщении о прибавке HP.

    #define VAMPIRE_MESSAGE_COLOR       0, 255, 0               // Цвет сообщения, информера HP. Тип цвета RGB, http://www.colorschemer.com/online.html

#endif


//#define USECONFIG "vip.cfg"                   // Использовать ли конфиг для плагина


#define IMPULSEHOOKID   100             // Функция отображения меню на "F"

#if defined IMPULSEHOOKID

    #include <engine>

#endif


//#define GIRLARMOR 200                         // Выдача дополнительного ARMOR девушкам

        /* НАСТРОЙКА ПЛАГИНА **********************/


#define isVIP(%1)           (get_user_flags(%1) & VIP_LEVEL)

#define isGIRL(%1)          (get_user_flags(%1) & GIRL_LEVEL)


#if defined SOUND_CONNECT

new const sound_vip[] = { "sound/vip_connect.mp3" }  // путь к вашему звуку приветствия VIP (.mp3)

#endif


#define PDATA_SAFE 2

#define m_iAccount 115


const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0

const PRIMARY_WEAPONS_BIT_SUM =

(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)

const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|

(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

new const MAXBPAMMO[] = { -1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120,

            30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100 }

new const AMMOTYPE[][] = { "", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato", "", "9mm", "57mm", "45acp",

            "556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm", "556natobox", "buckshot",

            "556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm" }



new g_maxplayers, g_msgSayText, g_HudSync


new round_count

#if defined VAMPIRE

new cvar_kill_hp, cvar_kill_hs, cvar_kill_hp_max

#endif

new cvar_dgl, cvar_he, cvar_fl, cvar_sm, cvar_armor, cvar_dmg, cvar_menu_auto, cvar_menu_def, cvar_maxtime

#if defined MONEY_BONUS

new cvar_moneybonus, cvar_Maxmoneybonus

#endif

new cvar_take_secondary, cvar_take_primary

new g_take_pistol[33]

new g_take_autom[33]

new g_auto_dgl[33], g_auto_menu[33]

new g_damager[33]

new g_Save

new g_iRoundStart

new bool:g_ViewMenu[33]

new bool:g_EditMenu[33]

new bool:g_bLoadAuth = false;


public plugin_init()

{

    register_plugin(PLUGIN, VERSION, AUTHOR)

    #if defined TABVIPSHOW

    register_message( get_user_msgid ("ScoreAttrib"), "msg_ScoreAttrib" )

    #endif

    register_clcmd("vipmenu", "press_wm")                       // Команда для вызова VIP меню

    register_clcmd("say /vipmenu", "press_wm")

    #if defined IMPULSEHOOKID

    register_impulse(IMPULSEHOOKID, "press_wm")                 // Меню на F

    #endif 

    #if defined INFORMERS                                      

    register_clcmd("say /vip", "vip_motd")                  // Команда для вызова Окна продажи VIP прав

    register_clcmd("say /admin", "admin_motd")              // Команда для вызова Окна продажи Админских прав

    #endif                                                     

    register_clcmd("say /dgl",      "take_dgl")                 // Команда выдачи в чат Deagle

    register_clcmd("say /usp",      "take_usp")                 // Команда выдачи в чат USP

    register_clcmd("say /glk",      "take_glk")                 // Команда выдачи в чат Glock18

    register_clcmd("say /five",     "take_five")                // Команда выдачи в чат FiveSeven

    register_clcmd("say /ak47",     "take_ak47")                // Команда выдачи в чат AK-47

    register_clcmd("say /m4a1",     "take_m4a1")                // Команда выдачи в чат M4A1

    register_clcmd("say /famas",    "take_famas")               // Команда выдачи в чат FAMAS

    register_clcmd("say /galil",    "take_galil")               // Команда выдачи в чат GALIL

    register_clcmd("say /awp",      "take_awp")                 // Команда выдачи в чат AWP

    register_clcmd("say /m249",     "take_m249")                // Команда выдачи в чат AWP

    #if defined USECONFIG

    register_clcmd("vip_load",      "load_config", ADMIN_RCON, "Load the VIP plugin config")     // Команда подгрузки конфига

    #endif

   

    register_menu("VIP Weapon", KEYSMENU, "weapon_menu")

   

    register_event("HLTV", "RoundStart", "a", "1=0", "2=0")

    register_event("TextMsg", "RoundRestart", "a", "2=#Game_Commencing", "2=#Game_will_restart_in")

    register_event("Damage", "damage_message", "b", "2!0", "3=0", "4!0")

    #if defined VAMPIRE

    register_event("DeathMsg", "on_death", "a", "1>0")

    #endif

    #if defined MODEL_WEAPONS

    register_event("CurWeapon","CurrentWeapon","be","1=1")

    #endif

   

    RegisterHam(Ham_Spawn, "player", "fw_SpawnPost", 1)

    #if defined DELETEDROP

    register_forward(FM_SetModel, "fw_SetModel")

    #endif

    #if defined VAMPIRE

    cvar_kill_hp_max =  register_cvar("vip_bonus_hpmax", "100")         // Максимальное HP игрока

    cvar_kill_hp =      register_cvar("vip_bonus_hp", "10")             // Прибавка указанного HP за убийство в тело

    cvar_kill_hs =      register_cvar("vip_bonus_hp_hs", "15")      // Прибавка указанного HP за убийство в голову

    #endif

    cvar_dgl = register_cvar("vip_dgl", "1")                    // Функция получения:   Deagle

    cvar_he = register_cvar("vip_he", "1")                      //                      HE

    cvar_fl = register_cvar("vip_fb", "2")                      //                      FB *2 (Максимум 2 флешки)

    cvar_sm = register_cvar("vip_sg", "1")                      //                      SG

    cvar_armor = register_cvar("vip_armor", "100")              //                      Брони (количество от 0 до 999)

    cvar_dmg = register_cvar("vip_dmg", "1")                    // Функция дамагера

    cvar_menu_auto = register_cvar("vip_menu_set", "1")         // Функция автопоказа VIPменю

    cvar_menu_def = register_cvar("vip_menu_def", "0")          // Автопоказ VIPmenu включен по стандарту

    cvar_take_secondary = register_cvar("vip_take_secondary", "2")      // Сколько раз за раунд можно взять оружие из 2 слота из VIPmenu

    cvar_take_primary = register_cvar("vip_take_primary", "2")          // Сколько раз за раунд можно взять оружие из 1 слота из VIPmenu

    cvar_maxtime = register_cvar("vip_take_maxtime", "120")             // Сколько времени от начала раунда можно брать оружие из VIPменю (секунд)

    #if defined MONEY_BONUS

    cvar_moneybonus = register_cvar("vip_bonus_money", "0")     // Количество бонусных денег. (0 - отключить)

    cvar_Maxmoneybonus = register_cvar("vip_bonus_moneymax", "3000")    // Если у игрока на счету больше чем значение данного макроса, то ему выдаваться деньги не будут.

    #endif

    register_cvar ("vip_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY)

   

    g_maxplayers = get_maxplayers()

    g_msgSayText = get_user_msgid("SayText")

    g_HudSync = CreateHudSyncObj()

    g_Save = nvault_open("vip_settings")

    #if defined USECONFIG

    load_config()

    #endif

}


#if defined TABVIPSHOW

public msg_ScoreAttrib( msg_id, msg_dest, receiver ) {

    #define ARG_PlayerID    1

    #define ARG_Flags       2

    #define SCOREBOARD_VIP  (1 << 2)


    if( get_user_flags( get_msg_arg_int(ARG_PlayerID) ) & VIP_LEVEL )

        set_msg_arg_int( ARG_Flags, ARG_BYTE, get_msg_arg_int(ARG_Flags) | SCOREBOARD_VIP )

}

#endif


#if defined USECONFIG

public load_config()

{

    static g_ConfigsDir[64], g_FileName[256]

    get_configsdir(g_ConfigsDir, charsmax(g_ConfigsDir))

    format(g_FileName, 255, "%s/%s",g_ConfigsDir ,USECONFIG)

    if(!file_exists(g_FileName))

    {

        server_print("[WARN] VIP Account: config %s/%s no exist!",g_ConfigsDir ,USECONFIG)

        return

    }

    server_cmd("exec %s/%s", g_ConfigsDir, USECONFIG)

    //server_print("VIP Account %s Loaded", VERSION)

}

#endif


public plugin_precache()

{

#if defined SOUND_CONNECT

    precache_generic(sound_vip)

    #endif

}


public plugin_natives()

{

    register_native("vip_auto_deagle", "native_vip_auto_deagle", 1)

}


public adminload_loaded()

{

    g_bLoadAuth = true;

}


public native_vip_auto_deagle(id)

{

    if(!isVIP(id))

        return PLUGIN_HANDLED

       

    return g_auto_dgl[id]

}


public RoundStart()

{

    round_count++


    for(new id = 1; id <= g_maxplayers; id++)

    {

        g_take_pistol[id] = 0

        g_take_autom[id] = 0

    }


    g_iRoundStart = get_systime()

}


public client_putinserver(id)

{

    g_auto_dgl[id] = 1

    g_damager[id] = 1

    g_auto_menu[id] = get_pcvar_num(cvar_menu_def)

    g_ViewMenu[id] = false

    g_EditMenu[id] = false


    if(g_bLoadAuth)

    {

        ConnectVip(id);

    } else {

        set_task(random_float(3.0, 5.0), "ConnectVip", id);

    }

}


public ConnectVip(id)

{

    if(is_user_connected(id) && isVIP(id))

    {

    #if defined CONNECTVIPNOTICE

        new name[33]

        get_user_name(id, name, 32)

        colored_print(0, "^x01Подключается^x04 VIP ^x01игрок ^x04%s", name)

       

        #if defined SOUND_CONNECT

        client_cmd(0, "mp3 play ^"%s^"", sound_vip)

        #endif

    #endif


        LoadSet(id);


        return 1;

    }

    return 0;

}


public LoadSet(id)

{

    new vaultkey[64], vaultdata[256], AuthID[33]


    get_user_authid(id, AuthID, 32)

    formatex(vaultkey, 64, "%s-/", AuthID)

    nvault_get(g_Save, vaultkey, vaultdata, 255)

    replace_all(vaultdata, 255, "#", " ")


    new data[3]

    new data2[3]


    parse(vaultdata, data, 2, data2, 2)


    g_auto_dgl[id] = str_to_num(data)

    g_damager[id] = str_to_num(data2)

}


public SaveSet(id)

{

    new vaultkey[64], vaultdata[256]

   

    new AuthID[33]

    get_user_authid(id, AuthID, 32)

   

    formatex(vaultkey, 64, "%s-/", AuthID)

    format(vaultdata, 255, "%i#%i#", g_auto_dgl[id], g_damager[id])


    nvault_set(g_Save, vaultkey, vaultdata)

}


public client_disconnect(id)

{

    remove_task(id);


    if(g_EditMenu[id] == true && isVIP(id))

    {

        SaveSet(id);

    }

}


public RoundRestart(id)

{

    round_count = 0


    for(new id = 1; id <= g_maxplayers; id++)

    {

        g_take_pistol[id] = 0

        g_take_autom[id] = 0

    }

}


public RestWeaponsMsgAlive(id)  colored_print(id, "^x04[VIP]^x01 Доступно только когда вы живы.")

public RestMenuMsgMinRounds(id) colored_print(id, "^x04[VIP]^x01 Меню доступно с ^x04%d^x01 раунда, не нарушайте баланс игры!", OPENMENUROUND)

public RestWeaponsMsgAccess(id) colored_print(id, "^x04[VIP]^x01 Доступно только ^x04VIP^x01 игрокам.")

public RestWeaponsMsgTime(id)   colored_print(id, "^x04[VIP]^x01 Можно брать только в первые ^x04%d^x01 сек от начала раунда.", get_pcvar_num(cvar_maxtime))

public RestPistMsgMaxTake(id)   colored_print(id, "^x04[VIP]^x01 Пистолеты доступны только ^x04%d^x01 раза за раунд.", get_pcvar_num(cvar_take_secondary))

public RestAutomMsgMinRound(id) colored_print(id, "^x04[VIP]^x01 Автоматы доступны с ^x04%d^x01 рануда.", AUTOMINROUND)

public RestAutomMsgMaxTake(id)  colored_print(id, "^x04[VIP]^x01 Автоматы доступны только ^x04%d^x01 раз за раунд.", get_pcvar_num(cvar_take_primary))

public RestAWPMsgMinRound(id)   colored_print(id, "^x04[VIP]^x01 Доступно только с ^x04%d^x01 раунда.", AWPM249MINROUND)

public RestAWPMsgMaxTake(id)    colored_print(id, "^x04[VIP]^x01 AWP и M249 доступны только ^x04%d^x01 раз за раунд.", get_pcvar_num(cvar_take_primary))


public take_dgl(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }  

    if(g_take_pistol[id] == get_pcvar_num(cvar_take_secondary))

    {

        RestPistMsgMaxTake(id)

        return PLUGIN_HANDLED

    }

    if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))

    {

        RestWeaponsMsgTime(id)

        return PLUGIN_HANDLED

    }

   

    if(!user_has_weapon(id, CSW_DEAGLE))

    {

        drop_weapons(id, 2)

        give_item(id,"weapon_deagle")

    }

    cs_set_user_bpammo(id, CSW_DEAGLE, 35)

   

    g_take_pistol[id]++

   

    return PLUGIN_HANDLED

}


public take_usp(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }  

    if(g_take_pistol[id] == get_pcvar_num(cvar_take_secondary))

    {

        RestPistMsgMaxTake(id)

        return PLUGIN_HANDLED

    }

    if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))

    {

        RestWeaponsMsgTime(id)

        return PLUGIN_HANDLED

    }

   

    if(!user_has_weapon(id, CSW_USP))

    {

        drop_weapons(id, 2)

        give_item(id,"weapon_usp")

    }

    cs_set_user_bpammo(id, CSW_USP, 120)

   

    g_take_pistol[id]++

   

    return PLUGIN_HANDLED

}


public take_glk(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }  

    if(g_take_pistol[id] == get_pcvar_num(cvar_take_secondary))

    {

        RestPistMsgMaxTake(id)

        return PLUGIN_HANDLED

    }

    if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))

    {

        RestWeaponsMsgTime(id)

        return PLUGIN_HANDLED

    }

    if(!user_has_weapon(id, CSW_GLOCK18))

    {

        drop_weapons(id, 2)

        give_item(id,"weapon_glock18")

    }

    cs_set_user_bpammo(id, CSW_GLOCK18, 120)

   

    g_take_pistol[id]++

   

    return PLUGIN_HANDLED

}


public take_five(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }  

    if(g_take_pistol[id] == get_pcvar_num(cvar_take_secondary))

    {

        RestPistMsgMaxTake(id)

        return PLUGIN_HANDLED

    }

    if(!user_has_weapon(id, CSW_FIVESEVEN))

    {

        drop_weapons(id, 2)

        give_item(id,"weapon_fiveseven")

    }

    cs_set_user_bpammo(id, CSW_FIVESEVEN, 120)

   

    g_take_pistol[id]++

   

    return PLUGIN_HANDLED

}


public take_ak47(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }

   

    if(round_count < AUTOMINROUND)

    {

        RestAutomMsgMinRound(id)

        return PLUGIN_HANDLED

    }

   

    if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))

    {

        RestAutomMsgMaxTake(id)

        return PLUGIN_HANDLED

    }

   

    if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))

    {

        RestWeaponsMsgTime(id)

        return PLUGIN_HANDLED

    }

    if(!user_has_weapon(id, CSW_AK47))

    {

        drop_weapons(id, 1)

        give_item(id,"weapon_ak47")

    }

    cs_set_user_bpammo(id, CSW_AK47, 90)

   

    g_take_autom[id]++

   

    return PLUGIN_HANDLED

}


public take_m4a1(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }

   

    if(round_count < AUTOMINROUND)

    {

        RestAutomMsgMinRound(id)

        return PLUGIN_HANDLED

    }

   

    if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))

    {

        RestAutomMsgMaxTake(id)

        return PLUGIN_HANDLED

    }

    if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))

    {

        RestWeaponsMsgTime(id)

        return PLUGIN_HANDLED

    }

    if(!user_has_weapon(id, CSW_M4A1))

    {

        drop_weapons(id, 1)

        give_item(id,"weapon_m4a1")

    }

    cs_set_user_bpammo(id, CSW_M4A1, 90)

   

    g_take_autom[id]++

   

    return PLUGIN_HANDLED

}


public take_famas(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }

   

    if(round_count < AUTOMINROUND)

    {

        RestAutomMsgMinRound(id)

        return PLUGIN_HANDLED

    }

   

    if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))

    {

        RestAutomMsgMaxTake(id)

        return PLUGIN_HANDLED

    }

    if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))

    {

        RestWeaponsMsgTime(id)

        return PLUGIN_HANDLED

    }

    if(!user_has_weapon(id, CSW_FAMAS))

    {

        drop_weapons(id, 1)

        give_item(id,"weapon_famas")

    }

    cs_set_user_bpammo(id, CSW_FAMAS, 90)

   

    g_take_autom[id]++

   

    return PLUGIN_HANDLED

}


public take_galil(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }

   

    if(round_count < AUTOMINROUND)

    {

        RestAutomMsgMinRound(id)

        return PLUGIN_HANDLED

    }

   

    if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))

    {

        RestAutomMsgMaxTake(id)

        return PLUGIN_HANDLED

    }

    if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))

    {

        RestWeaponsMsgTime(id)

        return PLUGIN_HANDLED

    }

    if(!user_has_weapon(id, CSW_GALIL))

    {

        drop_weapons(id, 1)

        give_item(id,"weapon_galil")

    }

    cs_set_user_bpammo(id, CSW_GALIL, 90)

   

    g_take_autom[id]++

   

    return PLUGIN_HANDLED

}


public take_awp(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }

   

    if(round_count < AWPM249MINROUND)

    {

        RestAWPMsgMinRound(id)

        return PLUGIN_HANDLED

    }

   

    if(g_take_autom[id] == get_pcvar_num(cvar_take_primary))

    {

        RestAWPMsgMaxTake(id)

        return PLUGIN_HANDLED

    }

    if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))

    {

        RestWeaponsMsgTime(id)

        return PLUGIN_HANDLED

    }

    if(!user_has_weapon(id, CSW_AWP))

    {

        drop_weapons(id, 1)

        give_item(id,"weapon_awp")

    }

    cs_set_user_bpammo(id, CSW_AWP, 30)

   

    g_take_autom[id]++

   

    return PLUGIN_HANDLED

}


public take_m249(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }

   

    if(round_count < AWPM249MINROUND)

    {

        RestAWPMsgMinRound(id)

        return PLUGIN_HANDLED

    }

   

    if(g_take_autom[id] == get_pcvar_num(cvar_take_primary))

    {

        RestAWPMsgMaxTake(id)

        return PLUGIN_HANDLED

    }

    if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))

    {

        RestWeaponsMsgTime(id)

        return PLUGIN_HANDLED

    }

    if(!user_has_weapon(id, CSW_M249))

    {

        drop_weapons(id, 1)

        give_item(id,"weapon_m249")

    }

    cs_set_user_bpammo(id, CSW_M249, 200)

   

    g_take_autom[id]++

   

    return PLUGIN_HANDLED

}


public fw_SpawnPost(id)

{

    if(!is_user_alive(id))

        return

   

    if(isVIP(id))

    {

        if(round_count >= VIPSTARTROUND)

        {

            if(get_pcvar_num(cvar_he)) give_item(id, "weapon_hegrenade")           


            if(get_pcvar_num(cvar_fl))

            {

                give_item(id, "weapon_flashbang")

                if(get_pcvar_num(cvar_fl) > 1) give_item(id, "weapon_flashbang")

            }

            if(get_pcvar_num(cvar_sm)) give_item(id, "weapon_smokegrenade")

           

            new iCvArmorValue = get_pcvar_num(cvar_armor)

            if(0 < iCvArmorValue < 1000)

            {

                #if defined GIRLARMOR

                if(isGIRL(id))

                    cs_set_user_armor(id, GIRLARMOR, CS_ARMOR_VESTHELM)

                else

                #endif

                cs_set_user_armor(id, iCvArmorValue, CS_ARMOR_VESTHELM)

            }

            if(get_user_team(id) == 2)

                give_item(id, "item_thighpack")

            #if defined MONEY_BONUS

            new iCvMoneyValue = get_pcvar_num(cvar_moneybonus)

            if(0 < iCvMoneyValue && round_count != 1)

            {

                new iMoney = cs_get_user_money(id)

                new iCvMaxMoneyValue = get_pcvar_num(cvar_Maxmoneybonus)

                if(iMoney < iCvMaxMoneyValue)

                {

                    cs_set_user_money(id, iMoney + iCvMoneyValue)  

                }

            }

            #endif

        }

       

        if(get_pcvar_num(cvar_dgl) && g_auto_dgl[id])

        {

            if(!user_has_weapon(id, CSW_DEAGLE))

            {

                drop_weapons(id, 2)

                give_item(id,"weapon_deagle")

            }

            cs_set_user_bpammo(id, CSW_DEAGLE, 35)

        }

       

        if(get_pcvar_num(cvar_menu_auto) && g_auto_menu[id] && round_count >= OPENMENUROUND)

        {

            show_weapons_menu(id)

        }

    }

}


public givebpammo(id)

{

    if (!is_user_alive(id)) return PLUGIN_HANDLED;



    static weapons[32], num, i, currentammo, weaponid, refilled

    num = 0

    refilled = false

    get_user_weapons(id, weapons, num)

      

    for (i = 0; i < num; i++)

    {

        weaponid = weapons[i]           

       

        if (MAXBPAMMO[weaponid] > 2)

        {

            currentammo = cs_get_user_bpammo(id, weaponid)

            ExecuteHamB(Ham_GiveAmmo, id, MAXBPAMMO[weaponid], AMMOTYPE[weaponid], MAXBPAMMO[weaponid])

            if (cs_get_user_bpammo(id, weaponid) - currentammo > 0) refilled = true

        }

    }

      

    if (!refilled) return PLUGIN_HANDLED;

   

    return PLUGIN_HANDLED;

}


public press_wm(id)

{

    if(!isVIP(id))

    {

        RestWeaponsMsgAccess(id)

        return PLUGIN_HANDLED

    }

   

    if(round_count < OPENMENUROUND)

    {

        RestMenuMsgMinRounds(id)

        return PLUGIN_HANDLED

    }

   

    if(g_ViewMenu[id]){

        show_menu(id, 0, "^n", 1)

        g_ViewMenu[id] = false

    }


    else if(!g_ViewMenu[id]) {

        show_weapons_menu(id)      

    }

   

    return PLUGIN_HANDLED

}


public show_weapons_menu(id)

{

    static menu[512], len, keys

    len = 0

    keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_0

   

    new exp = adminload_get_daysleft(id)

    new left[32]

   

    if(!exp)

    {

        formatex(left, charsmax(left), "\rБессрочная\w")  

    }

    else

    {

        num_to_str(exp, left, charsmax(left))

    }

   

    len += formatex(menu[len], charsmax(menu) - len, "\wВипка истекает через, дней: %s.^n^n", left)


    len += formatex(menu[len], charsmax(menu) - len, "\wВзять оружие^n")

    len += formatex(menu[len], charsmax(menu) - len, "\w1.\r[\yAK47\r]^n")

    len += formatex(menu[len], charsmax(menu) - len, "\w2.\r[\yM4A1\r]^n")

    len += formatex(menu[len], charsmax(menu) - len, "\w3.\r[\yAWP\r]^n")

    len += formatex(menu[len], charsmax(menu) - len, "\w4.\r[\yFAMAS\r]^n")

    len += formatex(menu[len], charsmax(menu) - len, "\w5.\r[\yGALIL\r]^n")

    len += formatex(menu[len], charsmax(menu) - len, "\w6.\r[\yM249\r]^n")

   

    len += formatex(menu[len], charsmax(menu) - len, "\w7.\w Авто-выдача Deagle [\r%s\w]^n", g_auto_dgl[id] == 1 ? "\yВкл" : "\rВыкл")

    if(get_pcvar_num(cvar_menu_auto))

    {

        keys += MENU_KEY_8

        len += formatex(menu[len], charsmax(menu) - len, "\w8.\w Выводить меню с оружием? [\r%s\w]^n", g_auto_menu[id] == 1 ? "\yДа" : "\rНет")

    }

    if(get_pcvar_num(cvar_dmg))

    {

        keys += MENU_KEY_9

        len += formatex(menu[len], charsmax(menu) - len, "\w9.\w Показывать урон [%s\w]^n", g_damager[id] ? (g_damager[id] == 1 ? "\yЦифры" : "\y*") : "\rНет")

    }

   

    len += formatex(menu[len], charsmax(menu) - len, "^n\w0.\r[\yВыход\r]^n")

   

    show_menu(id, keys, menu, -1, "VIP Weapon")

    g_ViewMenu[id] = true

}


public weapon_menu(id, key)

{

    if(key < 6)

    {  

        g_ViewMenu[id] = false

        if(!is_user_alive(id))

        {

            RestWeaponsMsgAlive(id)

            show_weapons_menu(id)

            return PLUGIN_HANDLED

        }

       

        if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))

        {

            RestWeaponsMsgTime(id)

            show_weapons_menu(id)

            return PLUGIN_HANDLED

        }

    }

   

    switch (key)

    {

        case 0:

        {

            if(round_count < AUTOMINROUND)

            {

                RestAutomMsgMinRound(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

            if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))

            {

                RestAutomMsgMaxTake(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

           

            drop_weapons(id, 1)

            give_item(id,"weapon_ak47")

            cs_set_user_bpammo(id, CSW_AK47, 90)

           

            g_take_autom[id]++

        }  

        case 1:

        {

            if(round_count < AUTOMINROUND)

            {

                RestAutomMsgMinRound(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

            if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))

            {

                RestAutomMsgMaxTake(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

            drop_weapons(id, 1)

            give_item(id,"weapon_m4a1")

            cs_set_user_bpammo(id, CSW_M4A1, 90)

           

            g_take_autom[id]++

        }  

        case 2:

        {  

            if(round_count < AWPM249MINROUND)

            {

                RestAWPMsgMinRound(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

            if(g_take_autom[id] == get_pcvar_num(cvar_take_primary))

            {

                RestAWPMsgMaxTake(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

           

            drop_weapons(id, 1)

            give_item(id,"weapon_awp")

            cs_set_user_bpammo(id, CSW_AWP, 30)

           

            g_take_autom[id]++

        }

        case 3:

        {

            if(round_count < AUTOMINROUND)

            {

                RestAutomMsgMinRound(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

            if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))

            {

                RestAutomMsgMaxTake(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

            drop_weapons(id, 1)

            give_item(id,"weapon_famas")

            cs_set_user_bpammo(id, CSW_FAMAS, 90)

           

            g_take_autom[id]++

        }  

        case 4:

        {

            if(round_count < AUTOMINROUND)

            {

                RestAutomMsgMinRound(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

            if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))

            {

                RestAutomMsgMaxTake(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

            drop_weapons(id, 1)

            give_item(id,"weapon_galil")

            cs_set_user_bpammo(id, CSW_GALIL, 90)

           

            g_take_autom[id]++

        }  

        case 5:

        {

            if(round_count < AWPM249MINROUND)

            {

                RestAWPMsgMinRound(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

            if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))

            {

                RestAWPMsgMaxTake(id)

                show_weapons_menu(id)

                return PLUGIN_HANDLED

            }

            drop_weapons(id, 1)

            give_item(id,"weapon_m249")

            cs_set_user_bpammo(id, CSW_M249, 200)

           

            g_take_autom[id]++

        }  

        case 6:

        {

            g_EditMenu[id] = true

            g_auto_dgl[id] == 1 ? (g_auto_dgl[id] = 0) : (g_auto_dgl[id] = 1)

            colored_print(id, "^x04[VIP]^x01 Выдача Deagle^x04 %s", g_auto_dgl[id] == 1 ? "включена" : "отключена")

           

            show_weapons_menu(id)

        }

        case 7:

        {

            g_auto_menu[id] == 1 ? (g_auto_menu[id] = 0) : (g_auto_menu[id] = 1)

            colored_print(id, "^x04[VIP]^x01 Авто-открытие меню^x04 %s", g_auto_menu[id] == 1 ? "включено" : "отключено")

           

            show_weapons_menu(id)

        }

        case 8:

        {

            g_EditMenu[id] = true

            g_damager[id]++

            g_damager[id] %= 3

           

            show_weapons_menu(id)

        }

        default: g_ViewMenu[id] = false

    }

   

    return PLUGIN_HANDLED

}


#if defined DELETEDROP

public fw_SetModel(entity, const szModel[])

{

    if(!is_valid_ent(entity))

        return FMRES_IGNORED


    if(strlen(szModel) < 8 || szModel[7] != 'w' || szModel[8] != '_')

        return FMRES_IGNORED


    if(!equal(szModel[9], "sg550", 5) && !equal(szModel[9], "g3sg1", 5) && !equal(szModel[9], "awp", 3))    /* Удаление дропа */

        return FMRES_IGNORED

   

    static id

    id = pev(entity, pev_owner)

   

    if(!isVIP(id))

        return FMRES_IGNORED

       

    static classname[10]

    pev(entity, pev_classname, classname, charsmax(classname))


    if(equal(classname, "weaponbox"))

    {

        set_pev(entity, pev_nextthink, get_gametime() + 0.1)

        return FMRES_IGNORED

    }


    return FMRES_IGNORED

}

#endif


public damage_message(id)

{

    new attacker = get_user_attacker(id), damage = read_data(2)


    if (is_user_connected(attacker) && isVIP(attacker) && get_pcvar_num(cvar_dmg))

    {

        if(g_damager[attacker] == 1)

        {

            set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)

            ShowSyncHudMsg(attacker, g_HudSync, "%i", damage)

        }

        else if(g_damager[attacker] == 2)

        {

            set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)

            ShowSyncHudMsg(attacker, g_HudSync, "*")

        }

    }

}


#if defined VAMPIRE

    #if AMXX_VERSION_NUM < 183

        #include <dhudmessage>

    #endif

public on_death()

{

    new nKiller, nKiller_hp, nHp_add, nHp_max


    nKiller = read_data(1)

   

    if(isVIP(nKiller))

    {  

        if(read_data(3) == 1 && read_data(5) == 0)

            nHp_add = get_pcvar_num(cvar_kill_hs)

        else

            nHp_add = get_pcvar_num(cvar_kill_hp)

       

        nHp_max = get_pcvar_num(cvar_kill_hp_max)

       

        nKiller_hp = get_user_health(nKiller)

        nKiller_hp += nHp_add


        if (nKiller_hp > nHp_max)

            nKiller_hp = nHp_max


        set_user_health(nKiller, nKiller_hp)

       

        if(nHp_add != 0){

            set_dhudmessage(VAMPIRE_MESSAGE_COLOR, VAMPIRE_MESSAGE_POS, 0, 0.1, 1.0, 0.05, 0.05)

            show_dhudmessage(nKiller, "+%d HP", nHp_add)

        }

    }

}

#endif

#if defined INFORMERS

public vip_motd(id)     show_motd(id, "vip.txt", "VIP")

public admin_motd(id)   show_motd(id, "admin.txt", "ADMIN")

#endif

   

stock colored_print( target, const message[],  any:... )

{

    static buffer[ 190 ]


    if( !target )

    {

        static player

        for( player = 1; player <= g_maxplayers; player++ )

        {

            if ( !is_user_connected( player ) )

        continue;


            vformat( buffer, charsmax( buffer ), message, 3 )


            message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, player )

            write_byte( player )

            write_string( buffer )

            message_end()

        }

    }


    else

    {

    if ( !is_user_connected( target ) ) return


        vformat( buffer, charsmax( buffer ), message, 3 )


        message_begin( MSG_ONE, g_msgSayText, _, target )

        write_byte( target )

        write_string( buffer )

        message_end()

    }

}


stock drop_weapons(id, dropwhat)

{

    static weapons[32], num, i, weaponid

        

    num = 0

    get_user_weapons(id, weapons, num)

    for (i = 0; i < num; i++)

    {

        weaponid = weapons[i]

         

        if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))

        {

            static wname[32]

            get_weaponname(weaponid, wname, sizeof wname - 1)

            engclient_cmd(id, "drop", wname)

        }

    }

}


public plugin_end()

{

        for(new id = 1; id <= g_maxplayers; id++)

        {

        if(g_EditMenu[id] == false) {

            continue;

        }


        if(isVIP(id)) {

            SaveSet(id);

        }


        g_EditMenu[id] = false;

    }


    nvault_close(g_Save);

}
 
Последнее редактирование: Musamuhamed