diff -Nru tremulous/src/game/g_admin.c tremulous.temp/src/game/g_admin.c
--- tremulous/src/game/g_admin.c	2007-02-28 18:31:59.000000000 +0100
+++ tremulous.temp/src/game/g_admin.c	2007-02-28 18:32:02.000000000 +0100
@@ -288,6 +288,13 @@
   if( !Q_stricmp( name2, "UnnamedPlayer" ) ) 
     return qtrue;
 
+  if( !Q_stricmp( name2, "console" ) )
+  {
+    Q_strncpyz( err, va( "The name '%s^7' is invalid here", name2 ),
+      len );
+    return qfalse;
+  }
+
   for( i = 0; i < level.maxclients; i++ )
   {
     client = &level.clients[ i ];
diff -Nru tremulous/src/game/g_cmds.c tremulous.temp/src/game/g_cmds.c
--- tremulous/src/game/g_cmds.c	2007-02-28 18:32:00.000000000 +0100
+++ tremulous.temp/src/game/g_cmds.c	2007-02-28 18:32:02.000000000 +0100
@@ -3002,6 +3002,17 @@
 
   color = teamonly ? COLOR_CYAN : COLOR_YELLOW;
 
+  if( !Q_stricmp( name, "console" ) )
+  {
+    ADMP( va( "^%cPrivate message: ^7%s\n", color, msg ) );
+    ADMP( va( "^%csent to Console.\n", color ) );
+
+    G_LogPrintf( "privmsg: %s^7: Console: ^6%s^7\n",
+      ( ent ) ? ent->client->pers.netname : "Console", msg );
+
+    return;
+  }
+
   Q_strncpyz( str,
     va( "^%csent to %i player%s: ^7", color, pcount,
       ( pcount == 1 ) ? "" : "s" ),
@@ -3023,12 +3034,7 @@
       color,
       msg,
       ent ? ent-g_entities : -1 ) );
-    if( ent )
-    {
-      trap_SendServerCommand( pids[ i ], va(
-        "print \">> to reply, say: /m %d [your message] <<\n\"",
-        ( ent - g_entities ) ) ); 
-    }
+
     trap_SendServerCommand( pids[ i ], va( 
       "cp \"^%cprivate message from ^7%s^7\"", color,
       ( ent ) ? ent->client->pers.netname : "Console" ) );
@@ -3039,7 +3045,9 @@
       name ) );
   else
   {
-    ADMP( va( "^%cPrivate message: ^7%s\n", color, msg ) );
+    if( ent )
+      ADMP( va( "^%cPrivate message: ^7%s\n", color, msg ) );
+
     ADMP( va( "%s\n", str ) );
 
     G_LogPrintf( "%s: %s^7: %s^7: ^6%s^7\n",
