Решено Помощь по вип меню healt + vip

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
336
Симпатии
23
Баллы
79
#1
Парни, что означает данный лог error и как он правится для корректной работы випки.
Иногда бывает, что випка перестает работать по середине игры на одной из карт, после смены карты начинает работать. Через какое то время снова перестает открываться вип меню
L 12/19/2017 - 16:00:55: [AMXX] Run time error 4 (plugin "vip_menu_jd.amxx") - debug not enabled!
L 12/19/2017 - 16:00:55: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 12/19/2017 - 16:02:32: [AMXX] Run time error 4 (plugin "vip_menu_jd.amxx") - debug not enabled!
L 12/19/2017 - 16:02:32: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
 

3BEPb

Участник
Сообщения
102
Симпатии
39
Баллы
109
#6
Конечно не поможет, ведь это нужно для того чтоб, узнать что за ошибка возникает в плагине. А то что ты скинул как раз и просит включить в плагине режим отладки, для того что бы выяснить где именно спряталась ошибка.
 

s1ngle71rus

Участник
Сообщения
145
Симпатии
1
Баллы
79
#7
Та же ошибка только с другим плагином
L 12/20/2017 - 05:26:15: [AMXX] Run time error 3 (plugin "Smoke_HealthNade.amxx") - debug not enabled!
L 12/20/2017 - 05:26:15: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
WARNING: datagram overflowed for GM RJ
WARNING: datagram overflowed for Pahok
Что делать то?
 
Сообщения
336
Симпатии
23
Баллы
79
#8
Конечно не поможет, ведь это нужно для того чтоб, узнать что за ошибка возникает в плагине. А то что ты скинул как раз и просит включить в плагине режим отладки, для того что бы выяснить где именно спряталась ошибка.
Я понимаю, поэтому и говорю, даже если прописано debug после плагина в plugins.ini, ошибку выдает ту же.
Сейчас удалил все error логи, прописал debug, выдал ошибку
L 12/21/2017 - 00:13:09: [AMXX] Run time error 4 (plugin "vip_menu_jd.amxx") - debug not enabled!
L 12/21/2017 - 00:13:09: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 12/21/2017 - 00:15:10: [AMXX] Run time error 4 (plugin "vip_menu_jd.amxx") - debug not enabled!
L 12/21/2017 - 00:15:10: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
 

3BEPb

Участник
Сообщения
102
Симпатии
39
Баллы
109
#9
Я понимаю, поэтому и говорю, даже если прописано debug после плагина в plugins.ini, ошибку выдает ту же.
Сейчас удалил все error логи, прописал debug, выдал ошибку
L 12/21/2017 - 00:13:09: [AMXX] Run time error 4 (plugin "vip_menu_jd.amxx") - debug not enabled!
L 12/21/2017 - 00:13:09: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 12/21/2017 - 00:15:10: [AMXX] Run time error 4 (plugin "vip_menu_jd.amxx") - debug not enabled!
L 12/21/2017 - 00:15:10: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
Нужно после плагина в файле plugins.ini написать debug
vip_menu_jd.amxx debug
И тогда сервер, нам покажет ошибку.
 

stcore

Участник
Сообщения
78
Симпатии
21
Баллы
64
#10
Если не стоят плагины маздана, amx_debug 2 в amx.cfg. Если стоят, amx_debug 1 и сделать как в примере постом выше.
 
Сообщения
336
Симпатии
23
Баллы
79
#11
Нужно после плагина в файле plugins.ini написать debug
vip_menu_jd.amxx debug
И тогда сервер, нам покажет ошибку.
Я так и сделал с самого начала, о чем писал в первых сообщениях.
Ошибка выходит всегда одна и та же, что скинул.
В амх.cfg прописано amx_debug 1
В plugins.ini тоже прописано vip_menu_jd.amxx debug

Если скину исходник самого меню, посмотришь?
Нужно после плагина в файле plugins.ini написать debug
vip_menu_jd.amxx debug
И тогда сервер, нам покажет ошибку.
Вот, выдал новую ошибку после рестарта сервера
L 12/21/2017 - 02:54:39: Start of error session.
L 12/21/2017 - 02:54:39: Info (map "de_inferno_2x2") (file "addons/amxmodx/logs/error_20171221.log")
L 12/21/2017 - 02:54:39: [AMXX] Displaying debug trace (plugin "vip_menu_jd.amxx")
L 12/21/2017 - 02:54:39: [AMXX] Run time error 4: index out of bounds
L 12/21/2017 - 02:54:39: [AMXX] [0] vip_menu_jd_1.5.sma::event_restart (line 128)
L 12/21/2017 - 02:54:56: [AMXX] Displaying debug trace (plugin "vip_menu_jd.amxx")
L 12/21/2017 - 02:54:56: [AMXX] Run time error 4: index out of bounds
L 12/21/2017 - 02:54:56: [AMXX] [0] vip_menu_jd_1.5.sma::event_restart (line 128)
L 12/21/2017 - 02:55:24: [AMXX] Displaying debug trace (plugin "vip_menu_jd.amxx")
L 12/21/2017 - 02:55:24: [AMXX] Run time error 4: index out of bounds
L 12/21/2017 - 02:55:24: [AMXX] [0] vip_menu_jd_1.5.sma::event_restart (line 128)
L 12/21/2017 - 03:26:07: Start of error session.
 
Сообщения
336
Симпатии
23
Баллы
79
#16
мне просто лень. 50/50. ибо там та ещё параша написана
Зачем просил исходник тогда?)
По ошибке же понятно знающему человеку, можно поправить или не стоит.
 

Flymic24

Участник
Сообщения
23
Симпатии
9
Баллы
24
#18
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>

/*================================================================================
    Данные о плагине
=================================================================================*/
#define PLUGIN         "ViP Menu"
#define VERSION         "1.5"
#define AUTHOR         "Jack Daniel`s Lol :("
/*================================================================================
    Константы/Массивы и остальное
=================================================================================*/
native set_hg_auto_equip_status(id, new_status)

new bool:give_deagle[33], bool:give_hpgrenade[33], total_rounds, vip_menu_usage_count[33];
new g_icvars[8], g_ilcvars[8], g_iMaxPlayers;
/*================================================================================
    Загрузка кваров
=================================================================================*/
public plugin_cfg()
{
    new file[128];    get_configsdir(file,charsmax(file))
    format(file, charsmax(file), "%s/vip_menu.cfg", file)
    
    if(file_exists(file)) server_cmd("exec %s", file), server_exec()
}
/*================================================================================
    Гл. Функция
=================================================================================*/
public plugin_init()
{
    register_plugin(PLUGIN,VERSION,AUTHOR);
    
    register_logevent("RoundStart", 2, "1=Round_Start");
    register_event("TextMsg" , "event_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
    
    RegisterHam(Ham_Spawn, "player", "player_Spawn_Post" , 1);
    
    register_menu("Vip_Menu", 1024, "Handle_Vip_Menu");
    
    register_concmd("vipmenu", "OpenVipMenu");
    register_clcmd("say /vipmenu", "OpenVipMenu");
    register_clcmd("say_team /vipmenu", "OpenVipMenu");
    
       register_dictionary("vip_menu.txt");
    
    //Квары
    g_icvars[0]    =    register_cvar("vm_start_round","3") // Раунд с которого будет доступно вип меню
    g_icvars[1]    =    register_cvar("vm_round_usage_limit","2") // Сколько раз за раунд можно использовать меню. Если 0, то неограниченное число раз
    g_icvars[2]    =    register_cvar("vm_awp_start_round","4") // Номер раунда с которого будет доступно авп из вип меню   
    g_icvars[3]    =    register_cvar("vm_showscore_status","1") // Показывать или нет надпись VIP в таблице счета
    g_icvars[4]    =    register_cvar("vm_connect_chat_announce","1") // Оповещать (1) или нет (0) всех сообщением в чате при коннекте вип игрока
    g_icvars[5]    =    register_cvar("vm_connect_sound","1") // Проигрывать (1) или нет (0), звук при входе вип игрока на сервер
    g_icvars[6]    =    register_cvar("vm_access_flags","t") // Флаги доступа игроков, которым будет доступно вип меню
    g_icvars[7]    =    register_cvar("vm_give_money","5000")
    
    //Отключение на картах    
    new sPref[][] = {"awp_", "aim_", "35hp_", "fy_"};
    new map[32]; get_mapname(map, charsmax(map));
    for(new i; i < sizeof sPref; i++)
    {
        if(containi(map, sPref[i]) != -1)
        {
            pause("ad");
            return;
        }
    }    
    
    //Квары в массив..
    g_ilcvars[0] =    get_pcvar_num(g_icvars[0]);
    g_ilcvars[1] =    get_pcvar_num(g_icvars[1]);
    g_ilcvars[2] =    get_pcvar_num(g_icvars[2]);
    g_ilcvars[3] =    get_pcvar_num(g_icvars[3]);
    g_ilcvars[4] =    get_pcvar_num(g_icvars[4]);
    g_ilcvars[5] =    get_pcvar_num(g_icvars[5]);
    cvar_to_flags(g_icvars[6], g_ilcvars[6]);
    g_ilcvars[7] =    get_pcvar_num(g_icvars[7]);
    
    g_iMaxPlayers = get_maxplayers();
}

public plugin_precache()
{
    if (g_ilcvars[5]) {
        precache_sound("vip_menu/connect_vip.wav");
    }
}
/*================================================================================
    Подключение игрока
=================================================================================*/
public client_connect(id)
{
    give_hpgrenade[id] = false
    give_deagle[id] = false
    set_hg_auto_equip_status(id, 0)
    
    new name[32];    get_user_name(id, name, 31)
    
    if (get_user_flags(id) & g_ilcvars[6]) {
        if (g_ilcvars[4]) {
            PrintInChat(0, "%L", LANG_PLAYER, "VM_CONNECT_CHAT_ANNOUNCE", name)
        }
        if(g_ilcvars[5]) {
            emit_sound(0,CHAN_STATIC,"vip_menu/connect_vip.wav",1.0,ATTN_NORM,0,PITCH_NORM)
        }
    }
}
/*================================================================================
    Новый раунд
=================================================================================*/
public RoundStart(){    
    total_rounds++    
    arrayset(vip_menu_usage_count, 0, charsmax(vip_menu_usage_count));
}
/*================================================================================
    Рестарт раунда или начало игры
=================================================================================*/
public event_restart()
{
    total_rounds = 0;
    for(new id = 1; id <= g_iMaxPlayers; id++){
        set_hg_auto_equip_status(id, 0)
    }
    
    arrayset(give_hpgrenade, false, charsmax(give_hpgrenade));
}

public player_Spawn_Post(id)
{
    if (!is_user_alive(id) || !(get_user_flags(id) & g_ilcvars[6])) {
        return;
    }
    
    if (total_rounds >= g_ilcvars[0]) {
        give_vip_equip(id);
    }
}
/*================================================================================
    Меню
=================================================================================*/
public OpenVipMenu(id)
{
    if(!is_user_alive(id)) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_FOR_ALIVE_WARNING")
        return PLUGIN_HANDLED;
    }

    if(!(get_user_flags(id) & g_ilcvars[6])) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_NOT_ACCESS_WARNING")
        return PLUGIN_HANDLED;
    }
    
    if(total_rounds < g_ilcvars[0]) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_ROUND_LIMIT_WARNING", (g_ilcvars[0] == 2) ? "о" : "", g_ilcvars[0])
        return PLUGIN_HANDLED;
    }
    
    if (g_ilcvars[1] && vip_menu_usage_count[id] >= g_ilcvars[1]) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_MAX_USAGE_WARNING")
        return PLUGIN_HANDLED;
    }
    new name[32];    get_user_name(id, name, charsmax(name));
    new menu[512],    iLen = 0;
    
    iLen = formatex(menu[iLen], charsmax(menu) - iLen, "%L^n^n", LANG_PLAYER, "VM_TITLE_NAME", name);

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME1", g_ilcvars[7]);
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME2");
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME3");
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME4");
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME5");
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME6",give_hpgrenade[id]?"[\yВкл\w]":"[\yВыкл\w]");
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n^n", LANG_PLAYER, "VM_ITEM_NAME7",give_deagle[id]?"[\yВкл\w]":"[\yВыкл\w]");
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_EXIT");
    
    show_menu(id, 1024, menu, -1, "Vip_Menu");
    return PLUGIN_HANDLED;
}

public Handle_Vip_Menu(id, key)
{
    if (!is_user_connected(id))
        return PLUGIN_HANDLED;
    
    switch(key)
    {
        case 0:
        {
            cs_set_user_money(id, cs_get_user_money(id) + g_ilcvars[7]);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_MONEY", g_ilcvars[7])
        }        
        case 1:
        {
            drop_user_weapons(id, 1)
            give_item(id, "weapon_m4a1")
            cs_set_user_bpammo(id, CSW_M4A1, 90);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_M4A1")
        }        
        case 2:
        {
            drop_user_weapons(id, 1)
            give_item(id, "weapon_ak47")
            cs_set_user_bpammo(id, CSW_AK47, 90);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_AK47")
        }        
        case 3:
        {
            if(total_rounds < g_ilcvars[2]){
                PrintInChat(id, "%L", LANG_PLAYER, "VM_AWP_RESTRICT_MSG", g_ilcvars[2], total_rounds)
            }else{
                drop_user_weapons(id, 1)
                give_item(id, "weapon_awp")
                cs_set_user_bpammo(id, CSW_AWP, 30);
                vip_menu_usage_count[id]++
                PrintInChat(id, "%L", LANG_PLAYER, "VM_AWP")
            }
        }        
        case 4:
        {
            drop_user_weapons(id, 1)
            give_item(id, "weapon_famas")
            cs_set_user_bpammo(id, CSW_FAMAS, 90);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_FAMAS")
        }        
        case 5:
        {
            if(give_hpgrenade[id]){
                give_hpgrenade[id] = false
                set_hg_auto_equip_status(id, 0)
            }else{
                give_hpgrenade[id] = true
                set_hg_auto_equip_status(id, 1)
            }
            OpenVipMenu(id)
            PrintInChat(id, "%L", LANG_PLAYER, "VM_AUTO_GIVE_HPGRENADE", give_hpgrenade[id]?"!tвключена!":"!tвыключена!")
        }        
        case 6:
        {
            give_deagle[id] = !give_deagle[id];
            
            OpenVipMenu(id)
            PrintInChat(id, "%L", LANG_PLAYER, "VM_AUTO_GIVE_DEAGLE", give_deagle[id]?"!tвключена!":"!tвыключена!")
        }
        default: return PLUGIN_HANDLED;
    }
    return PLUGIN_HANDLED;
}
/*================================================================================
    Стоки и Остальное
=================================================================================*/
give_vip_equip(id)
{
    give_item(id,"weapon_flashbang")
    give_item(id,"weapon_flashbang")
    give_item(id,"weapon_hegrenade")
    give_item(id,"weapon_smokegrenade");
    give_item(id, "item_assaultsuit");
    
    if(give_deagle[id]){
        drop_user_weapons(id, 2)
        give_item(id, "weapon_deagle");
        cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    }
}

stock drop_user_weapons(iPlayer, iSlotStrip){
    new iWpn = get_pdata_cbase(iPlayer, 367 + iSlotStrip, 5);
    
    while(iWpn != FM_NULLENT)
    {
        ExecuteHamB(Ham_Weapon_RetireWeapon, iWpn);
        ExecuteHam(Ham_RemovePlayerItem, iPlayer, iWpn);
        ExecuteHam(Ham_Item_Kill, iWpn);
        set_pev(iPlayer, pev_weapons, pev(iPlayer, pev_weapons) & ~(1<<get_pdata_int(iWpn, 43 ,4)));
        iWpn = get_pdata_cbase(iWpn, 42, 4);
    }
}

stock cvar_to_flags(cvar_ptr, &var){
    new cvar_value[32];
    get_pcvar_string(cvar_ptr, cvar_value, charsmax(cvar_value));
    var = read_flags(cvar_value);
    
    if (var == 0) {
        var = ADMIN_USER;
    }
}

stock PrintInChat(const id, const input[], any:...){
    new count = 1, players[32]
    static msg[191]
    vformat(msg, charsmax(msg), input, 3)
    
    replace_all(msg, charsmax(msg), "!g", "^4") // Green Color
    replace_all(msg, charsmax(msg), "!n", "^1") // Default Color
    replace_all(msg, charsmax(msg), "!t", "^3") // Team Color
    
    if (id) players[0] = id; else get_players(players, count, "ch")
    {
        for (new i = 0; i < count; i++)
        {
            if (!is_user_connected(players[i]))    continue;
            
            message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
            write_byte(players[i]);
            write_string(msg);
            message_end();
        }
    }
}
 
Сообщения
336
Симпатии
23
Баллы
79
#19
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>

/*================================================================================
    Данные о плагине
=================================================================================*/
#define PLUGIN         "ViP Menu"
#define VERSION         "1.5"
#define AUTHOR         "Jack Daniel`s Lol :("
/*================================================================================
    Константы/Массивы и остальное
=================================================================================*/
native set_hg_auto_equip_status(id, new_status)

new bool:give_deagle[33], bool:give_hpgrenade[33], total_rounds, vip_menu_usage_count[33];
new g_icvars[8], g_ilcvars[8], g_iMaxPlayers;
/*================================================================================
    Загрузка кваров
=================================================================================*/
public plugin_cfg()
{
    new file[128];    get_configsdir(file,charsmax(file))
    format(file, charsmax(file), "%s/vip_menu.cfg", file)
   
    if(file_exists(file)) server_cmd("exec %s", file), server_exec()
}
/*================================================================================
    Гл. Функция
=================================================================================*/
public plugin_init()
{
    register_plugin(PLUGIN,VERSION,AUTHOR);
   
    register_logevent("RoundStart", 2, "1=Round_Start");
    register_event("TextMsg" , "event_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
   
    RegisterHam(Ham_Spawn, "player", "player_Spawn_Post" , 1);
   
    register_menu("Vip_Menu", 1024, "Handle_Vip_Menu");
   
    register_concmd("vipmenu", "OpenVipMenu");
    register_clcmd("say /vipmenu", "OpenVipMenu");
    register_clcmd("say_team /vipmenu", "OpenVipMenu");
   
       register_dictionary("vip_menu.txt");
   
    //Квары
    g_icvars[0]    =    register_cvar("vm_start_round","3") // Раунд с которого будет доступно вип меню
    g_icvars[1]    =    register_cvar("vm_round_usage_limit","2") // Сколько раз за раунд можно использовать меню. Если 0, то неограниченное число раз
    g_icvars[2]    =    register_cvar("vm_awp_start_round","4") // Номер раунда с которого будет доступно авп из вип меню  
    g_icvars[3]    =    register_cvar("vm_showscore_status","1") // Показывать или нет надпись VIP в таблице счета
    g_icvars[4]    =    register_cvar("vm_connect_chat_announce","1") // Оповещать (1) или нет (0) всех сообщением в чате при коннекте вип игрока
    g_icvars[5]    =    register_cvar("vm_connect_sound","1") // Проигрывать (1) или нет (0), звук при входе вип игрока на сервер
    g_icvars[6]    =    register_cvar("vm_access_flags","t") // Флаги доступа игроков, которым будет доступно вип меню
    g_icvars[7]    =    register_cvar("vm_give_money","5000")
   
    //Отключение на картах   
    new sPref[][] = {"awp_", "aim_", "35hp_", "fy_"};
    new map[32]; get_mapname(map, charsmax(map));
    for(new i; i < sizeof sPref; i++)
    {
        if(containi(map, sPref[i]) != -1)
        {
            pause("ad");
            return;
        }
    }   
   
    //Квары в массив..
    g_ilcvars[0] =    get_pcvar_num(g_icvars[0]);
    g_ilcvars[1] =    get_pcvar_num(g_icvars[1]);
    g_ilcvars[2] =    get_pcvar_num(g_icvars[2]);
    g_ilcvars[3] =    get_pcvar_num(g_icvars[3]);
    g_ilcvars[4] =    get_pcvar_num(g_icvars[4]);
    g_ilcvars[5] =    get_pcvar_num(g_icvars[5]);
    cvar_to_flags(g_icvars[6], g_ilcvars[6]);
    g_ilcvars[7] =    get_pcvar_num(g_icvars[7]);
   
    g_iMaxPlayers = get_maxplayers();
}

public plugin_precache()
{
    if (g_ilcvars[5]) {
        precache_sound("vip_menu/connect_vip.wav");
    }
}
/*================================================================================
    Подключение игрока
=================================================================================*/
public client_connect(id)
{
    give_hpgrenade[id] = false
    give_deagle[id] = false
    set_hg_auto_equip_status(id, 0)
   
    new name[32];    get_user_name(id, name, 31)
   
    if (get_user_flags(id) & g_ilcvars[6]) {
        if (g_ilcvars[4]) {
            PrintInChat(0, "%L", LANG_PLAYER, "VM_CONNECT_CHAT_ANNOUNCE", name)
        }
        if(g_ilcvars[5]) {
            emit_sound(0,CHAN_STATIC,"vip_menu/connect_vip.wav",1.0,ATTN_NORM,0,PITCH_NORM)
        }
    }
}
/*================================================================================
    Новый раунд
=================================================================================*/
public RoundStart(){   
    total_rounds++   
    arrayset(vip_menu_usage_count, 0, charsmax(vip_menu_usage_count));
}
/*================================================================================
    Рестарт раунда или начало игры
=================================================================================*/
public event_restart()
{
    total_rounds = 0;
    for(new id = 1; id <= g_iMaxPlayers; id++){
        set_hg_auto_equip_status(id, 0)
    }
   
    arrayset(give_hpgrenade, false, charsmax(give_hpgrenade));
}

public player_Spawn_Post(id)
{
    if (!is_user_alive(id) || !(get_user_flags(id) & g_ilcvars[6])) {
        return;
    }
   
    if (total_rounds >= g_ilcvars[0]) {
        give_vip_equip(id);
    }
}
/*================================================================================
    Меню
=================================================================================*/
public OpenVipMenu(id)
{
    if(!is_user_alive(id)) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_FOR_ALIVE_WARNING")
        return PLUGIN_HANDLED;
    }

    if(!(get_user_flags(id) & g_ilcvars[6])) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_NOT_ACCESS_WARNING")
        return PLUGIN_HANDLED;
    }
   
    if(total_rounds < g_ilcvars[0]) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_ROUND_LIMIT_WARNING", (g_ilcvars[0] == 2) ? "о" : "", g_ilcvars[0])
        return PLUGIN_HANDLED;
    }
   
    if (g_ilcvars[1] && vip_menu_usage_count[id] >= g_ilcvars[1]) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_MAX_USAGE_WARNING")
        return PLUGIN_HANDLED;
    }
    new name[32];    get_user_name(id, name, charsmax(name));
    new menu[512],    iLen = 0;
   
    iLen = formatex(menu[iLen], charsmax(menu) - iLen, "%L^n^n", LANG_PLAYER, "VM_TITLE_NAME", name);

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME1", g_ilcvars[7]);
   
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME2");
   
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME3");
   
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME4");
   
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME5");
   
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME6",give_hpgrenade[id]?"[\yВкл\w]":"[\yВыкл\w]");
   
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n^n", LANG_PLAYER, "VM_ITEM_NAME7",give_deagle[id]?"[\yВкл\w]":"[\yВыкл\w]");
   
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_EXIT");
   
    show_menu(id, 1024, menu, -1, "Vip_Menu");
    return PLUGIN_HANDLED;
}

public Handle_Vip_Menu(id, key)
{
    if (!is_user_connected(id))
        return PLUGIN_HANDLED;
   
    switch(key)
    {
        case 0:
        {
            cs_set_user_money(id, cs_get_user_money(id) + g_ilcvars[7]);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_MONEY", g_ilcvars[7])
        }       
        case 1:
        {
            drop_user_weapons(id, 1)
            give_item(id, "weapon_m4a1")
            cs_set_user_bpammo(id, CSW_M4A1, 90);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_M4A1")
        }       
        case 2:
        {
            drop_user_weapons(id, 1)
            give_item(id, "weapon_ak47")
            cs_set_user_bpammo(id, CSW_AK47, 90);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_AK47")
        }       
        case 3:
        {
            if(total_rounds < g_ilcvars[2]){
                PrintInChat(id, "%L", LANG_PLAYER, "VM_AWP_RESTRICT_MSG", g_ilcvars[2], total_rounds)
            }else{
                drop_user_weapons(id, 1)
                give_item(id, "weapon_awp")
                cs_set_user_bpammo(id, CSW_AWP, 30);
                vip_menu_usage_count[id]++
                PrintInChat(id, "%L", LANG_PLAYER, "VM_AWP")
            }
        }       
        case 4:
        {
            drop_user_weapons(id, 1)
            give_item(id, "weapon_famas")
            cs_set_user_bpammo(id, CSW_FAMAS, 90);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_FAMAS")
        }       
        case 5:
        {
            if(give_hpgrenade[id]){
                give_hpgrenade[id] = false
                set_hg_auto_equip_status(id, 0)
            }else{
                give_hpgrenade[id] = true
                set_hg_auto_equip_status(id, 1)
            }
            OpenVipMenu(id)
            PrintInChat(id, "%L", LANG_PLAYER, "VM_AUTO_GIVE_HPGRENADE", give_hpgrenade[id]?"!tвключена!":"!tвыключена!")
        }       
        case 6:
        {
            give_deagle[id] = !give_deagle[id];
           
            OpenVipMenu(id)
            PrintInChat(id, "%L", LANG_PLAYER, "VM_AUTO_GIVE_DEAGLE", give_deagle[id]?"!tвключена!":"!tвыключена!")
        }
        default: return PLUGIN_HANDLED;
    }
    return PLUGIN_HANDLED;
}
/*================================================================================
    Стоки и Остальное
=================================================================================*/
give_vip_equip(id)
{
    give_item(id,"weapon_flashbang")
    give_item(id,"weapon_flashbang")
    give_item(id,"weapon_hegrenade")
    give_item(id,"weapon_smokegrenade");
    give_item(id, "item_assaultsuit");
   
    if(give_deagle[id]){
        drop_user_weapons(id, 2)
        give_item(id, "weapon_deagle");
        cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    }
}

stock drop_user_weapons(iPlayer, iSlotStrip){
    new iWpn = get_pdata_cbase(iPlayer, 367 + iSlotStrip, 5);
   
    while(iWpn != FM_NULLENT)
    {
        ExecuteHamB(Ham_Weapon_RetireWeapon, iWpn);
        ExecuteHam(Ham_RemovePlayerItem, iPlayer, iWpn);
        ExecuteHam(Ham_Item_Kill, iWpn);
        set_pev(iPlayer, pev_weapons, pev(iPlayer, pev_weapons) & ~(1<<get_pdata_int(iWpn, 43 ,4)));
        iWpn = get_pdata_cbase(iWpn, 42, 4);
    }
}

stock cvar_to_flags(cvar_ptr, &var){
    new cvar_value[32];
    get_pcvar_string(cvar_ptr, cvar_value, charsmax(cvar_value));
    var = read_flags(cvar_value);
   
    if (var == 0) {
        var = ADMIN_USER;
    }
}

stock PrintInChat(const id, const input[], any:...){
    new count = 1, players[32]
    static msg[191]
    vformat(msg, charsmax(msg), input, 3)
   
    replace_all(msg, charsmax(msg), "!g", "^4") // Green Color
    replace_all(msg, charsmax(msg), "!n", "^1") // Default Color
    replace_all(msg, charsmax(msg), "!t", "^3") // Team Color
   
    if (id) players[0] = id; else get_players(players, count, "ch")
    {
        for (new i = 0; i < count; i++)
        {
            if (!is_user_connected(players[i]))    continue;
           
            message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
            write_byte(players[i]);
            write_string(msg);
            message_end();
        }
    }
}
Узнать можно, в чём была проблема?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху