Added Allstats (Issue 123)

Cleaned a bit of !nobuild (Issue 128)
This commit is contained in:
Paradox460 committed 2008-06-27 01:12:51 +00:00
1 parent 022659c3d7
commit 8062f15b5a
5 files changed
+108 -55

No files matched your search

+9 -9
View File
@@ -2848,14 +2848,6 @@ qboolean G_admin_layoutsave( gentity_t *ent, int skiparg )
return qtrue;
}
qboolean G_admin_nobuildsave( gentity_t *ent, int skiparg )
{
trap_SendConsoleCommand( EXEC_APPEND, "nobuildsave" );
AP( va( "print \"^3!nobuildsave: ^7nobuild saved by %s\n\"", ( ent ) ? ent->client->pers.netname : "console" ) );
return qtrue;
}
qboolean G_admin_mute( gentity_t *ent, int skiparg )
{
int pids[ MAX_CLIENTS ];
@@ -7740,7 +7732,7 @@ qboolean G_admin_nobuild( gentity_t *ent, int skiparg )
if( G_SayArgc() < minargc )
{
ADMP( "^3!buildno: ^7usage: !nobuild [game units]\n" );
ADMP( "^3!nobuild: ^7usage: !nobuild [game units]\n" );
return qfalse;
}
@@ -7771,3 +7763,11 @@ qboolean G_admin_nobuild( gentity_t *ent, int skiparg )
return qtrue;
}
qboolean G_admin_nobuildsave( gentity_t *ent, int skiparg )
{
trap_SendConsoleCommand( EXEC_APPEND, "nobuildsave" );
AP( va( "print \"^3!nobuildsave: ^7nobuild markers saved by %s\n\"", ( ent ) ? ent->client->pers.netname : "console" ) );
return qtrue;
}
+4 -45
View File
@@ -3086,11 +3086,10 @@ itemBuildError_t G_CanBuild( gentity_t *ent, buildable_t buildable, int distance
range[0] = nbent->nobuildarea;
range[1] = nbent->nobuildarea;
range[2] = 0;
range[2] = 5;
VectorAdd( nbent->r.currentOrigin, range, maxs3 );
VectorSubtract( nbent->r.currentOrigin, range, mins3 );
maxs[2] += 5;
num2 = trap_EntitiesInBox( mins3, maxs3, entitylist, MAX_GENTITIES );
for(i = 0; i < num2; i++)
@@ -4522,47 +4521,6 @@ void G_NobuildSave( void )
trap_FS_FCloseFile( f );
}
int G_NobuildList( char *list, int len )
{
// up to 128 single character nobuild names could fit in nobuilds
char fileList[ ( MAX_CVAR_VALUE_STRING / 2 ) * 5 ] = {""};
char nobuild[ MAX_CVAR_VALUE_STRING ] = {""};
int numFiles, i, fileLen = 0, listLen;
int count = 0;
char *filePtr;
numFiles = trap_FS_GetFileList( va( "nobuild" ), ".dat",
fileList, sizeof( fileList ) );
filePtr = fileList;
for( i = 0; i < numFiles; i++, filePtr += fileLen + 1 )
{
fileLen = strlen( filePtr );
listLen = strlen( nobuild );
if( fileLen < 5 )
continue;
// list is full, stop trying to add to it
if( ( listLen + fileLen ) >= sizeof( nobuild ) )
break;
Q_strcat( nobuild, sizeof( nobuild ), filePtr );
listLen = strlen( nobuild );
// strip extension and add space delimiter
nobuild[ listLen - 4 ] = ' ';
nobuild[ listLen - 3 ] = '\0';
count++;
}
if( count != numFiles )
{
G_Printf( S_COLOR_YELLOW "WARNING: nobuild list was truncated to %d "
"nobuilds, but %d nobuild files exist in /nobuilds/.\n",
count, numFiles );
}
Q_strncpyz( list, nobuild, len );
return count + 1;
}
/*
============
G_NobuildLoad
@@ -4598,8 +4556,9 @@ void G_NobuildLoad( void )
{
if( i >= sizeof( line ) - 1 )
{
G_Printf( S_COLOR_RED "ERROR: line overflow in %s before \"%s\"\n",
va( "nobuild/%s.dat", map ), line );
// Since nobuild will be loaded on every map load, or atleast attmepted to be loaded, im just going to disable this warning since its just spam.
/*G_Printf( S_COLOR_RED "ERROR: line overflow in %s before \"%s\"\n",
va( "nobuild/%s.dat", map ), line );*/
return;
}
line[ i++ ] = *nobuild;
+84
View File
@@ -4069,6 +4069,89 @@ char *G_statsString( statsCounters_t *sc, pTeam_t *pt )
return s;
}
/*
=================
Cmd_AllStats_f
=================
*/
void Cmd_AllStats_f( gentity_t *ent )
{
int i;
int NextViewTime;
qboolean HasResults;
gentity_t *tmpent;
//check if ent exists
if(!ent) return;
NextViewTime = ent->client->pers.statscounters.AllstatstimeLastViewed + g_AllStatsTime.integer * 1000;
//check if you can use the cmd at this time
if( !level.intermissiontime && level.time < NextViewTime)
{
ADMP( va("You may only check your stats every %i Seconds and during intermission. Next valid time is %d:%02d\n",( g_AllStatsTime.integer ) ? ( g_AllStatsTime.integer ) : 60, ( NextViewTime / 60000 ), ( NextViewTime / 1000 ) % 60 ) );
return;
}
//see if allstats is enabled
if( !g_AllStats.integer )
{
ADMP( "AllStats has been disabled\n");
return;
}
//display a header describing the data
ADMP( "^3 K A SK| D F S TK| DD| SB| Name\n" );
HasResults = qfalse;
//loop through the clients that are connected
for( i = 0; i < level.numConnectedClients; i++ )
{
//assign a tempent 4 the hell of it
tmpent = &g_entities[ level.sortedClients[ i ] ];
//check for what mode we are working in and display relevent data
if( g_AllStats.integer == 1 )
{
//check if client is connected and on same team
if( tmpent->client && tmpent->client->pers.connected == CON_CONNECTED && tmpent->client->pers.teamSelection == ent->client->pers.teamSelection && tmpent->client->pers.teamSelection != PTE_NONE )
{
ADMP( va( "^7%3i %3i %3i^3|^7%3i %3i %3i %3i^3|^7%5i^3|^7%3i^3|^7 %s\n",
( tmpent->client->pers.statscounters.kills ) ? tmpent->client->pers.statscounters.kills : 0,
( tmpent->client->pers.statscounters.assists ) ? tmpent->client->pers.statscounters.assists : 0,
( tmpent->client->pers.statscounters.structskilled ) ? tmpent->client->pers.statscounters.structskilled : 0,
( tmpent->client->pers.statscounters.deaths ) ? tmpent->client->pers.statscounters.deaths : 0,
( tmpent->client->pers.statscounters.feeds ) ? tmpent->client->pers.statscounters.feeds : 0,
( tmpent->client->pers.statscounters.suicides ) ? tmpent->client->pers.statscounters.suicides : 0,
( tmpent->client->pers.statscounters.teamkills ) ? tmpent->client->pers.statscounters.teamkills : 0,
( tmpent->client->pers.statscounters.dmgdone ) ? tmpent->client->pers.statscounters.dmgdone : 0,
( tmpent->client->pers.statscounters.structsbuilt ) ? tmpent->client->pers.statscounters.structsbuilt : 0,
( tmpent->client->pers.netname ) ? tmpent->client->pers.netname : "Unknown" ) );
HasResults = qtrue;
}
}
else if( g_AllStats.integer == 2 )
{
//check if client is connected and has some stats or atleast is on a team
if( tmpent->client && tmpent->client->pers.connected == CON_CONNECTED && ( tmpent->client->pers.teamSelection != PTE_NONE ) )
{
ADMP( va( "^7%3i %3i %3i^3|^7%3i %3i %3i %3i^3|^7%5i^3|^7%3i^3|^7 %s\n",
( tmpent->client->pers.statscounters.kills ) ? tmpent->client->pers.statscounters.kills : 0,
( tmpent->client->pers.statscounters.assists ) ? tmpent->client->pers.statscounters.assists : 0,
( tmpent->client->pers.statscounters.structskilled ) ? tmpent->client->pers.statscounters.structskilled : 0,
( tmpent->client->pers.statscounters.deaths ) ? tmpent->client->pers.statscounters.deaths : 0,
( tmpent->client->pers.statscounters.feeds ) ? tmpent->client->pers.statscounters.feeds : 0,
( tmpent->client->pers.statscounters.suicides ) ? tmpent->client->pers.statscounters.suicides : 0,
( tmpent->client->pers.statscounters.teamkills ) ? tmpent->client->pers.statscounters.teamkills : 0,
( tmpent->client->pers.statscounters.dmgdone ) ? tmpent->client->pers.statscounters.dmgdone : 0,
( tmpent->client->pers.statscounters.structsbuilt ) ? tmpent->client->pers.statscounters.structsbuilt : 0,
( tmpent->client->pers.netname ) ? tmpent->client->pers.netname : "Unknown" ) );
HasResults = qtrue;
}
}
}
if( HasResults == qfalse ) ADMP( " ^3EMPTY!\n" );
//update time last viewed
ent->client->pers.statscounters.AllstatstimeLastViewed = level.time;
return;
}
/*
=================
@@ -4942,6 +5025,7 @@ commands_t cmds[ ] = {
{ "score", CMD_INTERMISSION, ScoreboardMessage },
{ "mystats", CMD_TEAM|CMD_INTERMISSION, Cmd_MyStats_f },
{ "allstats", 0|CMD_INTERMISSION, Cmd_AllStats_f },
{ "teamstatus", CMD_TEAM, Cmd_TeamStatus_f },
+4
View File
@@ -348,6 +348,7 @@ typedef struct
int dretchbasytime;
int jetpackusewallwalkusetime;
int timeLastViewed;
int AllstatstimeLastViewed;
} statsCounters_t;
// client data that stays across multiple respawns, but is cleared
@@ -1441,6 +1442,9 @@ extern vmCvar_t g_instantBuild; // Enable instant building outside of d
extern vmCvar_t g_teamStatus; // Allow the use of /teamstatus
extern vmCvar_t g_teamStatusTime; // Allow the use of /teamstatus
extern vmCvar_t g_AllStats;
extern vmCvar_t g_AllStatsTime;
void trap_Printf( const char *fmt );
void trap_Error( const char *fmt );
int trap_Milliseconds( void );
+7 -1
View File
@@ -24,7 +24,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "g_local.h"
#define QVM_VARIANT "P-G-QVM"
#define QVM_VERSION "SVN r71"
#define QVM_VERSION "SVN r72"
level_locals_t level;
@@ -248,6 +248,9 @@ vmCvar_t g_teamStatusTime;
vmCvar_t g_instantBuild;
vmCvar_t g_AllStats;
vmCvar_t g_AllStatsTime;
static cvarTable_t gameCvarTable[ ] =
{
// don't override the cheat state set by the system
@@ -475,6 +478,9 @@ static cvarTable_t gameCvarTable[ ] =
{ &g_randomLayoutPercent, "g_randomLayoutPercent", "100", CVAR_ARCHIVE, 0, qfalse },
{ &g_randomMaps, "g_randomMaps", "1", CVAR_ARCHIVE, 0, qfalse },
{ &g_randomMapList, "g_randomMapList", "", CVAR_ARCHIVE, 0, qfalse },
{ &g_AllStats, "g_AllStats", "", CVAR_ARCHIVE, 0, qfalse },
{ &g_AllStatsTime, "g_AllStatsTime", "", CVAR_ARCHIVE, 0, qfalse },
};
static int gameCvarTableSize = sizeof( gameCvarTable ) / sizeof( gameCvarTable[ 0 ] );