I coded a fix for this a long time ago ... i will post it to the community so u are not forced to use other peoples mods that are untrusted and full of backdoors like XSMOD.
The Problem.
say @%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%
Solution in open source format
Within the g_cmds.c file replace the G_ParseVoiceCommands function with the following.
//Start COPY HERE
/*
==================
G_ParseVoiceCommands
==================
*/
void G_ParseVoiceCommands ( gentity_t *ent, const char *chatText, char *text, int textlen, char *sound )
{
	int len;
	int num;
	char *message;
	const char *src;
	const char *pos;
	char c;
	char voicecmd[MAX_VOICECMD_TOKENS];
	qboolean dotext;
	dotext = qtrue;
	len = textlen;
	src = chatText;
	while ( *src != '\0' && len )
	{
		if ( *src != '@' && *src != '&' )
		{
			*text++ = *src++;
			len--;
			continue;
		}
		if ( *src == '&' )
		{
			dotext = qfalse;
		}
		src++;
		if ( (*src == '@' && dotext) || (*src == '&' && !dotext) )
		{
			*text++ = *src++;
			len--;
			continue;
		}
		pos = src;
		num = 0;
		c = *src;
		while ( c >= '0' && c <= '9' && len )
		{
			c -= '0';
			num = num * 10 + c;			
			if (!(num > 0 && num < 1025))
			{
              Com_Printf("[Heret!cmod ERROR]Invalid VoiceCmd Sound Parsed.");
              G_LogPrintf( "[Heret!cmod VoiceCmd ERROR]: %s: %s\n", ent->client->pers.netname, chatText );
              return; 
            }			
			src++;
			len--;
			c = *src;
		}        
        if (!(num > 0 && num < 1025) && !voicecmds.voiceCommandSound[num][0])
		{
          //Heret!cmod Fix - Voice Commands Overflow
            *text++ = dotext?'@':'&';
            src = pos;
            len--;  
			continue;   
          //========================================  
        }
		if ( ent != NULL && ent->client->sess.modData->adminref < 2 && ent->client->sess.modData->adminref != -1 && voicecmds.voiceCommandFlag[num] == VOICE_ADMIN_ONLY )
		{
			*text++ = dotext?'@':'&';
			src = pos;
			continue;
		}
		if ( ent != NULL && !ent->client->sess.modData->clan && voicecmds.voiceCommandFlag[num] == VOICE_CLAN_ONLY )
		{
			*text++ = dotext?'@':'&';
			src = pos;
			continue;
		}
		if ( ent != NULL && ent->client->sess.modData->adminref < 4 && ent->client->sess.modData->adminref > -3 && voicecmds.voiceCommandFlag[num] == VOICE_FOUNDER_ONLY )
		{
			*text++ = dotext?'@':'&';
			src = pos;
			continue;
		}
		if ( ent != NULL && ent->client->sess.modData->adminref < 4 && ent->client->sess.modData->adminref > -3 && voicecmds.voiceCommandFlag[num] == VOICE_COFOUNDER_ONLY )
		{
			*text++ = dotext?'@':'&';
			src = pos;
			continue;
		}
		if ( ent != NULL && ent->client->sess.modData->adminref < 3 && ent->client->sess.modData->adminref > -2 && voicecmds.voiceCommandFlag[num] == VOICE_SYSOP_ONLY )
		{
			*text++ = dotext?'@':'&';
			src = pos;
			continue;
		}
		if ( ent != NULL && ent->client->sess.modData->adminref < 1 && ent->client->sess.modData->adminref > -1 && voicecmds.voiceCommandFlag[num] == VOICE_REFEREE_ONLY )
		{
			*text++ = dotext?'@':'&';
			src = pos;
			continue;
		}
		strcpy( sound, voicecmds.voiceCommandSound[num] );
		message = voicecmds.voiceCommandText[num];        
        G_LogPrintf( "[Heret!cMod] VoiceCmd Text: %s\n", message );        
		if ( dotext  && (num > 0 && num < 1025) && message != NULL)
		{
			while (*message != '\0' && len )
			{ 
				*text++ = *message++;
				len--;
			}
		}
	}
	*text = '\0';
}
//STOP COPY HERE
Thanks In Advance
[Heret!c][Death]
http://www.hereticteam.com