summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/g_admin.c168
-rw-r--r--src/game/g_admin.h1
-rw-r--r--src/game/g_local.h1
-rw-r--r--src/game/g_main.c2
4 files changed, 145 insertions, 27 deletions
diff --git a/src/game/g_admin.c b/src/game/g_admin.c
index 8b2be68..9b8945a 100644
--- a/src/game/g_admin.c
+++ b/src/game/g_admin.c
@@ -350,6 +350,11 @@ g_admin_cmd_t g_admin_cmds[ ] =
"purges a report or archive entry",
"[^3report#^7] (^3!^7) - ^3!^7 means archive instead of report"
},
+
+ {"rshow", G_admin_rshow, "reportmanage",
+ "shows a report/archive entry in its entirety",
+ "[^3rshow#^7] (^3!^7) [report#] - ^3!^7 shows archive instead of report"
+ },
{"seen", G_admin_seen, "seen",
"find the last time a player was on the server",
@@ -9232,7 +9237,7 @@ qboolean G_admin_report( gentity_t *ent, int skiparg )
{
vic = &g_entities[ i ];
- if( G_admin_level( vic ) >= 3 )
+ if( G_admin_level( vic ) >= g_reportAdminListMinLvl.integer )
{
Q_strcat( admins, sizeof(admins), va( "%s^7 ", G_admin_get_adminname( vic ) ) );
}
@@ -9271,6 +9276,7 @@ qboolean G_admin_rlist( gentity_t *ent, int skiparg )
char reporter_fmt[ 32 ] = { "%s" };
char name_match[ MAX_NAME_LENGTH ] = {""};
char duration[ 32 ];
+ char reason[ 81 ];
char *ip_match = NULL;
int i, t;
int show_count = 0;
@@ -9484,18 +9490,25 @@ qboolean G_admin_rlist( gentity_t *ent, int skiparg )
secs = ( report->expires - t );
G_admin_duration( secs, duration, sizeof( duration ) );
- ADMBP( va( "%4i %s^7 %-15s Expires: %s\n | Reported by: %-15s^7 Level:%2i\n | ^5%s^7\n | Made: %s^7 on ^3%s^7 with ^3%i^7 players online\n | Admins online: %s^7\n \\__ ^5Note: %s^7\n",
+ if( strlen(report->reason) > 80 )
+ {
+ strncpy( reason, report->reason, 77 );
+ strcat( reason, "..." );
+ } else {
+ strncpy( reason, report->reason, 80 );
+ }
+
+ ADMBP( va( "%4i %s^7 %-15s Expires: %s\n"
+ " | Reported by: %-15s^7 Level:%2i\n"
+ " | ^5%s^7\n"
+ " \\__ ^5Note: %s^7\n",
( i + 1 ),
n1,
report->ip,
duration,
n2,
report->level,
- report->reason,
- report->time,
- report->map,
- report->players,
- report->admins,
+ reason,
report->note ) );
show_count++;
@@ -9513,11 +9526,11 @@ qboolean G_admin_rlist( gentity_t *ent, int skiparg )
else
Com_sprintf( matchmethod, sizeof(matchmethod), "ip range size" );
- ADMBP( va( "^3!rlist:^7 found %d matching reports by %s.",
+ ADMBP( va( "^3!rlist:^7 found %d matching reports by %s. ",
show_count,
matchmethod ) );
} else {
- ADMBP( va( "^3!rlist:^7 showing reports %d - %d of %d.",
+ ADMBP( va( "^3!rlist:^7 showing reports %d - %d of %d. ",
( found ) ? ( start + 1 ) : 0,
( ( start + MAX_ADMIN_SHOWREPORTS ) > found ) ?
found : ( start + MAX_ADMIN_SHOWREPORTS ),
@@ -9531,7 +9544,7 @@ qboolean G_admin_rlist( gentity_t *ent, int skiparg )
(filter[0]) ? filter : "" ) );
}
- ADMBP( "^3rlist:^7 run ^3!rshow^7 <entry> to see all details about a report" );
+ ADMBP( "Run ^3!rshow^7 <entry> to see full report" );
ADMBP( "\n" );
ADMBP_end();
@@ -9591,7 +9604,7 @@ qboolean G_admin_rban( gentity_t *ent, int skiparg )
if( admin_guid_to_level( ent->client->pers.guid ) <
admin_guid_to_level( report->guid ) )
{
- ADMP( "Your target has a higher admin level than you." );
+ ADMP( "Your target has a higher admin level than you.\n" );
return qfalse;
}
@@ -9770,6 +9783,7 @@ qboolean G_admin_rarclist( gentity_t *ent, int skiparg )
char reporter_fmt[ 32 ] = { "%s" };
char name_match[ MAX_NAME_LENGTH ] = {""};
char duration[ 32 ];
+ char reason[ 81 ];
char *ip_match = NULL;
int show_count = 0;
int max_name = 1, max_reporter = 1;
@@ -9946,19 +9960,26 @@ qboolean G_admin_rarclist( gentity_t *ent, int skiparg )
secs = ( archive->expires - t );
G_admin_duration( secs, duration, sizeof( duration ) );
- ADMBP( va( "%4i %s^7 %-15s Archive expires in: %s\n | Reported by: %-15s^7 Level:%2i\n | ^5%s^7\n | Made: %s^7 on ^3%s^7 with ^3%i^7 players online\n | Admins online: %s\n \\__ Note: ^5%s^7\n",
- ( i + 1 ),
- n1,
- archive->ip,
- duration,
- n2,
- archive->level,
- archive->reason,
- archive->time,
- archive->map,
- archive->players,
- archive->admins,
- archive->note ) );
+ if( strlen(archive->reason) > 80 )
+ {
+ strncpy( reason, archive->reason, 77 );
+ strcat( reason, "..." );
+ } else {
+ strncpy( reason, archive->reason, 80 );
+ }
+
+ ADMBP( va( "%4i %s^7 %-15s Expires: %s\n"
+ " | Reported by: %-15s^7 Level:%2i\n"
+ " | ^5%s^7\n"
+ " \\__ ^5Note: %s^7\n",
+ ( i + 1 ),
+ n1,
+ archive->ip,
+ duration,
+ n2,
+ archive->level,
+ reason,
+ archive->note ) );
}
show_count++;
}
@@ -9974,13 +9995,13 @@ qboolean G_admin_rarclist( gentity_t *ent, int skiparg )
Com_sprintf( matchmethod, sizeof(matchmethod), "ip range size" );
- ADMBP( va( "^3!rarclist:^7 found %d matching archived reports by %s. ",
+ ADMBP( va( "^3!rarclist:^7 found %d matching archived reports by %s. ",
show_count,
matchmethod ) );
}
else
{
- ADMBP( va( "^3!rarclist:^7 showing archived reports %d - %d of %d. ",
+ ADMBP( va( "^3!rarclist:^7 showing archived reports %d - %d of %d. ",
( found ) ? ( start + 1 ) : 0,
( ( start + MAX_ADMIN_SHOWREPORTS ) > found ) ?
found : ( start + MAX_ADMIN_SHOWREPORTS ),
@@ -9994,7 +10015,7 @@ qboolean G_admin_rarclist( gentity_t *ent, int skiparg )
(filter[0]) ? filter : "" ) );
}
- ADMBP( "^3rlist:^7 run ^3!rshow^7 ^5!^7 <entry> to see all details about an archive" );
+ ADMBP( "Run ^3!rshow^7 ^5!^7 <entry> to see full archive" );
ADMBP( "\n" );
ADMBP_end();
@@ -10125,6 +10146,99 @@ qboolean G_admin_rnote( gentity_t *ent, int skiparg )
return qtrue;
}
+qboolean G_admin_rshow( gentity_t *ent, int skiparg )
+{
+ char tmp[ 2 ];
+ char arg2[ 5 ];
+ char duration[ 32 ];
+ int ID, secs, t;
+ g_admin_report_t *report;
+ g_admin_archive_t *archive;
+ qtime_t qt;
+
+ t = trap_RealTime( &qt );
+
+ if( G_SayArgc() < 2 + skiparg )
+ {
+ ADMP( "^3!rshow: ^7usage: !rshow [report#] (!) - adding ! shows archive# instead of report#\n" );
+ return qfalse;
+ }
+
+ G_SayArgv( 1 + skiparg, arg2, sizeof( arg2 ) );
+ ID = atoi( arg2 );
+ G_SayArgv( 2 + skiparg, tmp, sizeof( tmp ) );
+
+ archive = g_admin_archives[ ID - 1 ];
+ report = g_admin_reports[ ID - 1 ];
+
+ if( !strcmp( tmp, "!" ) )
+ {
+ if( ID < 1 ||
+ ID > MAX_ADMIN_ARCHIVES ||
+ !archive )
+ {
+ ADMP( "^3!rshow: ^7invalid archive#\n" );
+ return qfalse;
+ }
+
+ secs = ( archive->expires - t );
+ G_admin_duration( secs, duration, sizeof( duration ) );
+
+ ADMP( va( "%4i %s^7 %-15s Expires: %s\n"
+ " | Reported by: %-15s^7 Level:%2i\n"
+ " | ^5%s^7\n"
+ " | Made: %s^7 on ^3%s^7 with ^3%i^7 players online\n"
+ " | Admins online: %s^7\n"
+ " \\__ ^5Note: %s^7\n",
+ ID,
+ archive->name,
+ archive->ip,
+ duration,
+ archive->rep,
+ archive->level,
+ archive->reason,
+ archive->time,
+ archive->map,
+ archive->players,
+ archive->admins,
+ archive->note ) );
+
+ return qtrue;
+
+ }
+ else if( ID < 1 ||
+ ID > MAX_ADMIN_REPORTS ||
+ !report )
+ {
+ ADMP( "^3!rshow: ^7invalid report#\n" );
+ return qfalse;
+ }
+
+ secs = ( report->expires - t );
+ G_admin_duration( secs, duration, sizeof( duration ) );
+
+ ADMP( va( "%4i %s^7 %-15s Expires: %s\n"
+ " | Reported by: %-15s^7 Level:%2i\n"
+ " | ^5%s^7\n"
+ " | Made: %s^7 on ^3%s^7 with ^3%i^7 players online\n"
+ " | Admins online: %s^7\n"
+ " \\__ ^5Note: %s^7\n",
+ ID,
+ report->name,
+ report->ip,
+ duration,
+ report->rep,
+ report->level,
+ report->reason,
+ report->time,
+ report->map,
+ report->players,
+ report->admins,
+ report->note ) );
+
+ return qtrue;
+}
+
qboolean G_admin_scrim(gentity_t *ent, int skiparg )
{
char state[5];
diff --git a/src/game/g_admin.h b/src/game/g_admin.h
index 61d4353..0850cea 100644
--- a/src/game/g_admin.h
+++ b/src/game/g_admin.h
@@ -359,6 +359,7 @@ qboolean G_admin_rarclist( gentity_t *ent, int skiparg );
qboolean G_admin_rclose( gentity_t *ent, int skiparg );
qboolean G_admin_rpurge( gentity_t *ent, int skiparg );
qboolean G_admin_rnote( gentity_t *ent, int skiparg );
+qboolean G_admin_rshow( gentity_t *ent, int skiparg );
qboolean G_admin_scrim( gentity_t *ent, int skiparg );
diff --git a/src/game/g_local.h b/src/game/g_local.h
index 5835385..8edcc71 100644
--- a/src/game/g_local.h
+++ b/src/game/g_local.h
@@ -1539,6 +1539,7 @@ extern vmCvar_t g_maxReports;
extern vmCvar_t g_maxUnregReports;
extern vmCvar_t g_reportWelcomeComment;
+extern vmCvar_t g_reportAdminListMinLvl;
extern vmCvar_t g_schachtmeisterClearThreshold;
extern vmCvar_t g_schachtmeisterAutobahnThreshold;
diff --git a/src/game/g_main.c b/src/game/g_main.c
index cd53e3f..4c68925 100644
--- a/src/game/g_main.c
+++ b/src/game/g_main.c
@@ -279,6 +279,7 @@ vmCvar_t g_maxReports;
vmCvar_t g_maxUnregReports;
vmCvar_t g_reportWelcomeComment;
+vmCvar_t g_reportAdminListMinLvl;
vmCvar_t g_schachtmeisterClearThreshold;
vmCvar_t g_schachtmeisterAutobahnThreshold;
@@ -546,6 +547,7 @@ static cvarTable_t gameCvarTable[ ] =
{ &g_maxUnregReports, "g_maxUnregReports", "1", CVAR_ARCHIVE, 0, qfalse },
{ &g_reportWelcomeComment, "g_reportWelcomeComment", "", CVAR_ARCHIVE, 0, qfalse },
+ { &g_reportAdminListMinLvl, "g_reportAdminListMinLvl", "4", CVAR_ARCHIVE, 0, qfalse },
{ &g_scrimMode, "g_scrimMode", "0", CVAR_ARCHIVE, 0, qfalse },