diff options
Diffstat (limited to 'src/game/g_admin.c')
-rw-r--r-- | src/game/g_admin.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/game/g_admin.c b/src/game/g_admin.c index b3f1ace2..36a873b2 100644 --- a/src/game/g_admin.c +++ b/src/game/g_admin.c @@ -1597,13 +1597,18 @@ qboolean G_admin_kick( gentity_t *ent, int skiparg ) ADMP( va( "^3!kick: ^7%s\n", err ) ); return qfalse; } - if( !admin_higher( ent, &g_entities[ pids[ 0 ] ] ) ) + vic = &g_entities[ pids[ 0 ] ]; + if( !admin_higher( ent, vic ) ) { ADMP( "^3!kick: ^7sorry, but your intended victim has a higher admin" " level than you\n" ); return qfalse; } - vic = &g_entities[ pids[ 0 ] ]; + if( vic->client->pers.localClient ) + { + ADMP( "^3!kick: ^7disconnecting the host would end the game\n" ); + return qfalse; + } if( g_adminTempBan.integer > 0 ) { admin_create_ban( ent, @@ -1785,9 +1790,6 @@ qboolean G_admin_ban( gentity_t *ent, int skiparg ) return qfalse; } - G_admin_duration( ( seconds ) ? seconds : -1, - duration, sizeof( duration ) ); - if( ent && !admin_higher_guid( ent->client->pers.guid, g_admin_namelog[ logmatch ]->guid ) ) { @@ -1796,6 +1798,14 @@ qboolean G_admin_ban( gentity_t *ent, int skiparg ) " level than you\n" ); return qfalse; } + if( !strcmp( g_admin_namelog[ logmatch ]->ip, "localhost" ) ) + { + ADMP( "^3!ban: ^7disconnecting the host would end the game\n" ); + return qfalse; + } + + G_admin_duration( ( seconds ) ? seconds : -1, + duration, sizeof( duration ) ); admin_create_ban( ent, g_admin_namelog[ logmatch ]->name[ 0 ], |