diff -Nru tremulous/src/game/g_admin.c tremulous.temp/src/game/g_admin.c
--- tremulous/src/game/g_admin.c	2007-04-15 17:59:03.000000000 +0200
+++ tremulous.temp/src/game/g_admin.c	2007-04-15 23:27:03.000000000 +0200
@@ -188,19 +188,16 @@
 g_admin_command_t *g_admin_commands[ MAX_ADMIN_COMMANDS ];
 g_admin_namelog_t *g_admin_namelog[ MAX_ADMIN_NAMELOGS ];
 
-qboolean G_admin_permission( gentity_t *ent, char flag )
+
+qboolean G_admin_guid_permission( char *guid, char flag )
 {
   int i;
   int l = 0;
   char *flags;
 
-  // console always wins
-  if( !ent )
-    return qtrue;
-
   for( i = 0; i < MAX_ADMIN_ADMINS && g_admin_admins[ i ]; i++ )
   {
-    if( !Q_stricmp( ent->client->pers.guid, g_admin_admins[ i ]->guid ) )
+    if( !Q_stricmp( guid, g_admin_admins[ i ]->guid ) )
     {
       flags = g_admin_admins[ i ]->flags;
       while( *flags )
@@ -276,6 +273,15 @@
   return qfalse;
 }
 
+qboolean G_admin_permission( gentity_t *ent, char flag )
+{
+  // console always wins
+  if( !ent )
+    return qtrue;
+  
+  return G_admin_guid_permission( ent->client->pers.guid, flag );
+}
+
 qboolean G_admin_name_check( gentity_t *ent, char *name, char *err, int len )
 {
   int i;
diff -Nru tremulous/src/game/g_admin.h tremulous.temp/src/game/g_admin.h
--- tremulous/src/game/g_admin.h	2007-04-15 23:26:00.000000000 +0200
+++ tremulous.temp/src/game/g_admin.h	2007-04-15 23:28:27.000000000 +0200
@@ -136,6 +136,7 @@
 qboolean G_admin_cmd_check( gentity_t *ent, qboolean say );
 qboolean G_admin_readconfig( gentity_t *ent, int skiparg );
 qboolean G_admin_permission( gentity_t *ent, char flag );
+qboolean G_admin_guid_permission( char *guid, char flag );
 qboolean G_admin_name_check( gentity_t *ent, char *name, char *err, int len );
 void G_admin_namelog_update( gclient_t *ent, int clientNum );
 int G_admin_level( gentity_t *ent );
