diff --git a/code/client/cl_cgame.c b/code/client/cl_cgame.c index e2c682e6..d767b8ac 100644 --- a/code/client/cl_cgame.c +++ b/code/client/cl_cgame.c @@ -746,6 +746,10 @@ void CL_InitCGame( void ) { // otherwise server commands sent just before a gamestate are dropped VM_Call( cgvm, CG_INIT, clc.serverMessageSequence, clc.lastExecutedServerCommand, clc.clientNum ); + // reset any CVAR_CHEAT cvars registered by cgame + if ( !cl_connectedToCheatServer ) + Cvar_SetCheatState(); + // we will send a usercmd this frame, which // will cause the server to send us the first snapshot cls.state = CA_PRIMED; diff --git a/code/client/cl_parse.c b/code/client/cl_parse.c index 35b6605a..6bac6d0e 100644 --- a/code/client/cl_parse.c +++ b/code/client/cl_parse.c @@ -325,6 +325,7 @@ void CL_ParseSnapshot( msg_t *msg ) { //===================================================================== int cl_connectedToPureServer; +int cl_connectedToCheatServer; /* ================== @@ -355,7 +356,8 @@ void CL_SystemInfoChanged( void ) { } s = Info_ValueForKey( systemInfo, "sv_cheats" ); - if ( atoi(s) == 0 ) { + cl_connectedToCheatServer = atoi( s ); + if ( !cl_connectedToCheatServer ) { Cvar_SetCheatState(); } diff --git a/code/client/cl_ui.c b/code/client/cl_ui.c index 45c0c374..9345647a 100644 --- a/code/client/cl_ui.c +++ b/code/client/cl_ui.c @@ -1171,6 +1171,10 @@ void CL_InitUI( void ) { // init for this gamestate VM_Call( uivm, UI_INIT, (cls.state >= CA_AUTHORIZING && cls.state < CA_ACTIVE) ); } + + // reset any CVAR_CHEAT cvars registered by ui + if ( !cl_connectedToCheatServer ) + Cvar_SetCheatState(); } qboolean UI_usesUniqueCDKey( void ) { diff --git a/code/client/client.h b/code/client/client.h index df6fe6f9..c576dca7 100644 --- a/code/client/client.h +++ b/code/client/client.h @@ -442,6 +442,7 @@ char *Key_KeynumToString (int keynum); // cl_parse.c // extern int cl_connectedToPureServer; +extern int cl_connectedToCheatServer; void CL_SystemInfoChanged( void ); void CL_ParseServerMessage( msg_t *msg );