Ok, I want some input;
Two ways I can go with this...
Both have some various points good and bad
First-
Player.SetMuted1) A smart script kiddie could write a bypass (this wouldn't bother me personally, I'd end up kicking or banning them for punishment avoidance)
2) Would require less code adjustment. (I'd simply use the existing usermessage code, instead of sending to one player, send to all muting the 'gagged' players.)
3) Is Client-side (various good/bad, see #1 and #2 again too)
4) Not sure it's working, at least GUI menu-wise. I joined a multiplayer server, went into my Main game menu, Player List, highlighted a player, 'mute' button... Close... went back.. the 'muted' flag that was there was gone again.
Second-
Gamemode.PlayerCanHearPlayersVoice1) Server-side - less script kiddie avoidance possibility, but perhaps more server resource usage.
2) Will require major code rewrite of gag commands
3) Possible potential for other uses (?Some player to player private voice chat?)
That's all I can think of for now.