15/07/2018, 12:13 AM
alguien podria ayudarme y sacarle la opción del mute de los admines por favor, Gracias
Código PHP:
#include <amxmodx>
#include <fakemeta>
#define PLUGIN "Mute Menu"
#define VERSION "1.5"
#define AUTHOR "Sugisaki"
new bool:iPmuted[33][33]
new bool:iMute_by_admin[33]
new iMaxP
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_Voice_SetClientListening, "pfn_voice_hook")
register_clcmd("say /mute", "pfn_mute_menu_callbegin")
iMaxP = get_maxplayers()
}
stock bool:is_user_admin(id)
{
return (get_user_flags(id) & ADMIN_BAN) ? true : false
}
public pfn_voice_hook(r, s, l)
{
if(s == r) return FMRES_IGNORED
if(iPmuted[r][s] || iMute_by_admin[s])
{
engfunc(EngFunc_SetClientListening, r, s, 0)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public client_putinserver(id)
{
for(new i = 1 ; i <= iMaxP ; i++)
{
iPmuted[i][id] = false
}
iMute_by_admin[id] = false
}
public client_disconnect(id)
{
for(new i = 1 ; i <= iMaxP ; i++)
{
iPmuted[id][i] = false
}
iMute_by_admin[id] = false
}
public pfn_mute_menu_callbegin(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED
new menu = menu_create("\rMute Menu", "mh_menu_callbegin")
menu_additem(menu, "Silenciar")
menu_additem(menu, "Escuchar")
menu_addblank(menu, 3)
if(is_user_admin(id))
menu_additem(menu, "Admin menu")
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu)
return PLUGIN_HANDLED
}
public mh_menu_callbegin(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
menu_destroy(menu)
switch(item)
{
case 0: make_menu_mute(id)
case 1: make_menu_listen(id)
case 2:
{
if(!is_user_admin(id))
return PLUGIN_HANDLED
make_admin_menu(id)
}
}
return PLUGIN_HANDLED
}
make_menu_mute(id)
{
new menu = menu_create("\rSelect Player", "mh_mute")
new name[32], num[3]
for(new i = 1 ; i <= iMaxP ; i++)
{
if(!is_user_connected(i) || iPmuted[id][i] || id == i)
continue
get_user_name(i, name, 31)
num_to_str(i, num, 2)
menu_additem(menu, name, num)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu)
return PLUGIN_HANDLED
}
public mh_mute(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new name[32], num[3], a, c
menu_item_getinfo(menu, item, a, num, charsmax(num), name, charsmax(name), c)
menu_destroy(menu)
c = str_to_num(num)
client_print(id, print_chat, "[AMXX] Has silenciado a %s", name)
iPmuted[id][c] = true
return PLUGIN_HANDLED
}
make_menu_listen(id)
{
new menu = menu_create("\rSelect Player", "mh_listen")
new name[32], num[3]
for(new i = 1 ; i <= iMaxP ; i++)
{
if(!is_user_connected(i) || !(iPmuted[id][i]) || id == i)
continue;
get_user_name(i, name, 31);
num_to_str(i, num, 2);
menu_additem(menu, name, num);
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu)
return PLUGIN_HANDLED
}
public mh_listen(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new name[32], num[3], a, c
menu_item_getinfo(menu, item, a, num, charsmax(num), name, charsmax(name), c)
menu_destroy(menu)
c = str_to_num(num)
client_print(id, print_chat, "[AMXX] Has vuelto a escuchar a %s", name)
iPmuted[id][c] = false
return PLUGIN_HANDLED
}
make_admin_menu(id)
{
if(!is_user_admin(id))
return PLUGIN_HANDLED
new menu = menu_create("\rAdmin Menu", "mh_admin_menu_callbegin")
menu_additem(menu, "Silenciar")
menu_additem(menu, "Escuchar")
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu)
return PLUGIN_HANDLED
}
public mh_admin_menu_callbegin(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
menu_destroy(menu)
switch(item)
{
case 0: make_admin_menu_mute(id)
case 1: make_admin_menu_listen(id)
}
return PLUGIN_HANDLED
}
make_admin_menu_mute(id)
{
new menu = menu_create("\rSelect Player", "mh_admin_mute")
new name[32], num[3]
for(new i = 1 ; i <= iMaxP ; i++)
{
if(!is_user_connected(i) || iMute_by_admin[i] || id == i)
continue
get_user_name(i, name, 31)
num_to_str(i, num, 2)
menu_additem(menu, name, num)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu)
return PLUGIN_HANDLED
}
public mh_admin_mute(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new name[32], num[3], a, c, admin[32]
menu_item_getinfo(menu, item, a, num, charsmax(num), name, charsmax(name), c)
menu_destroy(menu)
get_user_name(id, admin, 31)
c = str_to_num(num)
iMute_by_admin[c] = true
client_print(0, print_chat, "[AMXX] Admin %s ha silenciado a %s", admin, name)
return PLUGIN_HANDLED
}
make_admin_menu_listen(id)
{
new menu = menu_create("\rSelect Player", "mh_admin_listen")
new name[32], num[3]
for(new i = 1 ; i <= iMaxP ; i++)
{
if(!is_user_connected(i) || !(iMute_by_admin[i]) || id == i)
continue
get_user_name(i, name, 31)
num_to_str(i, num, 2)
menu_additem(menu, name, num)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu)
return PLUGIN_HANDLED
}
public mh_admin_listen(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new name[32], num[3], a, c, admin[32]
menu_item_getinfo(menu, item, a, num, charsmax(num), name, charsmax(name), c)
menu_destroy(menu)
get_user_name(id, admin, 31)
c = str_to_num(num)
iMute_by_admin[c] = false
client_print(0, print_chat, "[AMXX] Admin %s le dio otra oportunidad a %s para volver a hablar", admin, name)
return PLUGIN_HANDLED
}