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:
1 parent
a4a1caa918
commit
a44ecfa4a9
7 files changed
+92
-6
No files matched your search
+67
-2
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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
@@ -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 )
|
||||
{
|
||||
|
||||
@@ -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
@@ -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 ] );
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
Reference in new issue
Block a user