Added spectator noclip, g_specNoclip. (Issue 152)

Added decent kick reasons (Issue 153)
Added `g_defaultLayout` to control which layout is used for a map (Issue 154)
Added `!bubbles` flag Q (Issue 156)
This commit is contained in:
Paradox460 committed 2008-07-18 19:19:03 +00:00
1 parent a44ecfa4a9
commit 2e5b254639
7 files changed
+85 -9

No files matched your search

+12 -1
View File
@@ -393,7 +393,12 @@ void SpectatorThink( gentity_t *ent, usercmd_t *ucmd )
if( client->sess.spectatorState == SPECTATOR_LOCKED || client->sess.spectatorState == SPECTATOR_FOLLOW )
client->ps.pm_type = PM_FREEZE;
else
client->ps.pm_type = PM_SPECTATOR;
{
if( g_specNoclip.integer )
client->ps.pm_type = PM_NOCLIP;
else
client->ps.pm_type = PM_SPECTATOR;
}
if ( client->sess.spectatorState == SPECTATOR_FOLLOW )
{
@@ -1635,6 +1640,12 @@ void ClientThink_real( gentity_t *ent )
VectorCopy( clear, ent->client->ps.velocity );
VectorCopy( ent->client->pers.grabber->s.origin, ent->client->ps.origin );
}
if( client->pers.bubble && client->pers.bubbletime < level.time ){
gentity_t *bub;
bub = G_TempEntity( client->ps.origin, EV_PLAYER_TELEPORT_OUT );
client->pers.bubbletime += 500;
}
if( BG_InventoryContainsUpgrade( UP_MEDKIT, client->ps.stats ) &&
BG_UpgradeIsActive( UP_MEDKIT, client->ps.stats ) )
+48 -1
View File
@@ -145,6 +145,11 @@ g_admin_cmd_t g_admin_cmds[ ] =
"This will bring you to said players location.",
"[^3name|slot#^7]"
},
{"bubble", G_admin_bubble, "Q",
"Cause bobbles to appear around you untill turned off",
"[^3name|slot#^7]"
},
{"flag", G_admin_flag, "f",
"add an admin flag to a player, prefix flag with '-' to disallow",
@@ -2303,7 +2308,7 @@ qboolean G_admin_kick( gentity_t *ent, int skiparg )
vic->client->pers.netname,
vic->client->pers.guid,
vic->client->pers.ip, g_adminTempBan.integer,
"automatic temp ban created by kick" );
( *reason ) ? reason : "automatic temp ban created by kick" );
if( g_admin.string[ 0 ] )
admin_writeconfig();
}
@@ -7466,3 +7471,45 @@ qboolean G_admin_lockname( gentity_t *ent, int skiparg )
return qtrue;
}
qboolean G_admin_bubble( 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!bubble: ^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!bubble: ^7%s\n", err ) );
return qfalse;
}
if( !admin_higher( ent, &g_entities[ pids[ 0 ] ] ) )
{
ADMP( "^3!bubble: ^7sorry, but your intended victim has a higher admin"
" level than you\n" );
return qfalse;
}
vic = &g_entities[ pids[ 0 ] ];
if( vic->client->pers.bubble == qtrue )
{
ADMP( va("^3!bubble: ^7bubble mode has been ^1disable^7 for %s^7\n", vic->client->pers.netname ));
vic->client->pers.bubble = qfalse;
vic->client->pers.bubbletime = 0;
}
else
{
ADMP( va("^3!bubble: ^7bubble mode has been ^2enabled^7 for %s^7\n", vic->client->pers.netname ));
vic->client->pers.bubble = qtrue;
vic->client->pers.bubbletime = level.time;
}
return qtrue;
}
+1
View File
@@ -266,6 +266,7 @@ 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 );
qboolean G_admin_bubble( gentity_t *ent, int skiparg );
void G_admin_print( gentity_t *ent, char *m );
void G_admin_buffer_print( gentity_t *ent, char *m );
+10 -1
View File
@@ -4090,7 +4090,16 @@ void G_LayoutSelect( void )
int cnt = 0;
int layoutNum;
Q_strncpyz( layouts, g_layouts.string, sizeof( layouts ) );
Q_strncpyz( layouts, g_defaultLayout.string, sizeof( layouts ) );
Q_strncpyz( layouts2, g_layouts.string, sizeof( layouts2 ) );
if( Q_stricmp( layouts, "" ) && !Q_stricmp( layouts2, "" ) ){
Q_strncpyz( layouts, g_defaultLayout.string, sizeof( layouts ) );
}
else{
Q_strncpyz( layouts, g_layouts.string, sizeof( layouts ) );
}
trap_Cvar_VariableStringBuffer( "mapname", map, sizeof( map ) );
// one time use cvar
+2 -2
View File
@@ -1833,8 +1833,8 @@ void Cmd_CallVote_f( gentity_t *ent )
// use ip in case this player disconnects before the vote ends
Com_sprintf( level.voteString, sizeof( level.voteString ),
"!ban %s %d vote kick", level.clients[ clientNum ].pers.ip,
g_adminTempBan.integer + 1 );
"!ban %s %d %s", level.clients[ clientNum ].pers.ip,
g_adminTempBan.integer + 1, G_SayConcatArgs( 3 ) );
//bit of a hack here, but it does work :)
Com_sprintf( level.voteDisplayString, sizeof( level.voteDisplayString ),
"Kick player \'%s^7\' for \'%s^7\'", name, G_SayConcatArgs( 3 ) );
+5 -1
View File
@@ -413,6 +413,9 @@ typedef struct
gentity_t *grabber;
qboolean nlocked;
qboolean bubble;
int bubbletime;
qboolean firstConnect;
} clientPersistant_t;
@@ -1456,7 +1459,7 @@ extern vmCvar_t g_modWeaponAmmo; // Weapon ammo per clip
extern vmCvar_t g_modWeaponReload; // Weapon reload time
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_defaultLayout;
extern vmCvar_t g_teamStatus; // Allow the use of /teamstatus
extern vmCvar_t g_teamStatusTime; // Allow the use of /teamstatus
@@ -1466,6 +1469,7 @@ extern vmCvar_t g_AllStatsTime;
extern vmCvar_t g_wwNoHovelBuild;
extern vmCvar_t g_moverBuild;
extern vmCvar_t g_specNoclip;
void trap_Printf( const char *fmt );
void trap_Error( const char *fmt );
+7 -3
View File
@@ -247,7 +247,7 @@ vmCvar_t g_modTurretAngle;
vmCvar_t g_teamStatus;
vmCvar_t g_teamStatusTime;
vmCvar_t g_defaultLayout;
vmCvar_t g_instantBuild;
vmCvar_t g_AllStats;
@@ -257,6 +257,8 @@ vmCvar_t g_wwNoHovelBuild;
vmCvar_t g_moverBuild;
vmCvar_t g_specNoclip;
static cvarTable_t gameCvarTable[ ] =
{
@@ -479,7 +481,7 @@ static cvarTable_t gameCvarTable[ ] =
{ &g_msgTime, "g_msgTime", "0", CVAR_ARCHIVE, 0, qfalse },
{ &g_welcomeMsg, "g_welcomeMsg", "", CVAR_ARCHIVE, 0, qfalse },
{ &g_welcomeMsgTime, "g_welcomeMsgTime", "0", CVAR_ARCHIVE, 0, qfalse },
{ &g_defaultLayout, "g_defaultLayout", "", CVAR_ARCHIVE, 0, qtrue },
{ &g_rankings, "g_rankings", "0", 0, 0, qfalse },
{ &g_allowShare, "g_allowShare", "1", CVAR_ARCHIVE | CVAR_SERVERINFO, 0, qfalse},
{ &g_creditOverflow, "g_creditOverflow", "0", CVAR_ARCHIVE | CVAR_SERVERINFO, 0, qfalse},
@@ -496,7 +498,9 @@ static cvarTable_t gameCvarTable[ ] =
{ &g_wwNoHovelBuild, "g_wwNoHovelBuild", "0", CVAR_ARCHIVE, 0, qfalse },
{ &g_moverBuild, "g_moverBuild", "0", CVAR_ARCHIVE, 0, qfalse }
{ &g_moverBuild, "g_moverBuild", "0", CVAR_ARCHIVE, 0, qfalse },
{ &g_specNoclip, "g_specNoclip", "0", CVAR_ARCHIVE, 0, qtrue }
};
static int gameCvarTableSize = sizeof( gameCvarTable ) / sizeof( gameCvarTable[ 0 ] );