Advertisement
Sugisaki

[AMXX] Advanced Mute Menu - V 1.5

Oct 12th, 2015
515
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.63 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <fakemeta>
  3.  
  4. #define PLUGIN "Mute Menu"
  5. #define VERSION "1.5"
  6. #define AUTHOR "Sugisaki"
  7.  
  8. new bool:iPmuted[33][33]
  9. new bool:iMute_by_admin[33]
  10. new iMaxP
  11.  
  12. public plugin_init()
  13. {
  14.     register_plugin(PLUGIN, VERSION, AUTHOR)
  15.     register_forward(FM_Voice_SetClientListening, "pfn_voice_hook")
  16.     register_clcmd("say /mute", "pfn_mute_menu_callbegin")
  17.     iMaxP = get_maxplayers()
  18. }
  19. stock bool:is_user_admin(id)
  20. {
  21.     return (get_user_flags(id) & ADMIN_BAN) ? true : false
  22. }
  23. public pfn_voice_hook(r, s, l)
  24. {
  25.     if(s == r) return FMRES_IGNORED
  26.    
  27.    
  28.     if(iPmuted[r][s] || iMute_by_admin[s])
  29.     {
  30.         engfunc(EngFunc_SetClientListening, r, s, 0)
  31.         return FMRES_SUPERCEDE
  32.     }
  33.     return FMRES_IGNORED
  34. }
  35. public client_putinserver(id)
  36. {
  37.     for(new i = 1 ; i <= iMaxP ; i++)
  38.     {
  39.         iPmuted[i][id] = false
  40.     }
  41.     iMute_by_admin[id] = false
  42. }
  43. public client_disconnect(id)
  44. {
  45.     for(new i = 1 ; i <= iMaxP ; i++)
  46.     {
  47.         iPmuted[id][i] = false
  48.     }
  49.     iMute_by_admin[id] = false
  50. }
  51. public pfn_mute_menu_callbegin(id)
  52. {
  53.     if(!is_user_connected(id))
  54.         return PLUGIN_HANDLED
  55.     new menu = menu_create("\rMute Menu", "mh_menu_callbegin")
  56.     menu_additem(menu, "Silenciar")
  57.     menu_additem(menu, "Escuchar")
  58.     menu_addblank(menu, 3)
  59.     if(is_user_admin(id))
  60.         menu_additem(menu, "Admin menu")
  61.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  62.     menu_display(id, menu)
  63.     return PLUGIN_HANDLED
  64. }
  65. public mh_menu_callbegin(id, menu, item)
  66. {
  67.     if(item == MENU_EXIT)
  68.     {
  69.         menu_destroy(menu)
  70.         return PLUGIN_HANDLED
  71.     }
  72.     menu_destroy(menu)
  73.    
  74.     switch(item)
  75.     {
  76.         case 0: make_menu_mute(id)
  77.         case 1: make_menu_listen(id)
  78.         case 2:
  79.         {
  80.             if(!is_user_admin(id))
  81.                 return PLUGIN_HANDLED
  82.             make_admin_menu(id)
  83.         }
  84.     }
  85.     return PLUGIN_HANDLED
  86. }
  87.  
  88. make_menu_mute(id)
  89. {
  90.     new menu = menu_create("\rSelect Player", "mh_mute")
  91.     new name[32], num[3]
  92.  
  93.     for(new i = 1 ; i <= iMaxP ; i++)
  94.     {
  95.         if(!is_user_connected(i) || iPmuted[id][i] || id == i)
  96.             continue
  97.        
  98.         get_user_name(i, name, 31)
  99.         num_to_str(i, num, 2)
  100.         menu_additem(menu, name, num)
  101.     }
  102.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  103.     menu_display(id, menu)
  104.     return PLUGIN_HANDLED
  105. }
  106. public mh_mute(id, menu, item)
  107. {
  108.     if(item == MENU_EXIT)
  109.     {
  110.         menu_destroy(menu)
  111.         return PLUGIN_HANDLED
  112.     }
  113.     new name[32], num[3], a, c
  114.     menu_item_getinfo(menu, item, a, num, charsmax(num), name, charsmax(name), c)
  115.     menu_destroy(menu)
  116.    
  117.     c = str_to_num(num)
  118.    
  119.     client_print(id, print_chat, "[AMXX] Has silenciado a %s", name)
  120.     iPmuted[id][c] = true
  121.     return PLUGIN_HANDLED
  122. }
  123. make_menu_listen(id)
  124. {
  125.     new menu = menu_create("\rSelect Player", "mh_listen")
  126.  
  127.     new name[32], num[3]
  128.  
  129.     for(new i = 1 ; i <= iMaxP ; i++)
  130.     {
  131.         if(!is_user_connected(i) || !(iPmuted[id][i]) || id == i)
  132.             continue;
  133.         get_user_name(i, name, 31);
  134.         num_to_str(i, num, 2);
  135.         menu_additem(menu, name, num);
  136.        
  137.     }
  138.    
  139.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  140.     menu_display(id, menu)
  141.     return PLUGIN_HANDLED
  142. }
  143. public mh_listen(id, menu, item)
  144. {
  145.     if(item == MENU_EXIT)
  146.     {
  147.         menu_destroy(menu)
  148.         return PLUGIN_HANDLED
  149.     }
  150.     new name[32], num[3], a, c
  151.     menu_item_getinfo(menu, item, a, num, charsmax(num), name, charsmax(name), c)
  152.     menu_destroy(menu)
  153.    
  154.     c = str_to_num(num)
  155.    
  156.     client_print(id, print_chat, "[AMXX] Has vuelto a escuchar a %s", name)
  157.     iPmuted[id][c] = false
  158.     return PLUGIN_HANDLED
  159. }
  160. make_admin_menu(id)
  161. {
  162.     if(!is_user_admin(id))
  163.         return PLUGIN_HANDLED
  164.        
  165.     new menu = menu_create("\rAdmin Menu", "mh_admin_menu_callbegin")
  166.     menu_additem(menu, "Silenciar")
  167.     menu_additem(menu, "Escuchar")
  168.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  169.     menu_display(id, menu)
  170.     return PLUGIN_HANDLED
  171. }
  172. public mh_admin_menu_callbegin(id, menu, item)
  173. {
  174.     if(item == MENU_EXIT)
  175.     {
  176.         menu_destroy(menu)
  177.         return PLUGIN_HANDLED
  178.     }
  179.     menu_destroy(menu)
  180.    
  181.     switch(item)
  182.     {
  183.         case 0: make_admin_menu_mute(id)
  184.         case 1: make_admin_menu_listen(id)
  185.     }
  186.     return PLUGIN_HANDLED
  187. }
  188. make_admin_menu_mute(id)
  189. {
  190.     new menu = menu_create("\rSelect Player", "mh_admin_mute")
  191.     new name[32], num[3]
  192.  
  193.     for(new i = 1 ; i <= iMaxP ; i++)
  194.     {
  195.         if(!is_user_connected(i) || iMute_by_admin[i] || id == i)
  196.             continue
  197.        
  198.         get_user_name(i, name, 31)
  199.         num_to_str(i, num, 2)
  200.         menu_additem(menu, name, num)
  201.     }
  202.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  203.     menu_display(id, menu)
  204.     return PLUGIN_HANDLED
  205. }
  206. public mh_admin_mute(id, menu, item)
  207. {
  208.     if(item == MENU_EXIT)
  209.     {
  210.         menu_destroy(menu)
  211.         return PLUGIN_HANDLED
  212.     }
  213.     new name[32], num[3], a, c, admin[32]
  214.     menu_item_getinfo(menu, item, a, num, charsmax(num), name, charsmax(name), c)
  215.     menu_destroy(menu)
  216.     get_user_name(id, admin, 31)
  217.    
  218.     c = str_to_num(num)
  219.    
  220.     iMute_by_admin[c] = true
  221.    
  222.     client_print(0, print_chat, "[AMXX] Admin %s ha silenciado a %s", admin, name)
  223.     return PLUGIN_HANDLED
  224. }
  225. make_admin_menu_listen(id)
  226. {
  227.     new menu = menu_create("\rSelect Player", "mh_admin_listen")
  228.     new name[32], num[3]
  229.  
  230.     for(new i = 1 ; i <= iMaxP ; i++)
  231.     {
  232.         if(!is_user_connected(i) || !(iMute_by_admin[i]) || id == i)
  233.             continue
  234.        
  235.         get_user_name(i, name, 31)
  236.         num_to_str(i, num, 2)
  237.         menu_additem(menu, name, num)
  238.     }
  239.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  240.     menu_display(id, menu)
  241.     return PLUGIN_HANDLED
  242. }
  243. public mh_admin_listen(id, menu, item)
  244. {
  245.     if(item == MENU_EXIT)
  246.     {
  247.         menu_destroy(menu)
  248.         return PLUGIN_HANDLED
  249.     }
  250.     new name[32], num[3], a, c, admin[32]
  251.     menu_item_getinfo(menu, item, a, num, charsmax(num), name, charsmax(name), c)
  252.     menu_destroy(menu)
  253.     get_user_name(id, admin, 31)
  254.    
  255.     c = str_to_num(num)
  256.    
  257.     iMute_by_admin[c] = false
  258.    
  259.     client_print(0, print_chat, "[AMXX] Admin %s le dio otra oportunidad a %s para volver a hablar", admin, name)
  260.     return PLUGIN_HANDLED
  261. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement