i have to writ this so that admin can mute a Player on chat/VC...where is ma problem?
PHP Code:
#include <amxmodx>
#include <amxmisc>
#define MENU_SIZE 512
#define MENU_PLAYERS 8
#define VoiceCommMute 1
#if VoiceCommMute == 1
new const PLUGIN[] = "amxx"
new const VERSION[] = "1"
new const AUTHOR[] = "amxxxx"
new const g_menutitle[][] =
{
"Chat Mute%60s%i/%i^n^n",
"\yChat Mute%60s%i/%i^n^n\w"
}
new const g_menutext1[][] =
{
"%i.[admin] %s ^n",
"\d%i. %s^n\w"
}
new const g_menutext2[][] =
{
"%i.[%s] %s ^n",
"%i. \r%s \w%s\w^n"
}
new g_is_counterstrike
//xeroblood
new g_nMenuPosition[33]
new g_nMenuPlayers[32]
//xeroblood
new bool:gb_mute[33][33]
new Float:gf_time[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /chatmute", "cmd_mutemenu")
register_clcmd("amx_chatmute", "cmd_chatmute", -1, "<name>")
register_clcmd("amx_chatmutemenu", "cmd_mutemenu", -1, "displays chat mute menu")
register_menucmd(register_menuid("Chat Mute"), 1023, "handle_mutemenu")
register_message(get_user_msgid("SayText"), "message_SayText")
new modname[32]
get_modname(modname, 31)
if(equal(modname, "cstrike"))
{
g_is_counterstrike = 1
}
}
public message_SayText(iMsgid, iDest, receiver)
{
static sender
sender = get_msg_arg_int(1)
if(gb_mute[receiver][sender])
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public cmd_chatmute(id)
{
new arg1[32]
read_argv(1, arg1, 31)
if(!arg1[0])
{
client_print(id, print_console, "Usage: amx_mute <name>")
return PLUGIN_HANDLED
}
new player = cmd_target(id, arg1, 0)
if(player)
{
exec_mute(id, player)
if(get_cvar_num("sv_alltalk") == 1)
if(flags & 4)
set_speak(id, SPEAK_ALL)
else
set_speak(id, SPEAK_NORMAL)
}
}
return PLUGIN_HANDLED
}
public exec_mute(id, target)
{
if(access(target, ADMIN_KICK))
{
client_print(id, print_console, "[AMXX] You cannot mute an admin.")
return 0
}
else if(target == id)
{
client_print(id, print_console, "[AMXX] You can't mute yourself.")
return 0
}
new Float:current_time = get_gametime()
new Float:interval = get_cvar_float("amx_flood_time")
if(current_time > gf_time[id] + interval)
{
gf_time[id] = current_time
}
else
{
client_print(id, print_chat, "[AMXX] Please wait %f seconds to mute again.", interval)
return 0
}
gb_mute[id][target] = !gb_mute[id][target]
new name[32], name2[32]
get_user_name(target, name, 31)
get_user_name(id, name2, 31)
client_print(0, print_chat, "[AMXX] %s has %smuted %s chat.", name2, (gb_mute[id][target] ? "" : "un"), name)
return 1
}
/*
xeroblood's fantastic menu, customized
*/
public cmd_mutemenu(id)
{
show_mutemenu(id, g_nMenuPosition[id] = 0)
return PLUGIN_HANDLED
}
public handle_mutemenu(id, key)
{
switch(key)
{
case 8: show_mutemenu(id, ++g_nMenuPosition[id])
case 9: show_mutemenu(id, --g_nMenuPosition[id])
default:
{
new nPlayerID = g_nMenuPlayers[g_nMenuPosition[id] * MENU_PLAYERS + key]
exec_mute(id, nPlayerID)
show_mutemenu(id, g_nMenuPosition[id])
}
}
return PLUGIN_HANDLED
}
public show_mutemenu(id, pos)
{
if(pos < 0) return
new i, iPlayerID
new szMenuBody[MENU_SIZE]
new nCurrKey = 0
new szUserName[32]
new nStart = pos * MENU_PLAYERS
new nNum
get_players(g_nMenuPlayers, nNum)
if(nStart >= nNum)
nStart = pos = g_nMenuPosition[id] = 0
new nLen = format(szMenuBody, MENU_SIZE-1, g_menutitle[g_is_counterstrike], "", pos+1, (nNum / MENU_PLAYERS + ((nNum % MENU_PLAYERS) ? 1 : 0 )))
new nEnd = nStart + MENU_PLAYERS
new nKeys = (1<<9)
if( nEnd > nNum )
nEnd = nNum
for(i = nStart; i < nEnd; i++)
{
iPlayerID = g_nMenuPlayers[i]
get_user_name(iPlayerID, szUserName, 31)
if(access(iPlayerID, ADMIN_KICK) || iPlayerID == id)
{
nCurrKey++
nLen += format(szMenuBody[nLen], (MENU_SIZE-1-nLen), g_menutext1[g_is_counterstrike], nCurrKey, szUserName)
}
else
{
nKeys |= (1<<nCurrKey++)
nLen += format(szMenuBody[nLen], (MENU_SIZE-1-nLen), g_menutext2[g_is_counterstrike], nCurrKey, (gb_mute[id][iPlayerID] ? "mute" : ""), szUserName)
}
}
if(nEnd != nNum)
{
format(szMenuBody[nLen], (MENU_SIZE-1-nLen), "^n9. More...^n0. %s", pos ? "Back" : "Exit")
nKeys |= (1<<8)
}
else
format(szMenuBody[nLen], (MENU_SIZE-1-nLen), "^n0. %s", pos ? "Back" : "Exit")
show_menu(id, nKeys, szMenuBody, -1)
return
}