Фиксы меню(Прослушка by neygomon)

Статус
В этой теме нельзя размещать новые ответы.

SPIRIT

Пользователь
Регистрация
11 Июл 2017
Сообщения
34
Симпатии
11
Пол
Мужской
Здравствуйте, можете подсказать как правильно поймать страницу на которой находится игрок которого подслушивают и не закрывать меню после активации а открыть именно на этой странице.
Собственно сам код.
PHP:
#include <amxmodx>
#include <fakemeta>

new g_iVoiceAdmin[33][33];

public plugin_init()
{
    register_plugin("Proslushka :D", "1.2", "neugomon");
    
    register_clcmd("amx_vois", "clcmdCheckVoice", ADMIN_PASSWORD);
    
    register_forward(FM_Voice_SetClientListening, "fwdSetClientListening_Pre", false);
}

public client_putinserver(id)
    arrayset(g_iVoiceAdmin[id], 0, sizeof g_iVoiceAdmin[]);

public fwdSetClientListening_Pre(pReciever, pSender)
{
    if(pReciever == pSender)
        return FMRES_IGNORED;
    if(g_iVoiceAdmin[pSender][pReciever])
        return FMRES_IGNORED;
    if(!g_iVoiceAdmin[pSender][0])
        return FMRES_IGNORED;

    engfunc(EngFunc_SetClientListening, pReciever, pSender, false);
    forward_return(FMV_CELL, false);
    return FMRES_SUPERCEDE;
}

public clcmdCheckVoice(id, flags)
{
    if(~get_user_flags(id) & flags)
    {
        client_print_color(id, 0, "^4Отказано в доступе!");
        return PLUGIN_HANDLED;
    }
    
    new menu = menu_create("\d[\rПрослушка Людей\d]", "voice_menu");
    new call = menu_makecallback("voice_callback");
    
    menu_setprop(menu, MPROP_EXITNAME, "Выход");
    menu_setprop(menu, MPROP_BACKNAME, "Назад");
    menu_setprop(menu, MPROP_NEXTNAME, "Далее");
    
    new pl[32], pnum;
    get_players(pl, pnum, "ch");
    
    for(new i, pid[2], name[32]; i < pnum; i++)
    {
        if(id == pl[i])
            continue;
        
        pid[0] = pl[i];
        get_user_name(pl[i], name, charsmax(name));
        menu_additem(menu, name, pid, 0, call);
    }
    
    menu_display(id, menu, 0);
    return PLUGIN_HANDLED;
}

public voice_callback(id, menu, item)
{
    new pid[2], _access, call;
    new szItem[32], szNewItem[64];
    menu_item_getinfo(menu, item, _access, pid, charsmax(pid), szItem, charsmax(szItem), call);
    
    if(get_user_flags(pid[0]) & ADMIN_RCON)
    {
        formatex(szNewItem, charsmax(szNewItem), "%s \d[\rИммунитет\d]", szItem);
        menu_item_setname(menu, item, szNewItem);
        return ITEM_DISABLED;
    }
    else if(g_iVoiceAdmin[pid[0]][id])
    {
        formatex(szNewItem, charsmax(szNewItem), "%s \d[\rОтключиться\d]", szItem);
        menu_item_setname(menu, item, szNewItem);
    }
    return ITEM_ENABLED;
}   

public voice_menu(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    
    new pid[2], _access, call;
    menu_item_getinfo(menu, item, _access, pid, charsmax(pid), .callback = call);
    
    if(!is_user_connected(pid[0]))
        client_print_color(id, 0, "^1[^4Msk-b.ru^1] ^3Игрок ^4покинул^3 сервер");
    else
    {
        if(g_iVoiceAdmin[pid[0]][id])
        {
            g_iVoiceAdmin[pid[0]][id] = 0;
            if(VoiceOnPlayerOff(pid[0]))
                client_cmd(pid[0], "-voicerecord");   
        }
        else
        {
            g_iVoiceAdmin[pid[0]][0] = 1;
            g_iVoiceAdmin[pid[0]][id] = 1;
            client_cmd(pid[0], "+voicerecord");   
        }
    }
    
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

VoiceOnPlayerOff(id)
{
#if AMXX_VERSION_NUM < 183
    static MaxClients;
    if(!MaxClients) MaxClients = get_maxplayers();
#endif   
    for(new i = 1; i <= MaxClients; i++)
    {
        if(g_iVoiceAdmin[id][i])
            return 0;
    }
    
    g_iVoiceAdmin[id][0] = 0;
    return 1;
}
C показом меню все более менее понятно, заменяем:
PHP:
menu_destroy(menu);
>>>>
PHP:
menu_display(id, menu, тут должна быть страница на которой находится человек которого слушаем);
Но как поймать эту самую страницу, так и не сообразил как это сделать через
menu_find_id · newmenus · AMX Mod X Scripting API Reference

Подскажите, решение, почему то эту функцию не нашел в готовых плагинах, дабы подсмотреть.
Пример с Новая система меню Amxx и все ее функции. не очень так же помог.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу