SPIRIT
Пользователь
- Регистрация
- 11 Июл 2017
- Сообщения
- 34
- Симпатии
- 11
- Пол
- Мужской
Здравствуйте, можете подсказать как правильно поймать страницу на которой находится игрок которого подслушивают и не закрывать меню после активации а открыть именно на этой странице.
Собственно сам код.
C показом меню все более менее понятно, заменяем:
>>>>
Но как поймать эту самую страницу, так и не сообразил как это сделать через
menu_find_id · newmenus · AMX Mod X Scripting API Reference
Подскажите, решение, почему то эту функцию не нашел в готовых плагинах, дабы подсмотреть.
Пример с Новая система меню Amxx и все ее функции. не очень так же помог.
Собственно сам код.
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;
}
PHP:
menu_destroy(menu);
PHP:
menu_display(id, menu, тут должна быть страница на которой находится человек которого слушаем);
menu_find_id · newmenus · AMX Mod X Scripting API Reference
Подскажите, решение, почему то эту функцию не нашел в готовых плагинах, дабы подсмотреть.
Пример с Новая система меню Amxx и все ее функции. не очень так же помог.