Fixed building on movers glitch, added cvar to toggle, g_moverBuild (Issue 148)

Fixed bug in end of map voting logic (Issue 149)
Added `!lockname`, flag N (same as `!mute) (Issue 150)
Added `g_nextMap` info to `!maplog` (Issue 151)
This commit is contained in:
Paradox460 committed 2008-07-16 23:00:49 +00:00
1 parent a4a1caa918
commit a44ecfa4a9
7 files changed
+92 -6

No files matched your search

+67 -2
View File
@@ -241,6 +241,11 @@ g_admin_cmd_t g_admin_cmds[ ] =
"[^3name|slot#^7]"
},
{"lockname", G_admin_lockname, "m",
"lock/unlock a players name from changing/updating.",
"[^3name|slot#^7]"
},
{"namelog", G_admin_namelog, "e",
"display a list of names used by recently connected players",
"(^5name^7)"
@@ -3328,7 +3333,7 @@ qboolean G_admin_listplayers( gentity_t *ent, int skiparg )
char lname[ MAX_NAME_LENGTH ];
char lname2[ MAX_NAME_LENGTH ];
char guid_stub[ 9 ];
char muted[ 2 ], denied[ 2 ], dbuilder[ 2 ], immune[ 2 ];
char muted[ 2 ], denied[ 2 ], dbuilder[ 2 ], immune[ 2 ], nlocked[ 2 ];
int l;
char lname_fmt[ 5 ];
@@ -3364,7 +3369,12 @@ qboolean G_admin_listplayers( gentity_t *ent, int skiparg )
for( j = 0; j < 8; j++ )
guid_stub[ j ] = p->pers.guid[ j + 24 ];
guid_stub[ j ] = '\0';
nlocked[ 0 ] = '\0';
if( p->pers.nlocked )
{
Q_strncpyz( nlocked, "N", sizeof( muted ) );
}
muted[ 0 ] = '\0';
if( p->pers.muted )
{
@@ -3459,6 +3469,7 @@ qboolean G_admin_listplayers( gentity_t *ent, int skiparg )
( *lname ) ? lname2 : "",
guid_stub,
immune,
nlocked,
muted,
dbuilder,
denied,
@@ -3474,6 +3485,7 @@ qboolean G_admin_listplayers( gentity_t *ent, int skiparg )
i,
c,
t,
nlocked,
muted,
dbuilder,
denied,
@@ -6527,6 +6539,12 @@ qboolean G_admin_maplog( gentity_t *ent, int skiparg )
ptr = end;
count++;
}
if( g_nextMap.string[0] )
{
ADMBP( va( "^5NextMap override: %s\n", g_nextMap.string ) );
}
ADMBP_end( );
return qtrue;
@@ -7401,3 +7419,50 @@ qboolean G_admin_bring( gentity_t *ent, int skiparg )
return qtrue;
}
qboolean G_admin_lockname( gentity_t *ent, int skiparg )
{
int pids[ MAX_CLIENTS ];
char name[ MAX_NAME_LENGTH ], err[ MAX_STRING_CHARS ];
char command[ MAX_ADMIN_CMD_LEN ];
gentity_t *vic;
if( G_SayArgc() < 2 + skiparg )
{
ADMP( "^3!lockname: ^7usage: !lockname [name|slot#]\n" );
return qfalse;
}
G_SayArgv( 1 + skiparg, name, sizeof( name ) );
if( G_ClientNumbersFromString( name, pids ) != 1 )
{
G_MatchOnePlayer( pids, err, sizeof( err ) );
ADMP( va( "^3!lockname: ^7%s\n", err ) );
return qfalse;
}
if( !admin_higher( ent, &g_entities[ pids[ 0 ] ] ) )
{
ADMP( "^3!lockname: ^7sorry, but your intended victim has a higher admin"
" level than you\n" );
return qfalse;
}
vic = &g_entities[ pids[ 0 ] ];
if( vic->client->pers.nlocked == qtrue )
{
vic->client->pers.nlocked = qfalse;
CPx( pids[ 0 ], "cp \"^1Your name has been unlocked\"" );
AP( va( "print \"^3!lockname: ^7%s^7's name has been unlocked by %s\n\"",
vic->client->pers.netname,
( ent ) ? ent->client->pers.netname : "console" ) );
}
else
{
vic->client->pers.nlocked = qtrue;
CPx( pids[ 0 ], "cp \"^1Your name has been locked\"" );
AP( va( "print \"^3!lockname: ^7%s^7's name has been locked by ^7%s\n\"",
vic->client->pers.netname,
( ent ) ? ent->client->pers.netname : "console" ) );
}
ClientUserinfoChanged( pids[ 0 ] );
return qtrue;
}
+1
View File
@@ -265,6 +265,7 @@ qboolean G_admin_nobuild( gentity_t *ent, int skiparg );
qboolean G_admin_nobuildsave( gentity_t *ent, int skiparg );
qboolean G_admin_grab( gentity_t *ent, int skiparg );
qboolean G_admin_bring( gentity_t *ent, int skiparg );
qboolean G_admin_lockname( gentity_t *ent, int skiparg );
void G_admin_print( gentity_t *ent, char *m );
void G_admin_buffer_print( gentity_t *ent, char *m );
+7 -1
View File
@@ -3087,7 +3087,13 @@ itemBuildError_t G_CanBuild( gentity_t *ent, buildable_t buildable, int distance
{
gentity_t *tent = &g_entities[ entitylist[ i ] ];
if( tent->s.eType == ET_PLAYER )
if( tent->s.eType == ET_MOVER && !g_moverBuild.integer )
{
reason = IBE_NOROOM;
break;
}
else if( tent->s.eType == ET_PLAYER )
{
reason = IBE_NOROOM;
break;
+6 -1
View File
@@ -1151,7 +1151,6 @@ void ClientUserinfoChanged( int clientNum )
Q_strncpyz( oldname, G_NextNewbieName( ent ), sizeof( oldname ) );
}
if( client->pers.muted )
{
trap_SendServerCommand( ent - g_entities,
@@ -1180,6 +1179,12 @@ void ClientUserinfoChanged( int clientNum )
trap_SendServerCommand( ent - g_entities, va( "print \"%s\n\"", err ) );
revertName = qtrue;
}
else if( client->pers.nlocked )
{
trap_SendServerCommand( ent - g_entities,
"print \"Your name is locked, you can no longer rename.\n\"" );
revertName = qtrue;
}
if( revertName )
{
+4
View File
@@ -411,6 +411,8 @@ typedef struct
qboolean grabbed;
gentity_t *grabber;
qboolean nlocked;
qboolean firstConnect;
} clientPersistant_t;
@@ -1463,6 +1465,8 @@ extern vmCvar_t g_AllStatsTime;
extern vmCvar_t g_wwNoHovelBuild;
extern vmCvar_t g_moverBuild;
void trap_Printf( const char *fmt );
void trap_Error( const char *fmt );
int trap_Milliseconds( void );
+6 -1
View File
@@ -255,6 +255,8 @@ vmCvar_t g_AllStatsTime;
vmCvar_t g_wwNoHovelBuild;
vmCvar_t g_moverBuild;
static cvarTable_t gameCvarTable[ ] =
{
@@ -491,7 +493,10 @@ static cvarTable_t gameCvarTable[ ] =
{ &g_AllStats, "g_AllStats", "", CVAR_ARCHIVE, 0, qfalse },
{ &g_AllStatsTime, "g_AllStatsTime", "", CVAR_ARCHIVE, 0, qfalse },
{ &g_wwNoHovelBuild, "g_wwNoHovelBuild", "0", CVAR_ARCHIVE, 0, qfalse }
{ &g_wwNoHovelBuild, "g_wwNoHovelBuild", "0", CVAR_ARCHIVE, 0, qfalse },
{ &g_moverBuild, "g_moverBuild", "0", CVAR_ARCHIVE, 0, qfalse }
};
static int gameCvarTableSize = sizeof( gameCvarTable ) / sizeof( gameCvarTable[ 0 ] );
+1 -1
View File
@@ -1018,7 +1018,7 @@ static int G_GetMapVoteWinner( int *winvotes, int *totalvotes )
for( i = 0; i < MAX_MAP_ROTATION_CONDS; i++ )
{
if( results[ i ] > winner )
if( results[ i ] > wv )
{
winner = i;
wv = results[ i ];