Updated teamstatus, adds g_teamStatusTime control to adjust how fast it can be repeated.
This commit is contained in:
1 parent
c26e04a77c
commit
8b968da4f3
3 files changed
+61
-4
No files matched your search
+56
-3
@@ -4079,6 +4079,7 @@ void Cmd_TeamStatus_f( gentity_t *ent )
|
||||
{
|
||||
int i;
|
||||
int builders = 0;
|
||||
int arm = 0, medi = 0, boost = 0;
|
||||
char *omrc;
|
||||
gentity_t *tmp;
|
||||
qboolean found = qfalse;
|
||||
@@ -4086,8 +4087,24 @@ void Cmd_TeamStatus_f( gentity_t *ent )
|
||||
if( !g_teamStatus.integer )
|
||||
return;
|
||||
|
||||
if( ent->client->pers.muted )
|
||||
{
|
||||
trap_SendServerCommand( ent - g_entities,
|
||||
"print \"You are muted and cannot use message commands.\n\"" );
|
||||
return;
|
||||
}
|
||||
|
||||
if( g_teamStatusTime.integer && ent->client->pers.lastTeamStatus && (level.time - ent->client->pers.lastTeamStatus) < g_teamStatusTime.integer * 1000 )
|
||||
{
|
||||
ADMP( va("You may only check your team's status once every %i seconds.\n", g_teamStatusTime.integer ));
|
||||
return;
|
||||
}
|
||||
|
||||
ent->client->pers.lastTeamStatus = level.time;
|
||||
|
||||
if( ent->client->pers.teamSelection == PTE_ALIENS ){
|
||||
|
||||
//OM detection
|
||||
for ( i = 1, tmp = g_entities + i; i < level.num_entities; i++, tmp++ )
|
||||
{
|
||||
if( tmp->s.eType != ET_BUILDABLE )
|
||||
@@ -4099,6 +4116,7 @@ void Cmd_TeamStatus_f( gentity_t *ent )
|
||||
}
|
||||
}
|
||||
|
||||
//Builder detection
|
||||
for( i = 0; i < level.maxclients; i++ )
|
||||
{
|
||||
tmp = &g_entities[ i ];
|
||||
@@ -4113,13 +4131,26 @@ void Cmd_TeamStatus_f( gentity_t *ent )
|
||||
builders++;
|
||||
}
|
||||
}
|
||||
|
||||
//Booster detection
|
||||
for ( i = 1, tmp = g_entities + i; i < level.num_entities; i++, tmp++ )
|
||||
{
|
||||
if( tmp->s.eType != ET_BUILDABLE )
|
||||
continue;
|
||||
if( tmp->s.modelindex == BA_A_BOOSTER ){
|
||||
boost++;
|
||||
}
|
||||
}
|
||||
|
||||
if( found == qfalse )
|
||||
omrc = "^3OM: ^1Down(0)^3";
|
||||
G_Say( ent, NULL, SAY_TEAM, va("%s ^3Eggs: ^6%i^3 Builders: ^6%i^7", omrc, level.numAlienSpawns, builders ));
|
||||
|
||||
G_Say( ent, NULL, SAY_TEAM, va("%s ^3Eggs: ^6%i^3 Builders: ^6%i^3 Boosters: ^6%i^7", omrc, level.numAlienSpawns, builders, boost ));
|
||||
}
|
||||
|
||||
if( ent->client->pers.teamSelection == PTE_HUMANS ){
|
||||
|
||||
//RC detection
|
||||
for ( i = 1, tmp = g_entities + i; i < level.num_entities; i++, tmp++ )
|
||||
{
|
||||
if( tmp->s.eType != ET_BUILDABLE )
|
||||
@@ -4130,7 +4161,8 @@ void Cmd_TeamStatus_f( gentity_t *ent )
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Builder detection
|
||||
for( i = 0; i < level.maxclients; i++ )
|
||||
{
|
||||
tmp = &g_entities[ i ];
|
||||
@@ -4144,10 +4176,31 @@ void Cmd_TeamStatus_f( gentity_t *ent )
|
||||
BG_InventoryContainsWeapon( WP_HBUILD2, tmp->client->ps.stats ) ) ){
|
||||
builders++;
|
||||
}
|
||||
}
|
||||
|
||||
//Arm detection
|
||||
for ( i = 1, tmp = g_entities + i; i < level.num_entities; i++, tmp++ )
|
||||
{
|
||||
if( tmp->s.eType != ET_BUILDABLE )
|
||||
continue;
|
||||
if( tmp->s.modelindex == BA_H_ARMOURY ){
|
||||
arm++;
|
||||
}
|
||||
}
|
||||
|
||||
//Medi detection
|
||||
for ( i = 1, tmp = g_entities + i; i < level.num_entities; i++, tmp++ )
|
||||
{
|
||||
if( tmp->s.eType != ET_BUILDABLE )
|
||||
continue;
|
||||
if( tmp->s.modelindex == BA_H_MEDISTAT ){
|
||||
medi++;
|
||||
}
|
||||
}
|
||||
if( found == qfalse )
|
||||
omrc = "^3RC: ^1Down(0)^3";
|
||||
G_Say( ent, NULL, SAY_TEAM, va("%s ^3Telenodes: ^6%i^3 Builders: ^6%i^7", omrc, level.numHumanSpawns, builders ));
|
||||
|
||||
G_Say( ent, NULL, SAY_TEAM, va("%s ^3Telenodes: ^6%i^3 Builders: ^6%i^3 Armouries: ^6%i^3 Medistations: ^6%i^7", omrc, level.numHumanSpawns, builders, arm, medi ));
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
@@ -404,6 +404,7 @@ typedef struct
|
||||
qboolean healing;
|
||||
char chat[ CHAT_MAXCHAN ][ CHAT_MAXPASS ];
|
||||
qboolean ignoreAdminWarnings;
|
||||
int lastTeamStatus;
|
||||
|
||||
qboolean firstConnect;
|
||||
} clientPersistant_t;
|
||||
@@ -1432,6 +1433,7 @@ extern vmCvar_t g_modTurretAngle; // Allow high turret build angles
|
||||
extern vmCvar_t g_instantBuild; // Enable instant building outside of devmap mode
|
||||
|
||||
extern vmCvar_t g_teamStatus; // Allow the use of /teamstatus
|
||||
extern vmCvar_t g_teamStatusTime; // Allow the use of /teamstatus
|
||||
|
||||
void trap_Printf( const char *fmt );
|
||||
void trap_Error( const char *fmt );
|
||||
|
||||
+3
-1
@@ -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 r65"
|
||||
#define QVM_VERSION "SVN r66"
|
||||
|
||||
level_locals_t level;
|
||||
|
||||
@@ -243,6 +243,7 @@ vmCvar_t g_modWeaponReload;
|
||||
vmCvar_t g_modTurretAngle;
|
||||
|
||||
vmCvar_t g_teamStatus;
|
||||
vmCvar_t g_teamStatusTime;
|
||||
|
||||
|
||||
vmCvar_t g_instantBuild;
|
||||
@@ -302,6 +303,7 @@ static cvarTable_t gameCvarTable[ ] =
|
||||
{ &g_modWeaponReload, "g_modWeaponReload", "0", CVAR_ARCHIVE, 0, qfalse },
|
||||
{ &g_modTurretAngle, "g_modTurretAngle", "0", CVAR_ARCHIVE, 0, qfalse },
|
||||
{ &g_teamStatus, "g_teamStatus", "0", CVAR_ARCHIVE, 0, qfalse },
|
||||
{ &g_teamStatusTime, "g_teamStatusTime", "10", CVAR_ARCHIVE, 0, qfalse },
|
||||
{ &g_instantBuild, "g_instantBuild", "0", CVAR_ARCHIVE, 0, qfalse },
|
||||
|
||||
{ &g_proximityMines, "g_proximityMines", "0", 0, 0, qtrue },
|
||||
|
||||
Reference in new issue
Block a user