Index: src/game/g_admin.c =================================================================== --- src/game/g_admin.c (revision 909) +++ src/game/g_admin.c (working copy) @@ -1708,6 +1708,10 @@ for( i = 0; i < MAX_ADMIN_NAMELOGS && g_admin_namelog[ i ]; i++ ) { + // skip players in the namelog who have already been banned + if( g_admin_namelog[ i ]->banned ) + continue; + if( !Q_stricmp( g_admin_namelog[ i ]->ip, s2 ) || !Q_stricmp( va( "%d", g_admin_namelog[ i ]->slot ), s2 ) ) { @@ -1781,6 +1785,9 @@ g_admin_namelog[ logmatch ]->guid, g_admin_namelog[ logmatch ]->ip, seconds, reason ); + + g_admin_namelog[ logmatch ]->banned = qtrue; + if( !g_admin.string[ 0 ] ) ADMP( "^3!ban: ^7WARNING g_admin not set, not saving ban to a file\n" ); else Index: src/game/g_admin.h =================================================================== --- src/game/g_admin.h (revision 909) +++ src/game/g_admin.h (working copy) @@ -125,10 +125,11 @@ typedef struct g_admin_namelog { - char name[ MAX_ADMIN_NAMELOG_NAMES ][MAX_NAME_LENGTH ]; - char ip[ 16 ]; - char guid[ 33 ]; - int slot; + char name[ MAX_ADMIN_NAMELOG_NAMES ][MAX_NAME_LENGTH ]; + char ip[ 16 ]; + char guid[ 33 ]; + int slot; + qboolean banned; } g_admin_namelog_t;