It seems that you don't understand what configstrings and what Redfusion does. Let me explain:
1) Configstrings is public data that can be accessed by every connected player.
2) Configstrings have been available all the time (they're important part of Quake 3 engine), even before Redfusion was written.
3) The only thing Redfusion does with configstrings is pasting them to cvars.
Accessing configstrings is simple even for uber-noobs. It can be done in two ways (available in every quake3 engine based game):
1) /configstrings command - list of all configstrings
2) /developer 1 - shows incoming server commands ("cs" commands are configstring updates).
If you hate ability to read configstrings so much why won't you just block it?
Here are fragments of client/cl_cgame.c
Code: Select all
void CL_UpdateGSVars (int cs, const char *str)
{
if (cs==CS_VOTE_STRING)
Cvar_Set("gs_vote",str);
else if (cs==CS_VOTE_TIME)
Cvar_Set("gs_voteTime",str);
Code: Select all
else if (cs==CS_STAGES)
{
int as,hs,akills,hkills,atresh,htresh;
sscanf(str,"%i %i %i %i %i %i", &as, &hs, &akills, &hkills, &atresh, &htresh);
Cvar_SetValue("gs_as",as);
Cvar_SetValue("gs_hs",hs);
Cvar_SetValue("gs_akills",akills);
Cvar_SetValue("gs_hkills",hkills);
Cvar_SetValue("gs_ast",atresh);
Cvar_SetValue("gs_hst",htresh);
}
Code: Select all
qboolean CL_GetServerCommand( int serverCommandNumber ) {
Code: Select all
if ( !strcmp( cmd, "cs" ) ) {
CL_ConfigstringModified();
// reparse the string, because CL_ConfigstringModified may have done another Cmd_TokenizeString()
Cmd_TokenizeString( s );
CL_UpdateGSVars(atoi(Cmd_Argv(1)),Cmd_Argv(2));
return qtrue;
}
I don't see any hacks here, do you?