This is how i did it in the end, just some test code i thought id post it for reference as it could be useful for anyone who searches for something similiar as a later date
Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#define PLUGIN "fm_mute"
#define VERSION "1.0"
#define AUTHOR "watch"
#define SPEAK_MUTED 0
#define SPEAK_NORMAL 1
new g_maxplayers
new g_playermute[33][33]
public client_connect(id)
{
for (new i = 0; i < g_maxplayers; i++)
g_playermute[id][i] = SPEAK_NORMAL
g_playermute[0][id] = SPEAK_NORMAL
}
public client_disconnect(id)
{
for (new i = 0; i < g_maxplayers; i++)
{
g_playermute[id][i] = SPEAK_NORMAL
g_playermute[i][id] = SPEAK_NORMAL
}
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_Voice_SetClientListening, "mute_forward")
g_maxplayers = get_maxplayers()
register_concmd("mute", "mute")
}
public mute_forward(receiver, sender, listen)
{
//client_print(0,print_console,"%d %d %d",receiver, sender, listen)
if (receiver == sender)
return FMRES_IGNORED
new name[32]
get_user_name(sender,name,31)
if (g_playermute[0][sender] == SPEAK_MUTED && listen == SPEAK_NORMAL)
{
client_print(0,print_chat,"%s is muted globally %d %d %d", name, receiver, sender, listen)
engfunc(EngFunc_SetClientListening, receiver, sender, SPEAK_MUTED)
return FMRES_SUPERCEDE
}
else if (g_playermute[receiver][sender] == SPEAK_MUTED && listen == SPEAK_NORMAL)
{
client_print(0,print_chat,"%s is muted by player %d %d %d", name, receiver, sender, listen)
engfunc(EngFunc_SetClientListening, receiver, sender, SPEAK_MUTED)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public set_client_listening(receiver, sender, listen)
g_playermute[receiver][sender] = listen
public mute(id)
{
new args[33], target[32], listen[2]
read_args(args,31)
strbreak(args,target,30, listen, 1)
new player = cmd_target(id,target,0)
if (!player) return PLUGIN_HANDLED
set_client_listening(id,player, str_to_num(listen))
console_print(id,"done")
return PLUGIN_HANDLED
}
public set_speak(id,listen)
g_playermute[0][id] = listen