搜索
查看: 2354|回复: 2

[AMXX 带源码] 静音菜单插件

[复制链接]
发表于 2009-4-7 13:27:48 | 显示全部楼层 |阅读模式 来自 中国–山东–淄博
本帖最后由 千喜哥 于 2009-4-7 13:32 编辑

为了给大家节约资金 我就不发插件了 直接把代码发上来
此插件没汉化!!!
插件描述:

提供了一个菜单客户静音其他客户。

客户端的命令:
say /mute 说/静音
say_team /mute say_team /静音
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>

  4. #define PLUGIN         "mute menu"
  5. #define VERSION "1.0"
  6. #define AUTHOR         "cheap_suit"

  7. #define MAX_PLAYERS 32

  8. new bool:g_mute[MAX_PLAYERS+1][MAX_PLAYERS+1]
  9. new g_menuposition[MAX_PLAYERS+1]
  10. new g_menuplayers[MAX_PLAYERS+1][32]
  11. new g_menuplayersnum[MAX_PLAYERS+1]

  12. new cvar_alltalk
  13. new g_maxclients

  14. public plugin_init()
  15. {
  16.         register_plugin(PLUGIN, VERSION, AUTHOR)
  17.         register_cvar(PLUGIN, VERSION, FCVAR_SPONLY|FCVAR_SERVER)

  18.         register_clcmd("say", "clcmd_say")
  19.         register_clcmd("say_team", "clcmd_say")

  20.         register_forward(FM_Voice_SetClientListening, "fwd_voice_setclientlistening")
  21.         register_menucmd(register_menuid("mute menu"), 1023, "action_mutemenu")
  22.        
  23.         cvar_alltalk = get_cvar_pointer("sv_alltalk")
  24.         g_maxclients = global_get(glb_maxClients)
  25. }

  26. public client_putinserver(id)
  27.         clear_list(id)
  28.        
  29. public client_disconnect(id)
  30.         clear_list(id)

  31. clear_list(id)
  32. {
  33.         for(new i = 0; i <= g_maxclients; ++i)
  34.                 g_mute[id][i] = false
  35. }

  36. public clcmd_say(id)
  37. {
  38.         static say_args[10]
  39.         read_args(say_args, 9)
  40.         remove_quotes(say_args)
  41.        
  42.         if(say_args[0] == '/' && containi(say_args, "mute") != -1)
  43.         {
  44.                 display_mutemenu(id, g_menuposition[id] = 0)
  45.                 return PLUGIN_HANDLED_MAIN
  46.         }
  47.         return PLUGIN_CONTINUE
  48. }

  49. public fwd_voice_setclientlistening(receiver, sender, listen)
  50. {
  51.         if(receiver == sender)
  52.                 return FMRES_IGNORED
  53.                
  54.         if(g_mute[receiver][sender])
  55.         {
  56.                 engfunc(EngFunc_SetClientListening, receiver, sender, 0)
  57.                 return FMRES_SUPERCEDE
  58.         }
  59.         return FMRES_IGNORED
  60. }

  61. display_mutemenu(id, pos)
  62. {
  63.         if(pos < 0)  
  64.                 return
  65.                
  66.         static team[11]
  67.         get_user_team(id, team, 10)
  68.        
  69.         new at = get_pcvar_num(cvar_alltalk)
  70.         get_players(g_menuplayers[id], g_menuplayersnum[id],
  71.         at ? "c" : "ce", at ? "" : team)

  72.           new start = pos * 8
  73.           if(start >= g_menuplayersnum[id])
  74.                     start = pos = g_menuposition[id]

  75.           new end = start + 8
  76.         if(end > g_menuplayersnum[id])
  77.                     end = g_menuplayersnum[id]
  78.        
  79.         static menubody[512]       
  80.           new len = format(menubody, 511, "\wMute Menu^n^n")

  81.         static name[32]
  82.        
  83.         new b = 0, i
  84.         new keys = MENU_KEY_0
  85.        
  86.           for(new a = start; a < end; ++a)
  87.         {
  88.                     i = g_menuplayers[id][a]
  89.                     get_user_name(i, name, 31)
  90.                
  91.                 if(i == id)
  92.                 {
  93.                         ++b
  94.                         len += format(menubody[len], 511 - len, "\d#  %s %s\w^n", name, g_mute[id][i] ? "(Muted)" : "")
  95.                 }
  96.                 else
  97.                 {
  98.                         keys |= (1<<b)
  99.                         len += format(menubody[len], 511 - len, "%s%d. %s %s\w^n", g_mute[id][i] ? "\y" : "\w", ++b, name, g_mute[id][i] ? "(Muted)" : "")
  100.                 }
  101.         }

  102.           if(end != g_menuplayersnum[id])
  103.         {
  104.                     format(menubody[len], 511 - len, "^n9. %s...^n0. %s", "More", pos ? "Back" : "Exit")
  105.                     keys |= MENU_KEY_9
  106.           }
  107.           else
  108.                 format(menubody[len], 511-len, "^n0. %s", pos ? "Back" : "Exit")
  109.        
  110.           show_menu(id, keys, menubody, -1, "mute menu")
  111. }


  112. public action_mutemenu(id, key)
  113. {
  114.         switch(key)
  115.         {
  116.                     case 8: display_mutemenu(id, ++g_menuposition[id])
  117.                 case 9: display_mutemenu(id, --g_menuposition[id])
  118.                     default:
  119.                 {
  120.                         new player = g_menuplayers[id][g_menuposition[id] * 8 + key]
  121.                        
  122.                         g_mute[id][player] = g_mute[id][player] ? false : true
  123.                         display_mutemenu(id, g_menuposition[id])
  124.                        
  125.                         static name[32]
  126.                         get_user_name(player, name, 31)
  127.                         client_print(id, print_chat, "You have %smuted %s", g_mute[id][player] ? "" : "un", name)
  128.                     }
  129.           }
  130.         return PLUGIN_HANDLED
  131. }
复制代码
发表于 2009-4-7 14:19:18 | 显示全部楼层 来自 中国–北京–北京
作用是啥?脚步还是说话静音,不愿意听别人说话?
回复

使用道具 举报

发表于 2009-4-7 14:21:11 | 显示全部楼层 来自 中国–湖南–怀化–鹤城区
楼主不是说的很详细了么,结合下原创区的帖子.你就明白了`
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表