diff options
Diffstat (limited to 'src/game')
-rw-r--r-- | src/game/g_admin.c | 11 | ||||
-rw-r--r-- | src/game/g_client.c | 33 | ||||
-rw-r--r-- | src/game/g_local.h | 2 | ||||
-rw-r--r-- | src/game/g_main.c | 2 |
4 files changed, 44 insertions, 4 deletions
diff --git a/src/game/g_admin.c b/src/game/g_admin.c index 61e0c1c..c3341d0 100644 --- a/src/game/g_admin.c +++ b/src/game/g_admin.c @@ -3496,12 +3496,15 @@ static void admin_autobahn(gentity_t *ent, int rating) if (rating >= g_schachtmeisterClearThreshold.integer) return; - G_AdminsPrintf("%s^7 (#%d) has rating %d\n", ent->client->pers.netname, - ent - g_entities, rating); - // Ban only if the rating is low enough. - if (rating > g_schachtmeisterAutobahnThreshold.integer) + if (rating > g_schachtmeisterAutobahnThreshold.integer) { + G_AdminsPrintf("%s^7 (#%d) has rating %d\n", + ent->client->pers.netname, ent - g_entities, + rating); return; + } + + G_LogAutobahn(ent, NULL, rating, qfalse); if (!ent->client->pers.isPlaceholder) trap_SendServerCommand(ent - g_entities, va("disconnect \"%s\"\n", diff --git a/src/game/g_client.c b/src/game/g_client.c index 6e941f5..8119e3b 100644 --- a/src/game/g_client.c +++ b/src/game/g_client.c @@ -1374,6 +1374,36 @@ void ClientUserinfoChanged( int clientNum, qboolean forceName ) /*G_LogPrintf( "ClientUserinfoChanged: %i %s\n", clientNum, userinfo );*/ } +/* +=========== +LogAutobahn +=========== +*/ +void G_LogAutobahn(gentity_t *ent, const char *userinfo, int rating, + qboolean onConnect) +{ + char ip_buffer[20]; + const char *ip, *name, *verb; + + verb = (onConnect ? "refused" : "dropped"); + + if (userinfo) { + Q_strncpyz(ip_buffer, Info_ValueForKey(userinfo, "ip"), + sizeof(ip_buffer)); + ip = ip_buffer; + name = Info_ValueForKey(userinfo, "name"); + } else { + ip = ent->client->pers.ip; + name = ent->client->pers.netname; + } + + G_LogPrintf("Autobahn: %s %i %s %+i \"%s^7\"\n", verb, ent - g_entities, + ip, rating, name); + + if (g_adminAutobahnNotify.integer) + G_AdminsPrintf("Autobahn %s \"%s^7\" with rating %+i, connecting from %s.\n", + verb, name, rating, ip); +} /* =========== @@ -1507,7 +1537,10 @@ const char *ClientConnect( int clientNum, qboolean firstTime, qboolean isPlaceho if (j->rating >= g_schachtmeisterClearThreshold.integer) break; else if (j->rating <= g_schachtmeisterAutobahnThreshold.integer) + { + G_LogAutobahn( ent, userinfo, j->rating, qtrue ); return g_schachtmeisterAutobahnMessage.string; + } smj = j; } break; diff --git a/src/game/g_local.h b/src/game/g_local.h index e59a6ad..489b52a 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -1129,6 +1129,7 @@ void ClientSpawn( gentity_t *ent, gentity_t *spawn, vec3_t origin, vec3_t a void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod ); qboolean SpotWouldTelefrag( gentity_t *spot ); char *G_NextNewbieName( gentity_t *ent ); +void G_LogAutobahn( gentity_t *ent, const char *userinfo, int rating, qboolean onConnect ); // // g_svcmds.c @@ -1491,6 +1492,7 @@ extern vmCvar_t g_karma; extern vmCvar_t g_chat; extern vmCvar_t g_adminExpireTime; extern vmCvar_t g_adminCurses; +extern vmCvar_t g_adminAutobahnNotify; extern vmCvar_t g_nullifyTyrantKills; diff --git a/src/game/g_main.c b/src/game/g_main.c index 82c963d..b2e329a 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -191,6 +191,7 @@ vmCvar_t g_adminRegisterAdminLevel; vmCvar_t g_minLevelToJoinTeam; vmCvar_t g_forceAutoSelect; vmCvar_t g_adminCurses; +vmCvar_t g_adminAutobahnNotify; vmCvar_t g_privateMessages; vmCvar_t g_logPrivateMessages; @@ -495,6 +496,7 @@ static cvarTable_t gameCvarTable[ ] = { &g_chat, "g_chat", "chat.dat", CVAR_ARCHIVE, 0, qfalse }, { &g_adminExpireTime, "g_adminExpireTime", "0", CVAR_ARCHIVE, 0, qfalse }, { &g_adminCurses, "g_adminCurses", "1", CVAR_ARCHIVE, 0, qfalse }, + { &g_adminAutobahnNotify, "g_adminAutobahnNotify", "1", CVAR_ARCHIVE, 0, qfalse }, { &g_devmapKillerHP, "g_devmapKillerHP", "0", CVAR_ARCHIVE, 0, qtrue }, { &g_killerHP, "g_killerHP", "0", CVAR_ARCHIVE, 0, qfalse }, |