• Гость, перед открытием темы прочитай описание раздела, чтобы не ошибиться. Любые вопросы по настройке сервера создаются в разделе Технической Поддержки.

Помощь Не работают некоторые функции плагина.

8ball1

Участник
Сообщения
10
Симпатии
0
Баллы
57
#1
Здравствуйте! Прошу помочь с кодом плагина, не работает статус VIP в табе, не выдаются гранаты, нет оповещения как в чате, так и звукового при входе VIP игрока. Такое ощущение, что квары не работают..
Код:
#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();
        }
    }
}
 

8ball1

Участник
Сообщения
10
Симпатии
0
Баллы
57
#3
В amx_plugins что пишет? Работает плагин? Ошибки есть от него в логах? Права точно есть у игроков?
Я не настолько дурачок, естественно все работает и права все есть. Ошибок никаких не выдает.
 

8ball1

Участник
Сообщения
10
Симпатии
0
Баллы
57
#4
Меню с оружкой работает, а то, что я описал выше - нет. И это странно.
 

wantip22

Участник
Сообщения
343
Симпатии
40
Баллы
104
#5
vip_menu.cfg с какой кодировкой сохранён?
 

3BEPb

Участник
Сообщения
143
Симпатии
49
Баллы
109
#9

cAh

Администратор
Сообщения
575
Симпатии
154
Баллы
144
#10
А я считал, что это "форум поддержки". Как мне неоднократно на это указывали.
Я про то что он пишет с претензией.

Он обратился за бесплатной помощью. Такая помощь не подразумевает что тебе 100%, в кратчайшие сроки и бесплатно помогут.
А человек на элементарные уточняющие вопросы дерзит
Я не настолько дурачок, естественно все работает и права все есть. Ошибок никаких не выдает.
при том что ему помочь пытаются... Достаточно было ответить "ДА".
 

8ball1

Участник
Сообщения
10
Симпатии
0
Баллы
57
#11
Я про то что он пишет с претензией.

Он обратился за бесплатной помощью. Такая помощь не подразумевает что тебе 100%, в кратчайшие сроки и бесплатно помогут.
А человек на элементарные уточняющие вопросы дерзит

при том что ему помочь пытаются... Достаточно было ответить "ДА".
Прошу прощения. Уже просто нервов не хватает.
Жду уже 2 месяца помощи..
 

cAh

Администратор
Сообщения
575
Симпатии
154
Баллы
144
#12
Сверху