Advertisement
RanAway

[ Pawn ] Mute menu with new features

May 29th, 2022 (edited)
1,454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 22.13 KB | None | 0 0
  1. /**************** Include ********************/
  2. #include < amxmodx >
  3. #include < fakemeta >
  4.  
  5. /*************** Defines *****************/
  6. #define Prefix      "AMXX"
  7. #define ADMIN_ACCESS    ADMIN_IMMUNITY
  8.  
  9. /**************** News ********************/
  10. new MenuType[ 33 ], AdminTarget[ 33 ], AskForRemove[ 33 ], WhoAskMe[ 33 ]
  11. new bool: VoiceMute[ 33 ][ 33 ], bool: ChatMute[ 33 ][ 33 ], bool: MuteAll[ 33 ], bool:AskForRemoveMute[ 33 ][ 33 ]
  12.  
  13. /**************** Plugin init ********************/
  14. public plugin_init()
  15. {
  16.     register_plugin( "Mute Menu", "v1.0", "RanAway" )
  17.    
  18.     /**************** Commands ********************/
  19.     register_clcmd( "say /mute", "MainMenu" )
  20.    
  21.     /**************** chat ********************/
  22.     register_message( get_user_msgid( "SayText" ), "Chat" )
  23.    
  24.     /**************** voice ********************/
  25.     register_forward( FM_Voice_SetClientListening, "Voice" )
  26. }
  27.  
  28. /**************** chat ********************/
  29. public Chat( Msgid, Msgdest, id )
  30. {
  31.     new tempid = get_msg_arg_int( 1 )
  32.    
  33.     if( is_user_connected( tempid ) )
  34.         if( ChatMute[ id ][ tempid ] )
  35.             return 1
  36.    
  37.     return 0
  38. }
  39.  
  40. /**************** voice ********************/
  41. public Voice( Rec, Send, List )
  42. {
  43.     if( Rec == Send ) return FMRES_IGNORED
  44.    
  45.     if( VoiceMute[ Rec ][ Send ] )
  46.     {
  47.         engfunc( EngFunc_SetClientListening, Rec, Send, 0 )
  48.         return FMRES_SUPERCEDE
  49.     }
  50.    
  51.     return FMRES_IGNORED
  52. }
  53.  
  54. /**************** Mute menu ********************/
  55. public MainMenu( id )
  56. {
  57.     new szMenu[ 250 ]
  58.    
  59.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r]\w Mute menu", Prefix )
  60.     new menu = menu_create( szMenu, "sub_mainmenu" )
  61.    
  62.     menu_additem( menu, "Voice", .callback = menu_makecallback( "Blockmute" ) )
  63.     menu_additem( menu, "Chat^n", .callback = menu_makecallback( "Blockmute" ) )
  64.    
  65.     formatex( szMenu, charsmax( szMenu ), "%sute everyone^n", MuteAll[ id ] ? "Unm" : "M" )
  66.     menu_additem( menu, szMenu, .callback = menu_makecallback( "Blockmute" ) )
  67.    
  68.     menu_additem( menu, "See who muted you", .callback = menu_makecallback( "Blocksee" ) )
  69.     menu_additem( menu, "Admin options", .callback = menu_makecallback( "Blockaccess" ) )
  70.    
  71.     menu_display( id, menu )
  72.     return 1
  73. }
  74.  
  75. /********* Block "Mute" if there is no one but you in the server *********/
  76. public Blockmute( id, menu, item )
  77. {
  78.     for( new i; i < get_maxplayers(); i++ )
  79.         if( is_user_connected( i ) && !is_user_bot( i ) && !is_user_hltv( i ) && i != id ) return ITEM_ENABLED
  80.    
  81.     return ITEM_DISABLED
  82. }
  83.  
  84. /********* Block "see who muted you" and "Remove everyone's mute on me" in the admin menu if no one is muted you *********/
  85. public Blocksee( id, menu, item )
  86. {
  87.     for( new i; i < get_maxplayers(); i++ )
  88.         if( VoiceMute[ i ][ id ] || ChatMute[ i ][ id ] ) return ITEM_ENABLED
  89.    
  90.     return ITEM_DISABLED
  91. }
  92.  
  93. /********* Block admin options for who is not admin *********/
  94. public Blockaccess( id, menu, item )
  95. {
  96.     if( !( get_user_flags( id ) & ADMIN_ACCESS ) )
  97.         return ITEM_DISABLED
  98.    
  99.     return 1
  100. }
  101.  
  102. public sub_mainmenu( id, menu, item )
  103. {
  104.     if( item == MENU_EXIT ) return menu_destroy( menu )
  105.     if( item == 0 ) MenuType[ id ] = true           // Change the menu to voice
  106.     if( item == 1 ) MenuType[ id ] = false          // Change the menu to chat
  107.     if( item == 2 )                     // Mute everyone
  108.     {
  109.         MuteAll[ id ] = !MuteAll[ id ]
  110.         ColorChat( id, "You've ^3%smuted^1 everyone.", MuteAll[ id ] ? "" : "un" )
  111.        
  112.         for( new i; i < get_maxplayers(); i++ )
  113.         {
  114.             if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) || i == id ) continue
  115.            
  116.             VoiceMute[ id ][ i ] = MuteAll[ id ]
  117.             ChatMute[ id ][ i ] = MuteAll[ id ]
  118.             AskForRemoveMute[ id ][ i ] = false
  119.         }
  120.         return MainMenu( id )
  121.     }
  122.     if( item == 3 ) return WhoMuteMe( id, 0 )       // See who mute you
  123.     if( item == 4 ) return AdminMenu( id )          // Admin menu
  124.    
  125.     return MuteMenu( id, 0 )                // Open the mute menu
  126. }
  127.  
  128. /**************** Mute chat/voice menu ********************/
  129. public MuteMenu( id, page )
  130. {
  131.     new szMenu[ 250 ], num[ 33 ]
  132.    
  133.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r]\w Mute %s", Prefix, MenuType[ id ] ? "voice" : "chat" )
  134.     new menu = menu_create( szMenu, "sub_mutemenu" )
  135.    
  136.     for( new i ; i < get_maxplayers(); i++ )
  137.     {
  138.         if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) || i == id ) continue
  139.        
  140.         num_to_str( i, num, charsmax( num ) )
  141.         formatex( szMenu, charsmax( szMenu ), "%s \d%s", GetName( i ), MenuType[ id ] ? ( VoiceMute[ id ][ i ] ? "- [\r Muted \d]" : "" ) : ( ChatMute[ id ][ i ] ? "- [\r Muted \d]" : "" ) )
  142.         menu_additem( menu, szMenu, num )
  143.     }
  144.    
  145.     menu_setprop( menu, MPROP_BACKNAME, "Previous Page" )
  146.     menu_setprop( menu, MPROP_NEXTNAME, "Next Page" )
  147.     menu_setprop( menu, MPROP_EXITNAME, "Back" )
  148.     menu_display( id, menu, page )
  149.     return 1
  150. }
  151.  
  152. public sub_mutemenu( id, menu, item )
  153. {
  154.     if( item == MENU_EXIT ) return MainMenu( id )
  155.    
  156.     new access, callback, info[ 6 ], page
  157.     menu_item_getinfo( menu, item, access, info, charsmax( info ), "", 0, callback )
  158.     player_menu_info( id, menu, menu, page )
  159.    
  160.     new tempid = str_to_num( info )
  161.    
  162.     if( MenuType[ id ] )
  163.     {
  164.         VoiceMute[ id ][ tempid ] = !VoiceMute[ id ][ tempid ]
  165.         ColorChat( id, "%s", VoiceMute[ id ][ tempid ] ? "you canno't hear ^3%s^1 until you remove his mute." : "you can hear ^3%s^1 now.", GetName( tempid ) )
  166.     }
  167.     else
  168.     {
  169.         ChatMute[ id ][ tempid ] = !ChatMute[ id ][ tempid ]
  170.         ColorChat( id, "%s", ChatMute[ id ][ tempid ] ? "you canno't see what ^3%s^1 write until you remove his mute." : "you can see what ^3%s^1 write now.", GetName( tempid ) )
  171.     }
  172.    
  173.     /********* If there is even a single player you didnt mute on ( voice / chat ) turn the "Mute everyone" off *********/
  174.     for( new i; i < get_maxplayers(); i++ ) if( !ChatMute[ id ][ i ] && !VoiceMute[ id ][ i ] ) MuteAll[ id ] = false
  175.    
  176.     /********* If the player that you muted has asked you to remove his mute it will remove his block *********/
  177.     AskForRemoveMute[ id ][ tempid ] = false
  178.    
  179.     return MuteMenu( id, page )
  180. }
  181.  
  182. /**************** See who mute you ********************/
  183. public WhoMuteMe( id, page )
  184. {
  185.     new szMenu[ 1500 ], num[ 33 ]
  186.    
  187.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r]\w see who muted you", Prefix )
  188.     new menu = menu_create( szMenu, "sub_whomenu" )
  189.    
  190.     for( new i ; i < get_maxplayers(); i++ )
  191.     {
  192.         if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) || ( !VoiceMute[ i ][ id ] && !ChatMute[ i ][ id ] ) ) continue
  193.        
  194.         num_to_str( i, num, charsmax( num ) )
  195.         formatex( szMenu, charsmax( szMenu ), "%s \r[\w %s%s%s \r]%s", GetName( i ),
  196.         VoiceMute[ i ][ id ] ? "Voice" : "", VoiceMute[ i ][ id ] && ChatMute[ i ][ id ] ? " \y&\w " : "", ChatMute[ i ][ id ] ? "Chat" : "",
  197.         AskForRemoveMute[ id ][ AskForRemove[ id ] ] ? " \d- \wIgnored your request" : "" )
  198.         menu_additem( menu, szMenu, num, .callback = menu_makecallback( "BlockAsk" ) )
  199.     }
  200.    
  201.     menu_setprop( menu, MPROP_BACKNAME, "Previous Page" )
  202.     menu_setprop( menu, MPROP_NEXTNAME, "Next Page" )
  203.     menu_setprop( menu, MPROP_EXITNAME, "Back" )
  204.     menu_display( id, menu, page )
  205.     return 1
  206. }
  207.  
  208. /**************** Block after you asked ********************/
  209. public BlockAsk( id, menu, item )
  210. {
  211.     if( AskForRemoveMute[ id ][ AskForRemove[ id ] ] )
  212.         return ITEM_DISABLED
  213.    
  214.     return 1
  215. }
  216.  
  217. public sub_whomenu( id, menu, item )
  218. {
  219.     if( item == MENU_EXIT ) return MainMenu( id )
  220.    
  221.     new access, callback, info[ 6 ], page
  222.     menu_item_getinfo( menu, item, access, info, charsmax( info ), "", 0, callback )
  223.     player_menu_info( id, menu, menu, page )
  224.    
  225.     AskForRemove[ id ] = str_to_num( info )
  226.    
  227.     AskForRemoveMute[ id ][ AskForRemove[ id ] ] = true     // Block after you asked
  228.     WhoAskMe[ AskForRemove[ id ] ] = id             // Show who ask for remove
  229.    
  230.     if( AskForRemoveMute[ id ][ AskForRemove[ id ] ] )      // Open menu for the player you asked
  231.         AcceptionMenu( AskForRemove[ id ] )
  232.    
  233.     return WhoMuteMe( id, page )
  234. }
  235.  
  236. /**************** Acception menu ********************/
  237. public AcceptionMenu( id )
  238. {
  239.     new szMenu[ 500 ]
  240.    
  241.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r] \r%s\w ask you to remove his mute", Prefix, GetName( WhoAskMe[ id ] ) )
  242.     new menu = menu_create( szMenu, "sub_acceptionmenu" )
  243.    
  244.     menu_additem( menu, "Accept" )
  245.     menu_additem( menu, "Ignore" )
  246.    
  247.     menu_setprop( menu, MPROP_EXIT, MEXIT_NEVER )
  248.     menu_display( id, menu )
  249.     return 1
  250. }
  251.  
  252. public sub_acceptionmenu( id, menu, item )
  253. {
  254.     /********** Accept the request *********/
  255.     if( item == 0 )
  256.     {
  257.         VoiceMute[ id ][ WhoAskMe[ id ] ] = false
  258.         ChatMute[ id ][ WhoAskMe[ id ] ] = false
  259.         MuteAll[ id ] = false
  260.        
  261.         AskForRemoveMute[ WhoAskMe[ id ] ][ id ] = false
  262.        
  263.         ColorChat( WhoAskMe[ id ], "^3%s^1 has accept your request and remove your mute.", GetName( AskForRemove[ id ] ) )
  264.         return ColorChat( id, "You accept ^3%s^1 request and remove his mute.", GetName( WhoAskMe[ id ] ) )
  265.     }
  266.    
  267.     /********** Ignore the request *********/
  268.     ColorChat( WhoAskMe[ id ], "^3%s^1 has ignored your request to remove your mute.", GetName( AskForRemove[ id ] ) )
  269.     return ColorChat( id, "You ignored ^3%s^1 request to remove his mute.", GetName( WhoAskMe[ id ] ) )
  270. }
  271.  
  272. /**************** Admin menu ********************/
  273. public AdminMenu( id )
  274. {
  275.     new szMenu[ 250 ]
  276.    
  277.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r]\w Admin menu", Prefix )
  278.     new menu = menu_create( szMenu, "sub_adminmenu" )
  279.    
  280.     menu_additem( menu, "Remove \reveryone's\w mutes", .callback = menu_makecallback( "BlockSeeWho" ) )
  281.     menu_additem( menu, "Remove \reveryone's\w mute on you^n", .callback = menu_makecallback( "Blocksee" ) )
  282.     menu_additem( menu, "Show everyone's mutes in menu", .callback = menu_makecallback( "BlockSeeWho" ) )
  283.     menu_additem( menu, "Mute someone for someone else", .callback = menu_makecallback( "Blockmute" ) )
  284.    
  285.     menu_setprop( menu, MPROP_EXITNAME, "Back" )
  286.     menu_display( id, menu )
  287.     return 1
  288. }
  289.  
  290. /********* Block "Show everyone's mute" if no one is muted *********/
  291. public BlockSeeWho( id, menu, item )
  292. {
  293.     for( new i; i < get_maxplayers(); i++ )
  294.         for( new j; j < get_maxplayers(); j++ )
  295.             if( VoiceMute[ i ][ j ] || ChatMute[ i ][ j ] ) return ITEM_ENABLED
  296.    
  297.     return ITEM_DISABLED
  298. }
  299.  
  300. public sub_adminmenu( id, menu, item )
  301. {
  302.     if( item == MENU_EXIT ) return MainMenu( id )
  303.     if( item == 0 )                 // Remove everyone's mutes
  304.     {
  305.         ColorChat( 0, "Everyone's ^3mutes^1 has ^3removed^1." )
  306.        
  307.         for( new i; i < get_maxplayers(); i++ )
  308.         {
  309.             if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) ) continue
  310.            
  311.             for( new j; j < get_maxplayers(); j++ )
  312.             {
  313.                 if( !is_user_connected( j ) || is_user_bot( j ) || is_user_hltv( j ) ) continue
  314.                
  315.                 VoiceMute[ i ][ j ] = false
  316.                 ChatMute[ i ][ j ] = false
  317.                 MuteAll[ i ] = false
  318.                 AskForRemoveMute[ i ][ j ] = false
  319.             }
  320.         }
  321.     }
  322.     if( item == 1 )                 // Remove everyone's mutes on you
  323.     {
  324.         ColorChat( id, "Everyone's ^3mutes^1 on you has ^3removed^1." )
  325.        
  326.         for( new i; i < get_maxplayers(); i++ )
  327.         {
  328.             if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) ) continue
  329.            
  330.             VoiceMute[ i ][ id ] = false
  331.             ChatMute[ i ][ id ] = false
  332.             MuteAll[ i ] = false
  333.             AskForRemoveMute[ i ][ id ] = false
  334.         }
  335.     }
  336.     if( item == 2 ) return ShowMutes( id )      // Show who has mute who
  337.     if( item == 3 ) return ShowMutesForOthers( id ) // Put mute for others
  338.    
  339.     return AdminMenu( id )
  340. }
  341.  
  342. /**************** Show players mute menu ********************/
  343. public ShowMutes( id )
  344. {
  345.     new szMenu[ 250 ], num[ 33 ]
  346.    
  347.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r]\w Show players that mute someone", Prefix )
  348.     new menu = menu_create( szMenu, "sub_showmutes" )
  349.    
  350.     for( new i; i < get_maxplayers(); i++ )
  351.     {
  352.         if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) ) continue
  353.        
  354.         for( new j; j < get_maxplayers(); j++ )
  355.         {
  356.             if( ( !VoiceMute[ i ][ j ] && !ChatMute[ i ][ j ] ) || i == j ) continue
  357.            
  358.             num_to_str( i, num, charsmax( num ) )
  359.             formatex( szMenu, charsmax( szMenu ), "%s", GetName( i ) )
  360.             menu_additem( menu, szMenu, num )
  361.         }
  362.     }
  363.    
  364.     menu_setprop( menu, MPROP_EXITNAME, "Back" )
  365.     menu_display( id, menu )
  366.     return 1
  367. }
  368.  
  369. public sub_showmutes( id, menu, item )
  370. {
  371.     if( item == MENU_EXIT ) return AdminMenu( id )
  372.    
  373.     new access, callback, info[ 6 ]
  374.     menu_item_getinfo( menu, item, access, info, charsmax( info ), "", 0, callback )
  375.    
  376.     AdminTarget[ id ] = str_to_num( info )      // Get the name of the player
  377.    
  378.     return ShowPlayerMutes( id, 0 )         // Show player mutes
  379. }
  380.  
  381. /**************** Show players mutes ********************/
  382. public ShowPlayerMutes( id, page )
  383. {
  384.     new szMenu[ 250 ], num[ 33 ]
  385.    
  386.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r]\w Show \r%s\w mutes", Prefix, GetName( AdminTarget[ id ] ) )
  387.     new menu = menu_create( szMenu, "sub_showplayermutes" )
  388.    
  389.     formatex( szMenu, charsmax( szMenu ), "Remove all \r%s\w mutes", GetName( AdminTarget[ id ] ) )
  390.     menu_additem( menu, szMenu )
  391.    
  392.     for( new i; i < get_maxplayers(); i++ )
  393.     {
  394.         if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) || ( !VoiceMute[ AdminTarget[ id ] ][ i ] && !ChatMute[ AdminTarget[ id ] ][ i ] ) ) continue
  395.        
  396.         num_to_str( i, num, charsmax( num ) )
  397.         formatex( szMenu, charsmax( szMenu ), "%s \r[\w %s%s%s \r]", GetName( i ),
  398.         VoiceMute[ AdminTarget[ id ] ][ i ] ? "Voice" : "",
  399.         VoiceMute[ AdminTarget[ id ] ][ i ] && ChatMute[ AdminTarget[ id ] ][ i ] ? " \y&\w " : "",
  400.         ChatMute[ AdminTarget[ id ] ][ i ] ? "Chat" : "" )
  401.         menu_additem( menu, szMenu, num )
  402.     }
  403.    
  404.     menu_setprop( menu, MPROP_EXITNAME, "Back" )
  405.     menu_display( id, menu, page )
  406.     return 1
  407. }
  408.  
  409. public sub_showplayermutes( id, menu, item )
  410. {
  411.     if( item == MENU_EXIT ) return ShowMutes( id )
  412.    
  413.     new access, callback, info[ 6 ], page
  414.     menu_item_getinfo( menu, item, access, info, charsmax( info ), "", 0, callback )
  415.     player_menu_info( id, menu, menu, page )
  416.    
  417.     new tempid = str_to_num( info )
  418.    
  419.     if( item == 0 )                     // Remove all his mutes
  420.     {
  421.         for( new i; i < get_maxplayers(); i++ )
  422.         {
  423.             VoiceMute[ AdminTarget[ id ] ][ i ] = false
  424.             ChatMute[ AdminTarget[ id ] ][ i ] = false
  425.             MuteAll[ AdminTarget[ id ] ] = false
  426.         }
  427.        
  428.         return AdminMenu( id )
  429.     }
  430.    
  431.     /********** Remove specific mute from him ************/
  432.     VoiceMute[ AdminTarget[ id ] ][ tempid ] = false
  433.     ChatMute[ AdminTarget[ id ] ][ tempid ] = false
  434.     MuteAll[ AdminTarget[ id ] ] = false
  435.    
  436.     return ShowPlayerMutes( id, page )
  437. }
  438.  
  439. /**************** Show players for mute others ********************/
  440. public ShowMutesForOthers( id )
  441. {
  442.     new szMenu[ 250 ], num[ 33 ]
  443.    
  444.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r]\w Show players to mute someone for them", Prefix )
  445.     new menu = menu_create( szMenu, "sub_showmutesforothers" )
  446.    
  447.     for( new i ; i < get_maxplayers(); i++ )
  448.     {
  449.         if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) ) continue
  450.        
  451.         num_to_str( i, num, charsmax( num ) )
  452.         formatex( szMenu, charsmax( szMenu ), "%s", GetName( i ) )
  453.         menu_additem( menu, szMenu, num )
  454.     }
  455.    
  456.     menu_setprop( menu, MPROP_EXITNAME, "Back" )
  457.     menu_display( id, menu )
  458.     return 1
  459. }
  460.  
  461. public sub_showmutesforothers( id, menu, item )
  462. {
  463.     if( item == MENU_EXIT ) return AdminMenu( id )
  464.    
  465.     new access, callback, info[ 6 ]
  466.     menu_item_getinfo( menu, item, access, info, charsmax( info ), "", 0, callback )
  467.    
  468.     AdminTarget[ id ] = str_to_num( info )      // Get the name of the player
  469.    
  470.     return ShowPlayerMutesForOthers( id )       // Show player mutes
  471. }
  472.  
  473. /**************** Show players mutes ********************/
  474. public ShowPlayerMutesForOthers( id )
  475. {
  476.     new szMenu[ 250 ]
  477.    
  478.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r]\w Mute profile of: \r%s", Prefix, GetName( AdminTarget[ id ] ) )
  479.     new menu = menu_create( szMenu, "sub_showplayermutesforothers" )
  480.    
  481.     menu_additem( menu, "Voice" )
  482.     menu_additem( menu, "Chat^n" )
  483.    
  484.     formatex( szMenu, charsmax( szMenu ), "%sute everyone for \r%s^n", MuteAll[ id ] ? "Unm" : "M", GetName( AdminTarget[ id ] ) )
  485.     menu_additem( menu, szMenu )
  486.    
  487.     formatex( szMenu, charsmax( szMenu ), "See who muted \r%s", GetName( AdminTarget[ id ] ) )
  488.     menu_additem( menu, szMenu, .callback = menu_makecallback( "Blockseeothers" ) )
  489.    
  490.     menu_setprop( menu, MPROP_EXITNAME, "Back" )
  491.     menu_display( id, menu )
  492.     return 1
  493. }
  494.  
  495. /********* Block "see who muted you" in ShowPlayerMutesForOthers *********/
  496. public Blockseeothers( id, menu, item )
  497. {
  498.     for( new i; i < get_maxplayers(); i++ )
  499.         if( VoiceMute[ i ][ AdminTarget[ id ] ] || ChatMute[ i ][ AdminTarget[ id ] ] ) return ITEM_ENABLED
  500.    
  501.     return ITEM_DISABLED
  502. }
  503.  
  504. public sub_showplayermutesforothers( id, menu, item )
  505. {
  506.     if( item == MENU_EXIT ) return ShowMutesForOthers( id )
  507.    
  508.     if( item == 0 ) MenuType[ id ] = true           // Change the menu to voice
  509.     if( item == 1 ) MenuType[ id ] = false          // Change the menu to chat
  510.     if( item == 2 )                     // Mute everyone
  511.     {
  512.         MuteAll[ AdminTarget[ id ] ] = !MuteAll[ AdminTarget[ id ] ]
  513.         ColorChat( id, "You've ^3%smuted^1 everyone for ^3%s^1.", MuteAll[ AdminTarget[ id ] ] ? "" : "un", GetName( AdminTarget[ id ] ) )
  514.        
  515.         for( new i; i < get_maxplayers(); i++ )
  516.         {
  517.             if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) || i == AdminTarget[ id ] ) continue
  518.            
  519.             VoiceMute[ AdminTarget[ id ] ][ i ] = MuteAll[ AdminTarget[ id ] ]
  520.             ChatMute[ AdminTarget[ id ] ][ i ] = MuteAll[ AdminTarget[ id ] ]
  521.             AskForRemoveMute[ AdminTarget[ id ] ][ i ] = false
  522.         }
  523.        
  524.         return ShowPlayerMutesForOthers( id )
  525.     }
  526.     if( item == 3 ) return WhoMuteHim( id, 0 )      // See who mute you
  527.    
  528.     return MuteMenuForOthers( id, 0 )
  529. }
  530.  
  531. /**************** Mute chat/voice menu ********************/
  532. public MuteMenuForOthers( id, page )
  533. {
  534.     new szMenu[ 250 ], num[ 33 ]
  535.    
  536.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r]\w Mute %s for \r%s", Prefix, MenuType[ id ] ? "voice" : "chat", GetName( AdminTarget[ id ] ) )
  537.     new menu = menu_create( szMenu, "sub_mutemenuforothers" )
  538.    
  539.     for( new i ; i < get_maxplayers(); i++ )
  540.     {
  541.         if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) || i == id ) continue
  542.        
  543.         num_to_str( i, num, charsmax( num ) )
  544.         formatex( szMenu, charsmax( szMenu ), "%s \d%s", GetName( i ), MenuType[ id ] ? ( VoiceMute[ AdminTarget[ id ] ][ i ] ? "- [\r Muted \d]" : "" ) : ( ChatMute[ AdminTarget[ id ] ][ i ] ? "- [\r Muted \d]" : "" ) )
  545.         menu_additem( menu, szMenu, num )
  546.     }
  547.    
  548.     menu_setprop( menu, MPROP_BACKNAME, "Previous Page" )
  549.     menu_setprop( menu, MPROP_NEXTNAME, "Next Page" )
  550.     menu_setprop( menu, MPROP_EXITNAME, "Back" )
  551.     menu_display( id, menu, page )
  552.     return 1
  553. }
  554.  
  555. public sub_mutemenuforothers( id, menu, item )
  556. {
  557.     if( item == MENU_EXIT ) return ShowPlayerMutesForOthers( id )
  558.    
  559.     new access, callback, info[ 6 ], page
  560.     menu_item_getinfo( menu, item, access, info, charsmax( info ), "", 0, callback )
  561.     player_menu_info( id, menu, menu, page )
  562.    
  563.     new tempid = str_to_num( info )
  564.    
  565.     if( MenuType[ id ] )
  566.     {
  567.         VoiceMute[ AdminTarget[ id ] ][ tempid ] = !VoiceMute[ AdminTarget[ id ] ][ tempid ]
  568.         ColorChat( id, "^3%s^1 %s", GetName( AdminTarget[ id ] ), VoiceMute[ AdminTarget[ id ] ][ tempid ] ? "canno't hear ^3%s^1 until he will remove his mute." : "can hear ^3%s^1 now.", GetName( tempid ) )
  569.     }
  570.     else
  571.     {
  572.         ChatMute[ id ][ tempid ] = !ChatMute[ id ][ tempid ]
  573.         ColorChat( id, "^3%s^1 %s", GetName( AdminTarget[ id ] ), ChatMute[ id ][ tempid ] ? "canno't see what ^3%s^1 write until he will remove his mute." : "can see what ^3%s^1 write now.", GetName( AdminTarget[ id ] ), GetName( tempid ) )
  574.     }
  575.    
  576.     /********* If there is even a single player you didnt mute on ( voice / chat ) turn the "Mute everyone" off *********/
  577.     for( new i; i < get_maxplayers(); i++ ) if( !ChatMute[ AdminTarget[ id ] ][ i ] && !VoiceMute[ AdminTarget[ id ] ][ i ] ) MuteAll[ AdminTarget[ id ] ] = false
  578.    
  579.     /********* If the player that you muted has asked you to remove his mute it will remove his block *********/
  580.     AskForRemoveMute[ AdminTarget[ id ] ][ tempid ] = false
  581.    
  582.     return MuteMenuForOthers( id, page )
  583. }
  584.  
  585. /**************** See who mute him ********************/
  586. public WhoMuteHim( id, page )
  587. {
  588.     new szMenu[ 1500 ], num[ 33 ]
  589.    
  590.     formatex( szMenu, charsmax( szMenu ), "\r[\w %s \r]\w see who muted \r%s", Prefix, GetName( AdminTarget[ id ] ) )
  591.     new menu = menu_create( szMenu, "sub_whoothermenu" )
  592.    
  593.     for( new i ; i < get_maxplayers(); i++ )
  594.     {
  595.         if( !is_user_connected( i ) || is_user_bot( i ) || is_user_hltv( i ) || ( !VoiceMute[ i ][ AdminTarget[ id ] ] && !ChatMute[ i ][ AdminTarget[ id ] ] ) ) continue
  596.        
  597.         num_to_str( i, num, charsmax( num ) )
  598.         formatex( szMenu, charsmax( szMenu ), "%s \r[\w %s%s%s \r]", GetName( i ),
  599.         VoiceMute[ i ][ AdminTarget[ id ] ] ? "Voice" : "", VoiceMute[ i ][ AdminTarget[ id ] ] && ChatMute[ i ][ AdminTarget[ id ] ] ? " \y&\w " : "", ChatMute[ i ][ AdminTarget[ id ] ] ? "Chat" : "" )
  600.         menu_additem( menu, szMenu, num )
  601.     }
  602.    
  603.     menu_setprop( menu, MPROP_BACKNAME, "Previous Page" )
  604.     menu_setprop( menu, MPROP_NEXTNAME, "Next Page" )
  605.     menu_setprop( menu, MPROP_EXITNAME, "Back" )
  606.     menu_display( id, menu, page )
  607.     return 1
  608. }
  609.  
  610. public sub_whoothermenu( id, menu, item )
  611. {
  612.     if( item == MENU_EXIT ) return ShowPlayerMutesForOthers( id )
  613.    
  614.     new access, callback, info[ 6 ], page
  615.     menu_item_getinfo( menu, item, access, info, charsmax( info ), "", 0, callback )
  616.     player_menu_info( id, menu, menu, page )
  617.    
  618.     new tempid = str_to_num( info )
  619.    
  620.     VoiceMute[ tempid ][ AdminTarget[ id ] ] = false
  621.     ChatMute[ tempid ][ AdminTarget[ id ] ] = false
  622.     MuteAll[ AdminTarget[ id ] ] = false
  623.    
  624.     AskForRemoveMute[ tempid ][ AdminTarget[ id ] ] = false
  625.    
  626.     ColorChat( id, "You removed ^3%s^1 mute's from ^3%s^1.", GetName( AdminTarget[ id ] ), GetName( tempid ) )
  627.     return WhoMuteMe( id, page )
  628. }
  629.  
  630. /**************** Stocks ********************/
  631. stock GetName( id )
  632. {
  633.     new name[ 32 ]
  634.     get_user_name( id, name, charsmax( name ) )
  635.     return name
  636. }
  637.  
  638. stock ColorChat( const client, const string[ ], { Float, Sql, Resul,_ }:... )
  639. {
  640.     new msg[ 191 ], players[ 32 ], count = 1
  641.    
  642.     static len; len = formatex( msg, charsmax( msg ), "^3[^1 %s ^3]^1 ", Prefix )
  643.     vformat( msg[ len ], charsmax( msg ) - len, string, 3 )
  644.    
  645.     if( client )
  646.         players[ 0 ] = client
  647.     else
  648.         get_players( players, count, "ch" )
  649.    
  650.     for( new i; i < count; i++ )
  651.     {
  652.         if( is_user_connected( players[ i ] ) )
  653.         {
  654.             message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] )
  655.             write_byte( players[ i ] )
  656.             write_string( msg )
  657.             message_end()
  658.         }
  659.     }
  660.     return 1
  661. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement