summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorJohn Ellis <johne@verizon.net>2010-07-02 22:02:03 +0000
committerTim Angus <tim@ngus.net>2013-01-03 00:17:38 +0000
commitf1226b01bbdb96513c05aa7689e7e6b4cf367ba9 (patch)
treeea0497fc239d13c8bc19c135c43b80298ca20c10 /src/game
parent4464938e652c41e4cb4e59cce1fdbb069c1c3c15 (diff)
* Fix admin /rename by not decrementing namelog->nameChanges, instead
add a forceName variable to ClientUserinfoChanged so that admin renames do not have ill-effects on player nameChange count, and players can be renamed while muted. * Make /rename print an error when attempting to rename a connecting player.
Diffstat (limited to 'src/game')
-rw-r--r--src/game/g_admin.c9
-rw-r--r--src/game/g_client.c12
-rw-r--r--src/game/g_cmds.c10
-rw-r--r--src/game/g_local.h2
-rw-r--r--src/game/g_main.c4
-rw-r--r--src/game/g_team.c2
6 files changed, 21 insertions, 18 deletions
diff --git a/src/game/g_admin.c b/src/game/g_admin.c
index 530a1dd8..634d2054 100644
--- a/src/game/g_admin.c
+++ b/src/game/g_admin.c
@@ -2615,8 +2615,11 @@ qboolean G_admin_rename( gentity_t *ent )
ADMP( va( "^3rename: ^7%s\n", err ) );
return qfalse;
}
- victim->client->pers.namelog->nameChanges--;
- victim->client->pers.namelog->nameChangeTime = 0;
+ if( victim->client->pers.connected != CON_CONNECTED )
+ {
+ ADMP( "^3rename: ^7sorry, but your intended victim is still connecting\n" );
+ return qfalse;
+ }
trap_GetUserinfo( pids[ 0 ], userinfo, sizeof( userinfo ) );
AP( va( "print \"^3rename: ^7%s^7 has been renamed to %s^7 by %s\n\"",
victim->client->pers.netname,
@@ -2624,7 +2627,7 @@ qboolean G_admin_rename( gentity_t *ent )
( ent ) ? ent->client->pers.netname : "console" ) );
Info_SetValueForKey( userinfo, "name", newname );
trap_SetUserinfo( pids[ 0 ], userinfo );
- ClientUserinfoChanged( pids[ 0 ] );
+ ClientUserinfoChanged( pids[ 0 ], qtrue );
return qtrue;
}
diff --git a/src/game/g_client.c b/src/game/g_client.c
index b241c110..c3afede2 100644
--- a/src/game/g_client.c
+++ b/src/game/g_client.c
@@ -971,7 +971,7 @@ The game can override any of the settings and call trap_SetUserinfo
if desired.
============
*/
-char *ClientUserinfoChanged( int clientNum )
+char *ClientUserinfoChanged( int clientNum, qboolean forceName )
{
gentity_t *ent;
char *s;
@@ -1016,7 +1016,7 @@ char *ClientUserinfoChanged( int clientNum )
if( strcmp( oldname, newname ) )
{
- if( client->pers.namelog->nameChangeTime &&
+ if( !forceName && client->pers.namelog->nameChangeTime &&
level.time - client->pers.namelog->nameChangeTime <=
g_minNameChangePeriod.value * 1000 )
{
@@ -1025,7 +1025,7 @@ char *ClientUserinfoChanged( int clientNum )
g_minNameChangePeriod.integer ) );
revertName = qtrue;
}
- else if( g_maxNameChanges.integer > 0 &&
+ else if( !forceName && g_maxNameChanges.integer > 0 &&
client->pers.namelog->nameChanges >= g_maxNameChanges.integer )
{
trap_SendServerCommand( ent - g_entities, va(
@@ -1033,7 +1033,7 @@ char *ClientUserinfoChanged( int clientNum )
g_maxNameChanges.integer ) );
revertName = qtrue;
}
- else if( client->pers.namelog->muted )
+ else if( !forceName && client->pers.namelog->muted )
{
trap_SendServerCommand( ent - g_entities,
"print \"You cannot change your name while you are muted\n\"" );
@@ -1056,7 +1056,7 @@ char *ClientUserinfoChanged( int clientNum )
{
Q_strncpyz( client->pers.netname, newname,
sizeof( client->pers.netname ) );
- if( client->pers.connected == CON_CONNECTED )
+ if( !forceName && client->pers.connected == CON_CONNECTED )
{
client->pers.namelog->nameChangeTime = level.time;
client->pers.namelog->nameChanges++;
@@ -1265,7 +1265,7 @@ char *ClientConnect( int clientNum, qboolean firstTime )
// get and distribute relevent paramters
G_namelog_connect( client );
- userInfoError = ClientUserinfoChanged( clientNum );
+ userInfoError = ClientUserinfoChanged( clientNum, qfalse );
if( userInfoError != NULL )
return userInfoError;
diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c
index c9cb889c..2a3edfd9 100644
--- a/src/game/g_cmds.c
+++ b/src/game/g_cmds.c
@@ -1564,7 +1564,7 @@ void Cmd_Class_f( gentity_t *ent )
//remove credit
G_AddCreditToClient( ent->client, -cost, qtrue );
ent->client->pers.classSelection = newClass;
- ClientUserinfoChanged( clientNum );
+ ClientUserinfoChanged( clientNum, qfalse );
VectorCopy( infestOrigin, ent->s.pos.trBase );
VectorCopy( ent->client->ps.velocity, oldVel );
@@ -1989,7 +1989,7 @@ void Cmd_Buy_f( gentity_t *ent )
G_TriggerMenu( ent->client->ps.clientNum, MN_H_UNKNOWNITEM );
//update ClientInfo
- ClientUserinfoChanged( ent->client->ps.clientNum );
+ ClientUserinfoChanged( ent->client->ps.clientNum, qfalse );
}
@@ -2161,7 +2161,7 @@ void Cmd_Sell_f( gentity_t *ent )
G_TriggerMenu( ent->client->ps.clientNum, MN_H_UNKNOWNITEM );
//update ClientInfo
- ClientUserinfoChanged( ent->client->ps.clientNum );
+ ClientUserinfoChanged( ent->client->ps.clientNum, qfalse );
}
@@ -2625,7 +2625,7 @@ static void Cmd_Ignore_f( gentity_t *ent )
if( !Com_ClientListContains( &ent->client->sess.ignoreList, pids[ i ] ) )
{
Com_ClientListAdd( &ent->client->sess.ignoreList, pids[ i ] );
- ClientUserinfoChanged( ent->client->ps.clientNum );
+ ClientUserinfoChanged( ent->client->ps.clientNum, qfalse );
trap_SendServerCommand( ent-g_entities, va( "print \"[skipnotify]"
"ignore: added %s^7 to your ignore list\n\"",
level.clients[ pids[ i ] ].pers.netname ) );
@@ -2642,7 +2642,7 @@ static void Cmd_Ignore_f( gentity_t *ent )
if( Com_ClientListContains( &ent->client->sess.ignoreList, pids[ i ] ) )
{
Com_ClientListRemove( &ent->client->sess.ignoreList, pids[ i ] );
- ClientUserinfoChanged( ent->client->ps.clientNum );
+ ClientUserinfoChanged( ent->client->ps.clientNum, qfalse );
trap_SendServerCommand( ent-g_entities, va( "print \"[skipnotify]"
"unignore: removed %s^7 from your ignore list\n\"",
level.clients[ pids[ i ] ].pers.netname ) );
diff --git a/src/game/g_local.h b/src/game/g_local.h
index 81e3105f..a6fff69b 100644
--- a/src/game/g_local.h
+++ b/src/game/g_local.h
@@ -994,7 +994,7 @@ int G_TimeTilSuddenDeath( void );
// g_client.c
//
char *ClientConnect( int clientNum, qboolean firstTime );
-char *ClientUserinfoChanged( int clientNum );
+char *ClientUserinfoChanged( int clientNum, qboolean forceName );
void ClientDisconnect( int clientNum );
void ClientBegin( int clientNum );
void ClientCommand( int clientNum );
diff --git a/src/game/g_main.c b/src/game/g_main.c
index 2f708235..cefcd76d 100644
--- a/src/game/g_main.c
+++ b/src/game/g_main.c
@@ -298,7 +298,7 @@ Q_EXPORT intptr_t vmMain( int command, int arg0, int arg1, int arg2, int arg3, i
return 0;
case GAME_CLIENT_USERINFO_CHANGED:
- ClientUserinfoChanged( arg0 );
+ ClientUserinfoChanged( arg0, qfalse );
return 0;
case GAME_CLIENT_DISCONNECT:
@@ -1004,7 +1004,7 @@ void G_SpawnClients( team_t team )
ent = &g_entities[ clientNum ];
ent->client->sess.spectatorState = SPECTATOR_NOT;
- ClientUserinfoChanged( clientNum );
+ ClientUserinfoChanged( clientNum, qfalse );
ClientSpawn( ent, spawn, spawn_origin, spawn_angles );
}
}
diff --git a/src/game/g_team.c b/src/game/g_team.c
index b0709949..2cd03737 100644
--- a/src/game/g_team.c
+++ b/src/game/g_team.c
@@ -240,7 +240,7 @@ void G_ChangeTeam( gentity_t *ent, team_t newTeam )
// Copy credits to ps for the client
ent->client->ps.persistant[ PERS_CREDIT ] = ent->client->pers.credit;
- ClientUserinfoChanged( ent->client->ps.clientNum );
+ ClientUserinfoChanged( ent->client->ps.clientNum, qfalse );
G_UpdateTeamConfigStrings( );